Сервисные интерфейсы EcoRouter Documentation / Сервисные интерфейсы
- Виды инкапсуляции
- Операции над метками
- Просмотр настроек сервисных интерфейсов
При входе на порт кадр с меткой VLAN будет помещен в сервисный интерфейс, выделенный для обработки данной метки VLAN. После сервисный интерфейс может метку VLAN заменить, добавить или снять и передать в другой порт или интерфейс. То есть сервисный интерфейс связывает порт и порт или порт и интерфейс (порт и bridge domain) в пределах устройства.
Виды инкапсуляции
Виды инкапсуляции
Кадр помещается в тот или иной сервисный интерфейс на порту по признаку инкапсулированного в него тега dot1q или по его отсутствию. На одном порту может быть несколько сервисных интерфейсов. На маршрутизаторе может существовать до 4000 сервисных интерфейсов.
Команды настройки инкапсуляции
Настройка инкапсуляции осуществляется в контекстном режиме конфигурирования сервисного интерфейса. Который, в свою очередь, доступен в контексте конфигурирования порта.
То есть для того, чтобы приступить к настройкам инкапсуляции необходимо ввести, например, следующую последовательность команд:
ecorouter#configure terminal
ecorouter(config)#port te0
ecorouter(config-port)#service-instance 100
Инкапсуляция настраивается на сервисном интерфейсе при помощи команды encapsulation. В таблице ниже приведено описание параметров данной команды.
Вид инкапсуляции | Описание |
---|---|
encapsulation untagged | Нетегированные кадры |
encapsulation default | Указание, что данным сервисным интерфейсом будут обрабатываться все остальные метки, не указанные до этого в других сервисных интерфейсах на порту. Применяется в L3 бриджах и в соединениях без участия L3 маршрутизации |
encapsulation dot1q any | Инкапсуляция IEEE 802.1q с любым тегом в кадре |
encapsulation dot1q <TAG> | Инкапсуляция IEEE 802.1q с конкретным тегом в кадре |
encapsulation dot1q <TAG> second-dot1q <TAG> | Инкапсуляция IEEE 802.1q с 2-мя тегами, содержащимися в кадре. Значения тегов указываются по порядку начиная с внешнего |
encapsulation dot1q <TAG1>-<TAG2> | Инкапсуляция IEEE 802.1q с диапазоном тегов |
encapsulation dot1q <TAG> exact | Аргумент exact указывает на то, что данный сервисный интерфейс будет обрабатывать кадр только с одной указанной меткой, или одной меткой из диапазона |
Аргумент exact является обязательным в случае дальнейшей передачи кадра на L3 уровень (за исключением Demux интерфейса ). В случае передачи кадра в bridge или порт, аргумент можно не указывать.
Операции над метками
После того, как кадр был помещен в определенный сервисный интерфейс над меткой может выполняться операция замены, удаления или добавления значения. Для этого выполняется команда rewrite с различными аргументами.
Если кадр после прохождения сервисного интерфейса будет передаваться на интерфейс для последующей обработки на L3 (исключение интерфейс BDI, интерфейс IP-demux), над ним должна быть выполнена команда с аргументом pop. Операция pop удаляет метку из кадра.
Если кадр после прохождения через сервисный интерфейс будет передан в порт или bridge, то тут могут быть выполнены все возможные операции над метками.
Команды операций над метками
Вид операции над меткой | Описание |
---|---|
Rewrite pop VALUE | Операция снятия метки. VALUE равен 1 или 2 |
Rewrite push VALUE VALUE | Добавление метки. VALUE значение метки. Верхняя метка - первая |
Rewrite translate 1-to-1 VALUE | Замена одной метки на другую. Где VALUE значение новой метки |
Rewrite translate 1-to-2 VALUE VALUE | Замена одной метки на две других |
Rewrite translate 2-to-2 VALUE VALUE | Замена двух меток на две других |
Rewrite translate 2-to-1 VALUE | Замена двух меток на одну |
Направление движения трафика через сервисный интерфейс
Операции над меткой в кадре осуществляются при движении в обоих направлениях через сервисный интерфейс. Например, при прохождении кадра от порта к присоединенному интерфейсу и от интерфейса к порту. Правила обработки метки в обратном направлении создаются автоматически.
Разновидность работы сервисного интерфейса, работающего в две стороны симметрично, называется ambiguous. Если в сервисном интерфейсе задана операция pop при движении кадра от порта к интерфейсу, то при движении пакета от интерфейса к порту будет выполняться push. Создание такого сервисного интерфейса возможно при явном указании нужной метки.
Пример:
encapsulation dot1q 3 exact
rewrite pop 1
В данном примере при движении в одну сторону метка 3 будет сниматься, при движении в обратную сторону – добавляться.
Разновидность работы сервисного интерфейса, работающего несимметрично в две стороны, называется unambiguous. Такой сервисный интерфейс создаётся при общем правиле обработки диапазона меток.
Пример:
encapsulation dot1q 1-3 exact
При движении трафика в одну сторону единственная метка, попадающая в указанный диапазон, будет сниматься, при движении в обратную сторону кадр будет передаваться без метки, так как не очевидно, какую метку из диапазона в него необходимо поместить. Эта особенность накладывает ограничения на использование такой разновидности сервисных интерфейсов в некоторых сценариях.
Операции над метками в сервисных интерфейсах
Есть три варианта операций над метками: удаление существующей метки/меток, добавление новой метки/меток и трансляция метки/меток из одного значения в другое.
Рассмотрим возможные варианты действий над метками в случае, представленном на рисунке. На порт te1 устройства приходят 10, 11 VLAN и нетегированный трафик.
Трансляция меток
Трафик, принадлежащий 10 VLAN, нужно перенаправить в порт te2 с меткой 5 VLAN.
На порту, куда приходит VLAN 10, создаем сервисный интерфейс для операции с этими метками.
ecorouter(config)#port te1
ecorouter(config-port)#service-instance 3
Из всего объема трафика выбираем трафик с меткой VLAN 10. Аргумент exact указывает, что этот сервисный интерфейс обрабатывает кадры с единственной 10 меткой.
ecorouter(config-service-instance)#encapsulation dot1q 10 exact
Меняем метку 10 на метку VLAN 5. Трансляция из 1 в 1.
ecorouter(config-service-instance)#rewrite translate 1-to-1 5
Указываем, куда отправлять трафик после операции над меткой.
ecorouter(config-service-instance)#connect port te2
Service-instance 3 является симметричным. Когда трафик пойдёт в обратном направлении, то service-instance будет иметь такую конфигурацию.
encapsulation dot1q 5 exact
rewrite translate 1-to-1 10
И, таким образом, в порт te1 будет отдавать трафик с меткой VLAN 10.
Все возможности трансляции меток VLAN
Трансляция одной метки в две метки.
Данная команда заменяет одну метку двумя другими. Операция выполняется только в случае единственной входящей метки.
rewrite translate 1-to-2 <МЕТКА1> <МЕТКА2>
Пример настройки:
ecorouter(config)#port te1
ecorouter(config-port)#service-instance 31
ecorouter(config-service-instance)#encapsulation dot1q 10 exact
ecorouter(config-service-instance)#rewrite translate 1-to-2 5 15
Заменили одну метку 10, на метки 5 и 15. Метка 5 будет первой по порядку в кадре.
Трансляция двух меток в две другие:
rewrite translate 2-to-2 <МЕТКА1> <МЕТКА2>
Пример настройки:
ecorouter(config)#port te1
ecorouter(config-port)#service-instance 31
ecorouter(config-service-instance)#encapsulation dot1q 20 second-dot1q 40
ecorouter(config-service-instance)#rewrite translate 2-to-2 5 15
Заменили метки 20 и 40 на метки 5 и 15. Метка 5 будет первой по порядку в кадре.
Трансляция двух меток в одну:
rewrite translate 2-to-1 <МЕТКА>
Пример настройки:
ecorouter(config)#port te1
ecorouter(config-port)#service-instance 31
ecorouter(config-service-instance)#encapsulation dot1q 20 second-dot1q 40
ecorouter(config-service-instance)#rewrite translate 2-to-1 5
2 пришедшие в порт метки будут заменены на одну.
Добавление меток
Весь нетегированный трафик обработаем с помощью команды rewrite с аргументом push в service-instance 1.
ecorouter(config)#port te1
ecorouter(config-port)#service-instance 2
Указываем, что весь нетегированный трафик будет обрабатываться этим сервисным интерфейсом.
ecorouter(config-service-instance)#encapsulation untagged
Указываем, что в каждый кадр помещаем метку 5.
ecorouter(config-service-instance)#rewrite push 5
Указываем, куда отправлять трафик после операции над меткой.
ecorouter(config-service-instance)#connect bridge 1
Bridge 1 должен быть предварительно создан.
На выходе из данного сервисного интерфейса весь трафик будет помечен меткой 5 VLAN.
При обратном движении из bridge 1 в порт te1 весь трафик будет уходить в порт без какой-либо метки.
Операции translate и push возможны только в случае привязки service instance к уровню L2, то есть к порту или bridge.
На третий уровень пакеты должны приходить без признака VLAN.
Метки VLAN снимаются с помощью команды rewrite pop.
Снятие меток
В service-instance 2 будем обрабатывать VLAN 11 на порту te1. Создаем service instance с именем 2.
ecorouter(config)#port te1
ecorouter(config-port)#service-instance 2
Фильтруем 11 VLAN.
ecorouter(config-service-instance)#encapsulation dot1q 11 exact
Снимаем метку VLAN, чтобы передать кадр на L3 интерфейс. В данном случае команда rewrite с аргументом pop 1, указывает, что в кадре содержится только одна метка, и она будет удалена.
ecorouter(config-service-instance)#rewrite pop 1
Устанавливаем связку порта и интерфейса L3.
ecorouter(config-service-instance)#connect ip interface e1
Таким образом трафик попадает на интерфейс e1 без признака VLAN.
Для обратного направления будет верно следующее:
encapsulation untagged
rewrite push 1
Добавляем метку 11 VLAN.
В service instance существует ещё один тип инкапсуляции: encapsulation default. Под такой тип инкапсуляции попадёт абсолютно весь трафик, не выделенный в отдельный service instance. Так как конкретно не указывается, какое количество меток содержится в кадре, и что это за метки, маршрутизатор не может проделать над ними никаких операций (снять, сменить итд.). Поэтому перенаправить кадры возможно тоже только в L2: bridge или порт.
Настройка service instance для маршрутизации 2 VLAN'ов
Имеется следующая схема сети.
Шаг 1. Создаем интерфейсы и присваиваем IP-адреса.
ecorouter(config)#interface QQ1
ecorouter(config-if)#ip address 10.0.0.1/16
ecorouter(config)#interface QQ2
ecorouter(config-if)#ip address 10.1.0.1/16
Шаг 2. Создаем service-instance на порту для 2-го VLAN.
ecorouter(config)#port te1
ecorouter(config-port)#service-instance te1/QQ1
Шаг 3. Объявляем инкапсуляцию. Эта запись говорит, что мы ждём метку VLAN 2. Опция exact показывает, что под это правило попадут кадры только с меткой равной 2.
ecorouter(config-service-instance)#encapsulation dot1q 2 exact
Шаг 4. Снимаем метку опцией pop. Ключ 1 показывает, что снимаем только одну, верхнюю метку. На L3 кадр должен поступать без признаков VLAN.
ecorouter(config-service-instance)#rewrite pop 1
Шаг 5. Привязываем созданный сервисный интерфейс к L3 интерфейсу.
ecorouter(config-service-instance)#connect ip interface QQ1
Шаг 6. Симметричная настройка для 3-го VLAN.
ecorouter(config)#port te1
ecorouter(config-port)#service-instance te1/QQ2
Шаг 7. Объявляем инкапсуляцию. Эта запись говорит, что мы ждём метку VLAN 3. Опция exact показывает, что под это правило попадут кадры только с меткой равной 3.
ecorouter(config-service-instance)#encapsulation dot1q 3 exact
Шаг 8. Снимаем метку опцией pop. Ключ 1 показывает, что снимаем только одну метку, верхнюю. На L3 кадр должен поступать без признаков VLAN.
ecorouter(config-service-instance)#rewrite pop 1
Шаг 9. Привязываем созданный сервисный интерфейс к L3 интерфейсу.
ecorouter(config-service-instance)#connect ip interface QQ2
В случае движения кадра из сегмента сети вверх по схеме к маршрутизатору, на порту te1 выполняется действие снятия метки (см. Шаг 4). В случае движения пакета по схеме вниз от маршрутизатора к сегменту, будет происходить действие обратное этому, а именно rewrite push 1. Это возможно, так как номер VLAN в service-instance указан явно.
Настройка сервисного интерфейса для функционирования EcoRouter в роли L2 устройства
Имеется следующая схема сети.
Шаг 1. Создаем service-instance на порту te0 для диапазона VLAN 1-10.
ecorouter(config)#port te0
ecorouter(config-port)#service-instance for_vlan(1-10)
ecorouter(config-service-instance)#encapsulation dot1q 1-10
Шаг 2. Привязываем сервисный интерфейс к выходному порту.
ecorouter(config-service-instance)#connect port te1
Шаг 3. Создаем service-instance на порту te1 для диапазона VLAN 1-10.
ecorouter(config)#port te1
ecorouter(config-port)#service-instance for_vlan(1-10)
ecorouter(config-service-instance)#encapsulation dot1q 1-10
Шаг 4. Привязываем сервисный интерфейс к выходному порту.
ecorouter(config-service-instance)#connect port te0
При подобной настройке EcoRouter выполняет коммутацию фреймов с тегами от 1 до 10 с порта te0 на порт te1 и наоборот. Порты коммутаторов в сторону маршрутизатора сконфигурированы как транковые и используют инкапсуляцию dot1q. Как видно, в двух разных сервисных интерфейсах for_vlan(1-10) инкапсуляция указана без ключевого слова exact, что позволительно лишь в случае отсутствия операций над метками (pop, push, translate) и подключения этих сервисных интерфейсов к порту или L2-домену (bridge-domain). Стоит заметить, что операция над тегами все еще возможна при конфигурировании L3 интерфейса (BDI). Возникающие ограничения сразу станут понятными, если представить ситуацию, когда маршрутизатору на выходе кадра из порта необходимо добавить тег из некоторого диапазона локально сконфигурированных тегов (в примере, при указании в сервисном интерфейсе опции rewrite pop 1, на выходе из порта должна была бы применяться обратная операция добавления тегов от 1 до 10, что явно вносит неоднозначность, поскольку неизвестно, какой тег навешивать, EcoRouter исключает подобные ситуации и предупредит администратора о некорректно сконфигурированных фильтрах). Подобная гибкость управления трафиком в EcoRouter требует внимательности и четкого понимания происходящих операций над пакетами на интерфейсах и портах маршрутизатора. В CLI есть несколько команд группы show для просмотра сконфигурированных фильтров.
Просмотр настроек сервисных интерфейсов
Просмотр всех сервисных интерфейсов на всех портах
Для просмотра настроек сервисных интерфейсов, имеющихся на всех портах, используется команда show port или ее сокращенная форма: sh port.
Ingress — описание порядка обработки кадра при движении через порт в одном направлении. Как описано в сервисном интерфейсе администратором.
Egress — описание порядка обработки кадра при движении через порт в обратном направлении. Автоматически созданное ответное правило.
ecorouter#sh port
te0 is up
Type: [10 Gigabit Ethernet]
MTU: 9728[82-9728]
link state UP;
Input packets 0, bytes 0, errors 0
Output packets 0, bytes 0, errors 0
te1 is up
Type: [10 Gigabit Ethernet]
MTU: 9728[82-9728]
link state UP;
Input packets 0, bytes 0, errors 0
Output packets 0, bytes 0, errors 0
Service instance 1 is up
ingress encapsulation dot1q 12 exact
ingress rewrite pop 1
egress encapsulation untagged
egress push 12
Input packets 0, bytes 0
Output packets 0, bytes 0
te2 is up
Type: [10 Gigabit Ethernet]
MTU: 9728[82-9728]
link state UP;
Input packets 0, bytes 0, errors 0
Output packets 0, bytes 0, errors 0
te3 is up
Type: [10 Gigabit Ethernet]
MTU: 9728[82-9728]
link state UP;
Input packets 0, bytes 0, errors 0
Output packets 0, bytes 0, errors 0
te4 is up
Type: [10 Gigabit Ethernet]
MTU: 9728[82-9728]
link state UP;
Input packets 0, bytes 0, errors 0
Output packets 0, bytes 0, errors 0
ecorouter#
Просмотр сервисных интерфейсов на отдельном порту
Для просмотра настроек сервисных интерфейсов, имеющихся на конкретном порту, используется команда show port <NAME> или ее сокращенная форма: sh port <NAME>.
ecorouter#sh port te1
te1 is up
Type: [10 Gigabit Ethernet]
MTU: 9728[82-9728]
link state UP;
Input packets 0, bytes 0, errors 0
Output packets 0, bytes 0, errors 0
Service instance 1 is up
ingress encapsulation dot1q 12 exact
ingress rewrite pop 1
egress encapsulation untagged
egress push 12
Input packets 0, bytes 0
Output packets 0, bytes 0
ecorouter#
Просмотр сервисных интерфейсов по номеру
Для просмотра настроек конкретного сервисного интерфейса, используется команда show port <NAME> service-instance <SI_NAME> или ее сокращенная форма: sh port <NAME> service-instance <SI_NAME>.
ecorouter#sh port te1 service-instance 1
Service instance 1 is up
ingress encapsulation dot1q 12 exact
ingress rewrite pop 1
egress encapsulation untagged
egress push 12
Input packets 0, bytes 0
Output packets 0, bytes 0