Как настроить QoS/SQM с SRA (плавная адаптация скорости) в OpenWrt

Недавно мой провайдер изменил DSL-линию с фиксированной скорости на SRA. Это позволяет модему адаптировать скорость интернета к качеству линии вместо того, чтобы полностью ломаться (мой провайдер не заинтересован в ремонте линии, поэтому он ввел этот режим, потому что раньше у нас было время работы всего 90%), Скорость снижается до и ниже половины максимальной скорости. 1 Мбит / с вместо 2 Мбит / с - это боль, когда несколько человек одновременно используют Интернет, но лучше, чем никакой Интернет.

При настройке QoS ( Качество обслуживания) или SQM ( Smart Queue Management) мне нужно установить скорость загрузки примерно до 90% интернет-соединения. Если я установлю ее выше фактической скорости, она не будет работать. Если я установлю ее слишком низкой, это будет мучительно медленно, в то время как это может быть быстрее.

Поскольку есть много людей, использующих соединение (также смотрящих YouTube с низким разрешением и их машины, выполняющие автообновления, особенно ПК с Windows 10), использование интернета для всего, что находится под влиянием высокой задержки (aka. Ping), действительно раздражает / невозможно без QoS.

Модем провайдера не имеет никакого QoS сам по себе.

Что я могу сделать, чтобы задержка / буферный поток были низкими при максимальной скорости интернета?

(OpenWrt-версия - Chaos Calmer 15.05)

3 ответа

Решение

То, что я закончил, было:

Я написал скрипт, который запускается на openwrt-router каждую минуту, чтобы получить текущую пропускную способность от модема, вычитает некоторый запас и применяет это значение к SQM-config

В случае, если у кого-то еще есть эта проблема, вот сценарий, который я написал. Я новичок в lua и программировании на OpenWrt, так что ожидайте ошибок, но, возможно, это поможет другим.

http=require'socket.http'
body,c,l,h = http.request('http://modem/page_showing_current_speed')

bandwidth = "%[kbps/kbps%]:</td><td colspan='3'>[%d.]+ / [%d.]+</td></tr>"
bw_s = string.sub(body, string.find(body, bandwidth))
bandwidth = "[%d.]+ / [%d.]+"
bw_s = string.sub(bw_s, string.find(bw_s, bandwidth))
upload_r = "[%d.]+ "
upload = string.sub(bw_s, string.find(bw_s, upload_r))
upload_r = "[%d.]+"
upload = string.sub(upload, string.find(upload, upload_r))
upload = upload:gsub("%.", "")
download_r = " [%d.]+"
download = string.sub(bw_s, string.find(bw_s, download_r))
download_r = "[%d.]+"
download = string.sub(download, string.find(download, download_r))
download = download:gsub("%.", "")
print(upload)
print(download)
f = io.open("/etc/config/sqm", "rw")
content = f:read("*all")
f:close(f)
oldcontent = content
content = content:gsub("option download '%d+", "option download '" .. download)
content = content:gsub("option upload '%d+", "option upload '" .. upload)
if content == oldcontent
    then
    else
        print(content)
        f2 = io.open("/etc/config/sqm", "w")
        f2:write(content)
        f2:flush(f2)
        f2:close(f2)

        os.execute("/etc/init.d/sqm restart")
end

затем запустите:

opkg update
opkg install luasocket
crontab -e
* * * * * lua /adjustsqm.lua
/etc/init.d/cron restart

он получает текущую скорость от модема каждую минуту и ​​записывает ее в конфигурацию sqm

Я надеюсь, что вы уже исправили это как-то сейчас. Но если вам это не нужно или кому-то еще нужна помощь, то решение, которое я придумал, заключается в следующем: используйте ваш маршрутизатор openwrt с включенным SQM (желательно торт и не openwrt, а LEDE) для ваших чувствительных к задержкам устройств. Затем подключите дешевую TP-LINK (стоковую прошивку) из его порта wan к порту локальной сети вашего маршрутизатора openwrt/LEDE и включите функцию: ограничить пропускную способность на tplink. Установите его на половину от общей скорости и запустите несколько экземпляров потока YouTube Netflix и т. Д. В сети маршрутизаторов tplink. Затем откройте программы, чувствительные к задержкам, в основной сети (openwrt/LEDE) и измерьте задержку. Если слишком большое значение ниже предела (главным образом, загрузки) на вашем TPLINK, а если слишком низкое, поднимите его до тех пор, пока оно не повлияет на ваш пинг и т. Д., Вам нужно найти правильный баланс. В качестве примечания вы не сможете получить доступ к своей странице маршрутизатора tplinks из openwrt, поэтому вы можете перейти в удаленную настройку и установить для нее значение 255.255 255 255 и установить для адреса wan статический статус, чтобы к нему можно было обращаться из окна openwrt/LEDE.,

Когда вам нужна полная пропускная способность для вашего гостевого Wi-Fi, вы отключаете ограничение пропускной способности. Когда вы не можете выдержать лаг, вы включаете его:D

Это не лучшее решение, может быть, вы могли бы попробовать Pf-sense /IPFIRE qos /sqm, чтобы разделить пропускную способность и прочее, но для этого вам понадобится дополнительный компьютер.

Удачи!!

Попробуйте установить прошивку Gargoyle на свой роутер, на ней должна быть настроена адаптивная QOS, так что вам нужно только включить ее и использовать.

Я не могу гарантировать, что это работает, поэтому, пожалуйста, сделайте свои собственные тесты и сообщите.

Другие вопросы по тегам