Cisco Hierarchical Queuing Framework

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


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

Пример политики:

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

Note-icon.gif

При переходе на версию 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 до

Note-icon.gif

Пример:

  • 10 подынтерфейсов настроены с политикой shape до 2M
  • Пропускная способность физического интерфейса 10M

Соответственно, когда все интерфейсы передают по 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.