[Из песочницы] Особенности настройки коммутаторов ExtremeXOS
Данная статья призвана сократить количество времени, необходимое для понимания принципов работы с ExtremeXOS (XOS). Когда я начинал знакомство с XOS мне очень не хватало такой статьи на Хабре.
Ниже я расскажу о конфигурации Экстримов и о проблемамах, с которыми я сталкивался. Надеюсь, поможет сетевым инженерам, которые только начинают работать с XOS. Вне зависимости от модели коммутатора, — синтаксис CLI абсолютно одинаковый.
Стенд коммутаторов Extreme
К делу
Для виртуализации оборудования я использую Eve-Ng и образ Virtual ExtremeOS (XOS). Можно также использовать GNS3.
Как же выглядит настройка коммутаторов В XOS нет необходимости переключения режимов работы, все команды вводятся из обычного режима, отмеченного #, в случае админского аккаунта; и > в случае пользователя.
Для начала хотелось бы обозначить «основные» принципы команд в EOS. Всё строится на трех командах и их антонимов: create, configure, enable (delete, unconfigure, disable соответственно). То есть: создаем, настраиваем, активируем. Выглядит логично.
create vlan 10
configure vlan 10 ipaddress 192.168.1.1/24
Также следует понимать, что большинство конфигураций настраивается на VLAN. То есть в XOS почти все привязано к VLAN«ам. Даже назначение VLAN на порт происходит в настройке VLAN, то есть порт вешается на vlan.
Особое внимание хочется уделить виртуальным маршрутизаторам (VR), которые есть по умолчанию в коммутаторе. Есть VR-Default, которому принадлежат все порты, и VR-mgmt, которому принадлежит mgmt. порт. В XOS для всех команд, которые куда-то отправляют трафик (ping, ssh, telnet, download, etc.) необходимо указывать VR.
ping vr "VR-Default" 192.168.1.1
Обновление коммутаторов XOS
В XOS есть два раздела (partition) под ОС: primary и secondary. Функционально они ничем не различаются, только названиями. Устанавливать обновления можно только в неактивный на данный момент раздел. Для этого можно использовать аргумент inactive. После обновления требуется перезагрузка, и коммутатор загрузится с другого (только что обновленного) раздела. Это оставляет возможность быстрого отката, в случае проблем, просто выбрав другой раздел при загрузке (тот, где осталась старая ОС). Также замечу, что все образы с патчами представляют собой полноценный образ, то есть не надо ставить мажорную версию, а потом несколько минорных. При загрузке используется tftp:
download image 192.168.1.1 summitX-21.1.4.4-patch1-3.xos vr "VR-Default" inactive
Узнать, какой сейчас раздел используется, можно при помощи:
show system
…
Image Selected: primary
Image Booted: secondary
Primary ver: 22.3.1.4
Secondary ver: 21.1.1.4
Стекирование коммутаторов
Для стекирования коммутаторов XOS необходимо включить поддержку стекирования и перезагрузить коммутатор:
enable stacking-support
reboot
Очень удобно, что в стек можно объединять коммутаторы разных моделей, при этом мастером будет коммутатор, с наибольшей производительностью. Например, это может быть необходимо для стека 10G коммутаторов на 16 портов для серверов, к которым добавляется 48-портовый 1G коммутатор, в который включаются mgmt.-интерфейсы.
Для стекирования коммутаторы должны иметь одинаковую версию ОС. Стекирование производится через определенные Ethernet порты, для каждой модели разные, которые можно найти в документации. В случае, если вы соберете коммутаторы по схеме портов 1 в 2, 2 в 1, то коммутаторы Extreme можно будет собрать в стек по упрощенной процедуре easy-stack, которая сама привяжет мак-адреса к номеру слота и другие настройки. При этом первым станет коммутатор, на котором вы примените enable stacking, остальным будут присвоены номера по цепочке. Это довольно удобный способ, позволяющий сэкономить много времени. После стекирования порты будут иметь вид SLOT: PORT (1:1, 2:35).
X440G2-48p-10G4.1 # show stacking
Stack Topology is a Ring
This node is not in an Active Topology
Node MAC Address Slot Stack State Role Flags
------------------ ---- ----------- ------- ---
*00:04:96:xx:xx:xx - Disabled Master ---
00:04:96:xx:xx:xx - Disabled Master ---
00:04:96:xx:xx:xx - Disabled Master ---
00:04:96:xx:xx:xx - Disabled Master ---
00:04:96:xx:xx:xx - Disabled Master ---
* - Indicates this node
Flags: (C) Candidate for this active topology, (A) Active Node
(O) node may be in Other active topology
X440G2-48p-10G4.2 # enable stacking
You have not yet configured all required stacking parameters.
Would you like to perform an easy setup for stacking operation? (y/N) Yes
Executing "configure stacking easy-setup" command...
For every node in the 5-node stack, this command will:
- enable stacking
- configure a stack MAC address
- choose and configure a slot number (this node will be assigned to slot 1)
- configure redundancy to minimal (slot 1 will be the master node)
- configure the stacking protocol to enhanced
Upon completion, the stack will automatically be rebooted into the new configuration.
Warning: If stacking is already configured, this command will alter that configuration.
Do you wish to proceed? (y/N) Yes
Stacking configuration is complete. Rebooting...
Обновление стека заключается в том, что обновляется master, а дальше он сам по очереди разливает новую версию на остальные слоты. Перезагрузка необходима.
Лицензирование
Каждый коммутатор идет с предустановленной лицензией (edge, advanced edge, core, и т.д.). Каждая лицензия имеет свой набор функций, которые могут быть активированы на коммутаторе, например, количество портов, которые могут быть использованы в OSPF. Также есть лицензии на отдельные feature. Подробнее можно прочитать здесь.
Одна из самых частых лицензий — лицензия на feature: Dual-10GB-Uplink. Данная лицензия на edge коммутаторе-1G позволяет использовать 2×10GbE порта. Например, на X440-G2–48p.
Лицензии доступны в личном кабинете на сайте Extreme, после чего активируются (без перезагрузки) и проверяются командой.
enable license XXXX-XXXX
show licenses
В случае, если в стеке коммутаторов используются разные лицензии, будет использована наименьшая.
Настройка
Небольшое отступление: Чтобы посмотреть результаты команд, которые будут ниже, а также любую другую информацию, в большинстве случаев можно использовать show, заменяя create и configure. Например, show vlan.
Hint: При использовании show ports — XOS построит обновляемую раз в несколько секунд таблицу, которая позволяет в реальном времени отслеживать состояние интерфейсов. Для того, чтобы получить вывод без обновления, необходимо использовать «show ports no-refresh».
Первое, что приходит в голову, что нужно бы настроить это hostname. Казалось бы, должно быть как-то так:
configure hostname Ex_sw_1
Но не все так просто, на самом деле делается это так:
configure snmp sysName Ex-sw-1
Создаем VLAN:
create vlan My_Vlan tag 5
Или так, причем именно так будет отображено в конфиге:
create vlan My_Vlan1
configure vlan My_Vlan tag 10
Учитывая практический опыт и реалии вывода команд и настройки XOS, я создал для себя правило: в названии vlan в конце дописывать его тег, что облегчает восприятие и настройку:
create vlan users-10 tag 10
В XOS нет как таковых trunk и access портов. Вместо этого используются понятия: тегированный и нетегированный трафик на интерфейсе с привязкой к vlan. Может быть один нетегированный и много тегированных vlan. Порты нумеруются цифрами (или slot: port в стеке), все очень просто.
configure vlan My_Vlan-5 add ports 1 tagged
configure vlan My_Vlan1-5 add ports 1 untagged
Соответственно, весь трафик без тега, приходящий на интерфейс будет тегироваться как »My_Vlan1».
При этом vlan можно задавать как через , так и через , причем в любых комбинациях (используя vlan_list, то есть числовой по тегам). Без указания атрибута в конце используется <untagged>:
сonfigure vlan 1,5-10,15-20 add ports 1-8, 48 tagged
configure vlan web-110 add ports 5
сonfigure vlan 20 add ports 30-40,45 untagged
Так как большинство коммутаторов серии SummitX это L3 коммутаторы, то вот так настраиваются SVI:
configure vlan 125 ipaddress 192.168.125.1/24
После этого необходимо применить данную команду, иначе vlan останется немаршрутизируемым:
enable ipforwarding vlan 10-50
Чтобы посмотреть, какие vlan есть на интерфейсе, можно использовать команду:
show ports 2 vlan
Для просмотра и сохранения конфигурации используются следующие команды и имеются primary и secondary конфигурационные файлы:
save
save secondary
show configuration
Агрегация каналов
Один из неудобных моментов, которые я встретил, — это агрегация каналов. (port-channel). Общая суть выглядит так: вы назначаете мастер-порт и к нему до семи вторичных интерфейсов. Далее все настройки производятся лишь на конкретном мастер-порте, нет никаких логических интерфейсов вида po1. Минус же в том, что если Вы хотите изменить мастер порт, то необходимо руками переносить все настройки на другой порт, так как при удалении агрегированного канала весь конфиг на нём слетает. Решение этого неудобства есть в этой статье, однако все равно получается не идеально. В XOS агрегация называется sharing.
Для включения такого порта необходимо применить команду вида:
enable sharing [MASTER_PORT] grouping [PORT_LIST] [lacp]
enable sharing 1 grouping 1-2 lacp
На версии ниже чем 22.X необходимо дописывать алгоритм «балансировки»:
enable sharing 1 grouping 1-2 algorithm address-based L2 lacp
Защита от петель второго уровня OSI
На коммтутаторах Summit-X до-мажорной версии 22.2 по умолчанию был отключен протокол защиты от петель второго уровня. (STP и другие). На момент написания статьи, рекомендованный вендором софт — это 21.1.5.2.
ELRP
В одном из своих проектов я использовал проприетарный протокол ELRP, который предназначен для обнаружения и предотвращения петель. В ходе тестов он показал хорошие результаты (скорость отключения порта при петле и др.). Данный протокол отправляет мультикастом PDU, и если отправитель его снова получает, то значит есть петля.
Интервал отвечает за частоту рассылки PDU, в данном случае — 2 секунды. В случае петли порт будет заблокирован на 180 секунд, после чего будет снова послана PDU. Варианты оповещения: log, trap, log-and-trap. В случае trap, соответственно, посылается snmp trap.
Настраивается данный протокол per-vlan, также, как и большинство конфигураций в XOS.
enable elrp-client
configure elrp-client periodic Buh-123 ports all interval 2 log disable-port ingress duration 180
Чтобы протокол ELRP не блокировал аплинки коммутаторов доступа или критично-важные соединения, используется команда исключения портов из блокировки.
configure elrp-client disable-port exclude 35
configure elrp-client disable-port exclude 1:1
STP
STP настраивается чуть мудренее, но в целом особых проблем не возникает. В XOS данный протокол именуется «stpd», во всех командах для настройки STP, используется именно он. Можно его сделать per-vlan, используя разные STP-домены. «domain-id» и «vlan-id» должны совпадать. Порты в STP можно добавлять либо вручную, либо используя vlan auto-bind. Как только к vlan«у добавляется порт, то этот порт автоматически добавляется в STP. Такая вот логика. Настройка режима: dot1d STP, dot1w — RSTP:
configure stpd "s0" priority 4096
configure stpd s0 mode dot1w
enable stpd s0
enable stpd "s0" auto-bind "VLAN_0005"
VRRP
VRRP — это один из видов FHRP, аналог HSRP в Cisco. Для каждой сети (vlan«а) необходимо использовать vrid, который может быть от 1 до 255. Приятно порадовала возможность маршрутизации трафика с backup-vrrp-L3-коммутатора с использованием опции fabric-routing. По умолчанию приоритет равен 100. У кого из коммутаторов приоритет выше, тот становится «Master».
create vrrp vlan test1 vrid 125
configure vrrp vlan test1 vrid 125 priority 50
configure vrrp vlan test1 vrid 125 fabric-routing on
enable vrrp vlan test1 vrid 125
MLAG
Про то, что это такое и зачем, очень хорошо рассказано здесь: это, по сути, аналог Cisco VPC. ISC — соединение между коммутаторами mlag-пары.
В моем случае обычно использовалась такая схема:
Необходимо создать соседа (peer), для того чтобы можно было относить конкретные порты с mlag к конкретному соседу, так как Extreme поддерживает возможность использования нескольких соседей. Для ISC нужен vlan, используемый только для ISC и имеющий IP адрес. Соответственно, peer для X670–1 у нас будет X670–2, а mlag порты будут x440. Для функционирования необходимо создать канал аггрегации, причем на x670 для одного порта в сторону x440, и агреггированный канал в сторону X670–2, в котором будут ВСЕ Vlan«ы, участвующие в mlag.
На x670:
Enable sharing 1 grouping 1 lacp
create mlag peer "mlag1"
configure mlag peer "mlag1" ipaddress 10.255.255.2 vr VR-Default
enable mlag port 1 peer "mlag1" id 1
На х440-stack:
enable sharing 1:51 grouping 1:51,2:51 lacp
MLAG+VRRP
Во время тестирования коммтуаторов на стенде была найдена проблема, что VRRP забирает Master-роль до того, как поднимутся все остальные интерфейсы (ISC поднимается первым) и протоколы, что приводило к даунтайму сети порядка минуты.
Данная проблема решилась следующими командами, однако они доступны только с «EXOS 21.1.3.7-patch1–4» и «EXOS 22.3»:
configure mlag ports reload-delay 60
enable mlag port reload-delay
Маршрутизация
Статичные маршруты задаются следующим образом, тут проблем быть не должно. Можно маску задавать в любом варианте.
configure iproute add 10.0.66.0 255.255.255.0 172.16.1.1
configure iproute add 10.0.0.1/32 10.255.255.255
configure iproute add default 172.16.0.1
OSPF
Для маршрутизации, в моей практике, использовался OSPF с одной зоной. Для обеспечения работоспособности необходимо задать router-id, а также добавить каждый vlan, который необходимо анонсировать (по аналогии в Cisco: network).
configure ospf routerid 192.168.1.1
enable ospf
configure ospf add vlan routing-5 area 0.0.0.0
configure ospf add vlan Voip-32 area 0.0.0.0 passive
Остальные мелочи
DHCP Relay
Настраивается следующим образом:
configure bootprelay add 192.168.12.5 vr VR-Default
enable bootprelay ipv4 vlan servers-500
При создании нового vlan необходимо добавлять его вручную в список vlan с DHCP Relay.
SSH + ACL для SSH
Ssh включается следующим образом:
enable ssh2
Для ограничения доступа к ssh необходимо создать отдельный файл политики вида NAME.pol и повесить его на SSH.
vi ssh.pol
Политика:
Entry AllowTheseSubnets {
if match any {
source-address 192.168.0.0 /16;
source-address 10.255.255.34 /32;
}
Then
{
permit;
}
}
Команда для применения политики:
enable ssh2 access-profile ssh.pol
Description + display-string
Для удобства настройки и последующей эксплуатации можно задавать «имя» и «описание» интерфейса.
сonfigure port 1 description "this is port number one”
Описание интерфейса будет выводится только в командах вида:
show ports description
Имя интерфейса заменит практически везде его номер в выводе команд. Имя не должно содержать пробела и ограничено длинной в 20 символов.
сonfigure port 1 display-string UserPort
EXOS-VM.8 # sh port vlan
Untagged
Port /Tagged VLAN Name(s)
-------- -------- ------------------------------------------------------------
UserPort Untagged Default
2 Untagged Default
3 Untagged Default
Заключение
XOS также позволяет автоматизировать многие действия и подстраивать систему под свои нужды, так как нативно поддерживает Python и встроенный механизм создания и запуска скриптов, используя команды командной строки (CLI-Scripting).
Я открыт для пожеланий по улучшению статьи и исправлению неточностей/ошибок, а также вопросов.