Linux

流量控制 - 是否可以區分 www 瀏覽和 www 批量(iso 下載)流量?

  • October 8, 2019

最近我正在努力將大文件上傳到網站,這個上傳佔用了整個頻寬並削弱了我的網路。所以我實現了每秒分塊一個 1MB 的塊及其工作,但現在我在想我可以使用流量控制來實現相同的效果並獲得更好的結果。

我的問題:流量控制是否智能,可以區分 www 瀏覽和 www 批量上傳/下載大文件。

tc qdisc add dev imq0 root handle 1:0 htb default 666
tc class add dev imq0 parent 1:0 classid 1:1   htb rate 90000kbit ceil 90000kbit

tc class add dev imq0 parent 1:1 classid 1:888 htb rate 10000kbit ceil 40000kbit prio 0    # browse www traffic
tc class add dev imq0 parent 1:1 classid 1:666 htb rate 10000kbit ceil 40000kbit prio 1    # bulk www traffic

tc filter add dev imq0 protocol ip parent 1:1 prio 2 u32 match ip tos 0x08 0xff  flowid 1:666 # bulk www traffic
tc filter add dev imq0 protocol ip parent 1:0 prio 2 u32 match ip sport   80 0xffff flowid 1:888  # http
tc filter add dev imq0 protocol ip parent 1:0 prio 2 u32 match ip sport  443 0xffff flowid 1:888  # https

像這樣的東西會起作用嗎?(現在不能檢查。)

您的解決方案依賴於 Web 瀏覽器行為來相應地設置 IP ToS 欄位。這只能在受信任的環境中依賴。

我可以輕鬆地在我的機器上編寫 mangle 規則,將所有 ToS 扁平化為某個值,而您的 TC 規則將無法將我的批量與瀏覽區分開來。

另外,我不確定所有瀏覽器和其他 http(s) 軟體總是對相同的事情使用相同的 ToS。有很多這樣的軟體:wget 和其他下載器;網站鏡像(wget 也可以,但有專門的軟體),它不僅下載一些大文件,還下載所有頁面必需品;許多瀏覽器,包括 firefox、lynx、links,即 edge、chrome-based——它們都使用不同的引擎,並且可以顯示不同的網路行為;與 REST 相關的東西,它只是通過 http 來回發送小消息。在網路世界裡也有 Websocket 解決方案,它和你所知道的 http 完全不同。

因此,僅當您仔細控製網路時,對 ToS 的依賴才有用。

在一般情況下,不同之處在於瀏覽使用短暫的流量,而下載則填滿了通道的容量。您可以設置相當低的平均 HTB 速度,這將對應於平均瀏覽和下載速度,同時保持桶大小(突發大小)相當大以容納完整的網頁。然後網頁瀏覽將體驗到一樣快(因為大桶),但由於頁面獲取很少,將有足夠的時間來為下一頁補充桶。另一方面,下載會耗盡儲存桶,並且不會有空閒時間來補充它,就像你的極限一樣慢。

引用自:https://serverfault.com/questions/987133