Sharding and UpdateIO on cRPD
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 at least 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 the 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 supports the following tables:
-
inet.0andinet6.0 -
bgp.l3vpn.0andbgp.l3vpn-inet6.0 -
bgp.rtarget,inet6-vpn unicast, androute-target
To enable this feature, you can configure rib-sharding at the edit
system processes routing bgp hierarchy level. Sharding depends 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.
See Also
UpdateIO
The BGP protocol works 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 spreads across many groups. BGP UpdateIO threads can be configured separately from the RIB sharding feature. However, they are mandatory with RIB sharding as they improve prefix packing in outbound BGP updates and boost 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.