Вопрос: Что такое Per Flow Bandwidth Control и пример настройки этой функции.

Ответ: 

1) Почему контроль полосы пропускания по потокам (Per Flow Bandwidth Control).

Как сконфигурировать QoS в соответствии со следующими требованиями?

  1. VoIP (SIP Телефон) должен иметь наивысший приоритет в строгом режиме (чтобы исключить задержки при передаче голоса).
  2. FTP-трафик (или любой другой трафик, сильно расходующий полосу пропускания, например, p2p) должен использовать только часть полосы пропускания (например, максимум 5 Мбит/с).

Условие (1) может быть выполнено настройкой ACL путём перемаркировки 802.1p/DSCP. Но как реализовать пункт (2)??

Решение: Новая функция “per-flow” bandwidth control (поддерживается серией DGS-3400).

2) Контроль полосы пропускания по портам.

Почему контроль полосы пропускания по потокам?

Серии DES3500 или xStack поддерживают ACL только в режимах permit или deny (0 или 1). Если пользователь хочет разрешить определённый трафик с определённой полосой пропускания (например, FTP может максимально использовать 5 Мбит/с от общей полосы пропускания), такая реализация ACL не может в этом помочь.

DGS-3400 (и более поздние серии) могут, основываясь на совпадении по типу трафика, ограничивать полосу пропускания, благодаря поддержке нового механизма ACL.

Как работает контроль полосы пропускания по потокам?

Эта функция основана на новой политике ACL. DGS-34xx использует механизм ACL для просмотра определённого типа трафика и ограничения полосы пропускания. Весь этот процесс происходит на микросхемах портов - ASIC. Т.о., это не влияет на загрузку CPU и соответственно не снижает производительность коммутатора.

3) Команды настройки контроля полосы пропускания по потокам.

Команда настройки ACL без поддержки “per-flow bandwidth control” для того чтобы создать правило из нашего примера.

config access_profile profile_id ip {| source_ip | destination_ip | dscp | [ icmp | igmp | tcp { src_port | dst_port | flag [all | { urg | ack | psh | rst | syn | fin }] } | udp { src_port | dst_port } | protocol_id { user_define } ] }port [ permit { priority {replace_priority_with } | replace_dscp_with } | deny ]}

Команда настройки ACL с поддержкой “per-flow bandwidth control” для того, чтобы создать правило из нашего примера. Эта опция также поддерживается для типов ACL “ethernet”,”packet_content”, “ipv6” (не только для указанного типа).

config access_profile profile_id ip {| source_ip | destination_ip | dscp | [ icmp | igmp | tcp { src_port | dst_port | flag [all | { urg | ack | psh | rst | syn | fin }] } | udp { src_port | dst_port }
| protocol_id { user_define } ] }
port [ permit { priority {replace_priority_with } | replace_dscp_with | rx_rate [ no_limit | ] } | deny ]}

Это означает, что при выборе действия “permit” – «разрешить», может быть задана полоса пропускания для определённого типа трафика на приём.

4) Пример настройки контроля полосы пропускания по потокам.

Задача:

  1. VoIP (SIP Телефон) должен иметь наивысший приоритет в строгом режиме (чтобы исключить задержки при передаче голоса).
  2. FTP-трафик (или любой другой трафик, сильно расходующий полосу пропускания, например, p2p) должен использовать только часть полосы пропускания (например, максимум 5 Мбит/с).

VoIP (SIP Телефон) будет иметь наивысший приоритет в строгом режиме (чтобы исключить задержки при передаче голоса).

Формат пакета VoIP (SIP):

Формат управляющего пакета VoIP SIP, использующего UDP-порты источника/назначения 5060/5060.


Формат пакета данных VoIP SIP, использующего UDP/RTP-порты источника/назначения 49152/49152. Примечание: Различные VoIP-приложения могут использовать собственный порт UDP. Захватите сниффером пакеты для того, чтобы определить номер порта.


Конфигурация коммутатора #1 для передачи данных VoIP:

# 1. Если в пакете DSCP=56, то перемаркировать пакет приоритетом 802.1p = 7 (и затем поместить в очередь с наивысшим приоритетом).
create access_profile profile_id 1 ip dscp
config access_profile profile_id 1 add access_id auto_assign ip dscp 56 port all permit priority 7

# 2. Если пакет является пакетом VoIP, перемаркировать пакет приоритетом 802.1p = 7 (и затем поместить в очередь с наивысшим приоритетом), и заменить поле DSCP на 56 (111000).
create access_profile profile_id 2 ip udp src_port_mask 0xFFFF dst_port_mask 0xFFFF
config access_profile profile_id 2 add access_id auto_assign ip udp src_port 5060 dst_port 5060 port all permit priority
7 replace_dscp 56
config access_profile profile_id 2 add access_id auto_assign ip udp src_port 49512 dst_port 49512 port all permit
priority 7 replace_dscp 56

# 3. Убедитесь, что механизм обработки очередей строгий (strict).
config scheduling_mechanism strict

Конфигурация коммутатора #2 для передачи данных VoIP:

# 1. Если в пакете DSCP=56, то перемаркировать пакет приоритетом 802.1p = 7 (и затем поместить в очередь с наивысшим приоритетом).
create access_profile profile_id 1 ip dscp
config access_profile profile_id 1 add access_id auto_assign ip dscp 56 port all permit priority 7

# 2. Если пакет является пакетом VoIP, перемаркировать пакет приоритетом 802.1p = 7 (и затем поместить в очередь с наивысшим приоритетом), и заменить поле DSCP на 56 (111000).
create access_profile profile_id 2 ip udp src_port_mask 0xFFFF dst_port_mask 0xFFFF
config access_profile profile_id 2 add access_id auto_assign ip udp src_port 5060 dst_port 5060 port all permit priority 7
replace_dscp 56
config access_profile profile_id 2 add access_id auto_assign ip udp src_port 49512 dst_port 49512 port all permit priority 7
replace_dscp 56

# 3. Убедитесь, что механизм обработки очередей строгий (strict).
config scheduling_mechanism strict

FTP-трафик должен использовать только часть полосы пропускания (например, максимум 5 Мбит/с).

Пакеты данных FTP используют TCP-порт источника 20:


Конфигурация коммутатора #2 для ограничения полосы пропускания для ftp-трафика значением 5 Мбит/с:

create access_profile profile_id 3 ip tcp src_port_mask 0xFFFF
config access_profile profile_id 3 add access_id auto_assign ip tcp src_port 20 port 1-24 permit rx_rate 80

Примечание: Шаг контроля полосы пропускания по потокам 64 Кбит/с. Например, rx_rate 80 = 80 * 64 Кбит/с = 5120 Кбит/с = 5 Мбит/с

До настройки функции контроля полосы пропускания по потокам ftp-трафик иметь полосы пропускания 10909 Кбайт/с:


После настройки контроля полосы пропускания по потокам ftp-трафик имеет ограничение по полосе пропускания 632 Кбайт/с (около 5 Мбит/с):


Результаты тестов:

  1. После настройки строгого режима QoS для пакетов VoIP, VoIP-трафик – голос, будет передаваться без задержек. 2. После настройки функции контроля полосы пропускания по потокам, применительно к FTP-трафику (или любому другому трафику, активно использующему полосу пропускания, например, p2p и т.д.), коммутатора не будет так сильно загружен передачей этого типа трафика, и другие приложения (такие как mail, web и т.д.) будут работать с меньшими задержками.