ExtremeXOS is a network operating system used in Extreme Networks network switches. Virtualized version of ExtremeXOS - EXOS virtual machine vmdk image can be used to build virtual lab without need to use hardware switches. Although ExtremeXOS virtual machine can be downloaded for free only certain features are known to work. For this reason software should not be used for testing any actual networking setups or performance tests.
The tutorial consist of two parts. The part one explains how to configure Qemu emulator to run ExtremeXOS virtual machine. In part two, ExtremeXOS VM is connected to virtual lab run by GNS3 software. In this lab, features such as VLANs, 802.1q trunks and OSPF routing protocol are tested between multilayer switches from different vendors - Cisco, Arista and Extreme Networks.
Host Software and Hardware Requirements
- Linux x86-64,
- Qemu emulator version 2.1.2 (qemu-system-x86_64, qemu-system-i386 ) or later,
- GNS3 version 1.1 or later,
- RAM - at least 4 GB,
- CPU with hardware virtualization support (VT-x or AMD-V)
Virtual Machines Software and Hardware Requirements
- ExtremeXOS VM 15.3.2, exosvm.vmdk,
RAM 256 MB ,CPU x86-64
Qemu additional parameters: -nographic -enable-kvm - Vios_l2-ADVENTERPRISEK9-M), Version 15.0, vIOS-L2.vmdk,
RAM 512MB, CPU x86-64
Qemu additional parameters: -enable-kvm -nographic - Arista 4.14.2F, image vEOS-4.14.2F.vmdk
RAM 1024 MB, x86-64 CPU
Qemu additional parameters: -boot d -cdrom Aboot-veos-serial-2.0.8.iso -enable-kvm -nographic - Linux Core 3.0.21-tinycore, linux-core-4.7.7.img
RAM 128 MB, CPU i386
Qemu additional parameters: -nographic -enable-kvm
To download ExtremeXOS 15.3.2 virtual machine, you must register first. Create your account here and you will get your free registration code. When you finish registration process, navigate to download page.
Click on Download Free button and enter the mail address you used during the registration. Login with your username (email address) and password.
1. ExtremeXOS Virtual Machine on GNS3
1. Extract ZIP archive
$ unzip extremexosvm1532.zip
$ cd XOS_VM_Lab
$ unzip EXOS_VM_15_3_2.zip
2. Run XOS Virtual Machine using Qemu
Use Qemu to run virtual machine vmdk image.
$ /usr/local/bin/qemu-system-x86_64 -serial telnet::3366,server,nowait -m 512MB -enable-kvm exosvm.vmdk
Note: If you use Windows OS, omit the parameter -enable-kvm otherwise the virtual machine fails to start.
Once the machine starts, select an option Primary EXOS Image on (hd0,1) using serial console.
Picture 1 - ExtremeXOS Virtual Machine Grub Menu
Connect to virtual machine serial port with the telnet command.
$ telnet localhost 3366
Once the machine boots it sits on the login prompt. Username is admin without password set. After the first successful login you will be asked to answer several configuration questions.
Picture 2 - Boot with the Empty Configuration
3. Connect XIOS Virtual Machine to GNS3
Navigate to Edit-> Preferences-> Qemu VMs -> and create New machine according to settings below. After you finish Qemu VM configuration, you can change parameters clicking on Edit button. For instance, you can change number of NICs or configure additional Qemu parameters (-nographic, -enable-kvm) etc.
Picture 3 - Qemu Advanced Settings Tab
2. GNS3 Lab Configuration
The lab consist of three multilayer switches from different vendors. Cisco switch is represented by Virtual IOS L2 image, Arista switch is running Arista virtual EOS and extreme switch is running ExtremeXOS. Switches are connected by their ports that are configured as 802.1q trunks. Only tagged frames from VLAN ID 50, 51 and 52 are allowed on particular trunk ports. Clients connected to the switch ports are simulated by Linux Core.
Picture 4 - Lab Topology
Arista-I
Login with username admin. Password is not set.
localhost>en
localhost#conf t
Hostname
localhost(config)#hostname Arista-I
VLANs
Arista-I(config)#vlan 52
Arista-I(config-vlan-52)#vlan 20
Arista-I(config-vlan-20)#vlan 51
Arista-I(config-vlan-51)#exit
Password for Access to Privileged User Mode
Arista-I(config)#enable secret arista
Allow SSH Access to CLI
Arista-I(config)#username admin secret arista
Trunk Ports and Access Port
Arista-I(config)#interface ethernet 4
Arista-I(config-if-Et4)#switchport mode trunk
Arista-I(config-if-Et4)#switchport trunk allowed vlan 52
Arista-I(config-if-Et4)#interface ethernet 1
Arista-I(config-if-Et1)#switchport mode trunk
Arista-I(config-if-Et1)#switchport trunk allowed vlan 51
Arista-I(config-if-Et1)#interface ethernet 2
Arista-I(config-if-Et2)#switchport mode access
Arista-I(config-if-Et2)#switchport access vlan 20
VLAN Interfaces
Arista-I(config-if-Et2)#interface vlan 52
Arista-I(config-if-Vl52)#ip address 10.10.52.2 255.255.255.252
Arista-I(config-if-Vl52)#no shutdown
Arista-I(config-if-Vl52)#interface vlan 51
Arista-I(config-if-Vl51)#ip address 10.10.51.1 255.255.255.252
Arista-I(config-if-Vl51)#no shutdown
Arista-I(config-if-Vl51)#interface vlan 20
Arista-I(config-if-Vl20)#ip address 192.168.20.1 255.255.255.0
Arista-I(config-if-Vl20)#no shutdown
Arista-I(config-if-Vl20)#exit
IPv4 Routing
Arista-I(config)#ip routing
OSPF Protocol
Arista-I(config)#router ospf 1
Arista-I(config-router-ospf)#network 10.10.51.0 0.0.0.3 area 0
Arista-I(config-router-ospf)#network 10.10.52.0 0.0.0.3 area 0
Arista-I(config-router-ospf)#network 192.168.20.0 0.0.0.255 area 0
Arista-I(config-router-ospf)#passive-interface ethernet 2
Save Configuration
Arista-I(config)#do write mem
Linux Core-II
Login as user tc. Password is not set.
tc@box:~$ sudo su
root@box:~# echo "ip addr add 192.168.20.100/24 dev eth0" >> /opt/bootlocal.sh
root@box:~#echo "ip route add default via 192.168.20.1" >> /opt/bootlocal.sh
root@box:~# echo "hostname Core-II" >> /opt/bootlocal.sh
Apply Changes
root@box:~# /opt/bootlocal.sh
Make Configuration Persistent After Boot
root@Core-II:~# /usr/bin/filetool.sh -b
vIOS-I
Hostname
vIOS-L2-01>en
vIOS-L2-01#conf t
vIOS-L2-01(config)#hostname vIOS-L2-I
VLANs
vIOS-L2-I(config)#vlan 51
vIOS-L2-I(config-vlan)#vlan 30
vIOS-L2-I(config-vlan)#vlan 50
vIOS-L2-I(config-vlan)#exit
Password for Access to Privileged User Mode
vIOS-L2-I(config)#enable secret cisco
SSH server on Switch
vIOS-L2-I(config)#username admin secret cisco
vIOS-L2-I(config)#ip ssh version 2
vIOS-L2-I(config)#ip domain-name cisco
vIOS-L2-I(config)#crypto key generate rsa
Access to VTY ports
vIOS-L2-I(config)#line vty 0 15
vIOS-L2-I(config-line)#login local
vIOS-L2-I(config-line)#exit
Access to console port
vIOS-L2-I(config)#line console 0
vIOS-L2-I(config-line)#login local
Trunk Ports and Access port
vIOS-L2-I(config)#interface GigabitEthernet 0/1
vIOS-L2-I(config-if)#switchport trunk encapsulation dot1q
vIOS-L2-I(config-if)#switchport mode trunk
vIOS-L2-I(config-if)#switchport trunk allowed vlan 51
vIOS-L2-I(config)#interface gigabitEthernet 0/2
vIOS-L2-I(config-if)#switchport trunk encapsulation dot1q
vIOS-L2-I(config-if)#switchport mode trunk
vIOS-L2-I(config-if)#switchport trunk allowed vlan 50
vIOS-L2-I(config)#interface gigabitEthernet 0/0
vIOS-L2-I(config-if)#switchport mode access
vIOS-L2-I(config-if)#switchport access vlan 30
VLAN Interfaces
vIOS-L2-I(config)#interface vlan 51
vIOS-L2-I(config-if)#ip address 10.10.51.2 255.255.255.252
vIOS-L2-I(config-if)#no shutdown
vIOS-L2-I(config)#interface vlan 50
vIOS-L2-I(config-if)#ip address 10.10.50.2 255.255.255.252
vIOS-L2-I(config-if)#no shutdown
IOS-L2-I(config-if)#interface vlan 30
vIOS-L2-I(config-if)#ip address 192.168.30.1 255.255.255.0
IPv4 Routing
vIOS-L2-I(config-if)#ip routing
OSPF Protocol
vIOS-L2-I(config)#router ospf 1
vIOS-L2-I(config-router)#network 10.10.50.0 0.0.0.3 area 0
vIOS-L2-I(config-router)#network 10.10.51.0 0.0.0.3 area 0
vIOS-L2-I(config-router)#network 192.168.30.0 0.0.0.255 area 0
vIOS-L2-I(config-router)#passive-interface GigabitEthernet 0/0
Save Configuration
vIOS-L2-I(config)#do write
Core-III
tc@box:~$ sudo su
root@box:~# echo "ip addr add 192.168.30.100/24 dev eth0" >> /opt/bootlocal.sh
root@box:~# echo "ip route add default via 192.168.30.1" >> /opt/bootlocal.sh
root@box:~# echo "hostname Core-III" >> /opt/bootlocal.sh
Apply Changes
root@box:~# /opt/bootlocal.sh
Persistent Configuration after Boot
root@Core-III:~# /usr/bin/filetool.sh -b
EXOS-I
Login with username admin. Password is not set.
Change password for user admin
Summit-PC.1 # configure account "admin" password
Hostname
Summit-PC.2 # configure snmp sysName EXOS-I
SSH
To configure ssh, we must first download and install the separate Extreme Networks SSH software module (ssh.xmod). It is not shown in this tutorial.
VLANs
EXOS-I.3 # create vlan data52 tag 52
EXOS-I.4 # create vlan data50 tag 50
EXOS-I.5 # create vlan data10 tag 10
Trunk Ports and Access pPort
EXOS-I.6 # configure vlan data50 add ports 2 tagged
EXOS-I.7 # configure vlan data52 add ports 4 tagged
EXOS-I.8 # configure vlan "Default" delete ports 1
EXOS-I.9 # configure vlan "data10" add ports 1 untagged
VLAN Interfaces
EXOS-I.10 # configure vlan data50 ipaddress 10.10.50.1/30
EXOS-I.11 # configure vlan data52 ipaddress 10.10.52.1/30
EXOS-I.12 # configure vlan data10 ipaddress 192.168.10.1/24
IPv4 Routing
EXOS-I.13 # enable ipforwarding
OSPF Protocol
EXOS-I.2 # configure ospf add vlan data50 area 0
EXOS-I.3 # configure ospf add vlan data52 area 0
EXOS-I.9 # configure ospf add vlan "data10" area 0 passive
EXOS-I.4 # enable ospf
Save configuration
Summit-PC.2 # save
Core-I
tc@box:~$ sudo su
root@box:~# echo "ip addr add 192.168.10.100/24 dev eth0" >> /opt/bootlocal.sh
root@box:~# echo "ip route add default via 192.168.10.1" >> /opt/bootlocal.sh
root@box:~# echo "hostname Core-I" >> /opt/bootlocal.sh
Apply Changes
root@box:~# /opt/bootlocal.sh
Persistent Configuration after Boot
root@Core-I:~# /usr/bin/filetool.sh -b
Used Links
http://www.curtis-lamasters.com/cisco-vs-extreme-networks-switching-commands/
http://support.dce.felk.cvut.cz/mediawiki/index.php/Extreme_Networks_XOS_Commands#Basic_setup
http://mantikore.wordpress.com/2008/10/08/basic-command-of-extreme-switch/
http://netengu.blogspot.sk/2011/06/cisco-hp-and-extreme-networks-equvilent.html
End.
Thanks for this great find. Your post mentioned vIOS-L2.vmdk for the Cisco. What is that?
I thought that the Arista vEOS interfaces are 10-gig only? Is that not true? Can it connect to a virtual 1-gig interface at Layer 2?