Ssh
如何區分 OpenWRT(和其他系統)中 QoS 的 SSH 和 SCP?
我經常使用 SCP 通過我的 DSL 上游連接上傳大量數據,該連接限制為 1kbit/s。雖然我真的希望互動式 SSH 會話具有最高優先級,但簡單地將 SSH 設置為最高優先級會使連接在 SCP 上傳期間無法使用。
如何區分服務質量設置的 SSH 和 SCP,尤其是在 OpenWRT 中?
至少 OpenSSH 設置了不同的 TOS 位(
0x16
用於互動式會話,0x08
用於批量傳輸),如quora 上所討論的。使用與這些位匹配的規則可以輕鬆利用這一點。似乎最高匹配的 QoS 生效,請確保不要對埠 22/SSH 有一個通用規則:OpenWRT 預設情況下將匹配 SSH 和 DNS 的規則一起發送。對於那裡的規則,我使用了 和 的重疊 DSCP 值,
0x04
正如0x02
上面連結的 quora 文章中所建議的那樣。config classify option target "Priority" option ports "22" option dscp 0x04 option comment "ssh" config classify option target "Bulk" option ports "22" option dscp 0x02 option comment "scp"
對於“裸”iptables 設置,這些是生成的規則(
-m dscp --dscp 0x04
和-m dscp --dscp 0x02
參數是最有趣的部分):-A qos_Default_ct -p tcp -m mark --mark 0x0/0xf -m tcp -m multiport --ports 22 -m dscp --dscp 0x04 -m comment --comment ssh -j MARK --set-xmark 0x11/0xff -A qos_Default_ct -p tcp -m mark --mark 0x0/0xf -m tcp -m multiport --ports 22 -m dscp --dscp 0x02 -m comment --comment scp -j MARK --set-xmark 0x44/0xff
請務必在使用 重新載入 QoS 設置後重新啟動 SCP 傳輸
/etc/init.d/qos restart
。QoS 設置僅適用於新流。在應用這些規則之前(使用單個 SSH“優先級”規則),我在 SCP 上傳期間有大約 200 毫秒的 ping;應用規則後,它下降到 70-100 毫秒(與通過空閒線路的 30 毫秒相比)。