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 in 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

Virtual Machine Requirements
1024 MB RAM
IDE CD-ROM drive with mounted Aboot-veos-serial-2.0.8.iso
2GB flash IDE disk - vEOS-4.14.2F.vmdk
NICs e1000 type

1. Download Bootloader and Virtual EOS

Clik the link to create a new account. The guest account (when no corporate email is used for registration e.g. gmail.com) is sufficient to download 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 disk:

Aboot-veos-serial-2.0.8.iso
vEOS-4.14.2F.vmdk

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 1024 -enable-kvm -cdrom ./Aboot-veos-serial-2.0.8.iso -boot d vEOS-4.14.2F.vmdk -serial telnet::3355,server,nowait

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

$ telnet localhost 3355

During the first boot, the file vEOS.swi (about 209MB) is being copied as .boot-image.swi to flash. The process may take several minutes to complete. When the switch boots up, login with the username admin with no password 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.

Picture1-VMs_Settings

Picture 1 - GNS3 Qemu vEOS Settings

Switch to Advanced Qemu VMs Settings tab and configure following settings.

-boot d -cdrom  Aboot-veos-serial-2.0.8.iso -enable-kvm -nographic

Replace the path to ISO with your own path.

Picture2-VMs_Advanced_Settings

Picture 2 - GNS3 Qemu vEOS Advanced Settings

 

4. Creating VirtualBox vEOS Virtual Machine

To run Arista switch on VirtualBox, you must  create VirtualBox virtual machine. Start VirtualBox with the command:

$ sudo virtualbox

Create a new machine with Ctrl-n. Choose Linux Fedora (64 bit) and assign 1024 MB to a virtual machine. Select an option Do not add a virtual hard drive. Edit settings of the virtual machine with Ctrl-s and navigate to Storage menu. Remove SATA controler and click cdrom symbol. Select  path to the file Aboot-veos-serial-2.0.8.iso. Click on Controller IDE and add hard disk. Select and option Choose existing disk and select path to the file vEOS-4.14.2F.vmdk.

Comapring to Arista first boot on Qemu,  the first boot on VirtualBox takes only few seconds.

Picture3-VM_VirtualBox_Storage_Configuration

Picture 3 - Arista Vbox VM Storage Configuration

Start GNS3 and press Ctrl-Shift-P. Navigate to VirtualBox VMs and click refresh button. Configure settings according to the picture below.

Picture4-GNS3_VM_VirtualBox_Preferences

Picture 4 - GNS3 VirtualBox VMs Preferences Configuration

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 192.168.30.0/24 connected to the switch Arista2 and the switch Arista2 receives info about the network 192.168.10.0/24 that is  connected to the switch Arista1.

Picture5-Testing_Topology

Picture 5 - Network Topology

Arista1
localhost>enable
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-vlan-10)#exit

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 192.168.1.254 255.255.255.0
Arista1(config-if-Vl10)#no shutdown

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

Arista1(config-if-Vl20)#ip routing
Arista1(config-if-Vl20)#router ospf 10
Arista1(config-router-ospf)#network 192.168.10.0/24 area 0
Arista1(config-router-ospf)#network 192.168.20.0/30 area 0

Arista1(config-router-ospf)#write mem

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

root@PC1:~# echo "ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up" >> /opt/bootlocal.sh
root@PC1:~# echo "route add default gw 192.168.10.254" >> /opt/bootlocal.sh
root@PC1:~# echo "hostname PC1" >> /opt/bootlocal.sh
root@PC1:~# /usr/bin/filetool.sh -b

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

root@PC2:~# echo "ifconfig eth0 192.168.10.2 netmask 255.255.255.0 up" >> /opt/bootlocal.sh
root@PC2:~# echo "route add default gw 192.168.10.254" >> /opt/bootlocal.sh
root@PC2:~# echo "hostname PC2" >> /opt/bootlocal.sh
root@PC2:~# /usr/bin/filetool.sh -b

Arista2
localhost>enable
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 192.168.30.254 255.255.255.0
Arista1(config-if-Vl30)#no shutdown

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

Arista1(config-if-Vl20)#ip routing
Arista2(config)#router ospf 10
Arista2(config-router-ospf)#network 192.168.20.0/30 area 0
Arista2(config-router-ospf)#network 192.168.30.0/24 area 0

Arista1(config-router-ospf)#write mem

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

root@PC3:~# echo "ifconfig eth0 192.168.30.1 netmask 255.255.255.0 up" >> /opt/bootlocal.sh
root@PC3:~# echo "route add default gw 192.168.30.254" >> /opt/bootlocal.sh
root@PC3:~# echo "hostname PC3" >> /opt/bootlocal.sh
root@PC3:~# /usr/bin/filetool.sh -b

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

root@PC4:~# echo "ifconfig eth0 192.168.30.2 netmask 255.255.255.0 up" >> /opt/bootlocal.sh
root@PC4:~# echo "route add default gw 192.168.30.254" >> /opt/bootlocal.sh
root@PC4:~# echo "hostname PC4" >> /opt/bootlocal.sh
root@PC4:~# /usr/bin/filetool.sh -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.

Picture6-Arista1_Routing_Table

Picture 6 -  Available Routes in Routing Table of Arista1 Switch

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

Picture7-Ping_Pc3_from_PC1

Picture 7 - Testing Connectivity Between PC1 and PC3

Reference:
http://blog.scottlowe.org/2014/08/11/running-arista-veos-on-kvm/

End.

39 thoughts on “Arista vEOS on GNS3

  1. Thanks for the helpful guide, I was able to get up and running to test vEOS. I can connect Arista interfaces to each other in GNS3 and traffic flows just fine. However, when connecting to any other devices, the link shows as up but no outside traffic seems to pass when viewing TCPdump. Any suggestions? Is it a problem with GNS3 and the fact that the VM uses 10gb link speed? I tried using e1000 as well as some others, but no luck. I'm trying to add to my Cisco lab(all of the cisco devices can see each other). Thanks!

    • James, I have a testing topology that consists of 3 devices - Arista (Qemu), IOU, VyOS(Qemu). I notices that I had to save my topology as the GNS3 project and then restart all devices. After that, I can ping between all devices. Maybe Qemu issue? So try to restart your devices and let me known.

      • Thanks for the super fast response! Yes, that worked and I can now ping between devices in GNS3. I still don't have reachability to physical devices via my breakout switch like I do with other devices, but I'll assume it's a GNS3 beta bug. I actually don't need to access outside devices from vEOS, I was just checking if it works. If I get it figured out I'll update here.

        Either way your suggestion helped me out a ton. I wouldn't have thought of saving a non working topology, then reloading it to find it working. Thanks a lot! You've made a loyal customer out of me :) and I'll be back here for sure.

      • Hi, great post. Did anyone get QinQ to work between Arista switches R1(dot1q)---(QinQ)Arista----Arista(QinQ)------(dot1q)R2? I've fired up a pair of Arista VMs (virtualbox) but can't ping between routers. CDP doesn't work either. GNS3 version is 0.8.4. Thanks Eamon.

        BTW which version of GNS3 are you using?

        • Eamon,
          I use GNS3 1.0 beta3 but old GNS3 versions should work as well. Beta3 is free now so you use it. Thanks to beta3 with IOU support you could replace Arista with IOU switch and test your config. But I'm not sure if IOU support QinQ. Is it connection between R1(dot1q)---(QinQ)Arista working?

          • QinQ doesn't work on IOU, at least with images I've tried. I tried connecting the Arista VM to physical Cisco 3570g switches with QinQ, and it doesn't work. I can't see LLDP neighbors(CDP is Cisco only), and all other attempts at connectivity fail. Using TCPdump on the VM and on the Linux host OS to verify, traffic isn't being passed between the physical devices and the Arista VM. Could be a bug of some sort, because QinQ works with other devices(vIOS, IOU, dynamips, etc) to my physical switches.

            On the bright side, while troubleshooting the issue I decided to upgrade qemu to the latest version and stumbled on this post from brezular:
            http://forum.gns3.net/topic2395-10.html

            "There is one line to change in net.h => :#define MAX_NICS 8"

            What this means is that when building qemu from source, you can allow it to have more than 8 interfaces by changing that line. I've been testing the Arista VM with 24 interfaces, and haven't noticed any issues so far other than I have to start the VM from the command line since GNS3 still won't recognize the change and caps the interface limit at 8.

          • I take that back now that I think about it, max interfaces on this VM is 22. I originally tried 24 and the VM crashed. I dropped it down to 23 and it crashed, but 22 works.

            localhost#sh interfaces | i is up,
            Ethernet1 is up, line protocol is up (connected)
            Ethernet2 is up, line protocol is up (connected)
            Ethernet3 is up, line protocol is up (connected)
            Ethernet4 is up, line protocol is up (connected)
            Ethernet5 is up, line protocol is up (connected)
            Ethernet6 is up, line protocol is up (connected)
            Ethernet7 is up, line protocol is up (connected)
            Ethernet8 is up, line protocol is up (connected)
            Ethernet9 is up, line protocol is up (connected)
            Ethernet10 is up, line protocol is up (connected)
            Ethernet11 is up, line protocol is up (connected)
            Ethernet12 is up, line protocol is up (connected)
            Ethernet13 is up, line protocol is up (connected)
            Ethernet14 is up, line protocol is up (connected)
            Ethernet15 is up, line protocol is up (connected)
            Ethernet16 is up, line protocol is up (connected)
            Ethernet17 is up, line protocol is up (connected)
            Ethernet18 is up, line protocol is up (connected)
            Ethernet19 is up, line protocol is up (connected)
            Ethernet20 is up, line protocol is up (connected)
            Ethernet21 is up, line protocol is up (connected)
            Ethernet22 is up, line protocol is up (connected)
            Management1 is up, line protocol is up (connected)

  2. In the past, i've installed some cisco images in GNS3. the problem was (not sure if it still is) BFD setup failed miserably - always throws tracebacks and finally i had to restart the whole topo. my questions are will VEOS on GNS3 support:
    - BFD
    - vxlan

    thanks for sharing and keep up your great work!!

  3. Hi!

    My question is regarding about running ASAv in virtualbox.
    I can see an screenshot from your tutorial (second part, virtualbox) where you are listing all the vms you have emulated using Virtualbox in GNS3. In that list there is an ASAv listed. I'm trying to run ASAv in virtualbox (asav921.ova) with no success. The vm gets stuck at the beginning and only shows the message "Platform F1-GENERIC". Could you confirm me if is possible to emulate the Cisco's ASAv using virtualbox? If so, what is the tricky part?

    Thank you very much!! Your blog is awesome!

    Kinds regards.

  4. Great article - thank you for putting this together.
    One correction I wanted to point out is that you have sudo and bash reversed on the shutdown command, it should be:
    bash sudo shutdown -h now

  5. Seeing the following message when I try to run qemu/KVM and vEOS from the CLI. (Mac OSX 10.9.5, GNS1.1)

    qemu-system-x86_64 -m 1024 -nographic -vga std -enable-kvm -cdrom Aboot-veos-serial-2.1.0.iso -boot d -hda vEOS-4.14.2F.vmdk -serial telnet::3355,server,nowait

    KVM not supported for this target
    No accelerator found!

    qemu-system-x86_64 --version
    QEMU emulator version 2.1.1, Copyright (c) 2003-2008 Fabrice Bellard

      • OK, will do. Thanks for the quick reply. If I can't get it working with KVM support, am I better off just using vBox?

        • Unfortunately, I'm running qemu/KVM on Mac OSX. I definitely have VT-x enabled. QEMU appears to support kvm.

          qemu-system-x86_64 --help | grep kvm
          supported accelerators are kvm, xen, tcg (default: tcg)
          kvm_shadow_mem=size of KVM shadow MMU
          -enable-kvm enable KVM full virtualization support

  6. I tried today with Aboot-veos-serial-2.1.0.iso and vEOS-lab-4.14.5F.vmdk.

    This combination works with VirtualBox and with qemu without kvm. But on qemu + kvm it hangs on boot. Now I'm using the prevoius Aboot-veos-serial-2.0.8.iso, this works also with activated kvm.

    The long delay during the file copy on the first qemu boot is due to the use of the vmdk disc format. If you convert it into qcow2 before the first boot, qemu is as fast as VirtualBox.

  7. Hi ,

    i tried to run arista on Virtual box , i created 2 arista VMsand used gns3 to connect them directly to each other ,configured layer 3 link between them ,for some reason i can't ping ...do you have any idea.

    Thank you,
    Moe

    • can two Arista instances see each other on Layer2? I mean what is the output of the command show cdp neigh? Can you see their MAC in ARP cache? If not, what are the MACs of adjacent interfaces?

      Have you tried to use Qemu for Arista emulation? If yes have you noticed the same issue?

      Is it the issue the same if you connect two Vbox boxes with different OS?

  8. Hi Radovan-

    I've been studying the Arista setup for a while now. I'm using windows7 virtualbox, and gns3.

    When following all these steps, I just can not get the vm to operate in virtualbox. I keep getting the error "FAILED TO OPEN A SESSION FOR THE VM ARISTA" and "UNABLE TO LOAD R3 MODULE C:\PROG~" with the detail E_FAIL component: Console Interface: IConsole ---"

    What type of an error is this, and why is it happening?
    I've seen some people say it was the result of having two versions of Virtualbox ... heard reference to file names / locations... even "virtualization" settings in BIOS... but... I'm clueless at this point, and still looking.

    I suspect it is a simple thing I am missing...

    But do you Know?

  9. Hey... I Got the switch working. I've yet to backtrack and reproduce the error so I know (exactly) what caused it. But it's looking like the config was forcing use of a usb pointing device that MIGHT have been (part of) the cause.

    I did change one or two other settings. But... will have to backtrack to verify...

  10. I snagged the new v4.15.0F.vmdk and Aboot-veos-serial.2.1.0.iso to give it a whirl, and I'm running into a problem. The VM will start to boot, but then it drops me to an Aboot prompt saying that "no .swi file present in /mnt/flash/boot-config", and trying to use "boot flash: vEOS-lab.swi" just gives an "unzip: invalid zip magic 00000000" error. Any idea how I can use QEMU to somehow inject the available 4.15.0F.swi file into that .vmdk?

    • I believe you need to use the old 2.0.8 iso image v4.14.5F.vmdk. I can run the VEOS in that 2 files with only using 1024 MB of RAM.

  11. Hi all,

    I have the same issue but connecting a VMware workstation Win 2003 R2 server (as the cloud) to veos in gns3. It's ip address is 192.168.100.128 with GW of 192.168.100.100.
    The ethernet settings that it accepts is nio_gen_linux:eth0, it is showing this message if I choose nio_gen_eth0:eth0.
    Server error from 127.0.0.1:8000: SW1: NIO of type nio_generic_ethernet is not supported
    (I tried reboot on Vm machine, GNS3...)

    I was able to connect the cloud to a generic gns3 L2 switch made the ports as vlan 100 connecting to the veos. I have configured vlan 100 on veos switch database, I have also configured an SVI with IP of 192.168.100.100 255.255.255.0.

    I can't ping though from the server to the switch and vise-versa.

    http://i.imgur.com/LjB8dhZ.jpg
    http://i.imgur.com/Q904nrb.jpg
    http://i.imgur.com/mHaEwUQ.jpg

    Any settings that you can recommend or did I mix something up???

    Thanks,

  12. Dear brezular;

    How can we increase the numbers of NICs(interfaces) in vEOS VM in ESXi 6?

    Waiting eagerly for your kind consideration.

    Regards.

  13. Hello All,

    I've created my vEOS images and they are running fine when added to GNS3, but I only see the management interface "ma1" I can't see any of the other interfaces. When I add it to GNS3 and connect, lets say "Ethernet 3" to my virtual router, I can't see that interface when listing interfaces in the CLI.

  14. I'm having the same issue as Felix ... vEOS boots up fine, but I only have the Management interface available. Has anyone figured this out?

Leave a comment

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