Доброго времени суток.
Сразу оговорюсь, я вообще практически ничего не знаю о QoS, поэтому любой совет будет к месту.
Имеется VyOS в качестве пограничного устройства. Интерфейс, куда приходит ISP - eth0, интернет используют 3 сети - 2 LAN и один белый маршрутизируемый пул, арендуемый у оператора связи. Мне нужно ограничить исходящий трафик до 256 Мбит, при этом обе LAN можно ограничить сотней Мбит (суммарно на двоих), белый пул, например 220 Мбит/сек. Приведу крайне упрощенную схему:
http://www.imageup.ru/img229/3053300/scheme.png.html
Вся адресация вымышленная.
В общем, начал я читать документацию по Brocade Vyatta 5400 как наиболее полную, суть механизмов на VyOS и Vyatta одна. Собрал схему в EVE-NG и понял, что ничего не понял (ну, что-то понял, но недостаточно), так что попробую задать пару вопросов:
1. Как я понял, мне нужна traffic-policy либо Shaper, либо Limiter, но так как Limiter предназначена для входящего трафика, то выбираю Shaper. В правильном направлении смотрю?
2. Верно ли я понял, что при использовании Shaper, все, что выше указанной полосы пропускания будет буферизироваться, а не просто дропаться, и это не приведет к куче ретрансмиссий? Судя по описанию Traffic Limiter'а это именно так:
The “traffic-policy limiter” mechanism can be used to throttle (or “police”) incoming traffic. The mechanism assigns each traffic flow a bandwidth limit. All incoming traffic within a flow in excess of the bandwidth limit is dropped. The advantages are that this policy does not incur queuing delay and it is the only policy that can be applied to inbound traffic. The disadvantage is that it is more likely to drop packets and cause retransmissions. Shaper or rate-control are typically used to throttle outgoing traffic where queuing delays can be tolerated. They will buffer traffic in excess of the bandwidth limit and will not drop packets unless the buffers overflow.
Я просто не уверен, будет ли при 'traffic-policy shaper' все, что выше полосы, буферизироваться, если политика будет висеть на eth0 в направлении out. Я бы дал ссылку на описание traffic-policy, но не знаю, как вставить ссылку с js, сама документация здесь http://www1.brocade.com/downloads/documents/html_product_manuals/vyatta/vyatt..., раздел QoS.
3. Чем все-таки отличаются traffic-policy от queue-type? Я так понимаю, я могу использовать политику SFQ, а могу использовать политику Shaper и указать SFQ для каждого класса.
4. Предположим, создал я политику Shaper с bandwidth 100mbit, создал 2 класса, указал для них в качестве match адрес источника; для первого класса bandwidth=60%, ceiling=80%; для второго класса bandwidth=70%, ceiling=90%; для default bandwidth=40%, ceiling=50%. Итого имею 3 типа трафика - 2 класса и default. Для всех указал queue-type SFQ (по умолчанию, как я понял, работает FIFO). Т.е. внутри каждого класса каждому дается какой-то квант времени, и, если не вдаваться в детали работы механизма, то внутри каждого класса «всё по-честному». А между классами как? ведь суммарно они могут потребить 170% от 100mbit.
5. Что такое burst? Ок, вот описание:
Use this command to set the burst size for the traffic class. This is the maximum amount of traffic that may be sent at a given time.
А вот, что я видел на форуме ubiquiti (EdgeOS, вроде, та же Vyatta):
Not really, the burst refers to the «bucket size» used in the shaping algorithm. Generally it is only necessary to change it if the shaping result is not sufficiently accurate.
Ладно, это какая-то корзина, размер которой участник политики может послать за какой-то промежуток времени. По умолчанию 15 KB. Но за какой промежуток времени, и какой интервал между этими промежутками должен пройти до следующего «бурста»?
6. От этого вопроса место пониже спины горит особенно сильно.. Что же такое ceiling??? В куче примеров видел описание, что ceiling это тот потолок от общей bandwidth политики, которую сможет использовать какой-то класс или default, если эта полоса в данный момент свободна. Например:
[edit]
admin@NEO# show policy
qos {
shaper INTERNET_OUT {
bandwidth 256mbit
class 10 {
bandwidth 60%
ceiling 95%
description "PUBLIC POOL 8.8.8.0/24"
match PUBLIC_POOL {
filter PUBLIC_POOL
}
queue-type fair-queue
}
default {
bandwidth 40%
ceiling 70%
queue-type fair-queue
}
}
}
На синтаксис не обращайте внимания, это не чистый VyOS, а Altell NEO (который на Vyatta, да). Так вот, тестирую на default. У него bandwidth 40%, т.е. ~102 Мбит, ceiling 70%, т.е. если полоса свободна, то default сможет использовать для upload'а ~179 Мбит. Но хрен там плавал. Полоса свободна практически полностью, и я имею на аплоад около 92-95 Мбит. Если я режу bandwidth для default до, например, 10%, то получаю на аплоад 20 Мбит. Что за дела? Ceiling ведь 70% и полоса свободна, я должен иметь 179 Мбит даже если поставлю bandwidth 1% (до тех пор, пока канал никем больше не используется). Я не правильно понял логику ceiling и этот самый потолок работает в пределах какого-то класса или default, т.е. 70% от тех 40%? Тогда эта настройка вообще выглядит бесполезно.
P.S. рассчитывал в лабе попробовать после включения политики iperf'ом одновременно померить скорость от LAN1, LAN2 и PUBLIC до some_internet, но одновременно никак, даже если сервер включить как демон (iperf -s -D). Есть какой-нибудь такой iperf, чтобы от нескольких клиентов подключиться к одному серверу одновременно?