I have been experimenting with the network traffic generation tool iperf in my home networking lab to load test a few Cisco routers. I was curious what the CPU load would be on the routers with multiple PC’s sending traffic across several routed subnets. I configured two PC’s on my workstation segment, 192.168.0.0/24, as iperf clients and set up a dual-core Pentium 4 FreeBSD 10.3 machine as the iperf server that spanned a Cisco 2801 and a Cisco 2621XM like so:
The routers use RIP v2 routing protocol to learn all of the configured routes they have consisting of several VLSM 10.X.X.X and 192.168.X.X networks. I was initially using static routing on my iperf client PC’s to send packets to the iperf sink PC on the 10.30.30.0 network like so:
sudo route add -net 10.0.0.0/8 gw 192.168.0.201
This got somewhat tedious after time, having to run this on multiple machines before I could do any testing. A few years ago, I had done some experimentation with quagga. Quagga is a software defined networking utility that can change an x-nix PC into a router that can learn IP routes using protocols like RIPv2, OSPF, BGP, et.al. I used RIPv2 for simplicity.
FYI: this is not a tutorial on installing or configuring quagga or iperf. There are many tutorials out there for that.
After configuring quagga and the ripd daemon on my iperf client PC’s, they automatically learned the routes to all the 10 and 192.168 networks in my lab with no manual configuration on my part.
To see the routes my PC learned via ripd + quagga, run the following command:
telnet localhost zebra
show ip route
Here, you can see the routes the PC learned via RIPv2 from the Cisco routers.
The following tcpdump command can view the RIPv2 packets coming from the PC’s neighboring router:
sudo tcpdump -i eth2 udp port 520 -XX -#
Now, each time I turn on my PC’s, they learn the routes in my lab automatically with no configuration on my part.
Next time, I will post the results of the CPU load on the Cisco routers using iperf testing.