Upgrading Arista’s Extensible Operating System (EOS) is a simple process. In a nutshell, get the software image onto the switch, configure the switch to see the new image, and then reboot the switch. Let’s begin by taking a look at the current version of EOS on a 7280R-48C6 switch by using the show version
command:
Arista#sho ver Arista DCS-7280SR-48C6-M-F Hardware version: 21.05 Serial number: SSJ17290598 System MAC address: 2899.3abe.9f92 Software image version: 4.19.5M Architecture: i386 Internal build version: 4.19.5M-7506183.4195M Internal build ID: ef83948c-6c45-4097-9d8b-a78a4722d49a Uptime: 3 minutes Total memory: 32463792 kB Free memory: 30178840 kB
We can see from this output that our switch is running EOS version 4.19.5M.
Once again, check out the model number in the first line of output, which reads DCS-7280SR-48C6-M-F. The “-F” indicates that this switch shipped with front-to-rear airflow fans. If the model number had “-R” appended to it, the fans would be rear-to-front. Cool, huh? Well, I think it is, but then, little things like this excite me. The “-M” indicates that this switch has expanded memory (32 GB). The “SR” means that this is an Small Form-Factor Pluggable (SFP)-based (S) switch with advanced routing (R) capabilities. The “48C6” means there are 48 front-panel SFP interfaces along with six 100 Gb (C) interfaces.
If we felt like poking around further where we don’t belong (and who doesn’t?), we could use the show version detail
command, which would regale us with page upon page of process names and their requisite versions:
Arista#sho ver detail Arista DCS-7280SR-48C6-M-F Hardware version: 21.05 Deviations: D0003570, D0003550 Serial number: SSJ17290598 System MAC address: 2899.3abe.9f92 Software image version: 4.19.5M Architecture: i386 Internal build version: 4.19.5M-7506183.4195M Internal build ID: ef83948c-6c45-4097-9d8b-a78a4722d49a Uptime: 7 minutes Total memory: 32463792 kB Free memory: 29957796 kB Installed software packages: Package Version Release -------------------------------------------- Aaa 1.1.1 7498111.4195M Aaa-cli 1.1.1 7498111.4195M Aaa-lib 1.1.1 7498111.4195M Aboot-utils 1.0.2 7498111.4195M Acl 1.0.2 7498111.4195M Acl-cli 1.0.2 7498111.4195M Acl-lib 1.0.2 7498111.4195M AclAgent 1.0.2 7498111.4195M AclAgent-cli 1.0.2 7498111.4195M AclAgent-lib 1.0.2 7498111.4195M [-- pages of output removed to keep my editor from hurting me --] zile 2.4.9 1.fc18 zip 3.0 5.fc18 zlib 1.2.7 9.fc18 Component Version --------------- --------------------------- Aboot Aboot-norcal6-6.1.2-4757975 scd 0xd stdbycpld 0x15 Ucd9012-2 SFT004190111 ( 2.3.4.0011 ) Ucd9012-3 SFT004100105 ( 2.3.4.0007 ) System Epoch: 02.00
See the line in bold (as well as many others) in the previous output that ends with .fc18
? This indicates that the package on that line was built on Fedora Core 18.
Interesting information if you’re Arista TAC (Technical Assistance Center), but probably overkill for us. Our goal in this chapter is to upgrade this switch from EOS version 4.19.5M to version 4.21.1F (which, by the way, is built on Fedora Core 18). So, let’s get started.
The first thing to do is take a look at what devices there are available to us on this Arista switch by using the dir ?
command:
Arista#dir ? all-filesystems List files on all filesystems certificate: Directory or file name drive: Directory or file name extension: Directory or file name file: Directory or file name flash: Directory or file name sslkey: Directory or file name system: Directory or file name /all List all files, including hidden files /recursive List files recursively <cr>
Arista switches all contain useful USB ports. Figure 10-1 shows the USB port on 7280R switch, located on the back of the device (there is also one on the front of this model). After years of using switches from other vendors that contained USB ports that were unavailable, being able to slap a thumb drive in and actually make use of it came as a pleasant surprise.
Upon insertion of a USB drive, the dir ?
command yields different results:
Arista-7280#dir ? all-filesystems List files on all filesystems certificate: Directory or file name drive: Directory or file name extension: Directory or file name file: Directory or file name flash: Directory or file name sslkey: Directory or file name system: Directory or file name usb1: Directory or file name /all List all files, including hidden files /recursive List files recursively <cr>
Now we see the usb1:
device, which was not there previously. Note also that this switch has a drive:
device. That indicates that this switch was shipped with a solid-state drive (SSD) drive, which we can see by using the show inventory
command:
Arista#sho inventory | egrep -A4 "has SSD" System has SSD Model Serial Number Rev Size (GB) ------------------------ -------------------- -------- --------- StorFly VSFBM8CC120G-160 P1T13004414108250019 0728-000 120
Executing the dir
command by itself will default to the current directory, which is in flash:/
:
Arista#dir Directory of flash:/ -rwx 609823300 Feb 8 2018 EOS-4.19.5M.swi -rwx 77 Jan 3 22:17 SsuRestore.log -rwx 27 Jan 3 22:15 boot-config drwx 4096 Jan 3 22:19 debug drwx 4096 Jan 3 22:19 persist drwx 4096 Jan 2 22:09 schedule -rwx 2983 Jan 3 22:15 startup-config -rwx 0 Jan 3 22:18 zerotouch-config 3269361664 bytes total (2047406080 bytes free)
As we can see, there is an existing EOS image in this directory called EOS-4.19.5M.swi
. This image corresponds to the version shown earlier with the show version
command. The M
in the version is a reference to where this EOS release sits in the life cycle of the release, with “M” indicating a Maintenance release and “F” indication a Feature release. You can read the EOS life cycle policy at Arista.com.
You can also find references to the image file in the running configuration. We use the command found here to upgrade the system in this chapter:
Arista#sho run | grep boot ! boot system flash:/EOS-4.19.5M.swi
If you have a sharp eye, you might have noticed that the command is commented out. This is due to the way that EOS actually operates. This will become apparent later in this chapter.
One of the cool things about EOS is that it allows a wide variety of ways to get new files onto the switch. Check out the possibilities included in the copy ?
output:
Arista#copy ? boot-extensions Copy boot extensions configuration certificate: Source file path clean-config Copy from clean, default, configuration drive: Source file path extension: Source file path file: Source file path flash: Source file path ftp: Source file path http: Source file path https: Source file path installed-extensions Copy installed extensions status running-config Copy from current system configuration scp: Source file path sftp: Source file path startup-config Copy from startup configuration system: Source file path terminal: Source file path tftp: Source file path
To do this, we use the copy
source destination
command. Arista allows a variety of source and destinations when copying.
In this example, we’re going to copy from a web page within a private lab, so the source will be http://url/filename
, and the destination flash:
. If we were to source the file from a TFTP server, the source would be tftp
.
Arista#copy http://10.0.0.100/EOS/EOS-4.21.1F.swi flash: '/EOS/EOS-4.21.1F.swi' at 469575994 (66%) 101.87M/s eta:2s [Receiving data]
When the copy is done, we can verify that it resides in its new home in the flash:/ directory.
Arista#dir Directory of flash:/ -rwx 609823300 Feb 8 2018 EOS-4.19.5M.swi -rwx 700978970 Nov 12 2018 EOS-4.21.1F.swi -rwx 77 Jan 3 22:17 SsuRestore.log -rwx 27 Jan 3 22:15 boot-config drwx 4096 Jan 3 22:19 debug drwx 4096 Jan 3 22:19 persist drwx 4096 Jan 2 22:09 schedule -rwx 2983 Jan 3 22:15 startup-config -rwx 0 Jan 3 22:18 zerotouch-config 3269361664 bytes total (1346424832 bytes free)
Now that we have our EOS image safely on board, we can configure the system to use it. Note that EOS will not simply boot the first image it finds on flash. The reason for this will become apparent when we discuss Aboot, but for now let’s go ahead and configure the system to boot from the new image. As with other vendors, the command to do this is the boot system
command:
Arista#conf Arista(config)#boot system ? drive: Software image URL file: Software image URL flash: Software image URL
If we had a USB stick in the USB slot, the usb1: filesystem would be included in the output. We could configure the switch to boot from an image on the USB drive if we so desired. Almost anything we can do with normal flash, we can also do with USB, provided that there is a drive in the USB slot. For now, though, let’s go ahead and configure the switch to boot from its new image in flash:
Arista(config)#boot system flash:EOS-4.21.1F.swi Arista(config)#
EOS supports tab completion, so instead of copying and pasting the entire filename, try using the Tab key. Luckily, Arista keeps all of the image names short and tidy, which is another pleasant surprise after decades of other vendors’ lengthy filenames.
Now that we have the new image primed and ready to go, let’s reboot the switch:
Arista-7280(config)#reload Proceed with reload? [confirm]
Hold on a minute! We didn’t save the configuration, so why didn’t the system prompt us to save it before rebooting? The boot system
command doesn’t really make changes to the running-config. Instead, it writes to a file on flash: called boot-config:
Arista(config)#dir Directory of flash:/ -rwx 609823300 Feb 8 2018 EOS-4.19.5M.swi -rwx 700978970 Nov 12 2018 EOS-4.21.1F.swi -rwx 77 Jan 3 22:17 SsuRestore.log -rwx 27 Jan 3 22:38 boot-config drwx 4096 Jan 3 22:19 debug drwx 4096 Jan 3 22:19 persist drwx 4096 Jan 2 22:09 schedule -rwx 2935 Jan 3 22:38 startup-config -rwx 0 Jan 3 22:18 zerotouch-config 3269361664 bytes total (1346424832 bytes free)
B
oot-config is the filename used for something called Aboot. Aboot is the bootloader for the switch (which is really a Linux system, remember), which I cover in more detail in Chapter 14. For now, understand that without the bootloader’s configuration file, our switch will not boot. You can view the contents of the boot-config file in a couple of ways, the easiest of which is by using the show boot
command.
Arista(config)#sho boot Software image: flash:/EOS-4.21.1F.swi Console speed: (not set) Aboot password (encrypted): (not set) Memory test iterations: (not set)
In the first edition of Arista Warrior, I took the liberty of deleting this file to prove my point. With both image files present and no boot-config file found, the switch floundered shortly after initialization:
Arista(config)#reload System configuration has been modified. Save? [yes/no/cancel/diff]:y Proceed with reload? [confirm] Broadcast meStopping sshd: [ OK ] [ 575.544430] SysRq : Remount R/O Restarting system Aboot 1.9.2-140514.2006.eswierk Press Control-C now to enter Aboot shell No SWI specified in /mnt/flash/boot-config Welcome to Aboot. Aboot#
At this point, the switch was dead in the water. What’s worse, if you’ve ever been near a modern switch from most any vendor when it boots, you’ll know that all of the fans go to full power upon power up and then slow down to an acceptable level after boot up. With no EOS image to load, the switch spins its fans at full speed. It’s annoying, and no one likes it, especially my wife, who came down to yell at me about all the noise while I was writing this chapter. But I digress...
On modern versions of code, the switch will actually warn us if there is no boot-config file:
Arista(config)#del flash:boot-config Arista(config)#reload The boot image ((not set)) is not present. Are you sure you want to reload? [confirm]
Let’s fix our boot image problem by using the boot system
command:
Arista(config)#boot system flash:EOS-4.21.1F.swi Arista(config)#
From this point on, the switch will load the specified image on reload. Here’s the final output of show version
before we reboot with the new code:
Arista(config)#sho ver Arista DCS-7280SR-48C6-M-F Hardware version: 21.05 Serial number: SSJ17290598 System MAC address: 2899.3abe.9f92 Software image version: 4.19.5M Architecture: i386 Internal build version: 4.19.5M-7506183.4195M Internal build ID: ef83948c-6c45-4097-9d8b-a78a4722d49a Uptime: 26 minutes Total memory: 32463792 kB Free memory: 29917256 kB
Note that sometimes when you upgrade a switch, you’ll see one or more messages like this, which indicates that new microcode is being loaded onto the Field Programmable Gate Arrays (FPGA), which are essentially programmable Application-Specific Integrated Circuits (ASICs):
----------------------------------------------------- Upgrading the casini system fpga. This process can take 2 minutes. Please do not reboot your switch. ----------------------------------------------------- Upgrade of the casini system fpga completed successfully.
Without the diversion for showing you how the switch reacts to not having a boot-config file, the process was very simple: get the code on the system, update the boot-config file with the boot system
command, and reload.
Finally, here’s the output of show version
after the upgrade:
Arista#sho ver Arista DCS-7280SR-48C6-M-F Hardware version: 21.05 Serial number: SSJ17290598 System MAC address: 2899.3abe.9f92 Software image version: 4.21.1F Architecture: i386 Internal build version: 4.21.1F-9887494.4211F Internal build ID: 1497e24b-a79b-48e7-a876-43061e109b92 Uptime: 0 weeks, 0 days, 0 hours and 6 minutes Total memory: 32458980 kB Free memory: 30458056 kB
If you’re running Multi-Chassis Link Aggregation Group (MLAG), check out Chapter 18 for details about upgrading using MLAG In-Service Software Upgrade (ISSU), which allows for a switch pair to be upgraded with minimal packet loss and no STP reconvergence!
As someone who’s been in the field for far too long, I’ve installed or upgraded thousands of switches in my lifetime, and even after being at Arista for more than six years, I’m still impressed at the ease with which I can change the code revision on Arista devices. With automation tools like CloudVision (Chapter 15) or eAPI (Chapter 30), it becomes even easier. Be warned, though, that it’s so simple that you’ll likely grow annoyed when you have to go back to upgrading other vendors’ devices!