Linux

如何根據 IP 配置 QoS?

  • September 3, 2016

我們已經說過,專用網路中的使用者通過一個正在執行(NAT)的地址4連接到 Internet 。我必須配置為允許使用者訪問,但對使用者有限制的頻寬,而對其他人沒有限制。Linux router``public IP``network address translation``QoS``Internet``2

eth0:121.51.26.35
eth1:10.239.107.1

eth0ofLinux Router是一個10Mbps連結。eth1連接到switch並且4節點連接到switch。我想配置tc2 nodes僅限制一組使用者的頻寬,(XyZ in picture)以便僅3Mbps累積使用。(當1個使用者下載/上傳時,他/她必須得到3Mbps,但當3個使用者同時下載/上傳時,他/她必須收到1MBps

首先請讓我知道要求是否可以實現,如果可以,我該如何進行?

下面是拓撲

在此處輸入圖像描述

你需要選擇像 HFSC 或 HTB 這樣的類感知 qdisc。

然後你必須像這樣建構一個類樹:

Root Class (10MBit)
|
\--- XyZ Class (rate 3Mbit ceil 3Mbit)
|    |
|    \--- Client 10 (rate 1.5Mbit ceil 3Mbit)
|    \--- Client 11 (rate 1.5Mbit ceil 3Mbit)
|
\--- Client 30 (rate 3.5Mbit ceil 10Mbit)
\--- Client 40 (rate 3.5Mbit ceil 10Mbit)

這在兩個界面上(用於上傳和下載整形)。

使用 HTB 以獲得可預測的結果,您應該確保子項的總和始終等於父項。所以 Root 有 10Mbit,其直接子節點相等(Xyz 3Mbit + Client30 3.5Mbit + Client40 + 3.5Mbit == 10Mbit)。同樣,XyZ 有 3Mbit 及其子 Client10+Client11。

多年前,我寫了一個類似的腳本:

https://github.com/frostschutz/FairNAT

今天它沒有維護,但也許它可以給你一些想法。

Linux 中的流量整形是一個有點被忽視/深奧的領域,也很難找到好的文件。不知道這是否曾經改變…

http://lartc.org/ (忽略wondershaper部分)

和核心數據包旅行圖http://www.docum.org/docum.org/kptd/(也是常見問題解答)

或者,如果這太複雜了,也許像 ESFQ 這樣的無狀態 qdisc 會為您解決問題。它試圖在客戶端之間實現某種平衡,而不實際應用任何硬頻寬限制。

祝你好運。

引用自:https://unix.stackexchange.com/questions/208450