Опубликован: 28.11.2014 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лабораторная работа 11:

Ограничение полосы пропускания трафика

Цель

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

  1. Ограничить полосу пропускания для входящего трафика до 2 Мбит/с независимо от типа трафика.
  2. Ограничить полосу пропускания в обоих направлениях до 2 Мбит/с независимо от типа трафика.

Топология сети

Описание практической работы

Ограничение полосы пропускания для входящего трафика

Каналы (Pipes)

Необходимо создать канал, который ограничивает весь проходящий через него трафик до 2 Мбит/с, не зависимо от типа трафика.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

Командная строка:

add Pipe total_in LimitKbpsTotal=2000

Правила каналов (Pipe Rules)

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

Будем использовать созданный выше канал для ограничения входящего трафика. Это ограничение применяется к пакетам, а не к соединениям. При выполнении шейпинга трафика важно направление, в котором передаются данные, а не сторона, инициировавшая соединение.

Следует создать правило, разрешающее прохождение любого исходящего трафика. Добавляем созданный канал в обратную цепочку (return chain). Это означает, что пакеты, идущие в обратном направлении данного соединения, должны проходить через канал total-in.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

Командная строка:

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ReturnChain=total_in Name=Inbound

Ограничение полосы пропускания в обоих направлениях

Использование одного и того же канала для обоих направлений не решает проблему.

Направление трафика, проходящего через канал, не имеет значения, так как учитывается только суммарное количество трафика. Один и тот же канал может использоваться как для входящего, так и для выходящего трафика, при этом не будет отдельного подсчета трафика в каждом направлении.

В предыдущем примере полоса пропускания ограничена только для входящего направления. В большинстве случаев необходимо ограничивать именно входящий трафик. Но что делать, если необходимо ограничить исходящий трафик таким же образом?

Помещение std-in в прямую цепочку (forward chain) не принесет результата, если требуется получить ограничение до 2 Мбит/с для исходящего трафика отдельно от ограничения до 2 Мбит/с для входящего. Если помимо исходящего трафика (2 Мбит/с) через канал проходит входящий трафик (2 Мбит/с), то общий поток трафика составит 4 Мбит/с. Так как ограничение канала составляет 2 Мбит/с фактическая величина потока будет близка к значению в 1 Мбит/с в каждом направлении.

Увеличение общего ограничения до 4 Мбит/с не решит проблему, так как для одного канала это не означает ограничения 2 Мбит/с для входящего и 2 Мбит/с для исходящего трафика. В результате может быть 3 Мбит/с исходящего и 1 Мбит/с входящего трафика, так как это также составляет 4 Мбит/с.

Для управления полосой пропускания в обоих направлениях рекомендуется использовать два отдельных канала: один для входящего, а другой для исходящего трафика. В данном сценарии в целях достижения оптимального результата для каждого канала установлено ограничение 2 Мбит/с.

Каналы (Pipes)

Необходимо создать два канала, каждый из которых ограничивают весь проходящий через него трафик до 2 Мбит/с, независимо от типа трафика. Дополнительно к каналу, созданному ранее, добавляем канал для исходящего трафика.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

Командная строка:

add Pipe total_out LimitKbpsTotal=2000

Правила каналов (Pipe Rules)

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

Командная строка:

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ReturnChain=total_in ForwardChain=total_out Name=in_out

Ограничение полосы пропускания в зависимости от типа трафика

Для простоты будем рассматривать ограничение только входящего трафика, так как в клиент-серверных приложениях как правило входящий трафик больше, чем исходящий.

Каналы (Pipes)

В предыдущих примерах выполнялось ограничение трафика для всех исходящих соединений. Что делать, если необходимо ограничить навигацию по веб-страницам больше, чем остальной трафик? Предположим, что ширина общей полосы пропускания – 250 кбит/с, из которых 125 кбит/с должны быть выделены для веб-трафика.

Если создать два канала, один http-in для ограничения входящего веб-трафика с ограничением в 125 кбит/с, а другой канал all-in для всего остального трафика с ограничением в 250 кбит/с, то желаемый результат достигнут не будет, так как результирующий объем трафика будет равен сумме ограничений в каждом канале, т.е. 375 кбит/с.

Для решения подобной задачи следует создать цепочку, состоящую из канала all-in и канала http-in для веб-трафика. Входящий веб-трафик сначала проходит через канал http-in, максимальное ограничение в котором 125 кбит/с. Далее трафик проходит через канал all-in вместе с остальным входящим трафиком. Для второго канала установлено ограничение в 250 кбит/с.

Если веб-трафик полностью потребляет 125 кбит/с, эти 125 кбит/с займут половину канала http-in, оставшиеся 125 кбит/с будет использоваться для остального трафика. Если веб-трафик отсутствует, то все 250 кбит/с, отведенные для канала http-in, могут использоваться для другого трафика.

Это не обеспечивает гарантируемую полосу пропускания для веб-трафика, но устанавливает ограничение для него до 125 кбит/с и гарантирует полосу пропускания 125 кбит/с для всего остального трафика. Для веб-трафика в канале http-in применяются стандартные правила: трафик будет проходить на общих основаниях наравне с другим трафиком. Это означает ограничение в 125 кбит/с, при этом возможна более низкая скорость, если канал загружен.

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

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

Командная строка:

add Pipe http_in LimitKbpsTotal=125

add Pipe all_in LimitKbpsTotal=250

Правила каналов (Pipe Rules)

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

Командная строка:

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=http-all ReturnChain=http_in,all_in Name=http_shaping

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ReturnChain=all_in Name=all_shaping

Использование приоритетов

Каналы (Pipes)

Добавим в предыдущий пример требование, что трафик SSH должен иметь более высокий приоритет по сравнению с остальным трафиком. Для этого добавим Правило канала специально для SSH и установим в правиле более высокий приоритет – например, 2. В данном новом правиле мы указываем каналы, используемые для остального трафика.

Результатом этого будет назначение более высокого приоритета SSH-пакетам, при этом отправка этих пакетов выполняется через тот же канал, что и остальной трафик. Механизм каналов гарантирует, что при превышении ограничения полосы пропускания, указанного в настройках канала, пакеты с более высоким приоритетом будут отправлены в первую очередь. Пакеты с более низким приоритетом будут помещены в буфер и отправлены, если используемая пропускная способность меньше, чем максимальная величина, указанная для канала. Процесс буферизации иногда приводит к обратному эффекту, так как уменьшается скорость потока.

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

Если исходящий трафик с приоритетом 2 превышает 100 кбит/с, то приоритет той части трафика, которая превышает данное ограничение, понижается до приоритета негарантированной доставки (best effort). Весь трафик с приоритетом негарантированной доставки (best effort) будет отправлен в порядке поступления.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

Командная строка:

add Pipe ssh_in LimitKbpsTotal=250 LimitKbps2=100

Правила каналов (Pipe Rules)

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

Командная строка:

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=ssh ReturnChain=ssh_in Name=ssh_shaping

Различные гарантий полосы пропускания для разных сервисов

Каналы (Pipes)

Иногда требуется предоставить различные гарантии полосы пропускания разным сервисам, например, гарантию в 32 кбит/с НТТР-трафику и гарантию в 64 кбит/с SSH-трафику. Можно было бы задать ограничение в 32 кбит/с для приоритета 2, 64 кбит/с для приоритета 4 и затем указать различным типам трафика разные приоритеты. При таком подходе можно столкнуться с ограниченным количеством различных приоритетов

Решение этой проблемы заключается в создании двух каналов: один для НТТР-трафика и другой для SSH-трафика. Для обоих каналов следует указать приоритет 2 в качестве приоритета по умолчанию, и задать ограничения для приоритета 2 , соответственно, 32 и 64 кбит/с.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipes -> Add -> Pipe

Командная строка:

add Pipe std_out LimitKbpsTotal=250

add Pipe std_in LimitKbpsTotal=250

add Pipe ssh_in PrecedenceDefault=2 LimitKbps2=64

add Pipe http_in PrecedenceDefault=2 LimitKbps2=32

Правила каналов (PipeRules)

Следует создать два правила для НТТР-трафика и SSН-трафика.

В качестве прямой цепочки для обоих правил следует указать только канал std-out.

В качестве обратной цепочки в правиле для SSH-трафика следует указать канал ssh-in, затем канал std-in. В качестве обратной цепочки в правиле для НТТР-трафика следует указать канал http-in, затем канал std-in.

В качестве значения приоритета в обоих правилах следует выбрать установить флаг Use defaults from first pipe. Для обоих каналов ssh-in и http-in приоритетом по умолчанию является приоритет 2.

Использование данного подхода является более рациональным решением, чем указание приоритета 2 в наборе правил, так как в этом случае можно легко изменить приоритет всего трафика, как SSH, так и НТТР, поменяв приоритет по умолчанию каналов ssh-in и http-in.

Можно не задавать общее ограничение для каналов ssh-in и http-in, так как общее ограничение будет указано в канале std-in, который является последним в каждой из цепочек.

Каналы ssh-in и http-in действуют в качестве фильтров приоритетов. Благодаря им через канал std-in будет проходить только зарезервированное количество трафика с приоритетом 2 (64 и 32 кбит/с соответственно). Остальная часть трафика SSH и HTTP, превысившего эти значения, пройдет через канал std-in с приоритетом 0, который является приоритетом негарантированной доставки для каналов std-in и ssh-in.

Порядок цепочек важен. Если указать канал std-in перед ssh-in и http-in, то трафик пройдет через канал std-in с наименьшим приоритетом и, следовательно, будет конкурировать за 250 кбит/с доступной полосы пропускания с остальным трафиком.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

Командная строка:

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=http-all ForwardChain=std_out ReturnChain=http_in,std_in Name=http_shaping

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=ssh ForwardChain=std_out ReturnChain=ssh_in,std_in Name=ssh_shaping

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ForwardChain=std_out ReturnChain=std_in Name=all_shaping

Использование групп

Каналы (Pipes)

Рассмотрим другую ситуацию, в которой общее ограничение полосы пропускания канала составляет 400 кбит/с. Если необходимо разделить эту полосу пропускания среди нескольких IP-адресов назначения таким образом, чтобы на отдельный IP-адрес приходилось не более 100 кбит/с полосы пропускания, необходимо выполнить следующие шаги:

  • Задать обычным способом ограничение канала – 400 кбит/с.
  • Установить в канале опцию Grouping в значении Destination IP.
  • На вкладке Group Limits задать общее ограничение канала для группы – 100 кбит/с.

Теперь полоса пропускания распределяется по принципу живой очереди, однако, ни один IP-адрес назначения не сможет получить более 100 кбит/с. Независимо от количества подключений общая ширина полосы пропускания все же не сможет превысить ограничение для канала в 400 кбит/с.

Рассмотрим взаимосвязь значений, указанных для приоритетов для каналов и групп.

Предположим, что опция создания группы включена с помощью выбора одного из параметров, например, IP-адреса источника, и значения некоторых приоритетов указаны на вкладке Group Limits. Рассмотрим, как эти значения взаимосвязаны со значениями, указанными для этих же приоритетов на вкладке Pipe Limits.

В данном случае значение приоритета на вкладке Group Limits является гарантией полосы пропускания, а значение для того же приоритета на вкладке Pipe Limits является ограничением трафика. Например, если трафик группируется по IP-адресу источника, и на вкладке Group Limits для приоритета 5 задано значение 5 Кбит/с, а на вкладке Pipe Limits приоритету 5 присвоено значение 20 Кбит/с, то после подключения четвертого IP-адреса источника (4 х 5 = 20 Кбит/с) будет достигнуто ограничение приоритета, и далее гарантии полосы пропускания не будут обеспечиваться.

Вместо указания общего ограничения на группу можно включить опцию Dynamic Balancing. Это обеспечивает одинаковое разделение полосы пропускания между всеми участниками группы, не зависимо от их количества.

Если при включенной опции динамической балансировки также задано общее ограничение на группу, например, 100 бит/с, то это означает, что ни один участник группы не сможет получить больше данной величины полосы пропускания.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

Командная строка:

add Pipe std_in LimitKbpsTotal=400 Grouping=DestinationIP UserLimitKbpsTotal=100

add Pipe std_out

Правила каналов (Pipe Rules)

Правило каналов достаточно простое. В данном случае достаточно одного правила.

Веб-интерфейс:

Traffic Management -> Traffic Shaping -> Pipe Rules -> Add -> Pipe Rule

Командная строка:

add PipeRule SourceInterface=lan SourceNetwork=lan/lan_net DestinationInterface=wan1 DestinationNetwork=all-nets Service=all_services ForwardChain=std_out ReturnChain=std_in Name=all_shaping

Александр Косенков
Александр Косенков

В материале Триада безопасной ИТ-инфраструктуры – Конфиденциальность, Целостность в качестве основных технологий обеспечения отказоустойчивости для данных указаны

Защита с помощью RAID.

Шифрование данных и управление ключом.

Стратегии создания копий и восстановления.

Каким образом шифрование обеспечивает отказоустойчивость?

Евгений Шахов
Евгений Шахов

Страница http://www.intuit.ru/studies/courses/14250/1286/lecture/24237

содержит "Интерфейс wan1 имеет IP-адрес 10.6.10.62 и соединен с подсетью 10.6.10.0/28 со шлюзом провайдера, который обеспечиваетвыход в интернет и имеет IP-адрес 10.6.10.3." - что не верно, так как подсеть 10.6.10.0/28 имеет диапазон IP-адресов 10.6.10.1-14, интерфейс wan1 с IP-адресом 10.6.10.62 не "попадает" в указанные пределы.

Дмитрий Ej
Дмитрий Ej
Россия, Москва
Артем Илющенко
Артем Илющенко
Россия, Мурманск, АНО ВПО «Московский Гуманитарно-Экономический Институт», 2011