Site icon GIXtools

GIX – Route Collector performance

Test environment.

The processing time was measured as a time difference between the first ExaBGP log entry “Connected to peer neighbor” and to the time when processed routes counters reached 462k prefixes for each full IPv4 peer.

Test 1 – ExaBGP without collector.py – 1 full IPv4 peer.

Test 2 – ExaBGP without collector.py – 2 full IPv4 peers.

Test 3 – ExaBGP without collector.py – 6 full IPv4 and 6 full IPv6 peers.

Test 4 – ExaBGP with collector.py, but without SQL operations – 1 full IPv4 peer.

Test 5 – ExaBGP with collector.py, but without SQL operations – 2 full IPv4 peers.

Test 6 – ExaBGP with collector.py, but without SQL operations – 6 full IPv4 and 6 full IPv6 peers.

As above, but with exabgp.cache.attributes=false and exabgp.cache.nexthops=false.

Memory usage after processing all prefixes with attributes and nexthops caching enabled.

 7814 nobody        1  20    0   223M   163M select  1   1:58  0.00% pypy2.0   < - ExaBGP
 8624 nobody        1  20    0 41240K  7948K piperd  0   2:24  0.00% python2.7 <- collector.py

Memory usage with attributes and nexthops caching turned off.

 7761 nobody        1  20    0   190M   130M select  1   2:04  0.05% pypy2.0   < - ExaBGP
 8234 nobody        1  20    0 41240K  7948K piperd  0   2:24  0.00% python2.7 <- collector.py

Test 7 – ExaBGP with collector.py + SQL operations – 1 full IPv4 peer.

Test 8 – ExaBGP with collector.py + SQL operations – 2 full IPv4 peers.

Test 9 – ExaBGP with collector.py + SQL operations – 6 full IPv4 and 6 full IPv6 peers.
Number of prefixes processed by each full IPv4 peer:

Total processing time – 42m15s

For comparison an Atom N2800 based platform with 2GB of memory and 2 SATA drives in RAID1 needed more than 6 hours to process prefixes from 5 full IPv4 peers.

Some advice how to increase the overall performance of ExaBGP and collector.py:

Exit mobile version