При использовании туннелирования, маршрутизатор Cisco IOS выполняет классификацию на основе внешнего заголовка (post header) вместо внутреннего (pre header), что может вызвать проблемы с политиками QoS, применяемыми к физическим интерфейсам. Внешние заголовки всех пакетов, проходящих через один туннель, одинаковы, поэтому они обрабатываются идентично, даже если физический интерфейс перегружен. Это может приводить к неправильному управлению трафиком и ухудшению качества обслуживания.
Функция предварительной классификации (QoS Pre-classify) позволяет маршрутизатору учитывать исходные заголовки пакетов перед инкапсуляцией в туннель. Это обеспечивает более точную классификацию и применение политик QoS.
Содержание:
- Введение
- Топология
- Развертывание туннеля между R1 и R3
- Стандартная классификация
- Классификация внешнего заголовка
- Классификация внутреннего заголовка (физический интерфейс)
- Классификация внутреннего заголовка (туннельный интерфейс)
- Выводы
Введение
Если пакеты инкапсулируются заголовками туннелей или шифрования, средствам QoS сложно проверить исходные заголовки пакетов и правильно их классифицировать. Пакеты, перемещающиеся по одному туннелю, имеют идентичные заголовки туннеля, поэтому они обрабатываются одинаковым образом, что может привести к проблемам, если физический интерфейс перегружен. Введение функции QoS для виртуальных частных сетей (VPN) позволяет классифицировать пакеты перед выполнением туннелирования и шифрования.
Политику обслуживания можно применить либо к туннельному интерфейсу, либо к основному физическому интерфейсу. Выбор интерфейса для применения политики зависит от целей QoS и необходимого заголовка для классификации.
- Применение политики к туннельному интерфейсу без использования QoS Pre-classify: если необходимо классифицировать пакеты на основе заголовка перед туннелем, следует применять политику к туннельному интерфейсу.
- Применение политики к физическому интерфейсу без использования QoS Pre-classify: если требуется классифицировать пакеты на основе заголовка после туннеля, политику нужно применять к физическому интерфейсу. Также, если цель состоит в формировании всего трафика туннеля или назначении для него политики, политику следует применять к физическому интерфейсу, так как физический интерфейс поддерживает несколько туннелей.
- Использование QoS Pre-classify: при необходимости классифицировать пакеты на основе заголовка перед туннелем политику применяют к физическому интерфейсу и включают функцию QoS Pre-classify.
QoS Pre-classify позволяет учитывать исходные заголовки пакетов перед их инкапсуляцией, что обеспечивает более точную классификацию и управление трафиком.
Топология
Исследуемая топология состоит из трех маршрутизаторов (Cisco 1941 с образом Cisco IOS Release 15.4 IP Base). Допускается использование маршрутизаторов других моделей, а также других версий операционной системы Cisco IOS. В зависимости от модели устройства и версии Cisco IOS, доступные команды и результаты их выполнения могут отличаться от тех, которые показаны в этой статье.
Схема топологии следующая:
Настройки маршрутизатора R1
Настройки коммутатора S1
Настройки маршрутизатора R3
Развертывание туннеля между R1 и R3
Ниже приведена настройка туннеля. Будем использовать статический маршрут, чтобы R1 и R3 имели соединение друг с другом через loopback интерфейс:
Маршрутизатор R1:
Маршрутизатор R3:
Также делаем настройки зеркалирования на коммутаторе S1:
Стандартная классификация
IOS по умолчанию скопирует информацию в байте TOS (тип обслуживания) из внутреннего заголовка IP во внешний заголовок IP. Это можно проверить на R1 с помощью утилиты ping. В строке «Target IP address» укажем 3.3.3.3, в строке «Extended commands» — yes, в строке «Source address or interface» — 1.1.1.1, «Type of service» — 160. На всех остальных параметрах нажимаем пробел:
Этот эхо-запрос между 1.1.1.1 и 3.3.3.3 пройдет через туннель. Байт TOS 160 в двоичном виде — это 10100000, если удалить последние два бита, останется 6 бит DSCP. 101000 в двоичном формате — это 40 в десятичном, что совпадает с CS5.
Ниже на изображении показан перехват трафика, проходящий через туннель, после выполнения эхо-запроса:
Обратите внимание на вывод информации, Cisco IOS автоматически копирует байт TOS из внутреннего заголовка IP во внешний заголовок IP. В примере используется GRE, чтобы можно было увидеть оба заголовка, но если используется зашифрованный туннель IPsec, будет виден только внешний заголовок.
Если есть политики QoS, работающие на основании байта TOS, проблем не возникнет, так как байт TOS копируется из внутреннего заголовка во внешний заголовок. Проблемы могут возникнуть, если есть политики, основанные на списках доступа (ACL), которые совпадают по адресам источника/назначения и/или номерам портов.
Классификация внешнего заголовка
На R1 создадим две карты классов (class—map), одну для трафика telnet и другую для трафика GRE. Обе карты классов будут использовать список доступа для классификации трафика:
Две карты классов будут использоваться в карте политик (policy—map):
Политика была добавлена для трафика Telnet, в то время как для GRE ничего не было настроено. Независимо от настроенных «действий», трафик будет классифицироваться и отображаться на карте политик даже при отсутствии действий. Давайте активируем всю эту конфигурацию на физическом интерфейсе R1:
Следует иметь в виду, что при включении политики на физическом интерфейсе она будет применяться ко всем туннельным интерфейсам. Давайте сгенерируем некоторый трафик telnet между R1 и R3, чтобы он проходил через туннель:
Теперь посмотрим на карту политик R1:
Это касается трафика GRE. Для трафика Telnet совпадений нет. В реальной сети это означало бы, что трафик Telnet никогда не будет проверяться (или любое другое настроенное действие не будет применено). Причина отсутствия совпадений в том, что Cisco IOS сначала инкапсулирует IP-пакет, а затем применяет политику к трафику GRE:
Синий IP-заголовок — это оригинальный IP-пакет с трафиком Telnet , он инкапсулирован, и маршрутизатор добавляет GRE-заголовок и новый IP-заголовок (красный). Затем карта политик применяется к этому внешнему IP-заголовку.
Есть несколько вариантов как исправить данную ситуацию.
Классификация внутреннего заголовка (физический интерфейс)
Первый вариант решения — активировать предварительную классификацию на туннельном интерфейсе. Этот вид классификации указывает маршрутизатору создать копию исходного IP-заголовка и использовать его для политики. Сделаем это на R1, используя команду qos pre-classify:
Давайте выполним ещё один тест, чтобы увидеть разницу:
Теперь посмотрим на карту политик R1:
Теперь видны совпадения в трафике Telnet, что позволяет его проверять при необходимости. Однако больше не наблюдаются совпадения в трафике GRE. Что же произошло:
Когда маршрутизатор инкапсулирует пакет, он создает временную копию заголовка. Эта временная копия используется для применения политики вместо внешнего заголовка и затем уничтожается.
Это достигается благодаря команде qos pre-classify
, но существует и другой способ получить тот же результат.
Классификация внутреннего заголовка (туннельный интерфейс)
Вместо активации политики на физическом интерфейсе, можем активировать её на туннельном интерфейсе R1:
Обратите внимание, что была удалена команда qos pre-classify на интерфейсе туннеля. Проводим тест:
Теперь посмотрим на карту политик R1:
Если политика включена на туннельном интерфейсе, маршрутизатор будет использовать внутренний заголовок для классификации. Это точно соответствует результату, который достигается при использовании команды qos pre-classify
на туннельном интерфейсе.
Выводы
Спасибо за уделенное время на прочтение статьи. Теперь Вы знаете как настроить предварительную классификацию в QoS на маршрутизаторах Cisco.
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet (программируемые сети) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.