- PVSM.RU - https://www.pvsm.ru -
На Хабре нет ни одного поста про коммутаторы компании Arista Networks [1]. При этом есть несколько комментариев [2], по-моему, достаточно положительных по смысловой окраске.
Мне захотелось написать про эту компанию, их оборудование, операционную систему EOS и CLI.
Я не являюсь представителем вендора и у меня нет глубоких познаний по всей линейке. Топик носит обзорный характер и отражает моё личное мнение. Для мнений читателей есть комментарии и новые топики.
Как сообщает книга Arista Warrior [3] и соответствующий раздел [4] сайта, в появлении Arista Networks виновны три ключевые фигуры:
Jayshree Ullal занимает должность CEO. Она была старшим вице-президентом в Cisco и несла ответственность за линейки Cisco Nexus 7000, Catalyst 4500, и Catalyst 6500. В 2005 года журнал «Network World Magazine» включил её в список «50 самых властных людей» («50 Most Powerful People»).
Arista Networks предлагает [5] только коммутаторы и конечно же сопутствующие товары (кабели питания, трансиверы, сервис и т.п.). Свои свитчи Arista позиционирует для применения в Центрах Обработки Данных (ЦОД).
Краткая свободная таблица (кликабельно) по некоторым параметрам из Arista Products Quick Reference Guide [6] (параметров больше, например, есть аппаратная поддержка VXLAN [7]):
[8]
Компания не производит маршрутизаторы, Wi-Fi AP, устройства SOHO, межсетевые экраны и прочие сетевые устройства.
Data Plane («плоскость передачи данных») в коммутаторах Arista построен с использованием интегральных схем специального назначения — ASIC [9].
По типу происхождения ASIC делятся на:
Простой пример для аналогии из мира смартфонов:
Arista не разрабатывает собственные ASIC, а использует в своих коммутаторах Merchant Silicon от Intel и Broadcom.
С одной стороны, в этом нет ничего уникального. Например, на ASIC StrataXGS Trident II фирмы Broadcom построены следующие коммутаторы некоторых вендоров (вендоры в алфавитном порядке):
С другой стороны, при таком подходе на первое место выходят такие параметры коммутатора, как:
Про такие характеристики коммутаторов Arista Networks, как задержки [10] и работа с буфером, ходят презентации, слухи и еще раз комментарии на Хабре [11].
EOS — это модульная операционная система, которая обеспечивает работу коммутаторов Arista. Она одна для всей линейки свитчей не только по названию. Кто обновлял хотя бы раз IOS на коммутаторах Cisco знает, что IOS c3550*.bin не подойдет в тот коммутатор, где используется c3750*.bin. А кто работал с Juniper знает, что jinstall-ex-4500*.tgz не заменит jinstall-ex-4200*.tgz. У Arista пока получается делать единый файл с ОС для всей линейки. Не главный плюс EOS, но удобный.
EOS базируется на Fedora [12]. ОС работает на отдельном CPU (в данный момент — x86), что позволяет разделить Control Plane («плоскость управления» — CPU, EOS) и Data Plane («плоскость передачи данных» — ASIC). Всё это не ново, но есть и архитектурные особенности в EOS, которых нет в ОС других вендоров. Так, например, компоненты, необходимые для работы коммутатора, не обмениваются данными друг с другом напрямую, а делают это только через специальный менеджер-базу — Sysdb. Sysdb является как общей шиной для коммуникации между процессами, так и базой данных для рабочей информации этих процессов. Например, маршрут, пришедший по IGP, перед тем, как попасть в ASIC, передается процессом, отвечающим за IGP, в Sysdb; Sysdb сохраняет его у себя в закромах и передает в процесс, отвечающий за взаимодействие с ASIC.
С помощью работы через Sysdb получается обеспечить большую выживаемость и стабильность. Например, что-то произошло с сервисом, отвечающим за SNMP (например, сложносформированные данные в запросе вызвали сбой), и он умер. Менеджер процессов (ProcMgr) автоматически перезапускает сервис SNMP. После запуска все сервисы обращаются к Sysdb и, если там уже есть их данные, то они их восстанавливают и продолжают с ними работать.
При традиционном построении ОС (в том числе для сетевых устройств) компоненты, службы и сервисы передают данные между собой напрямую. Перезапуск или «падение» процесса-сервиса влечет за собой потерю всех его рабочих данных (маршрутов, статистики и прочего), а так же может сказаться на других сервисах, с которыми невезучий процесс работал и обменивался данными: они могут тоже «упасть» или потерять состояния, необходимые для работы.
Схематичная структура «традиционной ОС» и Arista EOS:
(картинки из «EOS Architecture Whitepaper» [13].)
Подобное устройство EOS не гарантирует полную устойчивость и безотказность, но все же это лучше, чем ничего. А еще с помощью функционирования через Sysdb реализован ISSU сервисов.
Cli (в EOS у всех запускаемых приложений от Arista имена с заглавной буквы) тоже работает через Sysdb.
[admin@localhost ~]$ cd /usr/lib/python2.7/site-packages/CliPlugin/
[admin@localhost CliPlugin]$ ls -a *Cli*py
AaaCli.py CliSchedulerCli.py FaultInjectionCli.py IraIpCli.py MlagShowCli.py PimCli.py RipShowTechCli.py TapAggIntfCli.py
AclCli.py ClockCli.py FhrpCli.py IraIpIntfCli.py MlagTunnelCli.py PimShowTechCli.py RouteEventMonCli.py TcpdumpCli.py
AclCliRules.py CpuFabricCli.py FileCli.py IraShowTechCli.py MlagWarningCli.py PmbusCli.py RouteMapCli.py TechSupportCli.py
AgentCli.py DcbxCli.py FruCli.py IraVrfCli.py ModuleCli.py PortSecCli.py RoutingBgpCli.py TrackingCli.py
AgentPingCli.py DebugMessageCli.py IgmpCli.py LagCli.py ModuleIntfCli.py PowerCli.py RoutingIsisCli.py UplinkFailureDetectionCli.py
AgentResourceCli.py DebuggingCli.py IgmpProfileCli.py LagIntfCli.py MoreCli.py PowerDiagsCli.py RoutingOspf3Cli.py VersionCli.py
AgentShutdownCli.py DhcpRelayHelperCli.py IgmpShowTechCli.py LagIntfMlagCli.py MrouteCli.py PsmiCli.py RoutingOspfCli.py VlanCli.py
ArpEventMonCli.py DiagCli.py IgmpSnoopingCli.py LagShowTechCli.py MrouteEtbaCli.py PtpCli.py RoutingRipCli.py VlanIntfCli.py
ArpIp6Cli.py DonkeyCli.py IgmpSnoopingDebugCli.py LanzCli.py MrouteEventMonCli.py QosCli.py SectionCliLib.py VmTracerCli.py
ArpIpCli.py EbraEthIntfCli.py IgmpSnoopingEtbaCli.py LanzIntfCli.py MrouteShowTechCli.py RadiusCli.py SendCli.py VmTracerIntfCli.py
ArpIpIntfCli.py EbraEthIntfCliModel.py IgmpSnoopingEventMonCli.py LauncherDaemonCli.py MsdpCli.py RedSupCli.py SflowCli.py VxlanCli.py
BackupIntfCli.py EbraShowTechCli.py IgmpSnoopingShowTechCli.py LinkFlapCli.py NetworkCli.py RedSupCliFormatSpec.py ShellCli.py WaitForWarmupCli.py
BeaconLedCli.py EbraSnmpCli.py InstallCli.py LldpConfigCli.py NetworkToolsCli.py RedSupFileCli.py SnmpCli.py WatchCli.py
BfdCli.py EmailCli.py IntfCli.py LldpStatusCli.py NetworkUrlCli.py ReloadCauseCli.py StormControlCli.py XcvrCli.py
BootCli.py EnvironmentCli.py IntfRangeCli.py LoggingCli.py OldDhcpRelayCli.py ReloadCli.py StpCli.py XcvrConfigCli.py
BridgingCli.py ErrdisableCli.py IntfSnmpCli.py LoopbackIntfCli.py OpenFlowCli.py ReloadConfigSaveCli.py StpCliLib.py
BridgingCliModel.py EthIntfCli.py Ip6NdCli.py MacEventMonCli.py PciCli.py ReloadElectionCli.py StpIntfCli.py
BridgingEtbaCli.py EthShowTechCli.py IraCommonCli.py MacFlapCli.py PeerIntfCli.py ReloadFileSyncCli.py SupeSessionCli.py
CliCli.py EventCli.py IraEtbaCli.py ManagementActiveIntfCli.py PfcCli.py RibIp6Cli.py SwitchIntfCli.py
CliCliModel.py EventMonCli.py IraIp6Cli.py MirroringCli.py PhyCli.py RibIpCli.py SysMgrCliLib.py
CliError.py ExtensionMgrCli.py IraIp6IntfCli.py MlagConfigCli.py PhyConfigCli.py RibShowTechCli.py TacacsCli.py
[admin@localhost CliPlugin]$ head VlanCli.py
==> VlanCli.py <==
# Copyright (c) 2006-2011 Arista Networks, Inc. All rights reserved.
# Arista Networks, Inc. Confidential and Proprietary.
#-------------------------------------------------------------------------------
# This module implements VLAN configuration. In particular, it provides:
# - the Vlan class
# - the VlanSet class
# - the "config-vlan" mode
# - the "[no] vlan <vlan_set>" command
# - the "[no] name <vlan_name>" command
Пользователям можно изменять как встроенные команды, так и писать свои.
Сама же работа в CLI похожа на работу в CLI Cisco IOS. Первое время кажется, что это копия (не как у Huawei, а именно копия). Но потом становятся видны доработки, которых очень не хватало в IOS.
Например, при изменении параметров группы интерфейсов не нужно слово «range», а номера интерфейсов отображаются слева:
localhost(config)#int e1,3,5
localhost(config-if-Et1,3,5)#
localhost(config-if-Et1,3,5)#load-interval 10
Или можно посмотреть утилизацию интерфейсов и группы интерфейсов:
localhost#sh int e3,e48 | i rate
10 seconds input rate 5.26 Gbps (53.3% with framing overhead), 433507 packets/sec
10 seconds output rate 12.2 Mbps (0.2% with framing overhead), 21824 packets/sec
10 seconds input rate 12.2 Mbps (0.2% with framing overhead), 21826 packets/sec
10 seconds output rate 5.26 Gbps (53.3% with framing overhead), 433546 packets/sec
И совершенно не нужно курсором выделять по 3 знака в скорости порта, чтобы понять, с мегабитами или гигабитами мы имеем дело. Но и это не все. EOS отображает утилизацию интерфейса в %.
А еще в EOS можно делать множественные пайпы и использовать программы GNU/Linux:
sho run | grep X | grep -v Y | more
Не нужно в режиме конфигурации перед командой добавлять «do».
Можно посмотреть diff активной и сохраненной конфигурации:
localhost#sh run diffs
--- flash:/startup-config
+++ system:/running-config
@@ -190,9 +190,10 @@
!
interface Loopback0
ipv6 enable
+ ipv6 address 2001:db8:ffff::ffff/128
ipv6 address 2001:db8::1/128
ip address 10.10.10.1/32
- ip address 10.255.255.1/32 secondary
+ ipv6 ospf priority 20
ipv6 ospf 1 area 0.0.0.0
!
interface Management1
@@ -200,7 +201,6 @@
!
interface Vlan10
description test
- shutdown
mtu 9000
ip address 10.1.1.1/24
!
Можно выйти в bash и осмотреться:
localhost#bash
Arista Networks EOS shell
[admin@localhost ~]$ ls /
bin dev export lib mnt opt proc sbin srv tmp var
boot etc home media monitor persist root selinux sys usr
[admin@localhost ~]$ sudo -s
bash-4.1# cat /proc/cpuinfo | grep name
model name: AMD Turion(tm) II Neo N41H Dual-Core Processor
model name: AMD Turion(tm) II Neo N41H Dual-Core Processor
Все ACL задаются именами. Не нужно помнить и путаться в номерах. Для приверженцев старого подхода есть возможность в качестве имен использовать цифры.
И так далее и тому подобное. CLI в EOS не просто копия, это самодостаточная оболочка с удобными возможностями и далеко ушедшая от прародителя.
Слово «Extensible» в «Extensible Operating System» по задумке говорит о расширяемости [14] функционала ОС. Достигается это за счет возможности установки своих программ, демонов, скриптов на коммутатор. Можно, например, установить и запустить клиент OpenVPN. Или, запустить скрипт на Python, или, даже ExaBGP [15]. Можно свои поделки подружить с Sysdb, а потом, собрав в RPM пакеты, разнести по сети.
Aboot — это не часть EOS, а загрузчик EOS, что-то вроде Cisco ROMmon.
Хочу о нем рассказать, потому что он очень прост и понятен. Aboot представляет из себя ни что иное, как BusyBox [17]. Все данные, включая образы EOS и логи, хранятся на встроенной флешке. Aboot позволяет получить к ней доступ (а так же доступ к внешним USB накопителям, подключенным к USB портам) и восстановить работоспособность устройства в случае проблем. Вход в Aboot тоже простой: без танцев с бубном, без зажиманий кнопок и посылок странных кодов в консоль — CRTL+C.
Aboot 2.0.5-430838
Press Control-C now to enter Aboot shell
^CWelcome to Aboot.
Aboot# echo $SHELL
/bin/sh
Aboot#
arp devmem initblockdev overcast-lcd swiinfo
ash df initnetdev ping switch_root
autoboot dirname insmod ping6 switchroot
base64 dmesg iostat pmap sync
basename dosfsck ip poweroff sysinit
blockdev dropbearmulti ipcalc powertop tail
boardinit du kexec ps tar
boot echo kill pwd tee
bootchartd egrep ln readlink telnet
bunzip2 env login realpath tftp
burnK7 expr losetup reboot time
burnMMX false ls recover touch
burnP6 fdisk lsmod reset tr
busybox fgconsole lspci rev traceroute
bzcat fgrep lsusb rm traceroute6
cat find md5sum rmdir true
checkpass flashrom mdev rmmod udhcpc
chgrp flock mkdir route umount
chmod free mkdosfs rx uname
chown fsck.msdos mkfs.vfat scp unxz
chroot fsck.vfat mknod sed unzip
clear fullrecover mktemp setpci vi
cmp grep modinfo sh vmcore-dmesg
cp gunzip more sha1sum wget
cpio halt mount sleep which
cut head mpstat smemcap xz
date help mv ssh xzcat
dbclient hexdump nbd-client stat yes
dd ifconfig netconf stty zcat
devio init nvramtool sum
Aboot# exit
Restarting system.
Даже ipcalc есть для удобства.
Как было сказано ранее, Arista Networks целится своим оборудованием в ЦОДы и предлагает следующие варианты схем для оптимального использования:
Ничто не мешает собрать кольцевую или смешанную топологию с использованием STP и его более улучшенных вариантов, включая PVST. Но это скажется отрицательно на недежности, масштабировании и удобстве эксплуатации.
Автор: router
Источник [20]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/setevoe-oborudovanie/54847
Ссылки в тексте:
[1] Arista Networks: http://www.aristanetworks.com/
[2] есть несколько комментариев: http://habrahabr.ru/search/?target_type=comments&order_by=relevance&q=arista
[3] Arista Warrior: http://shop.oreilly.com/product/0636920022435.do
[4] соответствующий раздел: http://www.aristanetworks.com/en/company/management
[5] предлагает: http://www.aristanetworks.com/en/products/
[6] Arista Products Quick Reference Guide: http://www.aristanetworks.com/media/system/pdf/AristaProductQuickReferenceGuide.pdf
[7] VXLAN: http://ru.wikipedia.org/wiki/Virtual_Extensible_LAN
[8] Image: http://habr.habrastorage.org/post_images/3cb/2c1/c31/3cb2c1c31679e9cd9017628dd4735a0f.jpg
[9] ASIC: http://ru.wikipedia.org/wiki/ASIC
[10] задержки: http://habrahabr.ru/company/advanserv/blog/206168/#comment_7104958
[11] комментарии на Хабре: http://habrahabr.ru/post/199500/#comment_6921298
[12] Fedora: http://ru.wikipedia.org/wiki/Fedora
[13] «EOS Architecture Whitepaper»: http://www.aristanetworks.com/media/system/pdf/EOSWhitepaper.pdf
[14] расширяемости: https://eos.aristanetworks.com/wiki/index.php/EOS_Extensibility
[15] ExaBGP: https://github.com/Exa-Networks/exabgp
[16] сайте: http://www.aristanetworks.com/en/products/eos/aem
[17] BusyBox: http://ru.wikipedia.org/wiki/BusyBox
[18] LAG: http://ru.wikipedia.org/wiki/%D0%90%D0%B3%D1%80%D0%B5%D0%B3%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B2
[19] STP: http://ru.wikipedia.org/wiki/STP
[20] Источник: http://habrahabr.ru/post/211869/
Нажмите здесь для печати.