Как настроить 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, так что вам нужно только включить ее и использовать.
Я не могу гарантировать, что это работает, поэтому, пожалуйста, сделайте свои собственные тесты и сообщите.