Arista vEOSSwitchs

Arista vEOS on GNS3

EOS (Extensible Operating System) is Linux-based network operating system developed by Arista Networks that runs on all Arista switches. Virtual EOS (vEOS) is single image and can be run as a virtual machine. The article describes how to set up vEOS virtual machine and connects it to GNS3 in order to test EOS functionality.

Host Requirements
Linux x86-64
Qemu or VirtualBox installed
GNS3 1.5.2

Virtual Machine Requirements
2048 MB RAM
IDE CD-ROM drive with mounted Aboot-veos-serial-8.0.0.iso
2GB flash IDE disk – vEOS-lab-4.17.2F.vmdk
NICs e1000 type

1. Download Bootloader and Virtual EOS

Click the link to create a new account. The guest account is sufficient for downloading vEOS software. Click the link and login with the credentials you entered during the registration. You have to accept License Agreement in order to download vEOS software.

Download the bootloader and a virtual vmdk disk:


2. Arista Switch First Boot on Qemu

Use Qemu to boot Arista switch virtual machine for the first time.

$ /usr/local/bin/qemu-system-x86_64 -m 2048M -enable-kvm -cdrom ./Aboot-veos-serial-8.0.0.iso -boot d vE
OS-lab-4.17.2F.vmdk -serial telnet::3355,server,nowait

Connect to the serial port of the image with the command below and check the boot process:

$ telnet localhost 3355

During the first boot, the file /mnt/flash/vEOS-lab.swi (about 290 MB) is being copied as /mnt/flash/.boot-image.swi. Please be patient as the process is really slow and it may take several minutes to complete. When the switch boots up, login with the username admin (a password is not set). Switch to the enable mode and shutdown the switch with the command:

localhost> enable
localhost# bash sudo shutdown -h now

3. GNS3 Qemu Settings Configuration

Navigate to Edit-> Preferences-> Qemu VMs. Configure VMs settings according the picture below.

vEOS Qemu VMs Templates

In order to tell Qemu to boot a file Aboot-veos-serial-8.0.0.iso from cdrom, you must configure vEOS VM Qemu templates as following:

Navigate to Edit -> General Settings tab and set a parameter Boot Priority to CD/DVD-ROM according to the Picture 2.

Setting Boot Priority to CD/DVD-ROM for vEOS Qemu VM

4. Interface Assignment Between GNS3 and Virtual EOS

You can check the available interfaces with the CLI command show interfaces status. They are eight Ethernet interfaces shown on the Picture 3 at all. The interface Ma1 is a management interface and it corresponds to the interface Ethernet 0 of the vEOS symbol in a GNS3 topology. All other vEOS Ethernet interfaces shown in CLI match their particular GNS3 Ethernet interfaces. For instance, a vEOS Ethernet 1 is the interface Ethernet 1 of the vEOS GNS3 symbol.

$ show interfaces status

Available vEOS Interfaces

The command show ip int brief shows only Layer 3 interfaces. In addition to a default Management 1 interface, there is also an interfaces VLAN 1 presented on the Picture 4. I have created this interface for testing connectivity between two Arista appliances.

 Layer 3 vEOS Interfaces

5. Arista Switches Configuration

We are going to build a network topology that helps us to test configuration of VLANs, trunks and inter VLAN routing on Arista switches.The topology consists of two Arista switches and four computers, all these are emulated by Qemu. Switches are connected via 802.1q trunk with only traffic from VLAN20 allowed on trunk port. Computers are running Linux Core and they are connected to Arista switchports with configured either VLAN10 or VLAN30 on switchports. IP routing must be enabled on both switches in order to forward traffic between VLANs. Thanks to enabled OSPF routing protocol, the switch Arista1 receives info about the network connected to the switch Arista2 and the switch Arista2 receives info about the network that is  connected to the switch Arista1.


Network Topology

localhost#conf t
localhost(config)#hostname Arista1
Arista1(config)#enable secret arista
Arista1(config)#username admin secret arista

Arista1(config)#vlan 10
Arista1(config-vlan-10)#vlan 20

Arista1(config)#interface ethernet 1
Arista1(config-if-Et1)#switchport mode access
Arista1(config-if-Et1)#switchport access vlan 10
Arista1(config-if-Et1)#no shutdown

Arista1(config-if-Et1)#interface ethernet 2
Arista1(config-if-Et2)#switchport mode access
Arista1(config-if-Et2)#switchport access vlan 10
Arista1(config-if-Et2)#no shutdown

Arista1(config-if-Et2)#interface ethernet 3
Arista1(config-if-Et3)#switchport mode trunk
Arista1(config-if-Et3)#switchport trunk allowed vlan 20
Arista1(config-if-Et3)#no shutdown

Arista1(config)#interface vlan 10
Arista1(config-if-Vl10)#ip address
Arista1(config-if-Vl10)#no shutdown

Arista1(config)#interface vlan 20
Arista1(config-if-Vl20)#ip address
Arista1(config-if-Vl20)#no shutdown

Arista1(config-if-Vl20)#ip routing
Arista1(config-if-Vl20)#router ospf 10
Arista1(config-router-ospf)#network area 0
Arista1(config-router-ospf)#network area 0

Arista1(config-router-ospf)#write mem

tc@box:~$ sudo su
root@box:~# ifconfig eth0 netmask up
root@box:~# route add default gw
root@box:# hostname PC1

root@PC1:~# echo “ifconfig eth0 netmask up” >> /opt/
root@PC1:~# echo “route add default gw” >> /opt/
root@PC1:~# echo “hostname PC1” >> /opt/
root@PC1:~# /usr/bin/ -b

tc@box:~$ sudo su
root@box:~# ifconfig eth0 netmask up
root@box:~# route add default gw
root@box:~# hostname PC2

root@PC2:~# echo “ifconfig eth0 netmask up” >> /opt/
root@PC2:~# echo “route add default gw” >> /opt/
root@PC2:~# echo “hostname PC2” >> /opt/
root@PC2:~# /usr/bin/ -b

localhost#conf t
localhost(config)#hostname Arista2
Arista2(config)#enable secret arista
Arista2(config)#username admin secret arista

Arista2(config)#vlan 20
Arista2(config-vlan-20)#vlan 30
Arista2(config-vlan-30)#interface ethernet 1
Arista2(config-if-Et1)#switchport mode access
Arista2(config-if-Et1)#switchport access vlan 30
Arista2(config-if-Et1)#no shutdown
Arista2(config-if-Et1)#interface ethernet 2
Arista2(config-if-Et2)#switchport mode access
Arista2(config-if-Et2)#switchport access vlan 30
Arista2(config-if-Et2)#no shutdown

Arista1(config)#interface vlan 30
Arista1(config-if-Vl30)#ip address
Arista1(config-if-Vl30)#no shutdown

Arista1(config-if-Vl30)#interface vlan 20
Arista1(config-if-Vl20)#ip address
Arista1(config-if-Vl20)#no shutdown

Arista1(config-if-Vl20)#ip routing
Arista2(config)#router ospf 10
Arista2(config-router-ospf)#network area 0
Arista2(config-router-ospf)#network area 0

Arista1(config-router-ospf)#write mem

tc@box:~$ sudo su
root@box:~# ifconfig eth0 netmask up
root@box:~# route add default gw
root@box:~# hostname PC3

root@PC3:~# echo “ifconfig eth0 netmask up” >> /opt/
root@PC3:~# echo “route add default gw” >> /opt/
root@PC3:~# echo “hostname PC3” >> /opt/
root@PC3:~# /usr/bin/ -b

tc@box:~$ sudo su
root@box:~# ifconfig eth0 netmask up
root@box:~# route add default gw
root@box:~# hostname PC4

root@PC4:~# echo “ifconfig eth0 netmask up” >> /opt/
root@PC4:~# echo “route add default gw” >> /opt/
root@PC4:~# echo “hostname PC4” >> /opt/
root@PC4:~# /usr/bin/ -b

6. Testing Arista Switches

Issue the command show ip route on the switch Arista1 to check if the OSPF routes are presented in its  routing table.


Available Routes in Routing Table of Arista1 Switch

If the switch Arista 1 learned path to the network, you can test the connectivity between PC1 and PC3 with traceroute command.


Testing Connectivity Between PC1 and PC3

Leave a Reply

Your email address will not be published. Required fields are marked *