CML 2.9 node definitions for XRd Control-Plane (third RR) and ExaBGP route injector as Docker-based CML nodes. Includes build scripts to export Docker images as tars for CML import, with IOS-XR startup configs for IS-IS, BGP, and BMP. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
180 lines
4.9 KiB
YAML
180 lines
4.9 KiB
YAML
id: xrd-control-plane-rr
|
|
boot:
|
|
timeout: 300
|
|
completed:
|
|
- "IOS XR RUN"
|
|
uses_regex: false
|
|
sim:
|
|
linux_native:
|
|
libvirt_domain_driver: docker
|
|
driver: ubuntu
|
|
ram: 2048
|
|
cpus: 2
|
|
cpu_limit: 100
|
|
video:
|
|
memory: 1
|
|
general:
|
|
nature: router
|
|
description: Cisco XRd Control-Plane - IOS-XR containerized routing daemon
|
|
read_only: false
|
|
configuration:
|
|
generator:
|
|
driver: null
|
|
provisioning:
|
|
files:
|
|
- editable: false
|
|
name: config.json
|
|
content: |-
|
|
{
|
|
"docker": {
|
|
"image": "ios-xr/xrd-control-plane:25.1.1",
|
|
"mounts": [
|
|
"type=bind,source=cfg/boot.sh,target=/cml-boot.sh",
|
|
"type=bind,source=cfg/xrd-startup.cfg,target=/etc/xrd/startup.cfg"
|
|
],
|
|
"misc_args": [
|
|
"--privileged"
|
|
],
|
|
"env": [
|
|
"XR_STARTUP_CFG=/etc/xrd/startup.cfg",
|
|
"XR_MGMT_INTERFACES=linux:eth0,chksum",
|
|
"XR_INTERFACES=linux:eth1,xr_name=Gi0/0/0/0;linux:eth2,xr_name=Gi0/0/0/1;linux:eth3,xr_name=Gi0/0/0/2;linux:eth4,xr_name=Gi0/0/0/3"
|
|
]
|
|
},
|
|
"shell": "/bin/bash",
|
|
"day0cmd": [ "/bin/bash", "/cml-boot.sh" ],
|
|
"busybox": false
|
|
}
|
|
- editable: true
|
|
name: boot.sh
|
|
content: |-
|
|
#!/bin/bash
|
|
# CML boot wrapper for XRd control-plane.
|
|
# XRd handles its own init — this script configures
|
|
# data-plane interfaces before XRd starts.
|
|
#
|
|
# Interface mapping (set via XR_INTERFACES env var):
|
|
# eth0 = MgmtEth0/RP0/CPU0/0 (CML mgmt)
|
|
# eth1 = Gi0/0/0/0 (data-plane link 1, e.g. to CORE-01)
|
|
# eth2 = Gi0/0/0/1 (data-plane link 2, e.g. to CORE-02)
|
|
# eth3+ = Gi0/0/0/2+ (additional links)
|
|
#
|
|
# Linux-level IP config is handled by XRd via startup.cfg.
|
|
# Just ensure interfaces are up.
|
|
for iface in eth0 eth1 eth2 eth3 eth4; do
|
|
[ -d /sys/class/net/$iface ] && ip link set dev $iface up
|
|
done
|
|
|
|
# XRd entrypoint
|
|
exec /usr/sbin/xrd
|
|
- editable: true
|
|
name: xrd-startup.cfg
|
|
content: |-
|
|
!! XRd Control-Plane - Third Route Reflector (RR3)
|
|
!! Peers with CORE-01 and CORE-02 as RR mesh (non-client iBGP)
|
|
!! Sends BMP to OpenBMP collector at 10.40.40.202:5000
|
|
!!
|
|
hostname XRd-RR3
|
|
!
|
|
interface Loopback0
|
|
ipv4 address 10.10.255.30 255.255.255.255
|
|
!
|
|
interface Gi0/0/0/0
|
|
description to-CORE-01
|
|
ipv4 address 10.120.3.2 255.255.255.252
|
|
no shutdown
|
|
!
|
|
interface Gi0/0/0/1
|
|
description to-CORE-02
|
|
ipv4 address 10.120.4.2 255.255.255.252
|
|
no shutdown
|
|
!
|
|
router isis 1
|
|
is-type level-2-only
|
|
net 49.0001.0100.1000.0030.00
|
|
address-family ipv4 unicast
|
|
metric-style wide
|
|
!
|
|
interface Loopback0
|
|
passive
|
|
address-family ipv4 unicast
|
|
!
|
|
!
|
|
interface Gi0/0/0/0
|
|
point-to-point
|
|
address-family ipv4 unicast
|
|
!
|
|
!
|
|
interface Gi0/0/0/1
|
|
point-to-point
|
|
address-family ipv4 unicast
|
|
!
|
|
!
|
|
!
|
|
router bgp 65020
|
|
bgp router-id 10.10.255.30
|
|
address-family ipv4 unicast
|
|
!
|
|
neighbor 10.10.255.0
|
|
remote-as 65020
|
|
update-source Loopback0
|
|
address-family ipv4 unicast
|
|
!
|
|
!
|
|
neighbor 10.10.255.20
|
|
remote-as 65020
|
|
update-source Loopback0
|
|
address-family ipv4 unicast
|
|
!
|
|
!
|
|
!
|
|
bmp server 1
|
|
host 10.40.40.202 port 5000
|
|
description OpenBMP
|
|
update-source Gi0/0/0/0
|
|
flapping-delay 60
|
|
initial-delay 5
|
|
stats-reporting-period 300
|
|
initial-refresh delay 30 spread 2
|
|
!
|
|
ssh server v2
|
|
end
|
|
media_type: raw
|
|
volume_name: cfg
|
|
device:
|
|
interfaces:
|
|
serial_ports: 1
|
|
physical:
|
|
- eth0
|
|
- eth1
|
|
- eth2
|
|
- eth3
|
|
- eth4
|
|
has_loopback_zero: false
|
|
default_count: 3
|
|
ui:
|
|
label_prefix: xrd-
|
|
icon: router
|
|
label: XRd Control-Plane (IOS-XR)
|
|
visible: true
|
|
group: Cisco
|
|
description: |-
|
|
Cisco XRd Control-Plane (IOS-XR 25.1.1)
|
|
Containerized IOS-XR routing daemon for control-plane workloads.
|
|
Full BGP, IS-IS, BMP, NETCONF support.
|
|
Configured as third Route Reflector (RR3) with BMP to OpenBMP.
|
|
inherited:
|
|
image:
|
|
ram: true
|
|
cpus: true
|
|
data_volume: false
|
|
boot_disk_size: false
|
|
cpu_limit: false
|
|
node:
|
|
ram: true
|
|
cpus: true
|
|
data_volume: false
|
|
boot_disk_size: false
|
|
cpu_limit: false
|
|
schema_version: 0.0.1
|