Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?


Sharding and UpdateIO on cRPD

Understanding Sharding

The BGP process is split into different threads so that they can run concurrently on a multicore routing engine through RIB sharding which results in reduced convergence time and faster performance. BGP RIB sharding splits a BGP RIB into several sub RIBs and each sub RIB handles a subset of BGP routes. Each sub RIB is served by a separate RPD thread to achieve parallel processing.

BGP RIB sharding is disabled by default. This feature is supported only on 64-bit routing protocol process (rpd) where the Routing Engine has more than one core. We recommend configuring this feature on a device with atleast 4CPU cores and 16GB of memory.

If you configure rib-sharding on a routing engine, RPD will create sharding threads. By default the number of sharding threads created is same as the number of CPU cores on the routing engine. Optionally, you can specify the number-of-shards you want to create. The range is currently 1 through 31.

BGP RIB sharding on crpd is supported for inet.0 and inet6.0 as well as bgp.l3vpn.0, bgp.l3vpn-inet6.0 and bgp.rtarget, inet-vpn, inet6-vpn unicast, and route-target tables.

To enable this feature, you can configure rib-sharding at the edit system processes routing bgp hierarchy level. Sharding is dependent on the UpdateIO thread feature. Therefore, UpdateIO thread feature is mandatory when you configure sharding. To enable updateIO, you need to configure update-threading at the [edit system processes routing bgp] hierarchy level for rib-sharding configuration to pass commit check.

Understanding UpdateIO

The BGP protocol work to do Update message generation for peers in a BGP group. The BGP work in main RPD thread is split into different threads, called BGP UpdateIO threads. Each UpdateIO thread is responsible for generating updates for one or more BGP peer groups. BGP Update threads construct updates for groups in parallel and independent of other groups that are being serviced by different update threads.

This might offer significant convergence improvement in a write-heavy workload that involves advertising to many peers spread across many groups. BGP UpdateIO threads can be configured independent of RIB sharding feature but are mandatory to use with RIB sharding as they help improve packing of prefixes in outbound BGP update messages and thus help improve performance.

BGP update thread is disabled by default. If you configure update-threading on a routing engine, RPD creates update threads. By default, the number of update threads created is the same as the number of CPU cores on the routing engine. Update threading is only supported on a 64 bit routing protocol process (RPD). Optionally, you can specify the number-of-threads you want to create by using set update-threading <number-of-threads> statement at the edit system processes routing bgp hierarchy level. The range is currently 1 through 128.