
Преамбула.
Есть ЛВС 40 ПК(Unutu + RDP клиент Remmina), канал передачи данный 50 Мбит. Шлюз Mikrotik RB3011UiAS. Часть ПК находятся в складском корпусе, который соединен с административным выделенным каналом 100 Мбит. Основная работа происходит на удаленном RDP сервере. Так же между офисом и сервером поднят PPTP туннель через который подключены офисные и складские принтеры. Т. к. Linux + Remmina + проброс принтеров по RDP - это боль.
Особенно в разрезе того, что печатают, ну очень много. 3-4 тысячи страниц за рабочий день. А часто больше.
Длительное время наблюдалась следующая картина: Регулярные внезапные обрывы RDP сессии. Причем, в складском корпусе это происходило чаще, чем в "офисе". И с каждым годом ситуация ухудшалась. Т. е. если 3 года назад RDP на складе рвалось 2-4 раза в день. То на октябрь 2023 15-20 раз. Пользователи "завыли". Понять их можно... Короче, партия сказала разобраться, комсомол ответил есть.
Для начала был проверен выделенный канал, т. к. первое, что пришло в голову, проблемы с ним. Но, нет. Скорость соответствует заявленной, потерь нет.
Позвонил провайдеру. Само собой говорящая голова из тех. поддержки начала меня уверять, что все просто отлично, они лично контролируют каждый пакет, составляют акт с печатью и т. д. Но, я таки продавил и меня перевели на уровень, где обитают профессионалы).
Пообщавшись с инженером, ситуация начала прояснятся. В течение рабочего дня очень часто полностью выбирается ширина канала, в работу вступает шейпер провайдера и начинает дропать пакеты. А т. к. RDP чувствителен к потере пакетов, сервер тупо разрывает соединение...
Ну, а, поскольку, объем передаваемой информации из года в год растет, проблема прогрессирует вслед за ним. Обрывы сессии на складе происходят чаще, т. к. раундтрип складских пакетов больше и их потери чаще.
Амбула.
Решил построить систему ограничения траффика на простых очередях(Simple Queue), т. к. деревья в данном случае, совершенно избыточны.
Что сделал.
Создал 2 правила в цепочке mange для маркировки RDP Трафика(ip address + port). Первое маркирует соединение, второе пакеты этого соединения.
Создал родительскую очередь(main) с типом PFIFO и размером 100 пакетов. Ограничение скорости 47500 Kbit(5% от ширины канала).
Для приоритезации RDP траффика.
Создал очередь потомка main (RDP) - Max. Limit 47500 Kbit, Limit At 0, Priority 1, Queue Type PCQ, размер очереди 100 пакетов. Общий размер 5000Kib.
Все остальное.
Создал очередь потомка main (ALL) - Max. Limit 47500Kibt, Limit At 4Mbit, Priority 2, Queue Type PCQ, размер очереди 50 пакетов. Общий размер 2500Kib.
Идея всего этого заключается в следующем. Пакеты не должны дропаться "моим" шейпером. Путь лучше будет задержка, чем потери. Для этого увеличил размер основной очереди и очереди RDP. На остальной трафик "пофиг". Выбирать трусы на ягодках можно и так...
Смущают следующие моменты, в следствие того, что я, таки не профессиональный сетевой инженер.
Тип главной очереди и ее длина. Насколько понимаю, работает так. Пакет попадает в главную очередь, и если ее размер меньше заданного, ждет передачи дальше. Если очередь забита, пакет отбрасывается.
Далее пакет попадает в очередь RDP и если он правильно помечен, обрабатывается в ней по алгоритму PCQ с высшим приоритетом. Если очередь забита, пакет отбрасывается.
Если пометки нет. Пакет попадает в ALL и обрабатывается уже там.
Вопросы такие. Насколько правильно выбран тип очередей?
Насколько правильно выбраны размеры очередей?
Насколько адекватно все то, что я понаписали сделал?
