Cisco Hierarchical Queuing Framework
Материал из Xgu.ru
Hierarchical Queuing Framework (HQF) это новая модель работы QoS в оборудовании Cisco, которая поддерживается с версии IOS 12.4(20)T.
И хотя с точки зрения конфигурации HQF, почти не отличается от настройки MQC (modular QoS CLI), в HQF есть много усовершенствований.
Содержание |
[править] Основные отличия HQF от предыдущих версий
- Одинаковая (или почти одинаковая) настройка на всех платформах под управлением IOS
[править] Новые функции
- Многоуровневая политика с возможностью использовать функционал связанный с очередями, на каждом уровне
- Этот функционал позволяет применять class-based queuing к любому классу в иерархии и получать разные уровни сервиса для разных сессий
- Fair Queue в классе MQC
policy-map POLICY_FQ class SILVER bandwidth 2000 fair-queue
- Shaping в политике ATM PVC
- Strict Priority с отсутствием Policing Rate
policy-map POLICY class PLATINUM priority class GOLD bandwidth remaining percent 20
- Команда priority может использоваться с явным указанием Policing Rate
policy-map POLICY class SILVER priority police cir 200000 conform-action transmit exceed-action drop
- Функционал random-detect поддерживается в Class-default
policy-map POLICY class class-default random-detect precedence-based random-detect precedence 0 30 70
- Поддержка параметров и пороговых значений random-detect
policy-map POLICY class SILVER bandwidth 2000 random-detect precedence-based В байтах: random-detect precedence 0 100 bytes 400 bytes 100 или в ms: random-detect precedence 0 200 ms 800 ms 100
- Значение команды queue-limit может быть задано в байтах или миллисекундах (задание в пакетах также осталось)
policy-map POLICY class GOLD bandwidth 2000 queue-limit 800 bytes class SILVER bandwidth 3000 queue-limit 600 bytes
[править] Изменения в существующих функциях
[править] Изменения в Class-Default
- Если class-default не настроен в политике явно:
- Используется FIFO
- При явном задании class-default, к нему могут быть применены команды:
- bandwidth
- по умолчанию class-default получает, как минимум, 1% от пропускной способности интерфейса или родительской политики shaping
- если другие классы использовали не всю bandwidth, то все оставшееся достается class-default. Это можно задавать явно или не задавать
- fair-queue
- работает по принципу flow-based
- в предыдущих версиях был Weighted Fair Queuing (WFQ)
- service-policy
- bandwidth
Пример политики:
policy-map CHILD class PLATINUM priority 2000 class GOLD bandwidth 4000 policy-map PARENT class-default shape average 10000000 service-policy CHILD
В примере выше policy-map PARENT выполняет shaping 10Mbps. Это значит, что для policy-map CHILD в целом доступно 10M. Class-default получит 4M (10-2-4). Но можно назначить и другое значение, если явно его указать.
[править] Поведение по умолчанию очереди функции shape
При применении команды shape к классу, по умолчанию очередь будет работать в режиме FIFO, а не WFQ, как в предыдущих версиях.
Для того чтобы получить другой способ обработки очереди, можно применить к классу с shape команды:
- bandwidth
- fair-queue
- service-policy
[править] Policy-map и bandwidth интерфейса
В HQF:
- policy-map может зарезервировать до 100% пропускной способности интерфейса
- пользовательские классы могут резервировать до 99% пропускной способности интерфейса, так как по умолчанию 1% пропускной способности зарезервирован для class-default
|
При переходе на версию 12.4(20)T, если настроенная policy-map выделяет 100% пропускной способности пользовательским классам, то появится сообщение об ошибке. В сообщении будет указано, что выделенная пропускная способность превышает разрешенное количество и service-policy будет отброшена. Политику надо изменить так, чтобы для class-default был доступен 1% пропускной способности, а затем service-policy снова применена к интерфейсу. |
[править] Per-Flow Queue Limit в Fair Queue
В HQF при включении fair queuing:
- по умолчанию размер очереди (queue limit) per-flow равен ¼ размера очереди для класса
- если queue limit для класса не задан, то по умолчанию per-flow queue limit равен 16 пакетам (1/4 от 64)
[править] Поддержка oversubscription для нескольких политик на логических интерфейсах
Когда политика с shaping применена к нескольким логическим интерфейсам и сумма всех shape rate превышает пропускную способность физического интерфейса, перегрузка физического интерфейса приводит к давлению на политику логических интерфейсов. Это давление приводит к тому, что каждая политика снижает output rate до
|
Пример:
Соответственно, когда все интерфейсы передают по 2M, превышение пропускной способности 2:1. В таком случае, каждый интерфейс получит пропускную способность по 1M (10M / 10 подынтерфейсов) |
[править] Изменения в командах настройки и просмотра
Изменения в командах:
- Команды show queuing и show queue не поддерживаются
- вместо них используются команды sh policy-map и sh policy-map interface
- Команда max-reserved-bandwidth больше не влияет на количество пропускной способности, которое доступно для service-policy
- Ранее существовало ограничение на выделение пропускной способности для пользовательских классов (максимум 75%). И команда использовалась для того чтобы это ограничение обойти. В HQF этого ограничения нет
- Команда shape max-buffers не поддерживается в HQF
- Вместо нее используется команда queue-limit
- При обновлении IOS до версии в которой поддерживается HQF, команда shape max-buffers будет автоматически заменена на queue-limit
[править] Поиск неисправностей
[править] Ошибки
[править] QOS-4-QLIMIT_HQUEUE_VALUE_SYNC_ISSUE: The sum of all queue-limit value is greater than the hold-queue value
Эта ошибка означает, что суммарный размер очередей, который задан для классов командой queue-limit, превышает размер очереди на физическом интерфейсе, которая задается командой hold-queue.