Installing and Configuring cRPD on SONiC
This section describes on how to load and configure cRPD as a routing stack on Juniper Networks' QFX5210 and QFX5200 switches running Software for Open Networking in the Cloud (SONiC) network operating system.
To install SONiC on QFX5210 and QFX5200 switches, see Install and Upgrade SONiC on Juniper Networks QFX5210 and QFX5200 Switches
How to Load and Start cRPD on SONiC
To load the cRPD package on SONiC, you need to:
-
Download the cRPD package from Juniper’s software downloads page at https://support.juniper.net/support/downloads/. The cRPD package file name for example is junos-routing-crpd-docker-20.3R1.8.tgz
Transfer the cRPD package to your QFX5210 or QFX5200 switches using scp or sftp file transfer protocol.
The following sections explain how to load and start cRPD on SONiC for QFX5210 or QFX5200 switches:
- Load the cRPD Image into Docker
- Verify that cRPD Image is Properly Loaded
- Create and Start the cRPD Container
- Enable RPD connection to fpmsyncd
Load the cRPD Image into Docker
To load the cRPD image into docker, use the docker load -i
junos-routing-crpd-docker-20.3R1.8.tgz
command as shown
below:
user@host:~$ docker load -i junos-routing-crpd-docker-20.3R1.8.tgz b187ff70b2e4: Loading layer [==================================================>] 65.58MB/65.58MB 5930c9e5703f: Loading layer [==================================================>] 991.7kB/991.7kB c64c52ea2c16: Loading layer [==================================================>] 15.87kB/15.87kB ddc500d84994: Loading layer [==================================================>] 3.072kB/3.072kB f76668b91ed5: Loading layer [==================================================>] 40.84MB/40.84MB cefbbbf6a84d: Loading layer [==================================================>] 7.68kB/7.68kB 19ed2664dd77: Loading layer [==================================================>] 134.5MB/134.5MB 2f362bdab81b: Loading layer [==================================================>] 13.82kB/13.82kB 0d625ccfa452: Loading layer [==================================================>] 3.072kB/3.072kB 75f1d83621fc: Loading layer [==================================================>] 3.584kB/3.584kB bba7d2bacea8: Loading layer [==================================================>] 3.584kB/3.584kB 911181312301: Loading layer [==================================================>] 3.584kB/3.584kB 98175a8ad5cb: Loading layer [==================================================>] 3.584kB/3.584kB a113daea3487: Loading layer [==================================================>] 3.584kB/3.584kB b224ed0cc92d: Loading layer [==================================================>] 3.584kB/3.584kB 48db2eb5713d: Loading layer [==================================================>] 3.584kB/3.584kB 1f620dc1de46: Loading layer [==================================================>] 2.56kB/2.56kB b9722b673d30: Loading layer [==================================================>] 30.72kB/30.72kB cc8250623a79: Loading layer [==================================================>] 6.656kB/6.656kB 5d3819eaf658: Loading layer [==================================================>] 3.584kB/3.584kB e7ffff983953: Loading layer [==================================================>] 4.096kB/4.096kB 4054102bacd4: Loading layer [==================================================>] 4.096kB/4.096kB 9479c967844e: Loading layer [==================================================>] 4.096kB/4.096kB 91a4575e8d76: Loading layer [==================================================>] 4.096kB/4.096kB d0aba2dd0145: Loading layer [==================================================>] 4.096kB/4.096kB 25bb582cc7dc: Loading layer [==================================================>] 22.53kB/22.53kB Loaded image: crpd:20.3R1.8 user@host:~$
Verify that cRPD Image is Properly Loaded
To verify if the cRPD image is properly loaded, use the docker images
command as shown below:
user@host:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE crpd 21.2R1.10 f9b634369718 Less than a second ago 374MB docker-fpm-frr HEAD.0-dirty-20201027.160709 94d35b3d6ff8 Less than a second ago 335MB docker-fpm-frr latest 94d35b3d6ff8 Less than a second ago 335MB docker-syncd-brcm HEAD.0-dirty-20201027.160709 ef2f75e9156b Less than a second ago 436MB docker-syncd-brcm latest ef2f75e9156b Less than a second ago 436MB docker-router-advertiser HEAD.0-dirty-20201027.160709 d32efd117a97 Less than a second ago 289MB docker-router-advertiser latest d32efd117a97 Less than a second ago 289MB docker-sonic-mgmt-framework HEAD.0-dirty-20201027.160709 b6ebafc68f18 Less than a second ago 431MB docker-sonic-mgmt-framework latest b6ebafc68f18 Less than a second ago 431MB docker-platform-monitor HEAD.0-dirty-20201027.160709 ce3c952de93d Less than a second ago 357MB docker-platform-monitor latest ce3c952de93d Less than a second ago 357MB docker-sflow HEAD.0-dirty-20201027.160709 05278fdd0019 Less than a second ago 315MB docker-sflow latest 05278fdd0019 Less than a second ago 315MB docker-lldp-sv2 HEAD.0-dirty-20201027.160709 7f54d84f2da7 Less than a second ago 312MB docker-lldp-sv2 latest 7f54d84f2da7 Less than a second ago 312MB docker-dhcp-relay HEAD.0-dirty-20201027.160709 f86f0bce3b09 Less than a second ago 299MB docker-dhcp-relay latest f86f0bce3b09 Less than a second ago 299MB docker-database HEAD.0-dirty-20201027.160709 6daa6a1df857 Less than a second ago 289MB docker-database latest 6daa6a1df857 Less than a second ago 289MB docker-teamd HEAD.0-dirty-20201027.160709 7596d1a2c302 Less than a second ago 315MB docker-teamd latest 7596d1a2c302 Less than a second ago 315MB docker-snmp-sv2 HEAD.0-dirty-20201027.160709 c258dfe91775 Less than a second ago 348MB docker-snmp-sv2 latest c258dfe91775 Less than a second ago 348MB docker-orchagent HEAD.0-dirty-20201027.160709 3d602bee0ecb Less than a second ago 333MB docker-orchagent latest 3d602bee0ecb Less than a second ago 333MB docker-nat HEAD.0-dirty-20201027.160709 0e29ba4560e9 Less than a second ago 316MB docker-nat latest 0e29ba4560e9 Less than a second ago 316MB docker-sonic-telemetry HEAD.0-dirty-20201027.160709 521590e31e7d Less than a second ago 353MB docker-sonic-telemetry latest 521590e31e7d Less than a second ago 353MB user@host:~$
Create and Start the cRPD Container
This section describes how to create, start, and access the cRPD container.
To create the cRPD container, use the docker create --name crpd -h crpd
--net=host --privileged -it crpd:20.3R1.8
b7444647abb7977e0b7eaa884ace8b47bab3632ff2f3f67091d9734a58fa686b
command as
shown below:
user@host:~$ docker create --name crpd -h crpd --net=host --privileged -it crpd:20.3R1.8 b7444647abb7977e0b7eaa884ace8b47bab3632ff2f3f67091d9734a58fa686b user@host:~$
You need to stop zebra
and bgpd
daemons on the BGP
container by running the docker exec bgp supervisorctl stop zebra bgpd
command as shown below:
user@host:~$ docker exec bgp supervisorctl stop zebra bgpd zebra: stopped bgpd: stopped user@host:~$
To start the cRPD container, use the docker start crpd
command as shown
below:
user@host:~$ docker start crpd crpd user@host:~$
To access the cRPD container, use the docker exec -it crpd
command as
shown below:
user@host:~$ docker exec -it crpd cli root@crpd>
Enable RPD connection to fpmsyncd
To enable RPD connection to fpmsyncd, you need to enter the configuration mode and enable
fib-agent
at the [edit routing-options
forwarding-table
] hierarchy level as shown below:
root@crpd> configure Entering configuration mode [edit] root@crpd# set routing-options forwarding-table fib-agent [edit] root@crpd# commit and-quit commit complete Exiting configuration mode root@crpd>
Once cRPD is up and running, you can configure BGP from the cRPD CLI. The following is a sample BGP configuration:
user@host:~$ docker exec -it crpd cli root@crpd> configure Entering configuration mode root@crpd# show protocols bgp { group EBGPv4 { type external; neighbor 192.168.1.2 { description <neighbor_description>; local-address 192.168.1.4; peer-as 65000; } } }