inetb is a benchmarking tool for BGP RIB / FIB convergence
inetb assumes a test environment below:
- router to be tested(DUT) has 2 eBGP sessions to gobgpds
- gobgpds are configured with different ASNs
- gobgpds run on the same server
inetb counts BGP updates:
- inetb controls gobgpds via gRPC
- Make gobgpds send and receive many BGP updates to and from the router(DUT)
- inetb monitors which prefixes are advertised or withdrawn on peering interfaces with libpcap, without interrupting gobgpd behaviors
Then inetb dumps the results with timestamp to JSON files.
You can draw charts with your favorite libraries. An example of convergence time charts is included in this repository.
- gobgpd1 advertises new routes to the router(DUT)
- inetb counts NLRIs in BGP updates passed through router(DUT) - gobgpd1 peer
- After router(DUT) gets converged for the new NLRI, it should advertise the same NLRIs to gobgpd2
- inetb also counts NLRIs on router(DUT) - gobgpd2 peer
- gobgpd2 advertises stronger routes to the router(DUT)
- inetb counts NLRIs in BGP updates passed through router(DUT) - gobgpd2 peer
- After router(DUT) gets converged for the new NLRI, it should advertise the same NLRIs to gobgpd1
- inetb also counts NLRIs on router(DUT) - gobgpd1 peer
- gobgpd2 sends withdrawals of stronger routes to the router(DUT)
- inetb counts withdrawn prefixes in BGP updates passed through router(DUT) - gobgpd2 peer
- After router(DUT) gets converged for the withdrawn BGP updates, it should send the same withdrawals back to gobgpd1
- inetb also counts withdrawals on router(DUT) - gobgpd1 peer
- gobgpd1 sends withdrawals of all routes to the router(DUT)
- inetb counts withdrawn prefixes in BGP updates passed through router(DUT) - gobgpd1 peer
- After router(DUT) gets converged for the withdrawn BGP updates, it should send the same withdrawals back to gobgpd2
- inetb also counts withdrawals on router(DUT) - gobgpd2 peer
go get github.com/codeout/inetb
1 . Start 2 gobgpds with different ASNs.
- See gobgp document for details
- Config example is available here
- gobgpds should be configured with local-address so that inetb can identify the 2 BGP sessions
gobgpd -f gobgpd1.conf --disable-stdlog
gobgpd -f gobgpd2.conf --disable-stdlog --api-hosts :50052
2 . Download MRT File
Table dump v2 for full routes is available at Route Views Project for instance.
3 . Start inetb
inetb rib.20170707.1200
It will examine 4 test scenarios above and then dump JSON reports in report/
directory.
- After router(DUT) receives routes and get settled, it may unexpectedly wait for a while until advertises routes to other peers when MRAI is implemented
- Try
out-delay
option in Juniper oradvertise-interval
in Cisco to disable it
Run
ruby $GOPATH/src/github.com/codeout/inetb/report/make.rb report
And open report/chart.html
.
- FIB convergence benchmark
Copyright (c) 2017 Shintaro Kojima. Code released under the MIT license.
Code includes a part of gobgp which is distributed in the Apache License 2.0.