Flexible QinQ принимает решение добавлять внешний тэг VLAN (SPVLAN tag) или нет, основываясь на потоке кадров данных. Например, Гибкий QinQ может быть реализован на основе тэга VLAN пользователя, MAC-адреса, IPv4/IPv6 адреса, протокола IPv4/IPv6, номером порта приложения и т.д. Таким образом эта технология позволяет гибко инкапсулировать поток данных пользователя по различным схемам и различными методами.
Соответствие потока данных Flexible QinQ реализовано на основе правил карты политик (policy-map):
Создать карту класса (class-map) для классификации различных поток данных;
Создать карту политик (policy-map) Flexible QinQ для связи с картой класса (class-map) и выбора операции;
Применить Flexible QinQ на порт;
Проверка текущей конфигурации Flexible QinQ.
Создать карту класса (class-map) для классификации различных поток данных;
Команда | Описание |
---|---|
class-map <class-map-name>
! В режиме глобальной конфигурации | Создание карты классов с именем <class-map-name> и вход в режим конфигурирования этой карты классов. Команда no удаляет карты классов с именем <class-map-name> |
match {access-group <acl-index-or-name> | ip dscp <dscp-list>| ip precedence <ip-precedence-list> | ipv6 access-group <acl-index-or-name> | ipv6 dscp <dscp-list> | ipv6 flowlabel <flowlabel-list> | vlan <vlan-list> | cos <cos-list>} no match {access-group | ip dscp | ip precedence | ipv6 access-group | ipv6 dscp | ipv6 flowlabel | vlan | cos } ! В режиме глобальной конфигурации | Настройка критерия соответствия данных карте классов. Команда no отменяет конфигурацию соответствия. |
2. Создать карту политик (policy-map) Flexible QinQ для связи с картой класса (class-map) и выбора операции;
Команда | Описание |
---|---|
policy-map <policy-map-name> no policy-map <policy-map-name> ! В режиме глобальной конфигурации | Создание карты политик с именем и вход в режим её конфигурирования <policy-map-name>.Команда no удаляет карту политик |
class <class-map-name> [insert-before <class-map-name>] no class <class-map-name> ! В режиме глобальной конфигурации | Задать для текущей карты политик ассоциацию с картой классов с именем <class-map-name>. insert-before <class-map-name> - позволяет добавить карту классов для ассоциации раньше, чем с именем <class-map-name>. Команда no отменяет эту ассоциацию. |
set {ip dscp <new-dscp> | ip precedence <new-precedence> | internal priority <new-inp> | drop precedence <new-dp> | cos <new-cos> | s-vid<new-vid>} no set {ip dscp | ip precedence | internal priority | drop precedence | cos|s-vid } ! В режиме глобальной конфигурации | Присвоить классифицированному трафику новое значение dscp (ip dscp <new-dscp>), значение ip presedence (ip precedence <new-precedence>), значение приоритета сброса (drop precedence <new-dp>), значение поля cos (cos <new-cos>), внешний тег vlan (s-vid <new-vid>) Команда no отменяет присвоение. |
3. Применить Flexible QinQ на порт.
Команда | Описание |
---|---|
service-policy input <policy-map-name> no service-policy input {<policy-map-name>} ! В режиме конфигурирования интерфейса | Применить карту политик с именем <policy-map-name> для входящего трафика на порту Команда no удаляет карту политик с именем <policy-map-name> с порта. |
4. Просмотр конфигурации Flexible QinQ
Команда | Описание |
---|---|
show mls qos {interface [<interface-id>] ! В привилегированном режиме | Просмотр текущей конфигурации Flexible QinQ на порту <interface-id> |
Рисунок 22.1 - Пример использования Flexible QinQ
Как показано на рисунке 22.1, первый пользователь, подключенный к DSLAM1, назначает метки DSCP 10, 20 и 30 для исходящего трафика в своей сети. DSCP10 соответствует Широкополосному доступу, DSCP20 соответствует VoIP, DSCP соответствует VOD. После того, как на портах коммутаторов в сторону клиентов будет включен Гибкий QinQ, пакетам с разным значением DSCP будут добавлены различные внешние тэги VLAN, уникальные в публичной сети оператора. Пакетам с DSCP10 будет добавлен тег 1001, трафик будет отправлен на BRAS. Пакетам с DSCP20 (DSCP30) будет добавлен внешний тег VLAN 2001 (3001 соответственно), трафик будет отправлен на SR.
Второй пользователь, подключенный к DSLAM2, также добавляет различные метки DSCP, метки внешнего тега будут добавлены аналогичным образом. На приведенном выше рисунке внешний тег второго пользователя отличается от первого пользователя для различия DSLAM и местонахождения пользователей.
Предположим, что DSLAM подключены к портам Ethernet 1/0/1 обоих коммутаторов соответственно.
Конфигурация будет выглядеть следующим образом:
Switch1:
Switch(config)#class-map c1 Switch(config-classmap-c1)#match ip dscp 10 Switch(config-classmap-c1)#exit Switch(config)#class-map c2 Switch(config-classmap-c2)#match ip dscp 20 Switch(config-classmap-c2)#exit Switch(config)#class-map c3 Switch(config-classmap-c3)#match ip dscp 30 Switch(config-classmap-c3)#exit Switch(config)#policy-map p1 Switch(config-policymap-p1)#class c1 Switch(config-policymap-p1-class-c1)# set s-vid 1001 Switch(config-policymap-p1)#class c2 Switch(config-policymap-p1-class-c2)# set s-vid 2001 Switch(config-policymap-p1)#class c3 Switch(config-policymap-p1-class-c3)# set s-vid 3001 Switch(config-policymap-p1-class-c3)#exit Switch(config-policymap-p1)#exit Switch(config)#interface ethernet 1/0/1 Switch(config-if-ethernet1/0/1)#dot1q-tunnel enable Switch(config-if-ethernet1/0/1)#service-policy p1 in |
Switch2:
Switch(config)#class-map c1 Switch(config-classmap-c1)#match ip dscp 10 Switch(config-classmap-c1)#exit Switch(config)#class-map c2 Switch(config-classmap-c2)#match ip dscp 20 Switch(config-classmap-c2)#exit Switch(config)#class-map c3 Switch(config-classmap-c3)#match ip dscp 30 Switch(config-classmap-c3)#exit Switch(config)#policy-map p1 Switch(config-policymap-p1)#class c1 Switch(config-policymap-p1-class-c1)# set s-vid 1002 Switch(config-policymap-p1)#class c2 Switch(config-policymap-p1-class-c2)# set s-vid 2002 Switch(config-policymap-p1)#class c3 Switch(config-policymap-p1-class-c3)# set s-vid 3002 Switch(config-policymap-p1-class-c3)#exit Switch(config-policymap-p1)#exit Switch(config)#interface ethernet 1/0/1 Switch(config-if-ethernet1/0/1)#dot1q-tunnel enable Switch(config-if-ethernet1/0/1)# service-policy p1 in |
В случае, если Flexible QinQ не может быть применен к порту, проверьте не вызвана ли проблема следующими причинами:
Убедитесь, что в настроенною карту классов и карту политик добавлен Flexible QinQ;
Убедитесь, что ACL содержит правило permit, а карта классов настроена на соответствие правилу ACL;
Убедитесь, что коммутатору достаточно ресурса TCAM для работы правила.