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
Clik 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:
Aboot-veos-serial-8.0.0.iso
vEOS-ab-4.17.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 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.
Picture 1 - 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.
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
Picture 3 - 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.
Picture 4 - 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 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.
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.
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.
Picture 7 - Testing Connectivity Between PC1 and PC3
Reference:
http://blog.scottlowe.org/2014/08/11/running-arista-veos-on-kvm/
End.
The CLI off the Arista is identical to the cisco CLi :)
Almost ;) Lots of commands are missing but syntax is Cisco like
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!
Thanks for reporting, I'll check it.
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)
CDP won't work. It's not supported. LLDP is.
QinQ worked for me in GNS3 using the same setup you mention.
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!!
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.
Unfortunately, I noticed the same issue you described so no luck with ASAv on Virtualbox.
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
Fixed. Thanks!
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
George,
please, read this kvm how-to. Alternatively, you can omit -enable-kvm options but emulation is slow without kvm support.
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
you can emulate Arista guest on VirtualBOx that is installed on your MAC OSX. It should work.
I'm assuming KVM support only exists for QEMU on Linux. Not Windows, correct?
In Window7 ,how to install Arista in Qemu?
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.
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?
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?
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...
It looks like a SFC /SCANNOW fixed the "problem".
Thank you for letting us known.
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.
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.
https://i.imgur.com/LjB8dhZ.jpg
https://i.imgur.com/Q904nrb.jpg
https://i.imgur.com/mHaEwUQ.jpg
Any settings that you can recommend or did I mix something up???
Thanks,
Dear brezular;
How can we increase the numbers of NICs(interfaces) in vEOS VM in ESXi 6?
Waiting eagerly for your kind consideration.
Regards.
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.
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?
Same here, only see the management interface when I do a 'sh ip int brief'
Anyone has a clue?
You can see the all interfaces with the command show interfaces status. I've updated the article, please read it for more information.
hello thank you very much for this helpful article I was wondering if you have an article about using this vEOS with VxLAN? thank you again .