fbpx

System-Engineering | 6 min read

Arista EOS (Extensible Operating System)

Francesco Vestri
November 2020
written by Francesco Vestri
Senior Network Engineer
+2

To celebrate the Arista Elite Partner status, ngworx will present a series of articles introducing the Arista philosophy which is behind the world-class networking solution represented by a new category of products.

We will start by introducing the Extensible Operative System (EOS) – a powerful yet familiar environment to control and monitor Arista networking appliances. We will then describe the NetDB as a concept to provide stability and control over the system processes governing the switch. Lastly, we will convey how these two components provide the building blocks for a new approach to networking monitoring and automation based on Arista’s own solution: CloudVision.

Follow us on these new articles and contact ngworx for a Demo on how Arista products can simplify the everyday networking needs of your company.

Introduction

In this first article, we will introduce the Arista EOS as the powerful Operative System to control and monitor Arista switches. The original idea was to provide a familiar environment to Networking Engineers approaching this new category of appliances for the first time, while providing an easy access to a new concept. Arista EOS is one of the fundamental components behind Arista’s holistic approach represented by CloudVision.

The Arista Extensible Operating System

Like other network appliances, switches operate on top of a specific Operating System. In case of Arista, this is called the Extensible Operating System (EOS). Arista EOS includes the underlaying functionalities for hardware management, system processes and networking services, while also allowing multiple ways to manage the switch, including the EOS CLI.

The first impression when working with EOS is similar to a standard CLI, such as Cisco IOS.
Some examples below show how familiar the EOS CLI would be to an experienced user:

Hostname configuration

localhost>
localhost>enable
localhost#conf
localhost(config)#hostname AristaSW
AristaSW(config)#exit
AristaSW#write mem
Copy completed successfully.
AristaSW#

Interface configuration

AristaSW#
AristaSW#conf
AristaSW(config)#interface ethernet1
AristaSW(config-if-Et1)#ip address 10.0.0.1 255.255.255.0
AristaSW(config-if-Et1)#description Link to SW2
AristaSW(config-if-Et1)#no shutdown
AristaSW(config-if-Et1)#

Show ip interface brief

AristaSW#sh ip interface brief
                                                                        Address
Interface        IP Address        Status      Protocol          MTU    Owner
---------------- ----------------- ----------- ------------- ----------
Ethernet1        10.0.0.1/24       up          up               9214
Loopback0        1.1.1.102/32      up          up              65535
Loopback1        2.2.2.1/32        up          up              65535
Management1      unassigned        up          up               1500

Show interfaces

AristaSW#show interfaces

Ethernet1 is up, line protocol is up (connected)
  Hardware is Ethernet, address is 5000.00d5.5dc0
  Description: Link to SW2
  Internet address is 10.0.0.1/24
  Broadcast address is 255.255.255.255
  IP MTU 9214 bytes
  Full-duplex, Unconfigured, auto negotiation: off, uni-link: n/a
  Up 53 minutes, 53 seconds
  Loopback Mode : None
  2 link status changes since last clear
  Last clearing of "show interface" counters never
  5 minutes input rate 0 bps (- with framing overhead), 0 packets/sec
  5 minutes output rate 0 bps (- with framing overhead), 0 packets/sec
     596 packets input, 48537 bytes
     Received 294 broadcasts, 109 multicast
     0 runts, 0 giants
     0 input errors, 0 CRC, 0 alignment, 0 symbol, 0 input discards
     0 PAUSE input
     3164 packets output, 358740 bytes
     Sent 985 broadcasts, 1683 multicast
     0 output errors, 0 collisions
     0 late collision, 0 deferred, 0 output discards
     0 PAUSE output
Ethernet2 is up, line protocol is up (connected)
  Hardware is Ethernet, address is 5000.0003.0002 (bia 5000.0003.0002)
  Ethernet MTU 9214 bytes

EOS LINUX CORE

The examples above show one of the advantages of working with an Arista switch, that is, an environment already familiar to an experienced Network Engineer. However, this is just the beginning of where the power of an Arista Switch lays.

The appliance is, in fact, powered by a full Fedora Linux Core, accessible via Bash shell, and providing unrestricted Linux experience and functionalities. The underlying EOS is also expandable with additional packages and libraries just like a standard Linux server. In fact, Arista documentation often refers to their appliances as Linux Servers with additional gear and customization that turns them into high-performance network devices.

The presence of both CLI and Bash Shell allows for two ways of managing the switch. With CLI we have a complete set of commands to operate the appliance. A Network Engineer more comfortable in a traditional CLI could fully manage the switch within this environment. In addition, for those familiar with Linux, Bash Shell provides an environment to integrate powerful administration tools and embedding Python code into the platform.

Besides using one environment or the other, more functionalities are available by seamlessly combining these two features together. It is, in fact, possible to execute CLI commands from within the Bash shell and running Bash commands from within the CLI.

The examples below which are taken directly from the Arista documentation show how incredibly flexible their usage is and how to unleash additional capabilities in scripting and customization when combining these two aspects.

Example 1

We can use the power of awk to reformat the output of a show command as we prefer, for example, to show just the mac address associated with each interface:

AristaSW#show int | awk '/^[A-Z]/ {intf=$1} /, address is/{print intf, $6}'
Ethernet1 5000.0003.0001
Ethernet2 5000.0003.0002
Ethernet3 5000.0003.0003
Ethernet4 5000.0003.0004
Ethernet5 5000.0003.0005
Ethernet6 5000.0003.0006
Ethernet7 5000.0003.0007
Management1 5000.0003.0000

Example 2

Combining the usage of tools such as more, grep and tail to the CLI show commands we re-use some familiar commands to manipulate the long output for some verbose show commands:

AristaSW#show logging | tail
Oct  7 07:26:15 localhost Lldp: %LLDP-5-NEIGHBOR_NEW: LLDP neighbor with chassisId 5000.0015.f4e8 and portId "Ethernet1" added on interface Ethernet1
Oct  7 07:26:42 localhost Stp: %SPANTREE-6-STABLE_CHANGE: Stp state is now stable
Oct  7 07:28:04 localhost SuperServer: %SYS-5-SYSTEM_RESTARTED: System restarted
Oct  7 07:28:04 localhost SuperServer: %SYS-6-SYSTEM_INFO: Software image version: 4.25.0FX-LDP-RSVP
Oct  7 07:28:04 localhost SuperServer: %SYS-6-SYSTEM_INFO: Model: vEOS
Oct  7 07:28:04 localhost SuperServer: %SYS-6-SYSTEM_INFO: Serial number:
Oct  7 07:28:54 localhost SuperServer: %SYS-5-CLI_SCHEDULER_ENABLED: CliScheduler is enabled, continuing its execution of scheduled CLI jobs.
Oct  7 07:35:31 localhost ReloadCauseAgent: %SYS-6-SYSTEM_INFO: Reload Cause 1: Unknown
Oct  7 07:56:06 localhost ConfigAgent: %SYS-5-CONFIG_E: Enter configuration mode from console by admin on con0 (0.0.0.0)
Oct  7 07:56:17 AristaSW ConfigAgent: %SYS-5-CONFIG_I: Configured from console by admin on con0 (0.0.0.0)

As with every Linux shell, commands can also be concatenated such as:

AristaSW#show logging | tail | grep restarted
Oct  7 07:28:04 localhost SuperServer: %SYS-5-SYSTEM_RESTARTED: System restarted

And if we want to save the output in a file:

AristaSW#show logging | tail | grep restarted > /mnt/flash/log1.txt

AristaSW#dir flash:log1.txt

Directory of flash:/log1.txt

       -rw-          81            Oct 7 08:04  log1.txt
4093313024 bytes total (3136253952 bytes free)

Example 3

One additional example, uses a Python script running in EOS, to autoconfigure the switch based on the interface number of the uplink-management-network:

https://github.com/GADify/ZTP-Scripts/blob/master/BaseConfig.py

Conclusion

The choice of Arista, to base their EOS on a full Linux Core and to provide complete access to the underlying OS, shows their commitment to empowering users to do with the appliance whatever they consider possible. While building up knowledge and digging into the core of Arista EOS to develop the best solution for them, Arista also provides a comfortable and familiar CLI environment from where to operate the switch.

But beside CLI and Bash Shell, Arista switches offer additional ways for management and control based on API and EOS API (eAPI) allowing third-party software, as well as the very own Arista CloudVision, to add complex automation, sophisticated monitoring, continuous telemetry and orchestration….but this is a topic for another upcoming blog.

 

+2
Leave a Comment

Leave a Comment

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

Francesco Vestri
November 2020
written by Francesco Vestri
Senior Network Engineer

Most Popular

Network-Engineering | 8 min read

Junos upgrade – filesystem is full

Not enough storage during Junos upgrade (EX2300 and EX3400). An extension of Juniper's article…

Read more