I had heard some good things about Arista EoS(Extensible Operating System). I have never used Arista switches before. I did some reading on Arista EoS and I also tried their VEoS which is their Virtual machine offering for running Arista switch as VM. In this blog, I will share some of my experiences.
I found this block diagram in Arista White paper:
Following are the things that I liked:
- Linux kernel is unmodified.
- User is given access to native linux shell and this means that all tools/applications available with Linux can be used with their OS. This gives the opportunity to manage the router/switch as a server rather than as a switch. All data path interfaces gets exposed from Linux shell. In summary, this makes Arista EoS automation friendly.
vEoS is the EoS instance that runs as a Virtual machine. This is similar to Cisco VIRL/CML. The main difference is with vEoS, we can run multiple EoS instances and we need to manage connectivity between each router/switch instance. Cisco VIRL/CML is a complete Network modeling platform.
I installed vEoS using 2 approaches. 1 using Virtualbox as explained here and another using VMPlayer as explained here. We can download the vEoS images from Arista website after creating a guest account.
vEoS using Virtualbox:
I created this network mentioned here. The procedure explained in the link works great, there are few minor things that I needed to change:
- Memory for each instance had to be set to 2gb.
- Hostname in each vEoS instance needs to be set manually.
- IP address of management instance also needs to be set manually.
Following is the interface created in my Ubuntu linux machine that connects to all Arista EoS instance.
eth1 Link encap:Ethernet HWaddr 08:00:27:b1:04:8c inet addr:10.10.10.10 Bcast:10.10.10.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:feb1:48c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:99 errors:0 dropped:0 overruns:0 frame:0 TX packets:56 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:9449 (9.4 KB) TX bytes:9440 (9.4 KB) Interrupt:16 Base address:0xd240
Following are some relevant outputs in vEoS1:
vEoS1#show interfaces status Port Name Status Vlan Duplex Speed Type Et1 connected 1 full unconf EbraTestPhyP Et2 connected 1 full unconf EbraTestPhyP Et3 connected 1 full unconf EbraTestPhyP Ma1 connected routed a-full a-100M 10/100/1000 vEoS1#show lldp neighbors Last table change time : 0:08:41 ago Number of table inserts : 7 Number of table deletes : 0 Number of table drops : 0 Number of table age-outs : 0 Port Neighbor Device ID Neighbor Port ID TTL Et1 vEoS2 Ethernet1 120 Et2 vEoS2 Ethernet2 120 Et3 vEoS3 Ethernet1 120 Ma1 vEoS3 Management1 120 Ma1 sreeubuntu14-VirtualBox 0800.27b1.048c 120 Ma1 vEoS2 Management1 120 vEoS1#show spanning-tree MST0 Spanning tree enabled protocol mstp Root ID Priority 32768 Address 0800.270b.505c This bridge is the root Bridge ID Priority 32768 (priority 32768 sys-id-ext 0) Address 0800.270b.505c Hello Time 2.000 sec Max Age 20 sec Forward Delay 15 sec Interface Role State Cost Prio.Nbr Type ---------------- ---------- ---------- --------- -------- -------------------- Et1 designated forwarding 2000 128.1 P2p Et2 designated forwarding 2000 128.2 P2p Et3 designated forwarding 2000 128.3 P2p
In lldp neighbors output, we see that neighbors are discovered from multiple interfaces since Management interface is shared across all vEoS instances.
vEoS using VMWare Player:
Arista does not claim VMWare Player support, but claims only Workstation and Fusion support. Since these are not free, I tried using VMWare Player, I was able to get majority of the things working with VMPlayer.
Following is the network I created.
I created custom network interfaces using vmnetcfg. Details are in my blog on VMWare player. Initially, I was not able to get link up between Linux VM and vEoS, I added the following line to vEoS configuration line “ethernet1.virtualDev = “e1000”. With this, the link came up. I was still not able to get network connectivity between Linux VM and vEoS instances, I see packets being transmitted, but not received in both direction. vEoS instances were able to talk to each other. I was also able to see lldp neighbors getting updated correctly.
Considering that I have never used EoS and vEoS before, it was very easy to get started and I liked the full Linux exposure.
Pictures used in the blog are from references.