Cisco 7200 Emulator
Gestern im Netz gefunden: ein Emulator für die Cisco 7200VXR Reihe. Binaries für x86 und x86_64 Linux gibts unter http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator, den Sourcecode dazu auch, das ganze kompiliert sogar auf MacOSX.
Der Emulator nutzt auf den x86 Plattformen einen JIT Compiler, allerdings bedarf es einiges an Dampf. Der Dual-Xeon mit HT hat gut zu tun...
Emulierte Features
- NPE-100 bis NPE-400
- PA-4T+ und PA-8T (serielle Karten)
- PA-FE (FastEthernet Interface)
- PA-A1 (ATM Interface)
- Virtuelle Ethernet Bridge (um mehrere Instanzen über Ethernet zu koppeln)
- Virtueller Framerelay Switch mit LMI Support
- Virtueller ATM Switch
Was ich bisher damit zusammengestümpert habe
Eigentlich relativ einfach. 2 Router die Transit-AS spielen, R1 spricht mit R2 eBGP, genau wie R3 und R4. R2 muß mit R3 iBGP sprechen. R2 und R3 müssen natürlich untereinander ihre externen Next-Hops austauschen, dieses tun sie über OSPF.
Die BeispielconfigsR1
hostname R1
!
no ip domain-lookup
!
interface Loopback0
ip address 172.16.0.1 255.255.252.0
no clns route-cache
!
interface Serial1/0
ip address 192.168.0.1 255.255.255.252
!
router bgp 1
no synchronization
network 172.16.0.0 mask 255.255.252.0
network 192.168.0.0 mask 255.255.255.252
neighbor 192.168.0.2 remote-as 2
no auto-summary
R2
hostname R2
!
no ip domain-lookup
!
interface FastEthernet0/0
ip address 10.0.0.1 255.255.255.0
!
interface Serial1/0
ip address 192.168.0.2 255.255.255.252
!
router ospf 100
log-adjacency-changes
redistribute connected subnets
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 2
no synchronization
network 10.0.0.0 mask 255.255.255.0
neighbor 10.0.0.2 remote-as 2
neighbor 192.168.0.1 remote-as 1
no auto-summary
R3
hostname R3
!
no ip domain-lookup
!
interface FastEthernet0/0
ip address 10.0.0.2 255.255.255.0
!
interface Serial1/0
ip address 192.168.0.5 255.255.255.252
!
router ospf 100
log-adjacency-changes
redistribute connected subnets
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 2
no synchronization
bgp log-neighbor-changes
network 10.0.0.0 mask 255.255.255.0
neighbor 10.0.0.1 remote-as 2
neighbor 192.168.0.6 remote-as 3
no auto-summary
R4
hostname R4
!
no ip domain-lookup
!
interface Loopback0
ip address 172.20.0.1 255.255.252.0
!
interface Serial1/0
ip address 192.168.0.6 255.255.255.252
!
router bgp 3
no synchronization
network 172.20.0.0 mask 255.255.252.0
network 192.168.0.4 mask 255.255.255.252
neighbor 192.168.0.5 remote-as 2
Aufrufe für den Emulator
Es sollte für jeden Router ein eigenes Verzeichnis angelegt werden, weil dynamips nvram und sram als Dateien ablegt und sonst reichlich durcheinander kommt, wenn man 4 Emulatorinstanzen aus demselben Verzeichnis startet.
Verzeichnisbaum
falk@netlab:~/c7200/lab1$ ls C7200-K9.bin lab_description.txt r1/ r2/ r3/ r4/ sockets/
R1 cd r1 rm -f ../sockets/r1_* dynamips -X -r 128 -T 7001 -t npe-200 \ -p 1:PA-4T+ -s 1:0:unix:../sockets/r1_s0:../sockets/r2_s0 \ ../C7200-K9.bin
R2 cd r2 rm -f ../sockets/r2_* dynamips -X -r 128 -T 7002 -t npe-200 \ -p 0:C7200-IO-FE -s 0:0:unix:../sockets/r2_e0:../sockets/r3_e0 \ -p 1:PA-4T+ -s 1:0:unix:../sockets/r2_s0:../sockets/r1_s0 \ ../C7200-K9.bin
R3 cd r3 rm -f ../sockets/r3_* dynamips -X -r 128 -T 7003 -t npe-200 \ -p 0:C7200-IO-FE -s 0:0:unix:../sockets/r3_e0:../sockets/r2_e0 \ -p 1:PA-4T+ -s 1:0:unix:../sockets/r3_s0:../sockets/r4_s0 \ ../C7200-K9.bin
R4 cd r4 rm -f ../sockets/r4_* dynamips -X -r 128 -T 7004 -t npe-200 \ -p 1:PA-4T+ -s 1:0:unix:../sockets/r4_s0:../sockets/r3_s0 \ ../C7200-K9.bin
R1#ping 172.20.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.20.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/30/32 ms
dynamips
liegt auf meinem System in /usr/local/bin. Am besten macht man sich einen screen
auf, in dem man jede Emulatorinstanz startet. Die Routerconsolen gibts über telnet
auf den Ports 7001 bis 7004.
Vielleicht komme ich jetzt ja mal dazu, noch ein paar Artikel zum Thema Routing und Switching mit Cisco Gerümpel zu schreiben. Interesse? Wenn ja, bitte in den Kommentaren melden.