Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Routing Stack Options in Juniper Networks’ Platforms Running SONiC


Understanding Containerized RPD

SONiC on Juniper Networks PTX100008 router supports containerized Routing Protocol Daemon (cRPD). cRPD is Juniper’s routing protocol container. SONiC also supports the Free Range Routing (FRR) routing stack.

Juniper’s cRPD contains the routing protocol process (rpd) that can run in Linux-based environments and management daemon (mgd) that allows the system administrator to run rpd-related CLI for configuration purposes. The rpd process runs as user space application and learns route state through various routing protocols and maintains the complete set in the Routing Information Base (RIB), also known as routing table. The rpd process is also responsible for downloading the routes into the Forwarding Information Base (FIB) also known as forwarding table based on local selection criteria. Whereas the Packet Forwarding Engine (PFE) in Juniper Networks PTX10008 router holds the FIB and does packet forwarding for cRPD. The host Linux kernel stores the FIB and performs packet forwarding. cRPD can also be deployed to provide control plane-only services such as BGP route reflection.

The default routing stack offered in Juniper Networks’ PTX100008 router running SONiC is cRPD. cRPD is a fully supported, feature rich, fast converging and scalable routing stack. However, you can also use FRR as the routing stack.

Benefits of cRPD with SONiC

This section lists the following key benefits of cRPD in Juniper Networks’ PTX10008 multi-PFE platform running SONiC:

  • Feature rich with BGP filters, route policies, stable and high performance.

  • Telemetry information on state, health, and performance with gRPC streaming.

  • Containers reduces the time required for service boot up from several minutes to a few seconds resulting in faster deployment.

  • Run cRPD on any Linux server that supports docker.

  • With a small footprint and minimum resource reservation requirements, cRPD can easily scale to keep up with demand.

  • Provides significantly higher density without requiring resource reservation on the host than what is offered by VM-based solutions.

For more information on cRPD, see cRPD Deployment Guide for Linux Server.

cRPD Multi-channel KRT Support in SONiC

cRPD in SONiC supports multiple Kernel Routing Table (KRT) channels to download route table information to forwarding table (FIB). The two KRT channels supported are NetLink-based native Linux kernel FIB and FPMSyncd-based SONiC FIB.


Export policy with install-nexthop is not supported for routes which undergo resolution (routes pointing to indirect-nexthop in RPD).

This section describes the following:

Configure KRT multi-channels on cRPD in SONiC

You can configure KRT multi-channels at the [edit routing-options forwarding-table] hierarchy level as shown below:


In Junos OS Release 21.1R1, the configuration statements under the [edit routing-options forwarding-table channel channel-name] hierarchy level is only available for cRPD in SONiC platform.

Host Linux channel uses the export policy under the [edit routing-options forwarding-table export] hierarchy level.

FPMSyncd channel uses the policy at [edit routing-options forwarding-table channel channel-name export] hierarchy level.

Configure Traceoptions on cRPD in SONiC

You can enable debugging by configuring traceoptions on cRPD in SONiC at the [edit routing-options forwarding-table traceoptions flag] hierarchy level. The following new flags are supported on cRPD in SONiC:

  • fpm—FIB agent-related operations

  • table—Table operations

  • mfs—Multi-fib service operations

The following is a sample traceoptions configuration on cRPD in SONiC:

Sample Output

The following is a sample output where routes are advertised to linux (NetLink-based) kernel and to SONiC through FPMSyncd:

You can see that the route is downloaded to the linux (KRT-Netlink) kernel and is also downloaded to SONiC (KRT-FPM) through FPMSyncd.