====== Ограничение пропускной способности сетевого трафика (SQM и Nft QoS) ====== Возможности базовой операционной системы роутера не позволяют ограничивать скорость трафика, однако это можно сделать с помощью специального ПО. \\ В данной статье мы разберем несколько возможных вариантов регулирования скорости трафика, например, ограничение по интерфейсам с помощью пакета **SQM (Smart Queue Management)** и ограничение по IP или MAC адресу с помощью пакета **Nft QoS**.\\ **SQM** позволяет ограничить общую скорость соединения с провайдером (WAN), клиентов, подключенных к физическим портам LAN (LAN1, LAN2 и пр.), клиентов, например, гостевой Wi-Fi сети, VLAN, туннелей и пр. При этом **SQM не позволяет** ограничивать скорость клиентов по IP или MAC-адресам, для чего нам понадобится уже пакет **Nft QoS**. __Примечание:__\\ SQM может не только ограничивать трафик, но и бороться с таким явлением как [[https://ru.wikipedia.org/wiki/%D0%98%D0%B7%D0%BB%D0%B8%D1%88%D0%BD%D1%8F%D1%8F_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F|bufferbloat]] - нежелательной задержкой, которая возникает, когда маршрутизатор буферизует слишком много данных.\\ Устранение излишней буферизации (без прямой необходимости ограничивать трафик) является одной из основных функций SQM и позволяет более эффективно использовать пропускную способность канала. Но это тема для отдельной статьи.\\ ===== Установка ===== Обратите внимание, что при настройках роутера по умолчанию, у вас может быть активен пункт **Программный flow offloading**. Данный пункт не полностью совместим с используемыми нами пакетами, поэтому перейдите во вкладку ''Сеть'' -> ''Межсетевой экран'' и уберите галочку с этого пункта, если она там есть. {{ :test:flow_offloading.png |}} SQM устанавливается как отдельный пакет (''luci-app-sqm''), после чего он становится доступным в веб-интерфейсе роутера в виде отдельного пункта меню. Подробности в [[advanced:router_opkg|статье о том, как устанавливать пакеты]] и на скриншоте ниже: {{:screenshot-192.168.1.1-2021.09.21-15_07_40.png|}} После его установки потребуется обновить страницу (в некоторых случаях может потребоваться обновить браузер с очисткой кэша (Ctrl+F5) и/или перезагрузить роутер). В результате вы увидите во вкладке ''Сеть'' вкладку ''SQM QoS''.\\ Таким же образом необходимо также установить пакет ''luci-app-nft-qos'', вследствие чего вы также увидите во вкладке ''Службы'' новую вкладку ''QoS over Nftables''. ===== Пример работы с SQM ===== Пункт ''Enable this SQM instanse'' включает функцию ограничения скорости, и в полях ''Download speed'' и ''Upload speed'' вы можете задать скорость в кбит/с для интерфейса, выбранного в поле ''Имя интерфейса''. Обратите внимание, для регулировки скорости соединения на своём пк, например для теста, вам необходимо выбрать в селекторе интерфейса ''wan'', после установки пакета там может быть указан любой другой. {{ :test:enable_sqm.png |}} Почти все остальные опции и вкладки, предназначаются для настроек параметров в контексте решения проблем с излишней буферизацией. Для ограничения скорости достаточно самых минимальных, выше описанных настроек. Попробуем ограничить общую скорость оператора до 1 Мбит/с.\\ Для этого сперва проверим максимальную скорость соединения. В нашем случае она доходит до 632 Мбит/с. {{ :test:graphic1.png |}} Теперь попробуем ограничить скорость 1000 кбит/с и повторно запустим тест скорости. Как видно, ограничение работает. {{ :test:graphic2.png |}} Теперь попробуем выставить ограничение в 2500 кбит/с и повторить тест: {{ :test:3test.png |}} {{ :test:graphic3.png |}} Как видим, всё работает. ===== Пример работы с Nft QoS ===== Для регулировки скорости соединения пользователей с помощью данного пакета, необходимо получить их IP или MAC адрес, для чего мы переходим во вкладку ''Сеть'' -> ''Беспроводная сеть''. Здесь мы видим пункт ''Подключенные клиенты'', в котором указаны необходимые нам данные. {{ :test:podklyuchennie_klienti.png |}} Теперь мы можем перейти во вкладку ''Службы'' -> ''QoS через nftables''. В открывшемся окне по умолчанию активирована возможность ограничения скорости по IP адресу устройства. {{ :test:qos_ip.png |}} Но также данный пакет позволяет вам реализовать ограничение [[advanced:router_sqm#Ограничение пропускной способности сети | пропускной способности сети]], [[advanced:router_sqm#Ограничение по MAC адресу | ограничение скорости через MAC адрес устройства]]. Также присутствует возможность регулировки приоритета трафика для разных потребителей, но это тема для отдельной статьи. ==== Ограничение по IP адресу ==== {{ :test:qos_ip_2.png |}} Данное меню позволяет указать вам:\\ **Тип лимита** - в данном селекторе вы можете выбрать из двух пунктов, ''static'' - вариант, при котором происходит ограничение **скорости соединения** конкретных клиентов, и ''Dynamic'' - вариант, при котором происходит ограничение **пропускной способности** сразу для целой сети из нескольких клиентов;\\ **Скорость загрузки по умолчанию** и **Скорость отправки по умолчанию** - установленные в этих строках значения, будут автоматически присваиваться для устройств, которым вы хотите ограничить скорость соединения;\\ **Единица загрузки по умолчанию** и **Единица отправки по умолчанию** - эти пункты служат для упрощения регулировки и не являются обязательными. Например, вы можете изменить значение с ''KBytes/s'' (килобайт в секунду), которые стоят по умолчанию, на ''MBytes/s'' (мегабайт в секунду), в таком случае значения в строках выше можно указывать уже не ''15 000'', а просто ''15'';\\ **Белый список для ограничения скорости** - здесь вы можете указать список IP адресов устройств, для которых вы хотели бы снять ограничения.\\ Ниже находятся еще две вкладки, в которых вам и нужно будет добавлять новые устройства. ''Статический QoS - Скорость загрузки'' и ''Статический QoS - Скорость отправки'', то есть при желании вы можете ограничивать только один из этих параметров. В необходимой вкладке нажмите кнопку ''ДОБАВИТЬ'' и введите IP адрес нужного устройства, а также желаемую скорость, если она будет отличаться от выставленной по умолчанию. После чего не забудьте нажать на кнопку ''СОХРАНИТЬ И ПРИМЕНИТЬ''.\\ В нашем примере мы ограничили и скорость загрузки и скорость отправки для устройства, но сделали её выше, чем установленную по умолчанию. {{ :test:qos_ip_nastroika.png |}} Обратите внимание, что регулировка скорости происходит в **Мегабайтах**, а тест в **Мегабитах**, поэтому указанные нами 1000 Килобайт превратились в 8 Мегабит. {{ :test:test_klienta.png |}} ==== Ограничение пропускной способности сети ==== Если изменить ''Тип лимита'' на ''Dynamic'', то в открывшемся окне вы можете ограничить пропускную способность для сети, то есть **суммарно** для всех клиентов находящихся в ней. Вам требуется только указать желаемые ограничения и целевую сеть, например по умолчанию сеть вашего роутера будет обозначаться **192.168.1.0/24**.\\ Также при необходимости вы можете указать устройства на которые не будет распространяться ограничение, для этого нужно ввести в строку ''Белый список для ограничения скорости'' IP адрес устройства и нажать кнопку ''+''. {{ :test:qos_ip_dyanamic.png |}} ==== Ограничение по MAC адресу ==== Для того чтобы настроить ограничение скорости по MAC адресу устройства, необходимо поставить галочку напротив пункта ''Включить ограничение'' и нажать на кнопку ''СОХРАНИТЬ И ПРИМЕНИТЬ'', после чего у вас появится новая вкладка ''Ограничение скорости трафика по MAC-адресу''.\\ Нажимаем на кнопку ''ДОБАВИТЬ'' и указываем необходимые ограничения в появившейся строке. После настройки не забудьте снова нажать на кнопку ''СОХРАНИТЬ И ПРИМЕНИТЬ''. {{ :test:qos_mac.png |}}