Операции над метками в сервисных интерфейсах
Есть три варианта операций над метками: удаление существующей метки/меток, добавление новой метки (меток) и трансляция метки/меток из одного значения в другое.
Рисунок
Рассмотрим возможные варианты действий над метками в случае, представленном на рисунке. На порт 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 для просмотра сконфигурированных фильтров.