Продолжаем рассматривать ограничение скорости в сетевом экране. В первой части было представлено простое ограничение скорости. В данном случае настройка сложнее, и нужно начинать вникать в глубины Huawei USG. Без понимания происходящего выполнить такую настройку под свою инфраструктуру будет сложно.

Как и в первой части, план предполагает разделение скорости двум группам пользователей ADMINS и USERS. Дополнением в данном случае является родительская политика, с общим лимитом трафика, позволяющая настраивать умное ограничение и приоритеты у дочерних политик. Тариф от провайдера 100/50Мбит/сек.

 

Software Path – это режим обработки трафика, при котором пакеты проходят полную программную обработку в CPU, а не ускоряются аппаратными механизмами. Для того чтоб работали очереди с иерархией нужно активировать этот режим. Это значит, что нужно отключить fast forwarding.

Fast forwarding – это режим аппаратного ускорения обработки трафика, при котором пакеты передаются через специализированные чипы (NPU/ASIC), минуя глубокую программную обработку в CPU. Это технология обхода программной обработки для повышения производительности. Пакеты, соответствующие простым правилам, например, NAT, базовый ACL, маршрутизация между интерфейсами, не проходят полный анализ в ядре системы. Аппаратные ускорители не поддерживают многоуровневые traffic policy. Для них и других модулей: DPI, IPS, Anti-Virus, VPN, сложная маршрутизация,  Multicast IGMP, сложный NAT  нужна полная обработка.  Можно элементарно проверить, работает ли например антивирус.

Если в выводе статистики значения отсутствуют, то он не работает. Аналогично с другими модулями. Общий смысл в том, что отключаем fast forwarding. Без этого действия дальнейшие настройки не работают.

Conditional Fast Forwarding (условное ускорение обработки пакетов) – это вспомогательная опция, которая позволяет устройству использовать аппаратное ускорение только для безопасного трафика, удовлетворяющего определённым условиям (например, не участвующего в DPI/AV/QoS).

После отключения может понадобиться перезагрузка USG.

Настройка влияет глобально. Отключение на конкретных интерфейсах не было найдено у данной модели и прошивке.

Чтоб понять какие модули не проходит трафик с включенным Fast forwarding, нужно смотреть диаграмму traffic flow.

Так же как и в простом ограничении скорости, тут нужно создать объекты для IP и группы.

 

Объект IP-адреса.

Добавляем объекты для администраторов, серверов и всех остальных, кому планируется повышенная скорость.

 

Через CLI.

 

Группа IP-адресов.

Объединяем все созданные объекты IP-адресов в группу, чтоб потом применить ее в политике.

 

Через CLI.

 

Родительский профиль.

Создаем родительский профиль  с указанием только максимально доступной пропускной способности. Можно уменьшить ее на 5%.

 

Уменьшение полосы пропускания на 5% от полосы, предоставленной провайдером делается для согласования работы при разнице в измерениях между USG и провайдером (скорости могут трактоваться и измеряться по-разному).

Еще одна причина – USG учитывает только IP-пакеты, то есть чистые полезные данные. При передаче данных по сети, к ним добавляются служебные заголовки (overhead в Ethernet или PPPoE) . Получается что 5-10% канала уходит на служебную упаковку, а не на сами данные. Если выставить на USG жесткое ограничение в 100 Мбит/с, то фактическая нагрузка на физический канал будет ~105–110 Мбит/с с учётом заголовков. Могут возникнуть лаги и потери.

У этого есть и условный недостаток: ограничивая скорость у себя, мы добровольно отрезаем возможный «запас» от провайдера, особенно если у него тариф реализуется не строго, а «по лучшим условиям». Был случай при тарифе 200Мбит/с и без установки у себя лимита, от провайдера приходило 210-220Мбит/с. Для организации лучше выбрать более надежный вариант с 5%, а дома можно поэкспериментировать.

Reference Mode

Exclusive – эксклюзивный режим. Ресурсы выделяются только этому профилю и не разделяются с другими профилями или политиками.

Shared – общий режим. Ресурсы делятся между несколькими профилями или политиками.

Через CLI.

 

Родительская политика.

Родительская политика выполняет три ключевые задачи: задает максимально допустимую пропускную способность, обеспечивает иерархии с приоритетами внутри неё и ведет контроль конкуренции за канал. Создаем.

 

Inbound Interface – входящий интерфейс. Это интерфейс, на который поступает трафик перед обработкой политикой.

Outbound Interface – исходящий интерфейс. Это интерфейс, через который трафик покидает устройство после обработки.

Source Address/Region – источник трафика. Указываем тут группу с объектами IP-адресов админов в локальной сети.

Action:

Limit – применяет ограничения, заданные в Traffic Profile.

None – пропускает трафик без ограничений.

Traffic Profile — выбираем созданный ранее родительский профиль трафика.

Если политика применяется только к одному конкретному порту, то лучше указывать конкретный интерфейс. Если нужен более широкий охват, то применяются зоны, а не интерфейсы. Так же зоны применяются при логической группировке интерфейсов или при динамических интерфейсах VPN.

 

Логика по которой выбирается интерфейс Inbound и Outbound для WAN и LAN.

Трафик направляется от пользователя из локальной сети LAN в Интернет WAN в типовой ситуации когда, например, выполняется запрос на любой сайт:

-трафик входит в USG через LAN-порт = Inbound Interface;

-трафик выходит из USG в Интернет через WAN-порт = Outbound Interface.

 

Настройка через CLI.

 

Назначение настроек профиля.

Перед созданием профилей для админов и пользователей нужно разобраться с назначением существующих настроек.

Профиль делится на две логические части:

Global Traffic Limiting это общий глобальный лимит на политику. Значения задают, сколько максимум и минимум полосы пропускания может быть выделено всей группе указанной в политике, например, всем ADMINS. Используется когда нужен общий лимит на профиль без разделения по IP и с равномерным делением скорости.

Per-IP/User Traffic Limit это локальные лимиты для каждого участника в пределах политики. Например, каждому IP-адресу в группе ADMINS будет выделено до 10Mbps, независимо от общего количества пользователей. Нужно конкретно рассчитывать индивидуальные лимиты исходя из общедоступного. Поля Guaranteed и Maximum для каждого IP или пользователя включаются только, если отключён Even Distribution. Если поля оставить пустые, USG не применит никакие ограничения для каждого IP/пользователя и весь трафик, который подпадает под политику с этим профилем, ограничивается в совокупности только параметрами глобального лимита. Per-User используется в случае если подключен домен с пользователями.

Even Distribution равномерное распределение. При включении этой настройки USG сам делит общую пропускную способность между всеми активными участниками, равномерно, без приоритетов и без гарантий. Guaranteed и Maximum поля отключаются и их нельзя указать, потому что эти параметры вступают в противоречие с идеей равного деления. При Even Distribution нет гарантированной полосы ни одному участнику. Вся доступная скорость из родительского профиля автоматически делится между активными IP-адресами. Деление происходит динамически, то есть если пользователей 2 каждому по 50%. Если 5 каждому по 20%, и так далее. Если нужно гарантировать кому-то минимум скорости, то этот режим не подходит.

Варианты использования:

1.Только Global Traffic Limiting: заполнены поля Global Maximum и/или Guaranteed, все кто попал под профиль (через политику) делят полосу пропускания между собой динамически без ограничений (кто сколько занял, столько и использует), но в рамках указанных в полях  стандартный самый распространенный вариант.

2.Global + Per-IP/User: контролируется полоса пропускания и группы, и отдельных участников. Есть глобальный предел, например 100 Mbps. Каждому IP (или User) можно задать лимит внутри этого диапазона, например, максимум 10 Mbps, гарантировано 1 Mbps на IP через заполнение полей Maximum и/или Guaranteed в этом разделе. Совокупный трафик не превысит Global Max, но каждый участник будет со своим лимитом.

3.Global + включен Even Distribution. Глобальный лимит делится поровну между всеми активными IP/пользователями. Если в момент времени работает 4 IP, каждый получит примерно Global Max/4. Если один из них ушёл перераспределение. Нет возможности вручную задать guaranteed/max на каждого пользователя, так как поля индивидуальных лимитов становятся недоступны.

4.Только Per-IP (без глобального), Even Distribution выключено. Каждый участник (IP/User) имеет свои лимиты. Но в сумме они могут превысить физическую пропускную способность канала и начнется хаос (кому-то не хватит полосы). Т.е. нет глобального контроля на всю группу.

С учетом выше перечисленного оптимальным вариантом будет 3 (Global + включен Even Distribution). Это настройка с гибким приоритетом с гарантированной минимальной полосой и возможностью динамически занимать неиспользуемую часть канала.

ADMINS: в глобальной настройке максимум: 95 Мбит/с (скачивание), 45 Мбит/с (отдача), гарантия: 10 Мбит/с. Even Distribution включен.

При отсутствии конкурентов админы занимают всё,  при появлении конкурентов равномерно снижаются до гарантии 10 Мбит/с.

USERS: получают столько, сколько свободно в пределах канала указанного в их политике. Админы при этом уступают, но не менее гарантии. Нет необходимости вручную рассчитывать лимиты на IP.

Если какой-то один пользователь или даже админ выделяется например с помощью торрента и занимает полосу пропускания, то для него нужно создать отдельную политику с конкретно указанными минимальными лимитами.

 

Max. Connections – это максимальное количество одновременных соединений (сессий), которое разрешено для данного профиля трафика. Если количество активных соединений превысит этот лимит, новые соединения могут блокироваться или ограничиваться, в зависимости от политики.

Max. Connection Rate – это максимальная скорость установки новых соединений, то есть, сколько новых соединений разрешается создавать в единицу времени. Обычно измеряется в соединениях в секунду (connections per second). Этот параметр помогает защититься от атак типа DoS, когда создаётся слишком много новых соединений за короткий промежуток времени.

Два этих параметра пока что не настраиваем.

Forwarding Priority – это параметр, который определяет очередность обработки и пересылки пакетов в данном USG. Он влияет на то, какие пакеты будут переданы в первую очередь при перегрузке канала. Всего 7 приоритетов на выбор в GUI. Низший приоритет (худший) 1 – самый последний в обработке. Высший приоритет (лучший) 7 – обрабатывается в первую очередь. Реально приоритетов 8, но приоритет 0 скрыт, так как он подразумевается по умолчанию для неразмеченного не классифицированного трафика. Приоритет вступает в силу только при наличии конкуренции, т.е. когда одновременно есть трафик с разными приоритетами. Приоритета на 1 выше достаточно, чтобы трафик получил преимущество.

В самом низу профиля есть подсказка. Если приоритет в профиле отличается от Medium (4) (среднего), тогда автоматически включается функция traffic shaping. Это сделано для того, чтобы трафик с разным приоритетом не перегружал сеть и соблюдал назначенные лимиты по скорости.

Тоесть forwarding priority – задаёт порядок обработки трафика (кто идёт первым, кто после). Traffic shaping – ограничивает скорость (полосу) передачи для трафика с указанным приоритетом.

Очередь (queue) – это временное хранилище (буфер) пакетов, ожидающих обработки перед отправкой на интерфейс. Когда интерфейс перегружен, очереди определяют, кого пропускать первым, кого позже, а кого вообще отбросить. На один интерфейс может быть несколько очередей, каждая из которых соответствует разному приоритету или трафик-классу. Иерархические политики влияют на то, в какие очереди попадёт трафик, и в каком порядке он будет обслужен.

Политика через Forwarding Priority определяет, в какую очередь отправлять трафик. Forwarding Priority работает между дочерними политиками, если они входят в одну родительскую. Если оба типа трафика (админы и юзеры) одновременно передают данные, но есть ограничение пропускной способности, то ADMINS получат преимущество, их пакеты обслуживаются раньше, чаще, с меньшей задержкой. Это происходит внутри очереди на интерфейсе, которая управляется родительской политикой.

Если сравнить с Микротик, то в USG нельзя выбрать вручную тип очереди (PCQ, RED, FIFO, WFQ) – Huawei использует встроенные алгоритмы и управляет типом очереди в зависимости от политики и приоритетов. Выполняется автоматическое управление: классами обслуживания (Class of Service), приоритетами (0–7), формированием трафика (shaping), замедлением трафика (policing). Тип самой очереди зашит в системе и не подлежит изменению. Это сделано, чтоб администратор управлял сетевым экраном на более высоком уровне.

DSCP Priority Re-marking – это функция переназначения или изменения значения DSCP (Differentiated Services Code Point) для приоритизации трафика. DSCP – это поле в заголовке IP-пакета, которое используется для указания приоритета или класса обслуживания. DSCP можно изменить от 0 до 63, и тогда трафик классифицируется по другим меткам, а в ядре Huawei это может означать другие очереди на интерфейсе.

 

Профиль для дочерней политики ADMINS.

На основании информации выше выполняем следующие настройки.

На время настроек и тестов можно уменьшить Maximum и Guaranteed в обоих направлениях до 5 и 1 Mbps соответственно, чтобы наглядно видеть срабатывает ли политика по ограничению скорости.

 

Профиль для дочерней политики USERS.

Трафик с приоритетом 5 (админы) будет иметь более высокий приоритет при обработке. Для трафика админов включится ограничение скорости (traffic shaping) согласно подсказке внизу, чтобы контролировать его максимальный поток. Трафик пользователей с приоритетом 4 будет обрабатываться с обычным средним приоритетом, без автоматического ограничения скорости.

 

Дочерняя политика ADMINS.

Huawei USG иерархические политики обрабатываются по следующей логике: родитель определяет интерфейс и направление, дети применяются внутри родителя по условиям (IP-адреса, пользователи, сервисы и т.п.). Если повторно указать интерфейс в дочерней политике – это может привести к конфликту, и правило будет проигнорировано.

 

Дочерняя политика USERS.

 

Расположение.

 

Проверить срабатывают ли политики можно в поле Hits в GUI или через статистику CLI.

Статистика политик на скачивание из Интернет.

 

Статистика политик на выгрузку в Интернет.

 

Мониторинг в реальном времени возможен в соответствующем разделе.

 

Проводим тест скорости у произвольного пользователя.

Представленная настройка является одним из множества вариантов, которые можно выполнить на основании информации с этой страницы.