web-dev-qa-db-ja.com

OpenWrtでSRA(シームレスレートアダプテーション)を使用してQoS / SQMを構成する方法

最近、ISPがDSL回線を固定料金から [〜#〜] sra [〜#〜] に変更しました。これにより、モデムは完全に故障するのではなく、インターネットの速度を回線の品質に適合させることができます(私のISPは回線の修復に関心がないため、稼働時間が90%しかなかったため、このモードを導入しました) 。速度は最高速度の半分以下になります。 2MBit/sではなく1MBit/sは、複数の人が同時にインターネットを使用している場合に苦痛ですが、インターネットがない場合よりも優れています。

QoS( サービス品質 )またはSQM( スマートキュー管理 を構成する場合、ダウンロード速度をインターネット接続の約90%に設定する必要があります。実際の速度では動作しません。設定が低すぎると、速度は速くなりますが、非常に遅くなります。

接続を使用している人が複数いるため(低解像度のYouTubeとそのマシンが自動更新を行っているのを見て、特にWindows 10 PC)、高遅延(別名ping)の影響を受けるものにインターネットを使用することは本当に迷惑/不可能ですQoSなし。

ISPのモデムには、それ自体にはQoSがありません。

インターネット速度を最大化しながら、レイテンシー/バッファブロートを低く保つにはどうすればよいですか?

(OpenWrtバージョンはChaos Calmer 15.05です)

2
H. Idden

私がやったことは:

Openwrt-routerで毎分実行され、モデムから現在の帯域幅を取得し、マージンを差し引いて、この値をSQM-configに適用するスクリプトを作成しました。

他の誰かがこの問題を抱えている場合に備えて、これが私が書いたスクリプトです。私はOpenWrtでのluaとプログラミングに不慣れなので、エラーを予期しますが、おそらくそれは他の人を助けるでしょう。

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

モデムから毎分現在の速度を取得し、それを平方メートル構成に書き込みます

2
H. Idden

すでになんとかして修正されているといいのですが。しかし、あなたがいないか、誰かがこれについて助けを必要としている場合、私が思いついた解決策は次のとおりです:ラグに敏感なデバイスにはSQMが有効になっているopenwrtルーター(できればケーキでopenwrtではなくLEDE)を使用してください。次に、安価なTP-LINK(ストックファームウェア)をWANポートからopenwrt/LEDEルーターのLANポートに接続し、機能を有効にします:tplinkの帯域幅を制限します。合計速度の半分に設定し、tplinkルーターネットワークでYouTube Netflixトレントなどの複数のインスタンスを起動します。次に、メインネットワーク(openwrt/LEDE)でラグに敏感なプログラムを開き、ラグを測定します。高すぎる場合はTPLINKの制限(主にアップロード)を低くします低すぎる場合はpingなどに影響するまで押し上げます。適切なバランスを見つける必要があります。補足として、openwrtからtplinksルーターページにアクセスできないため、リモート構成に移動して255.255 255 255に設定し、WANアドレスを静的に設定してopenwrt/LEDEボックスからアクセスできるようにすることができます。 。

ゲストWi-Fiに全帯域幅が必要な場合は、帯域幅の上限を無効にします。あなたが遅れに耐えられないとき、あなたはそれをオンにします:D

これは最善の解決策ではありません。Pf-sense/ IPFIRE qos/sqmを試して帯域幅などを分割することもできますが、そのために追加のPCが必要です。

幸運を!!

2
Agus Alexander

ルーターにGargoyleファームウェアをインストールしてみてください。アダプティブQOSが構成されている必要があるため、有効にして使用するだけで済みます。

動作を保証することはできませんので、ご自身でテストしてご報告ください。

0
valentt