GNS3 Router performance

The purpose of this lab was to evaluate GNS3 emulation performance with real traffic.
I was going to test GRE/IPv6IP overhead impact, but unfortunately this was not possible because of poor routing performance in virtual environment.

Topology
HardWare: 8x2.4Ghz Xeon  + 8GB DDR ECC + RAID1 + multiple 1Gbps NICs

OS - Ubuntu running in ESXi 5
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.10
Release:        13.10
Codename:       saucy
$
VPC - VirtualBox 4.2.16 (installed from Ubuntu software)
bsd1, bsd2 - just little TCP tunned FreeBSD 9.3 hosts with nuttcp installed
  NIC: em0 - bridge to real Internet, em1 - Generic driver (udp tunnel) - to GNS network
3700-sw - Cisco 3700 image with NM-SW modules, running as switch
3600-router - Cisco 3600 running as router with 2 connected network
3700-router1 - Cisco 3700 running as router, emulating routing (multiple hop)
GNS3 0.8.6 - IdlePC is set correctly.

Case 1 - 3700-router
3700-router1
!
hostname 3700-router1
!
interface FastEthernet0/0
 ip address 10.0.11.1 255.255.255.0
!
interface FastEthernet0/1
 ip address 192.168.45.4 255.255.255.0
!
router eigrp 1
 network 0.0.0.0
 no auto-summary
!
3700-router1#sh ip route | b Ga
Gateway of last resort is not set

C    192.168.45.0/24 is directly connected, FastEthernet0/1
     10.0.0.0/24 is subnetted, 2 subnets
C       10.0.11.0 is directly connected, FastEthernet0/0
D       10.0.12.0 [90/307200] via 192.168.45.5, 00:00:03, FastEthernet0/1
3700-router1#

3700-router2
!
hostname 3700-router2
!        
interface FastEthernet0/0
 ip address 10.0.12.1 255.255.255.0
!
interface FastEthernet0/1
 ip address 192.168.45.5 255.255.255.0
!
router eigrp 1
 network 0.0.0.0
 no auto-summary
!
3700-router2#sh ip route | be Ga
Gateway of last resort is not set

C    192.168.45.0/24 is directly connected, FastEthernet0/1
     10.0.0.0/24 is subnetted, 2 subnets
D       10.0.11.0 [90/307200] via 192.168.45.4, 00:00:58, FastEthernet0/1
C       10.0.12.0 is directly connected, FastEthernet0/0
3700-router2#
bsd-1
root@bsd1:/home # ps aux | grep nuttcp
root  1135   0.0  0.1  9464 1612 ??  Is    1:56AM   0:00.04 nuttcp -S
bsd-2
[root@bsd2 /etc]# traceroute -d 10.0.11.2
traceroute to 10.0.11.2 (10.0.11.2), 64 hops max, 40 byte packets
 1  10.0.12.1 (10.0.12.1)  5.952 ms  11.310 ms  9.866 ms
 2  192.168.45.4 (192.168.45.4)  30.097 ms  26.120 ms  30.400 ms
 3  10.0.11.2 (10.0.11.2)  40.311 ms  35.755 ms  41.429 ms
[root@bsd2 /etc]# nuttcp -i5 -w2M 10.0.11.2     
    0.6250 MB /   5.01 sec =    1.0469 Mbps
    0.6875 MB /   5.00 sec =    1.1535 Mbps
    0.6250 MB /   5.00 sec =    1.0486 Mbps
    0.6875 MB /   5.00 sec =    1.1535 Mbps
    0.6875 MB /   5.00 sec =    1.1534 Mbps
    3.3294 MB /  25.08 sec =    1.1134 Mbps 1 %TX 2 %RX 0 host-retrans 35.85 msRTT


Case 2 - 3600-router only
3600-router
!
hostname 3600-router
!
!
interface FastEthernet0/0
 ip address 10.0.11.1 255.255.255.0
!
interface FastEthernet1/0
 ip address 10.0.12.1 255.255.255.0
!

3600-router#sh ip route | be Ga
Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 2 subnets
C       10.0.11.0 is directly connected, FastEthernet0/0
C       10.0.12.0 is directly connected, FastEthernet1/0
3600-router#

bsd2
[root@bsd2 /etc]# traceroute -d 10.0.11.2
traceroute to 10.0.11.2 (10.0.11.2), 64 hops max, 40 byte packets
 1  10.0.12.1 (10.0.12.1)  14.056 ms  9.827 ms  10.472 ms
 2  10.0.11.2 (10.0.11.2)  19.577 ms  16.934 ms  20.501 ms
[root@bsd2 /etc]# nuttcp -i5 -t10 -w2M 10.0.11.2
   10.1875 MB /   5.01 sec =   17.0739 Mbps
   10.5625 MB /   5.00 sec =   17.7138 Mbps

   23.0625 MB /  11.07 sec =  17.4797 Mbps 4 %TX 3 %RX 1 host-retrans 15.77 msRTT
[root@bsd2 /etc]#

Case 3 - 3700-sw only

3700-sw
!
hostname 3700-sw
!
interface FastEthernet1/0
!
interface FastEthernet1/1
!
3700-sw#sh ip int br | exc down
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet1/0            unassigned      YES unset  up                    up
FastEthernet1/1            unassigned      YES unset  up                    up
Vlan1                      unassigned      YES unset  up                    up
3700-sw#

bsd2
root@bsd2:/usr/home/sc # ifconfig em1 | egrep 'netmask|media'
        inet 10.0.11.22 netmask 0xffffff00 broadcast 10.0.11.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
 root@bsd2:/etc # traceroute 10.0.11.2
traceroute to 10.0.11.2 (10.0.11.2), 64 hops max, 40 byte packets
 1  10.0.11.2 (10.0.11.2)  1.721 ms  2.171 ms  1.258 ms
root@bsd2:/etc # 
[root@bsd2 /etc]# nuttcp -i5 -w2m 10.0.11.2
   82.8750 MB /   5.01 sec =  138.7858 Mbps
   75.8125 MB /   5.00 sec =  127.1785 Mbps
  169.6250 MB /  10.52 sec =  135.2339 Mbps 43 %TX 12 %RX 234 host-retrans 1.73 msRTT
[root@bsd2 /etc]#

Case 4 - speedtest done with real IPs
bsd1 and bsd2 have access to real network.

The test evaluate maximum throughput with real speedtest as destination (external nuttcp server guaranteed speed - 1Gbps )
[root@bsd2 /etc]# nuttcp -i5 -w2m NUTTCP_REAL_SERVER
nuttcp-r: v6.1.2: Error: unable to setsockopt SO_RCVBUF: No buffer space available
errno=55
nuttcp-r: Warning: receive window size 66608 < requested window size 2097152
   72.5000 MB /   5.00 sec =  121.6295 Mbps
   78.9375 MB /   5.00 sec =  132.4355 Mbps

  153.2500 MB /  10.38 sec =  123.8164 Mbps 54 %TX 5 %RX 17 host-retrans 2.23 msRTT
[root@bsd2 /etc]#

Conclusion
So VPC in this case can generate up to 125 Mbps real traffic, but through GNS3 emultated routers is only 1 Mbps.

Dont even know where to look for some tuning. Anyone ?