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

3888
H. Idden

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

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

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

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

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

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

2

3 ответа на вопрос

2
Agus Alexander

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

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

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

Удачи!!

1
H. Idden

Я закончил тем, что сделал:

Я написал скрипт, который запускается на 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

Можете ли вы поделиться своим сценарием? valentt 6 лет назад 0
@valentt Это далеко от совершенства и должно быть адаптировано к типу модема, но я добавил его в качестве отправной точки H. Idden 6 лет назад 0
0
valentt

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

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

Похожие вопросы