ExtremeXOS

Материал из Xgu.ru

(Перенаправлено с Extreme Networks)
Перейти к: навигация, поиск

Здесь описываются основные с практической точки зрения моменты по настройке и взаимодействию с ExtremeXOS на коммутаторах от Extreme Networks. В качестве основного источника информации используется ExtremeXOS Concepts Guide.

Содержание

[править] Управление конфигурациями

show configuration {<module-name>} [detailes]	- показывает весь активный конфиг, или только конфиг модуля. details- не только изменённые значения.
save configuration [primary | secondary]	- сохранить runing-config в primary.cfg
use configuration [pri | sec | <filename>]	- выбрать активный файл конфигурации, который будет использован после ребута.
tftp put <ip> vr <name> <src-file> [<dst-file>]- загрузка файла конфигурации со свича на tftp-сервер (xml).
tftp get <ip> vr <name> <src-file> <dst-file>  - загрузка файла конфигурации с tftp-сервера на свич (xml).
upload configuration <ip> <file.xsf> vr <name>  - загрузка текущей конфигурации со свича на tftp-сервер (asci).
tftp get <ip> <remote-file>			- загрузка изменённого командного скрипта с tftp на свич (asci).
load script newscript.xsf			- загрузка командного скрипта в текущую конфигурацию (после этого надо сохранить текущий конф в pri или sec.
edit script newscript.xsf			- редактирование командного скрипта прямо на свиче.
unconfigure switch [all]			- вернуть конфиг к заводским настройкам кроме аккаунтов, паролей, даты и времени all - кроме даты и времени.
reboot						- перезагрузка свича.
show switch					- сводная информация по свичу.

Если имеется полный файл конфигурации в формате asci (полученный командой upload configuration...), то чтобы применить содержащиеся в нём команды, нужно переименовать его в .xsf и затем

load script <config-file-name>.xsf

[править] Файловая система

ls,cp,mv,rm					- список файлов, копирование, переименовывание, удаление.
edit policy <filename>				- редактирование файлов политик.
edit <file-type> <file-name>			- внутренний редактор свича. По командам очень похож на vi.

[править] BootStrap

Для входа надо подключиться с консоли, перезагрузить свич и во время загрузки держать нажатым space пока не появится приглашение "BootStrap>". h - для отображения помощи по командам.

download bootrom <tftp-ip> summitX450-<version>.xbr	- обновление BootROMa. Требуется осторожность, прерывание может повредить BootROM и тогда хана.

[править] Управление Image-файлами

show version					- посмотреть текущую версию имиджа.
download image <ip> <file> vr <name> {pri|sec} - загрузить файл имиджа на свич в позицию pri или sec.
use image <primary | secondary>		- установка активного имиджа, который будет загружен после перезагрузки.

[править] Настройка управления свичём

show management					- сводная информация по настройке функций управления.
show account					- показать существующие учётные записи.
create account [admin | user] <name> <pass>	- создать аккаунт. 
delete account test				- удалить аккаунт.
configure account test				- задать пароль для пользователя test. (обязательно установить пароль для admin)
configure failsafe-account			- для доступа к свичу, если пароль админа утерян. Никогда не отображается, всегда присутствует.
						  пароль невозможно восстановить. Сразу же сохраняется в NVRAM (не в конфиг).
configure cli max-sessons <n>			- макс. число одновременных пользовательских сессий.
configure cli max-failed-logins <n>		- макс. число неудачных попыток ввода пароля.
configuer account [all|<name>] password-policy lockout-in-ligin-failures on - блокировать аккаунт после достижения предела неудачных попыток входа.
clear account [all|<name>] lockout		- снять блокировку аккаунта (из-под другого админского акка).
configure telnet vr admin_vrouter		- определяет VR, через IP-интерфейсы которого возможно получить доступ по telnet.
enable ssh2					- включить возможность доступа по ssh (установка модуля ssh так же добавляет функциональность https).
scp2 {cipher [3des|blowfish]} {port <n>} {debug <level>} <user>@<host>:<remote_file> <local_file> {vr <name>} - копирование файла по scp.
disable clipaging				- отключить постраничный вывод.
[no-refresh]					- опция обеспечивает вывод инфы без циклического обновления.
show session {{detail} {<sessID>}} {history}
clear session [<sessID> | all]

[править] Загрузка и активизация модуля SSH2

download image <tftp-server-ip> summitX-<ver>-ssh.xmod vr <VR-name>	- загрузка файла модуля
run update								- активация нового программного модуля
start process exsshd							- запуск процесса SSH2.
configure ssh2 key							- генерация нового ключа.
enable ssh2								- включение SSH2.

[править] SNMP

enable snmp access				- включает snmp
configure snmp sysname <str>			- задаёт имя узла
configure snmp syslocation <str>		- задаёт расположение узла
configure snmp syscontact <str>		- контактная информация.
configure snmp add community [readonly|readwrite] <str>	- добавляет комьюнити.
configure snmp traps				- включает рассылку трапов.
configure snmp add trapreceiver <ip> community <str>	- определяет получателя трапов.

[править] Логгирование

configure syslog {add} [ip] {vr <name>} [local0 .. local7] {<severity>}
enable syslog
show log {<severity>}			- посмотреть локальный лог. Локальное логгирование: до 20000 сообщений (по по умолчанию 1000).
conf log filter "DefaultFilter" add exclude events SNMP.Master.DropReqAccessDeny - не записывать в лог сообщения о несанкционированных попытках обращения по SNMP.

[править] SNTP (периодический опрос серверов NTP)

configure sntp-client [pri|sec] server <host> {vr <name>}
enable sntp-client

[править] Настройка слотов расширений

configure slot <num> module [ G48T | G48P | G24X | 10G4X ]	- настройка типа модуля, установленного в данном слоте расширения.
unconfiugre slot 						- сброс конфигурации указанного модуля.
clear slot <num>						- удалить всю конфигурацию слота.

[править] SVI

configure vlan mgmt ipaddress 10.0.0.1 255.255.255.0		- повесить ip-адрес на SVI влана
configure vlan default ipaddress 10.0.0.1/24			- повесить ip-адрес на SVI влана
unconfigure vlan mgmt ipaddress				- убрать ip-адрес с SVI влана
configure vlan <name> add secondary-ipaddress <ip/<mask>	- добавление дополнительных ip-адресов во влане.

[править] Настройка портов

Обозначения портов в многомодульном свиче:
2:4 - второй слот, четвёртый порт;
3:6-8,11 - группа с 6 по 8 порты и 11 порт в модуле 3.

  • Диагностика
show ports <port-list> [no-refresh]				- отображение состояния заданного списка портов (вкл/выкл линк/скорость/дуплекс). 
show ports <port-list> configuration				- отображение конфигурации порта.
show ports <port-list> information				- отображение информации о работе порта.
show ports <port-list> congestion				- посмотреть, есть ли дропы из-за перегрузки линка.
show ports <port-list> information detail			- самый подробный вывод всей информации, связанной с портами.
show ports <port-list> packet					- посмотреть гистограмму распределения по количеству и размеру пакетов.
  • Настройка:
enable ports <port-list>					- включить группу портов.
disable ports <port-list>					- отключить группу портов.
configure ports 1 auto off speed 100 duplex full		- настройка неготиации, скорости и дуплекса.
configure ports 1 auto-polariry					- настройка автоопределения типа кабеля.
enable jumbo-frame ports [all | <port-list>]			- разрешение jubmo-фреймов.
configure jumbo-frame size <jumbo_frame_mtu>			- установка размера (1523-9216).

[править] Функции таблицы коммутации

show fdb								- посмотреть всю таблицу коммутации.
create fdbentry <dst-mac> vlan <name> [ports <port_list>|blackhole]	- создание статической fdb-записи.
delete fdbentry {all | <mac> [vlan <name>] }				- удаление статической fdb-записи.
clear fdb { <mac> | blackhole | ports <port-list> | vlan <name>}	- удаление динамической(их) fdb-записи(ей).
disable learning drop-packets port 5					- на порту 5(in) форвардить пакеты только по статической fdb. Остальные отбрасывать.
disable learning forward-packets port 5				- не запоминать маки на 5 порту, но форвардить входящий трафик.
show ports 5 information		- проверить настроенный режим обучения (флаг m говорит, что функция запоминания активна).
configure fdb agingtime <15-1000000>	- время жизни записи в таблице коммутации. 0 - бесконечно.

[править] Функции безопасности уровня коммутации

1. Egress Flood Control - ограничивает исхдящий флуд разного типа трафика (unknown-unicast, broadcast, multicast).

disable flooding unicast port 1	- запретить флуд юникаст пакетов с неизвестным dst-mac в порт 1.
enable flooding broadcast port all	- разрешить флудить бродкастом на всех портах.
show port 1 info detail		- проверить настроенные режимы функции на порту 1.

2. Limit-Learning - ограничивает число маков, которые могут быть запомнены на порту в определённом влане. Трафик незапомненных маков блокируется (в обоих направлениях).

configure ports <port> vlan <name> learning-limit 3		- во влане <name> на порту <port> может быть запомнено не более 3 маков.
configure ports <port> vlan <name> unlimited-learnings	- снять ограничение для связки порт/влан.

3. Lock-Learning - запоминает текущие маки на порту во влане и блокирует трафик всех остальных маков.

configure ports <port> vlan <name> lock-learning		- запомнить текущие маки на порту <port> во влане <name>
configure ports <port> vlan <name> unlock-learning		- снять блокировку.
для диагностики работы функций:
show fdb
show vlan <name> security

4. Extreme Link Status Monitoring (ELSM) Проприетарный протокол, который следит за сбоями CPU и удалённых линков, предотвращая возможное образование колец. Работает по принципу point-to-point, настраивается на обоих конечных точках (свичах), соединённых через L2-облоко. Если ELSM ложится, пакеты данных не принемаются и не передаются через этот порт.

show elsm port 3	- проверка работы функции на порту 3.

5. Rate-Limit

configure ports <port_list> rate-limit flood [broadcast | multicast | unknown-destmac] [no-limit | <pps>]

[править] ELRP (Extreme Loop Recovery Protocol)

ELRP используется для обнаружения колец на уровне 2. Свич передаёт в порты фреймы со специальным мак-адресом назначения в определённом влане. Если данный пакет получен свичём через какой-то порт, то считается, что образовалось кольцо. В этом случае свич может погасить порт, послать трап, либо просто отметить событие в логе.

{enable | disable} elrp-client			- глобальное включение функции.
configure elrp-client periodic <vlan_name> ports <ports> interval <sec> [log | log-and-trap | trap] {disable-port {{duration <sec>} | permanent} - включение фичи во влане на портах.
unconfigure elrp-client <vlan_name> - отключение фичи во влане.
configure elrp-client disable-ports [exclude | include] [ <ports> | eaps-ring-ports] - отключение фичи на аплинках
unconfigure elrp-client disable-ports		- отмена отключения фичи на аплинках (чтобы блокирование осуществлялось)
show elrp					- просмотр состояния работы функции
show elrp disabled-ports			- просмотр информации об отключенных портах

Практическая демонстрация работы ELRP представлена в этом видео.

ELSM (Extreme Link Status Monitoring)

Это проприетарный протокол от Extreme Networks предназначенный для мониторинга аварий CPU и порта на удалённой стороне линка. Например, может использоваться для обнаружения однонаправленного линка и блокирования порта. Бывают случаи, когда аппаратный или программный сбой приводит к тому, что CPU не может получать или посылать пакеты. В этом случае ELSM изолирует соединения к аварийному коммутатору, отключая его от оставшейся сети. Это необходимо для предотвращения колец в активной L2-топологии. Работает в режиме точка-точка. Можно включать на интерфейсах, которые подключены к устройствам от Extreme Networks, на обоих сторонах соединения точка-точка. ELSM оценивает работоспособность линков и CPU при помощи обмена hello-сообщениями на линке между пирами. Соединение между двумя пирами организуется на канальном уровне в линке, соединяющем порты. Пиры могут быть как соединены напрямую, так и разделены хабами. Если они соединены напрямую, они считаются соседями (neighbors).
Если ELSM включен на порту и обнаруживает аварию линка, то на этом порту блокируется весь входящий и исходящий трафик. Например, если один пир перестаёт получать ELSM-hello от своего партнёра, то ELSM блокирует весь входящий и исходящий трафик на порту и информирует приложения, что линк пропал.

ELSM Hello-сообщения
  • Hello+ - посылается в порт, когда этот порт регулярно получает сигналы от партнёра и никаких проблем на линке не обнаружено.
  • Hello- - посылается в порт, когда этот порт не получил Hello+ сообщения от партнёра в течение установленного промежутка времени (1сек).

Переходные состояния порта:

  • HelloRx(+) - порт поднят и получает Hello+ от партнёра. Порт будет находиться в этом состоянии и обновлять HelloRx-таймер каждый раз, когда получает Hello+. Если HelloRx-таймер истекает, порт входит в состояние HelloRx(-). HelloRx-таймер = 6 * hello-таймер. По-умолчанию это 6 секунд.
  • HelloRx(-) - порт в переходном состоянии из ELSM-initial, или поднят, но не получил Hello-сообщения из-за проблем на линке или физического отсутствия пира.
Состояния портов ELSM
  • UP - партнёр по порту исправен и порт получает Hello+ сообщения от парнтёра. При каждом получении Hello+ up-таймер сбрасывается. up-таймер = 6 * hello-таймер. По-умолчанию 6 секунд.
  • DOWN - на порту нет линка, порт заблокирован или не получал Hello+ от парнтнёра. Если порт не получил Hello+ до того, как истёк up-таймер, он переходит в состояние DOWN. В этом состоянии пакеты данных и управляющий трафик (весь кроме ELSM PDU) не передаются и не принимаются через порт.
  • DOWN-Wait - свидетельствует о переходном состоянии. Если порт вошел в состояние DOWN, а позже получил Hello+ сообщение от партнёра, то он переходит в состояние DOWN-Wait. Если количество полученных Hello+ больше или равно заданному hold-threshold (по-умолчанию 2), порт переходит в состояние UP. Если количество Hello+ осталось меньше hold-threshold, порт возвращается в состояние DOWN.
  • DOWN-Stuck - говорит о том, что порт в состоянии DOWN и требует вмешательства администратора. Если порт продолжает моргать между состояниями UP и DOWN, он переводится в DOWN-Stuck. В зависимости от настроек, есть 2 способа вывода порта из этого состояния.
    • По-умолчанию, автоматический рестарт включен, и порт автоматически будет пытаться восстановиться.
    • Если автоматический рестарт выключен, то вывести порт из состояния DOWN-Stuck в DOWN возможно командой
clear elsm ports <portlist> auto-restart

Включение и отключение автоматического восстановления из DOWN-Stuck осуществляется командой

{enable | disable} elsm ports <portlist> auto-restart

Примечание: Во время перезагрузки партнёра, ELSM-порт в его сторону может войти в состояние DOWN-Stuck. Тогда понадобится вывести порт из этого состояния одним из описанных выше способов.

Состояния линков ELSM

Независимо от работы ELSM, линк может находиться в состоянииях

  • Ready - порт административно включен, но на нём нет физического линка;
  • Active - порт административно включен, и на нём поднялся физический линк;

Узнать эти состояния у портов возможно командами

show elsm ports {all | <portlist>}
show ports [<port_list>] information [detail]

Состояния линков ELSM могут быть следующими:

  • ELSM включен и соединение с партнёром установлено, порт функционирует;
  • ELSM включен но порт не функционирует, поэтому соединение с партнёром не установлено;
  • ELSM выключен.

Чтобы изучить текущее состояние, помогут команды

show elsm                                      - включен ли ELSM на коммутаторе глобально;
show elsm ports <port-list>                    - какое состояние ELSM-линков на указанных портах;
show ports [<port-list>] information {detail}  - полная информация о состоянии портов;
                                                 L - ELSM включен глобально на коммутаторе;
                                                 (колонка ELSM) up - ELSM включен на порту, партнёр обнаружен, проблем с линком нет.
                                                 (колонка ELSM) dn - ELSM включен на порту, но партнёра на линке не обнаружено, есть проблема с линком.
                                                 (колонка ELSM) -  - ELSM на коммутаторе отключен.
ELSM-таймеры

В своей работе протокол ELSM обменивается ELSM PDU сообщениями с партнёрами и делает выводы о работоспособности соединений на основе критерия, пришел ли нужный ELSM PDU на порт до истечения таймера, или нет. Из всех видов ELSM-таймеров, настройке поддаётся только hello-таймер. Остальные определяются исходя из значений hello-таймера.

ELSM-таймеры
таймер описание
Hello Единственный таймер, который можно настраивать. Определяет время в секундах между принимаемыми hello-сообщениями. По-умолчанию 1 секунда. Можно задавать в пределах от 100 мсек до 255 секунд.
Down Определяет время, которое занимает переход ELSM-порта через следующие состояния: DOWN -> DOWN-Wait -> UP. Определяется как
(2 + hold-threshold) * hello-timer. По-умолчанию 4 секунды.
После истечения Down-таймера порт проверяет количество полученных сообщений Hello+ и сравнивает его со значением hold-threshold. Если количество Hello+ >= hold-threshold, порт из состояния DOWN-Wait переводится в UP. Если NUM(Hello+) < hold-threshold, тогда порт возвращается в состояние DOWN.
Up Запускается в момент, когда порт переводится в состояние UP. Каждый раз, когда на порт приходит сообщение Hello+, таймер сбрасывается.
Определяется как UpTimer-threshold * hello-timer. Настраивается в диапазоне 3-60 сек. По-умолчанию, UpTimer-threshold = 6, следовательно up-таймер = 6 (6*1).
HelloRx Определяет время, в которое ожидается получение сообщения Hello. Если порт не получает сообщения Hello от партнёра, возможно случился сбой CPU партнёра или авария линка. Определяется как 6 * hello-таймер. По-умолчанию 6 секунд.
Настройка ELSM
{enable | disable} elsm ports <portlist>			- включить ELSM на нужных портах (процессы ELSM на разных портах работают независимо)
configure elsm ports <portlist> hellotime <hello_time>		- задание hello-таймера на портах (рекомендуется на порту партнёра сделать одинаковым)
configure elsm ports <portlist> hold-threshold <hold_threshold>- задание hold-threshold на портах (рекомендуется на порту партнёра сделать одинаковым)
{enable | disable} elsm ports <portlist> auto-restart		- включить ли автовосстановление из состояние DOWN-Stuck. По-умолчанию включено.
clear elsm ports <portlist> auto-restart                       - вручную вывести порт из состояния DOWN-Stuck.
clear elsm {ports <portlist>} counters                         - сбросить статистику счётчиков
Команды диагностики ELSM
show elsm							- общая информация о работе ELSM на всех портах
show elsm ports <all | portlist>				- детальная информация о работе ELSM на нужных портах


VLAN

show vlan [detail] [<name>]			- посмотреть список существующих вланов, либо инфу по конкретному влану.
  • Port-Based VLAN
create vlan <name>				- создание port-based влана <name>
delete vlan <name>				- удаление port-based влана <name>
enable vlan <name>				- активизация работы port-based влана на свиче.
disable vlan <name>				- отключение работы port-based влана.
configure vlan <old_name> name <new_name>	- переименовывание влана.
configure vlan <name> add port <port-list>	- добавление портов в port-based влан.
configure vlan <name> delete port <port-list>	- удаление портов из port-based влана.
  • Tagged VLAN
create vlan <name>				- создание влана
configure vlan <name> tag <number>		- назначение влану тэга
configure vlan <name> delete port <port-list>	- удаление влана из указанных портов.
configure vlan <name> add port <port-list> [tagged|untagged] - добавление влана в указанные порты. По-умолчанию нетегировано, поэтому помним про tagged.

STP

Настройка в режиме 802.1w

create stpd <name> [description <stpd-description>]		- создаём домен STP c именем <name>. По-умолчанию присутствует домен s0.
configure stpd <stpd_name> mode dot1w				- задание режима работы STP домену.
configure stpd <stpd_name> add vlan <name> port <port-list>	- добавляет вланы в домен STP на портах (перед этим вланы должны быть выброшены в эти
								  порты). Порты, на которых обеспечивать работу STP задаются в ручную. ИЛИ...
configure stpd <name> auto-bind vlan <name>			- или можно автоматически включать в домен stp все порты, куда выбрасываются вланы.
configure stpd <stpd_name> priority <pri>			- Для RSTP и MSTP должны быть кратными 4096.
configure stpd <stpd_name> ports cost <auto|cost> <port-list>  - Задание специфичной стоимости линков на портах.
configure stpd <stpd_name> ports priority <pri> <port-list>	- задание значения приоритета порта (для определения назначенного).
confugure stpd <stpd_name> hellotime <sec>
configure stpd <stpd_name> forwarddelay <sec>
configure stpd <stpd_name> maxage <sec>
enable stpd <stpd_name> 					- включает использование протокола STP. Домен по-умолчанию s0.
disable stpd {<stpd_name>}					- отключить STP
unconfig stpd {<stpd_name>}					- восстановить умолчательные настройки работы STP.

Настройка в режиме 802.1s (MSTP)

I) Настройка домена MSTP CIST

create stpd <name> [description <stpd-description>]		- создаём домен
configure stpd <name> mode mstp cist				- говорим, что этот домен будет MSTP CIST
enable stpd <name>						- включаем stp домен cist

HINT: Чтобы расконфигурить домен из CIST надо поставить ему режим dot1d.

II) Настройка MSTI (инстансов) в регионе

create stpd <iname>						- создаём домен инстанса
configure stpd <iname> mode mstp msti <inst_num>		- назначаем домену ID инстанса <1-4096>. max(MSTIs) для региона = 64.
								  ID должны быть уникальны только в пределах региона.
configure stpd <iname> add vlan <name> ports <port-list>	- привязка вланов к MSTI на указанных портах (влан на портах должен уже присутствовать).
	или с помощью auto-bind:
enable stpd <iname> auto-bind vlan <name>
enable stpd <iname>						- включаем msti домен.

III) Настройка MSTP атрибутов (идентификаторы региона)

Следующие параметры должны быть идентичны на всех свичах в регионе.

  • имя региона;
  • номер ревизии конфигурации;
  • таблица соответствия привязки номеров вланов к MSTI-инстансам;
configure mstp region <RegionName>				- обозначение принадлежности свича к региону
configure mstp revision <rev_num>				- номер ревизии конфигурации.
configure mstp format <format_id>				- <0-255> - номер, определяющий формат MSTP BPDUs. по-умолчанию 0.

Диагностика

show configurateion stp					- отобразить секцию конфига, посвященного stp
show stpd						- общая инфа о настройке STP + список и основные параметры доменов.
show stpd <domain-name>					- общая инфа о работе конкретного домена STP.
show stpd <domain-name> ports [detail]			- информация о настройках, ролях и статусах портов в указанном домене STP.
show stpd <domain-name> {[detail | <port_list> {detail}]} - подробная информация о домене или статусах портов.
show vlan <vlan_name> stpd				- информация, к какому инстансу относится влан.

Link-Aggrigation

configure sharing address-based custom ipv4 source-and-destination - выбор алгоритма распределения нагрузки по портам.
enable sharing <port> grouping <port-list> {algorithm address-based {L2|L3|L3_L4}} {lacp}
			Сформировать канальную группу. Первый порт в группе настраивается как логический порт
			группы и представляет собой группу с т.з. конфигурации.
disable sharing <logic-port>				- расформировать канальную группу.
configure sharing lacp system-priority 3		- установить приоритет lacp у свича. 0 - удаляет на стройку. По-умолчанию приоритет = MAC.
configure sharing <logic-port> add ports <port-list>	- динамически добавить порт к группе (должен быть предварительно enabled).
configure sharing <logic-port> delete ports <port-list> - динамически удалить порты из канальной группы.
configure sharing <logic-port> lacp activity-mode <{active|passive}> - установка режима работы LACP в канальной группе.
configure sharing <logic-port> lacp system-priority <1..65535> - установить приоритет lacp свича в конкретной канальной группе.
clear lacp counters					- сбросить счётчики.

[править] Диагностика

show lacp					- список групп и их статус.
show lacp lag <masterport> [detail]		- подробный статус lacp конкретной группы (представляемой мастер-портом).
show ports sharing 				- информация по группе агрегации (не обязательно с lacp).
show lacp member-port <port-list>		- информация о статусе lacp на конкретных портах из группы.
show lacp counters				- счётчики PDU.

[править] LLDP

enable lldp ports [all|<port-list>] {receive-only|transmit-only}	- включает LLDP TLVs на портах.
configure lldp transmit-interval <seconds>
configure lldp transmit-hold <hold>
configure lldp transmit-delay [auto|<seconds>]
configure lldp ports [all|<port-list>] [advertise|no-advertise] system-name

[править] Диагностика

show lldp {port [all|<port-list>]} {neighbors} {detailed}

[править] Extreme Discovery Protocole (EDP)

enable edp ports all
show edp ...

[править] ACL

[править] Общие сведения

Политики ACL применяются к трафику во входящем и/или исходящем направлении на портах, либо ко влану. Применяя ACL ко влану, на самом деле он применяется ко всем портам коммутатора. ACL бывают статические, определяемые в файлах, и динамические, состоящие из одного правила, применённого к портам. По-умолчанию, динамические ACL сохраняются после перезагрузки. Возможно переопределить это, чтобы не сохранялись.

С помощью ACL можно выделять трафик на основе критериев

  • IP-адреса/подсети источника и назначения;
  • MAC-адреса источника и назначения;
  • vlan-id;
  • протокол;
  • tcp/udp-порты источника и назначения;

и применять к нему следующие действия:

  • permit;
  • deny;

и модификаторы:

  • увеличение счётчиков;
  • логгирование заголовков пакетов;
  • мироринг трафика в мониторинговый порт;
  • назначение политики QoS в виде QoS-профайла;
  • полисинг полосы пропускания с использованием meter.

Использование ACL не влияет на производительность коммутатора (за исключением действия mirror-cpu).

Структура каждого правила в ACL-файле выглядит так:

entry <RULE-NAME> {
        if {
                <match-conditions>;
        } then {
                <action>;
                <action-modifiers>;
        }
} 

Чтобы отредактировать ACL-файл и повесить его на порт, используйте следующие команды:

edit policy <PNAME>							- редактировать политику (ACL).
check policy <PNAME>							- проверить отредактированную политику на правильность синтаксиса.
configure access-list <PNAME> ports <port-list> {ingress | egress}	- навесить файл ACL-политики на порты для входящего или исходящего трафика.
unconfigure access-list ports <port-list> [ingress | egress]		- снять файл ACL-политики с портов.

При редактировании правил можно использовать комментарии и описания. Отличия в том, что комментарии игнорируются policy-manager'ом, содержатся только в файле политики и не отображаются при выводе политики на экран с помощью show policy. Описания обрабатываются policy-manager'ом и отображаются в выводе show policy.

# This is a comment in policy.pol file.
@description "And this line is a description." 

Для ingress ACL, если секция if не содержит условий match, считается, что правило применяется ко всему трафику. Для egress ACL, если секция if не содержит условий match, то ни один пакет не подпадает под условия такого правила. Чтобы задать правило для всего трафика в egress ACL, нужно, например, указать критерий совпадения с любым адресом источника source-address 0.0.0.0/0. Если в секции then явно не указано действие (permit или deny), по-умолчанию используется permit.

[править] Типы записей правил в ACL

  • L2 - правило содержит только проверки L2-заголовков (ethernet-soruce-address, ethernet-destination-address...);
  • L3 - правило содержит только проверки L3-заголовков (ip-адреса, подсети, протокол...);
  • L4 - правило содержит проверки и L3 и L4 поля заголовков (ip-адреса, номера портов TCP/UDP);
  • Если секция if не содержит критериев, такая проверка считается L2.

На BlackDiamond 10800 и 12800 синтаксическая проверка выдаст ошибку, если в записи содержится проверка L2 вместе с L3/L4. На BlackDiamond 20800 запись может содержать проверки либо L2, либо L3, но не обе.

[править] Перечень возможных критериев для выделения трафика

Условия в ACL
Условие Описание применяется к
протоколам / направлениям
ethernet-type <number> Тип ethernet. В качестве значения можно задать и текстовые значения: ETHER-P-IP (0x0800), ETHER-P-8021Q (0x8100), ETHER-P-IPV6 (0x86DD) ethernet / ingress
ethernet-source-address <MAC> МАС-адрес источника ethernet / ingress
ethernet-source-address <MAC> mask <MASK>
или
ethernet-source-address <MAC> / <MASK>
Например
ethernet-source-address 00:01:02:03:01:01 mask ff:ff:ff:ff:00:00
ethernet-source-address 00:01:02:03:01:01 / ff:ff:ff:ff:00:00
Проверяются только те значения битов, которые в маске соответствуют 1. В приведённом примере все маки 00:01:02:03:xx:xx удовлетворят условию.
ethernet / ingress
ethernet-destination-address <MAC>
ethernet-destination-address <MAC> mask <MASK>
ethernet-destination-address <MAC> / <MASK>
МАС-адрес назначения. Маски задаются и обрабатываются так же как в случае ethernet-source-address. ethernet / ingress
source-address <IP-prefix> IP-префикс (адрес и маска) источника. Маска не обязательно должна задавать IP-подсеть. все IP / ingress и egress
destination-address <IP-prefix> IP-префикс (адрес и маска) назначения. Маска не обязательно должна задавать IP-подсеть. все IP / ingress и egress
Source-port <number>, <range> Номер порта источника TCP или UDP. Для использования необходимо определить и протокол (TCP/UDP). TCP, UDP / ingress и egress
Destination-port <number>, <range> Номер порта назначения TCP или UDP. Для использования необходимо определить и протокол (TCP/UDP). TCP, UDP / ingress и egress
TCP-flags <bitfield> Флаги TCP. Используется в дополнение к критерию protocol. В качестве значения кроме цифр можно задавать следующие текстовые синонимы: ACK(0x10), FIN(0x01), PUSH(0x08), RST(0x04), SYN(0x02), URG(0x20), SYN_ACK(0x12). TCP / ingress и egress
IGMP-msg-type <number> Тип сообщения IGMP. Возможны следующие значения (текстовые синонимы): v1-report(0x12), v2-report(0x16), v3-report(0x22), V2-leave(0x17), query(0x11). IGMP / ingress и egress
ICMP-type <number> Поле типа ICMP. Используется в дополнение к критерию protocol. Вместо <number> можно использовать следующие текстовые псевдонимы: echo-reply(0), echo-request(8), info-reply(16), info-request(15), mask-request(17), mask-reply(18), parameter-problem(12), redirect(5), router-advertisement(9), router-solicit(10), source-quench(4), time-exceeded(11), timestamp(13), timestamp-reply(14), unreachable(3). ICMP / ingress и egress
ICMP-code <number> Поле кода ICMP. Точнее определяет смысл типа ICMP. Используется в дополнение к критерию ICMP-type. Описание значений см. в Concepts Guide. ICMP / ingress и egress
source-sap SSAP - поле длиной 1 байт, диапазон значений 0-255. Может определяться в десятичном или 16-ричном виде. Значение поля SSAP в пакете формата 802.3 SNAP или LLC находится в байте со смещением 15. ethernet / ingress
destination-sap DSAP - поле длиной 1 байт, диапазон значений 0-255. Может определяться в десятичном или 16-ричном виде. Значение поля DSAP в пакете формата 802.3 SNAP или LLC находится в байте со смещением 14. ethernet / ingress
snap-type Тип SNAP - поле длиной 2 байта, диапазон значений 0-65535. Может определяться в десятичном или 16-ричном виде. Значение поля DSAP в пакете формата 802.3 SNAP находится в байтах со смещением 20 и 21. ethernet / ingress
IP-ToS Поле IP-ToS. Вместо числового значения можно указывать текстовые синонимы: minimize-delay 16(0x10), maximize-reliability 4(0x04), minimize-cost 2(0x02), normal-service 0(0x00). все IP / ingress и egress
dscp Биты dscp в поле IP-ToS. Указывается десятичное значение. все IP / ingress и egress
fragments Фрагментированные IP-пакеты. FO > 0 (FO = Fragment Offset в заголовке IP). все IP, без правил L4 / ingress
first-fragment Фрагментированный НЕ-IP пакет, либо первый фрагмент IP-пакета. FO = 0. все IP / ingress
protocol <number> Поле IP-протокола. Можно использовать следующие текстовые синонимы: egp(8), gre(47), icmp(1), igmp(2), ipip(4), ipv6 over ipv4(41), ospf(89), pim(103), rsvp(46), st(5), tcp(6), udp(17). все IP / ingress и egress
vlan-id <number> Значение VLAN-ID. Правило ACL может быть применено только к портам (не к вланам). На Summit это значение соответствует внешнему тэгу (QinQ,VMAN). все IP / ingress (и egress только на Summit)
dot1p <priority> Проверяет поле 802.1p CoS заголовка 802.1q. все IP / ingress
arp-sender-address <prefix>
или
arp-target-address <prefix>
Выделяют адреса отправителей или получателей в arp-пакете. Не могут быть в одной записи с ethernet-source-address или ethernet-destination-address. Могут быть использованы, только когда база данных ACL на железе настроена в режиме internal. ARP пакеты / ingress


[править] Удлинённая маска сравнения полей пакетов (Wide Key ACLs)

Это функция делает возможным подвергать анализу и сравнению 362 бита от пакета, вместо стандартных 181 бита. Это позволяет добавить больше условий совпадения в ACL, а так же сравнивать полные адреса источника и назначения IPv6. Новых условий для сравнений она не добавляет. Для подробного изучения особенностей данной функции нужно читать Consepts Guide.

configure access-list width {double | single} [slot <slotNo> | all ]
show access-list width [slot <slotNo> | all ]

Если режим изменён, то для применения этой настройки требуется перезагрузка.

[править] Перечень возможных действий над трафиком и модификаторов

Действия:

  • permit - передать пакет;
  • deny - сбросить пакет;
  • deny-cpu - не пропускать пакеты, которые скоммутированны для CPU, в control-plane коммутатора. При этом их обработка в data-plane не затрагивается. Например, это действие может быть полезно, чтобы оградить CPU от получения бродкаст-пакетов при этом позволяя им распространяться во все порты, куда выходит влан. Так же можно оградить CPU от получения STP BPDU, а пересылать такие пакеты через порты. Так, коммутатор становится прозрачным для STP BPDU.
  • copy-cpu-and-drop - пакеты, удовлетворяющие критерию правила, перенаправляются к CPU и никуда больше не пересылаются.

Модификаторы действий:

  • count <COUNTER-NAMR> - увеличить указанный счётчик. Ingress и Egress ACL.
  • byte-count <BYTE-COUNTER-NAME> - увеличить указанный счётчик байтов. Ingress ACL.
  • packet-count <PACKET-COUNTER-NAME> - увеличить указанный счётчик пакетов. Ingress ACL.
  • log - записать заголовок пакета в журнал.
  • log-raw - записать заголовок пакета в журнал в hex-формате.
  • meter <metername> - обработать трафик согласно указанному полисеру. Ingress ACL (на Summit).
  • mirror - послать копию пакета в мониторинговый порт. Ingress ACL.
  • mirror-cpu - послать копию пакета в CPU чтобы можно было внести его в журнал. Ingress ACL.
  • qosprofile <qpX> - обработать пакет согласно правилам указанного QoS-профайла. Ingress и Egress ACL.
  • traffic-queue <queue> - поместить пакет в указанную traffic-queue (доступно только на BD 12800 и BD 20800);
  • redirect <ipv4-address> - переопределить routing-decision, послав пакет на указанный адрес шлюза. При этом IP-заголовок не изменяется. Для указанного IP-адреса назначения должна существовать запись в ARP-таблице. Используется для PBR.
  • redirect-port <port> - переопределить forwarding-decision, послав пакет через указанный исходящий интерфейс (порт). Если порт является частью портгруппы, к пакету будет применён алгоритм распределения нагрузки, принятый в портгруппе.
  • redirect-port-no-sharing <port> - то же, что redirect-port, только пакет будет послан строго через указанный интерфейс, без учёта возможного его присутствия в портгруппе.
  • replace-dscp - заменить значение поля DSCP в IP-пакете на определённое для QoS-профайла, в котором обрабатывается пакет. Ingress и Egress ACL.
  • replace-dot1p - заменить значение поля 802.1p CoS на определённое для QoS-профайла, в котором обрабатывается пакет. Ingress и Egress ACL.
  • replace-dot1p-value <value> - заменить значение поля 802.1p CoS на указанное явно в этом модификаторе. Ingress и Egress ACL.
  • replace-ethernet-destination-address <MAC> - заменить в пакете MAC-адрес назначения. Применяется только к коммутируемому на L2-трафику.

[править] Практика

[править] Применение обновлённых ACL после редактирования

ACL задаются в текстовых файлах, лежащих на flash коммутатора. Чтобы применить изменения после редактирования этих файлов, используйте последовательность команд

check policy <PNAME>
refresh policy <PNAME>

В короткий момент времени, когда обновлённый ACL заносится в ASIC, все пакеты на интерфейсе сбрасываются (по-умолчанию). Можно управлять этим поведением командой

{enable | disable} access-list refresh blackhole

Если применить команду, начинающуюся с disable, то в момент обновления ACL на ASIC интерфейса все пакеты, пришедшие на порт, будут приниматься. Если это не магистральный порт, то на него могут придти нежелательные BPDU, что опасно в случае использования STP. В ситуациях, когда указанный риск существует, рекомендуется оставлять настройку с enable (по-умолчанию).

[править] Пример: аналог BPDU-filter на портах

entry BPDUfilter1 {
    if {
        ethernet-destination-address 01:00:0c:cc:cc:cd;
    } then {
        deny;
    }
}
entry BPDUfilter2 {
    if {
        ethernet-destination-address 01:80:C2:00:00:00;
    } then {
        deny;
    }
}

[править] Сервисные фичи

[править] Время

configure timezone 420 noautodst
configure sntp-client primary 195.49.169.1 vr "VR-Default"
enable sntp-client

[править] Баннеры

configure banner { after-login | { before-login } { acknowledge } }

[править] Таймаут простоя консоли

conf idletimeout <min>

[править] Мирроринг

[править] Настройка зеркалирование трафика в один мониторинговый порт

enable mirroring to port 4				- включает мирроринг в 4 порт.
configure mirroring add port 8 [ingress]		- мирорит весь [входящий] трафик порта 8 на порт 4
configure mirroring add vlan red			- мирорить трафик влана red на порт 4
configure mirroring add vlan red port 5			- мирорить трафик влана red на порту 5 в порт 4

[править] Настройка зеркалирование трафика в несколько мониторинговых портов

Следующий пример демонстрирует как зеркалировать трафик в более чем один мониторинговый порт (порты 5, 6, 7). Для этого необходимо назначить какой-нибудь свободный порт (в примере 1) как loopback-port. После настройки этот loopback порт не может быть использован для передачи трафика, но т.к. его ресурсы используются для зеркалирования, на нём горит линк независимо от присутствия провода.

enable mirroring to port-list 5-7 loopback-port 1
configure mirroring add port 10 ingress

[править] QoS

Концептуально, реализация политики QoS на оборудовании Extreme Networks осуществляется в 3 этапа.

  • Создание и определение параметров нужного количества QoS-профайлов.
    QoS-профайл - это отдельная реализованная аппаратно очередь с
    • заданным относительно других QoS-профайлов приоритетом (в случае Strict Priority), либо весом очереди (в случае WRR);
    • заданным режимом планировщика (Strict Priority или WRR);
    • заданными параметрами гарантированной (CIR) и максимально возможной (PR) исходящей полосы пропускания на каждом интерфейсе;
    • заданными величинами буферного пространства на каждом отдельном интерфейсе;
    • заданными порогами WRED;
    • ассоциированными метками 802.1p CoS и DiffServ DSCP, которые могут устанавливаться на трафик, попадающий в этот QoS-профайл, пришедший с заданных портов.
  • Создание трафик-групп, выделяющих приходящий на коммутатор трафик по одному или нескольким критериям и формирующих на основе этих критериев группы.
  • Применение политики QoS путём установления соответствия настроенным трафик-группам QoS-профайлов с желаемыми параметрами обработки для той или иной группы.

[править] Классификация (формирование трафик-групп)

Набор критериев, выделяющий трафик из общего потока определяет трафик-группу. Пакеты на основе критериев

  • имеющихся меток 802.1p и DSCP;
  • входящего порта;
  • ingress ACL на портах;
  • VLAN ID;

могут распределяться по разным трафик-группам, которые позже назначаются на обработку QoS-профайлам.

Если входящий пакет подпадает под критерии сразу нескольких трафик-групп, то окончательный выбор трафик-группы осуществляется согласно следующему приоритету критериев (в порядке от наибольшего приоритета к наименьшему, для платформы Summit и SummitStack).

  1. ACL на основе IP-адресов;
  2. ACL на основе MAC-адресов;
  3. метка 802.1p CoS;
  4. входящий порт (QoS-профайл по-умолчанию на порту);
  5. VLAN ID;
  6. метка DSCP DiffServ.

[править] Задание трафик-групп на основе ACL

  1. Создать файл политики ACL и добавить в него правила.
    1. использовать условия match для выделения трафика в группу;
    2. к выделенному трафику применить следующие возможные модификаторы действия permit:
      • qosprofile <qpX> - определить QoS-профайл в который попадает трафик. Возможен в ingress и egress ACL.
      • replace-dscp - заменить метку DSCP в пакете на заданную в QoS-профайле. Возможен в ingress и egress ACL.
      • replace-dot1p - заменить метку 802.1p CoS в пакете на заданную в QoS-профайле. Возможен в ingress и egress ACL.
      • replace-dot1p-value <value> - заменить метку 802.1p CoS в пакете на указанную. Возможен в ingress и egress ACL.
      • meter <name> - применить к трафик-группе полисинг. На Summit и SummitStack возможен только в ingress ACL.
  2. Применить созданный и отредактированный файл политики ACL к портам, где нужно выделять трафик-группы. Возможно применить к определённым портам, всем портам или всем портам во влане.

[править] Задание трафик-групп на основе 802.1p CoS

Конфигурация коммутатора по-умолчанию уже определяет эти трафик-группы. Можно указать, использовать ли на портах критерий 802.1p CoS для распределения трафика по QoS-профайлам, и правила мапинга CoS -> QoS-профайл.

{enable | disable} dot1p examination ports {<portlist> | all}           - на указанных портах распределять ли входящие фреймы по QoS-профайлам исходя из значения меток 802.1p;
{enable | disable} dot1p examination inner-tag ports {<portlist> | all} - на указанных портах учитывать ли внутренний тег QinQ при распределении входящих фреймов по QoS-профайлам;
configure dot1p type <CoS> qosprofile <qpX>                             - задание правил мапинга входящих меток 802.1p CoS в QoS-профайлы;
show dot1p                                                              - посмотреть существующий мапинг 802.1p CoS -> QoS-профайл.

[править] Задание трафик-групп на основе DiffServ DSCP

Конфигурация коммутатора по-умолчанию уже определяет эти трафик-группы. Можно указать, использовать ли на портах критерий DiffServ DSCP для распределения трафика по QoS-профайлам, и правила мапинга DSCP -> QoS-профайл. На платформах Summit, SummitStack включение на 1G-портах классификации на основе DSCP (diffserv examination) неизбежно приводит к включению перебива меток 802.1p CoS.

{enable | disable} diffserv examination ports {<portlist> | all}          - на указанных портах распределять ли входящие пакеты по QoS-профайлам исходя из значений меток DSCP (так же приводит к включению перебива меток 802.1p);
configure diffserv examination code-point <DSCP> qosprofile <qpX>         - задание првил мапинга входящих меток DSCP в QoS-профайлы;
unconfigure diffserv examination ports [<port_list> | all]                - вернуть мапинг по-умолчанию;
show diffserv examination                                                 - посмотреть существующий мапинг DSCP -> QoS-профайл.

[править] Задание трафик-групп на основе входящего порта

configure ports <port> qosprofile qp<X>                              - назначение входящего трафика порта в QoS-профайл с нужными параметрами маркировки 

Пример:

create qosprofile qp<X>                                              - создание нового qos-профайла (если ещё не создан)
configure diffserv replacement qosprofile qp<X> code-point <dscp>    - трафик, попадающий в qos-профайл, метить указанным кодом DSCP
configure ports <port> qosprofile qp<X>                              - назначение входящего трафика порта в QoS-профайл с нужными параметрами маркировки 
enable diffserv replacement ports <port>                             - разрешить на указанном порту перебив меток DSCP
enable dot1p replacement ports <port>                                - разрешить на указанном порту перебив меток 802.1p CoS
  • Замечание: значения меток CoS dot1p, которыми метятся фреймы в том или ином qos-профайле настройке не поддаются. Посмотреть, какое значение соответствует применяемому qos-профайлу, можно в таблице 2.

[править] Задание трафик-групп на основе VLAN

configure vlan <vlan_name> qosprofile <qpX>

[править] Резюме

Вот команды, которые управляют проверкой/перемаркировкой меток 802.1p и DSCP

{enable | disable} diffserv examination ports {<portlist> | all}          - на указанных портах распределять ли входящие пакеты по QoS-профайлам исходя из значений меток DSCP (так же приводит к включению перебива меток 802.1p);
{enable | disable} dot1p    examination ports {<portlist> | all}          - на указанных портах распределять ли входящие фреймы по QoS-профайлам исходя из значения меток 802.1p.
{enable | disable} dot1p    examination inner-tag ports {<portlist> | all}- на указанных портах учитывать ли внутренний тег QinQ при распределении входящих фреймов по QoS-профайлам.
{enable | disable} diffserv replacement ports {<portlist> | all}          - разрешать ли замену меток DSCP у пакетов, пришедших на указанные порты.
{enable | disable} dot1p    replacement ports {<portlist> | all}          - разрешать ли замену меток 802.1p у пакетов, пришедших на указанные порты.
show ports information                                                    - посмотреть настроенные параметры классификации/перемаркировки на портах.
                                                                             o - замена 802.1p разрешена
                                                                             s - замена DSCP разрешена
                                                                             n - классификация на основе DSCP разрешена (заменяет классификацию по 802.1p).

Подробнее определения политик перемаркировки освещаются в следующих подразделах.

[править] Перемаркировка

[править] Замена меток CoS 802.1p

  • для ACL-групп трафика: Использовать действие replace-dot1p, чтобы поставить метку выходного QoS-профайла, либо действие replace-dot1p-value, чтобы указать конкретное значение.
  • не для ACL'ных группах трафика: Можно разрешить или запретить перебивку 802.1p для трафика на определённых входящих портах. Если разрешено, то перебивка происходит в значение по умолчанию для того QoS-профайла, куда попадает фрейм.
enable dot1p replacement ports [<ingr_port_list> | all]                                   - активизация перебивки 802.1p для групп трафика на указанных входящих портах.
configure dot1p replacement qosprofile <qosprofile> priority <CoS> {ports <port_list>} - работает только на 20800 серии. На Summit целевая метка dot1p в qos-профайле не может быть изменена.

И ещё раз: значения меток CoS 802.1p, устанавливаемые при обработке трафика в QoS-профайлах, на платформе Summit и SummitStack перенастройке не поддаются и определяются следующей таблицей:

Таблица 1. Значения dot1p перебиваемые в QoS-профайлах.
QoS-профайл значение dot1p
QP1 0
QP2 1
QP3 2
QP4 3
QP5 4
QP6 5
QP7 6
QP8 7
  • Замечание 1: Если на коммутаторе существуют только группы трафика на основе CoS 802.1p, невозможно отключить перебив