03. Routing
This section explores routing protocols, including BGP, ISIS, and more, helping participants understand how to test routing protocols, scaling, and convergence to evaluate network performance and stability.
https://rtbrick.github.io/bngblaster/routing/index.html
The following image illustrates the emulated network topology, which applies to all routing tests in this training.

03.01. ISIS
This test is about ISIS with segment routing enabled.
https://rtbrick.github.io/bngblaster/routing/isis.html
# > Linux
cd ~/bngblaster-training/03_routing/01_isis
# Generate ISIS Topology
lspgen -h
lspgen --level 2 --area 49.0001/24 --connector 1720.1625.5011 -m isis.mrt
# Start BNG Blaster
bngblaster -S run.sock -C config.json -l isis
In the other shell, use the following commands to interact with the active BNG Blaster instance.
# > Linux
cd ~/bngblaster-training/03_routing/01_isis
bngblaster-cli run.sock isis-adjacencies
# > RBFS (op)
show show isis neighbor
show isis database
show route
show route summary
# ping one of the nodes in the emualted ISIS network
ping 192.168.0.0 source-ip 172.16.255.1
Checking the Grafana dashboard, you should see an increase in the route count.
Now you can play with the size of the emulated ISIS topology by increasing node count (-c
)
or amount of external routes (-e
), where external routes are automatically equally distributed
over all nodes. Meaning 1000 nodes with 1000 external routes results into one external route per node.
# > Linux
lspgen --level 2 --area 49.0001/24 --connector 1720.1625.5011 -m isis.mrt -c 1000 -e 1000
Now you can start the BNG Blaster again and verify the ISIS database, routes, and the Grafana dashboard.
03.02. OSPF
This test is about OSPFv2 and OSPFv3.
https://rtbrick.github.io/bngblaster/routing/ospf.html
# > Linux
cd ~/bngblaster-training/03_routing/02_ospf
# Generate OSPF Topology
lspgen -h
lspgen -y --protocol ospf2 --connector 172.16.255.11:172.17.0.1 -m ospf2.mrt
lspgen -y --protocol ospf3 --connector 172.16.255.11:172.17.0.1 -m ospf3.mrt
# Start BNG Blaster
bngblaster -S run.sock -C config.json -l ospf
In the other shell, use the following commands to interact with the active BNG Blaster instance.
# > Linux
cd ~/bngblaster-training/03_routing/02_ospf
bngblaster-cli run.sock ospf-neighbors instance 1
bngblaster-cli run.sock ospf-neighbors instance 2
bngblaster-cli run.sock ospf-neighbors instance 3
bngblaster-cli run.sock ospf-neighbors instance 4
# > RBFS (op)
show ospf neighbor
show ospf database
show route
show route summary
# ping one of the nodes in the emualted OSPF network
ping 192.168.0.0 source-ip 172.16.255.1
03.03. LDP
This test is about LDP.
https://rtbrick.github.io/bngblaster/routing/ldp.html
# > Linux
cd ~/bngblaster-training/03_routing/03_ldp
# Generate ISIS Topology and LDP label mappings
lspgen -y --level 2 --area 49.0001/24 --connector 1720.1625.5011 -e 10 -m isis.mrt
ldpupdate -l 172.16.255.11 -p 192.168.0.0/32 -P 10 -M 10 -f update.ldp
# Start BNG Blaster
bngblaster -S run.sock -C config.json -l ldp
Execute the following commands within the RBFS CLI:
# > RBFS (op)
show ldp neighbor
show ldp session
show ldp tcp connection detail
show ldp route
In the other shell, use the following commands to interact with the active BNG Blaster instance.
# > Linux
cd ~/bngblaster-training/03_routing/03_ldp
bngblaster-cli run.sock ldp-sessions
bngblaster-cli run.sock ldp-database ldp-instance-id 1
bngblaster-cli run.sock ldp-database ldp-instance-id 2
# > Linux
cd ~/bngblaster-training/03_routing/03_ldp
bngblaster-cli run.sock stream-info flow-id 1
bngblaster-cli run.sock stream-info flow-id 2
The BNG Blaster monitors each traffic flow, tracking up to two receive labels
along with the received EXP and TTL values. Use jq
to check if the received
labels match with those advertised via LDP:
# > Linux
cd ~/bngblaster-training/03_routing/03_ldp
bngblaster-cli run.sock stream-info flow-id 1 | jq .'["stream-info"]["rx-mpls1"]'
bngblaster-cli run.sock stream-info flow-id 2 | jq .'["stream-info"]["rx-mpls1"]'
03.04. BGP
https://rtbrick.github.io/bngblaster/routing/bgp.html
# > Linux
cd ~/bngblaster-training/03_routing/04_bgp
# Generate BGP updates with corresponding streams
bgpupdate -f update.bgp -a 65001 -l 100 -n 172.16.2.2 -N 1 -p 10.1.0.0/24 -P 100000 --end-of-rib -s streams.json --stream-interface veth4:10 --stream-pps 0.1
# Start BNG Blaster
bngblaster -S run.sock -C config.json -T streams.json -l bgp -I
Note
The configuration shows asymmetric thread allocation, with two TX threads for the traffic source interface and two RX threads for the traffic destination interface. All other interfaces and traffic directions are handled by the main thread.
In the other shell, use the following commands to interact with the active BNG Blaster instance.
# > Linux
cd ~/bngblaster-training/03_routing/04_bgp
bngblaster-cli run.sock bgp-sessions
# > RBFS (op)
show route summary
show bgp peer
show bgp tcp bgp.iod.1 connection detail
03.05. BGP with ISIS
This test simulates a BGP session initiated from an address that is reachable exclusively through the IS-IS network, advertising prefixes with next-hops distributed across the virtual IS-IS topology.
# > Linux
cd ~/bngblaster-training/03_routing/05_bgp_isis
# Generate ISIS Topology, BGP updates and streams
lspgen --level 2 --area 49.0001/24 --connector 1720.1625.5011 -m isis.mrt -c 100
bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 100 -p 10.1.0.0/24 -P 10000 -s streams.json --stream-interface veth4:10
bgpupdate -f update.bgp -a 65001 -l 100 -n 192.168.0.0 -N 100 -p fc66:1::/48 -P 10000 --append --end-of-rib -s streams.json --stream-interface veth4:10 --stream-append
# Start BNG Blaster
bngblaster -S run.sock -C config.json -T streams.json -l isis -l bgp -I
# > Linux
cd ~/bngblaster-training/03_routing/05_bgp_isis
bngblaster-cli run.sock stream-info flow-id 1
As an optional task, you can stop the BNG Blaster and make the following configuration change.
# > RBFS (op)
switch-mode config
# > RBFS (cfg)
set instance default protocol bgp address-family ipv4 unicast resolve-nexthop safi labeled-unicast
commit switch-to-op
Restart the BNG Blaster and review the stream-info
details to see if any changes have occurred.
# > Linux
# Start BNG Blaster
bngblaster -S run.sock -C config.json -T streams.json -l isis -l bgp -I
Now review the stream-info
output and look for rx-mpls1
.
# > Linux
cd ~/bngblaster-training/03_routing/05_bgp_isis
bngblaster-cli run.sock stream-info flow-id 1
Finally, revert the configuration to its original state.
# > RBFS (op)
switch-mode config
# > RBFS (cfg)
rollback 1
show diff set
commit switch-to-op
03.06. BGP Convergence
This script is an adapted version of the BGP CP/DP Testing script from the project below, tailored to run on low-scale virtual resources.
https://github.com/rtbrick/BGP-CP-DP-Testing
This project demonstrates how to measure the convergence between the BGP Control-Plane (CP) and the Data-Plane (DP) using the open-source tool BNG Blaster. By utilizing BNG Blaster, we can analyze and monitor the time it takes for routing changes to propagate from the control-plane, where BGP updates occur, to the data-plane, where actual data packet forwarding happens.
# > Linux
cd ~/bngblaster-training/03_routing/06_bgp_convergence
# Generate BGP updates and streams
./generate_routes.sh
# Start test
./convergence.py
Note
You can use the ./stop.sh
script to manually force-stop the test.