導航:首頁 > 操作系統 > linux網卡限速

linux網卡限速

發布時間:2022-08-30 05:59:11

㈠ 關於linux網卡帶寬設置的問題

首先你得netem QDiscipline設置看起來沒什麼區別,limit太大,loss 0%和默認一樣,剩下的delay 10ms都是指所有pakcat按照延遲10ms進行發送

至於你的TBF設置,用了TBF自身提供的兩個途徑

TBF叫做Token Bucket Filter.總體的思路就是數據包要領到Token(令牌)才能被發送,而令牌的產生速率收到rate這個參數的限制。Token是一個抽象的概念,Token的大小都是指的Token所指向的數據包的大小。

當要發送的速率低於令牌產生的速度時,所有的數據包都能領到Token,並且多餘的Token會在你的Buffer里積累。積累的上限由Buffer/Burst這個參數指定。

當發送的速率等於Token產生的速度時,Token正好被完全消耗,所有的數據包都會發送,並且buffer不會積累多餘的Token

當發送的速率大於Token的速率,如果Buffer里還有多餘的Token,就會開始消耗Buffer的Token,同時允許數據包通過。如果buffer的Token耗盡,數據包就不被允許通過,並且進入Txqueue(發送隊列)排隊。如果排隊的尺寸大於limit(你的第一個TBF有指定),則隊列不能再增長,新到來的數據包會被drop。

明白上面的概念之後你的兩條命令的區別也就容易看懂了。

第一個是用的Buffer/Limit
Buffer就是瞬間可以額外提供的Token的數量。Rate限制了你的持續上傳速率為1Mb/s,然後在你長時間網路流量很低時,你得Token會積累,最後你可以有Buffer這么大(1600b)的緩沖無視rate的限制(可以瞬間發送1600b,所以叫做突發)。至於後面的limit 3000,是指你當你的緩沖區(Txqueue)超過3000b時,新來的包會被Drop

第二個用的是Burst/latency/rate組合
這里的burst和上面的buffer含義完全相同,都是能夠以高於rate所限定的速度發送的數據量(4Mb,比第一個的大很多)。至於Latency,是對應limit的量。Latency規定的是數據包能在Txqueue中呆的最長的時間(你的是1S),在Txqueue中呆超過1s的包都會被Drop。所以結合你的rate來計算,latency 1s+rate 1Mbit/s 等價於 limit為1Mbit*1s=1Mb

*tc只能規整egress traffic,就是從NIC流出的流量(上傳),對於下載,要用IFB將ingress(下載)模擬成egress

㈡ linux下如何實現對每個IP進行限制帶寬

linux traffic control,命令是tc。用tc命令設置就可以了。

㈢ linux伺服器網卡流量過大對網卡會有什麼影響

本身無影響,會增加cpu佔用,如果帶寬不夠可以加一塊相同的做成一塊用。

㈣ linux伺服器要怎樣針對IP流量限制

不是木馬,是設置問題,下面是流量的控制方法一、Linux流量控制過程分二種:1、隊列控制即QOS,瓶頸處的發送隊列的規則控制,常見的有SFQPRIO2、流量控制即帶寬控制,隊列的排隊整形,一般為TBFHTB二、Linux流量控制演算法分二種:1、無類演算法用於樹葉級無分支的隊列,例如:SFQ2、分類演算法用於多分支的隊列,例如:PRIOTBFHTB三、具體實現:1.在網卡上建立以SFQ演算法的限流#tcqdiscadddeveth0roothandle1:sfqSFQ參數有perturb(重新調整演算法間隔)quantum基本上不需要手工調整:handle1:規定演算法編號..可以不用設置由系統指定..#tcqdiscshdeveth0顯示演算法#tcqddeldeveth0root刪除注:默認eht0支持TOS2.在網卡建立以TBF演算法的限流#tcqdadddeveth1roothandle1:速率256kbit突發傳輸10k最大延遲50ms#tc-sqdshdeveth1統計#tcqddeldeveth1root刪除3.在網卡建立PRIO#tcqdiscadddeveth0roothandle1:prio#此命令立即創建了類:1:1,1:2,1:3(預設三個子類)#tcqdiscadddeveth0parent1:1handle10:sfq#tcqdiscadddeveth0parent1:2handle20:注:此為TBF限速的另一寫法,前文有講解.#tcqdiscadddeveth0parent1:3handle30:sfq4.WEB伺服器的流量控制為5Mbps,SMTP流量控制在3Mbps上.而且二者一共不得超過6Mbps,互相之間允許借用帶寬#tcqdiscadddeveth0roothandle1:#tcclassadddeveth0parent1:0classid1:.這部分按慣例設置了根為1:0,並且綁定了類1:1.也就是說整個帶寬不能超過6Mbps.#tcclassadddeveth0parent1:1classid1:.#tcclassadddeveth0parent1:1classid1:.建立了2個類.注意我們如何根據帶寬來調整weight參數的.兩個類都沒有配置成"bounded",但它們都連接到了類1:1上,而1:1設置了"bounded".所以兩個類的總帶寬不會超過6Mbps.別忘了,同一個CBQ下面的子類的主號碼都必須與CBQ自己的號碼相一致!#tcqdiscadddeveth0parent1:3handle30:sfq#tcqdiscadddeveth0parent1:4handle40:sfq預設情況下,兩個類都有一個FIFO隊列規定.但是我們把它換成SFQ隊列,以保證每個數據流都公平對待.#tcfilteradddeveth0parent1::3#tcfilteradddeveth0parent1::46.過濾器過濾示例#::1在10:節點添加一個過濾規則,優先權1:凡是去往22口(精確匹配)的IP數據包,發送到頻道10:1..#::1在10:節點添加一個過濾規則,優先權1:凡是來自80口(精確匹配)的IP數據包,發送到頻道10:1..#:prio2flowid10:2在eth0上的10:節點添加一個過濾規則,它的優先權是2:凡是上二句未匹配的IP數據包,發送到頻道10:2..#tcfilteradddeveth0parent10:.3.2.1/32flowid10:1去往4.3.2.1的包發送到頻道10:1其它參數同上例#tcfilteradddeveth0parent10:.2.3.4/32flowid10:1來自1.2.3.4的包發到頻道10:1#:prio2flowid10:2凡上二句未匹配的包送往10:2#tcfilteradddeveth0parent10:.3.2.1/:1可連續使用match,匹配來自1.2.3.4的80口的數據包

㈤ linux如何限制每個進程的網速

1、用 iptables 的 owner 模塊,給 --pid-owner 加上 MARK,然後 tc 里針對這個 MARK 做限速 現在的伺服器上,基本已經普及了 SMP ,更進一步的,內核已經在自動發現支持 SMP 的時候,在 iptables 里把 owner 模塊的 pid/cmd/sid 三個 match 都去掉了!現在的 owner 里只有 uid/gid 兩個。所以這條路,在生產環境上基本行不通。所以推薦下面的兩種方法:

2、使用 pipeviewer和 trickle這兩個工具。trickle 是在BSD 上誕生的項目,這個工具使用ELF 的 preloader 機制,在命令執行的時候替換掉標准庫中的 socket recv() 和 send() 部分,達到限速的效

3、cgroup ,它有 net_cls 控制器。不過和其他控制器不太一樣的是它不直接控制網路讀寫,只是給網路包打上一個標記,然後把專業的事情交給專業的 TC 去做。嗯,思路和原先的 iptable 是很類似的。

㈥ linux中如何控制埠流量

配置網卡
建立一台虛擬機,並安裝完成後以橋接的方式在虛擬機上面添加兩張網卡。分別為eth0和eth1。
eth0: a.b.c.d(外網的上網地址)
eth1: 172.16.44.1(做為內網的網關)

Tip
原先我使用eth0:0的這種虛擬網卡的形式去配置一直不成功,後來使用雙網卡的時候一直忘了把eth0:0這張虛擬網卡刪掉導致了限速配置一直不成功,浪費了大把的青蔥。
配置iptables nat
#開啟ip_forward
echo "1">/proc/sys/net/ipv4/ip_forward

#清除原來的防火牆規則
iptables -F
iptables -t nat -F
iptables -t mangle -F

#添加nat轉發
iptables -t nat -A POSTROUTING -s 172.16.44.0/24 -o eth0 -j MASQUERADE

通過執行上面的代碼後,區域網內的電腦就可以上網了。
埠轉發
由於我的內網還掛了網站,所以要開啟80埠的轉發。
iptables -t nat -I PREROUTING -p tcp -d a.b.c.d --dport 80 -j DNAT --to 172.16.44.210:80
iptables -t nat -I POSTROUTING -p tcp -d 172.16.44.210 --dport 80 -j SNAT --to 172.16.44.1

這條命令指定外網地址a.b.c.d的80埠轉發到172.16.44.210:80上。由於是雙網卡,所以需要做一下迴路。
下載限速
下載限速要在eth1上面做,判斷數據包的目的地址來做限制。tc包括三部分:隊列、類、過濾器。我使用了htb方式去限制速度,也可以使用cbq,但cbq配置比較復雜一點,而且據說性能沒htb好。
#刪除原來的tc規則隊列
tc qdisc del dev eth1 root
#添加tc規則隊列
tc qdisc add dev eth1 root handle 10: htb default 256
#生成根類
tc class add dev eth1 parent 10: classid 10:1 htb rate 100mbit ceil 100mbit
#支類列表用於限制速度
#這里的rate指的是保證帶寬,ceil是最大帶寬。
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 400kbps ceil 400kbps prio 1

#添加支類規則隊列
#採用sfq偽隨機隊列,並且10秒重置一次散列函數。
tc qdisc add dev eth1 parent 10:10 handle 101: sfq perturb 10

#建立網路包過濾器,設置fw。
tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1 fw classid 10:10
#在iptables裡面設定mark值,與上面的handle值對應。
iptables -t mangle -A POSTROUTING -d 172.16.44.130 -j MARK --set-mark 1

通過上面的代碼就可以限制172.16.44.130這台機子的下載速度到400kbps。
Tip
經過實際測試這里的kbps實際上就是KB/S每秒千位元組。另一個單位是kbit,這個才是每秒千比特。這里的172.16.44.130也可以寫成一個網段,比如:172.16.44.0/24
上傳限速
上傳限速的原理其實跟下載的差不多,只不過限制的網卡不同,要在eth0上過濾來源地址去限制。
#刪除原來的tc規則隊列
tc qdisc del dev eth0 root

#添加tc規則隊列
tc qdisc add dev eth0 root handle 20: htb default 256

#生成根類
tc class add dev eth0 parent 20: classid 20:1 htb rate 100mbit ceil 100mbit

#支類列表用於限制速度
tc class add dev eth0 parent 20:1 classid 20:10 htb rate 40kbps ceil 40kbps prio 1

#添加支類規則隊列
tc qdisc add dev eth0 parent 20:10 handle 201: sfq perturb 10

#建立網路包過濾器
tc filter add dev eth0 parent 20: protocol ip prio 100 handle 2 fw classid 20:10
iptables -t mangle -A PREROUTING -s 172.16.44.130 -j MARK --set-mark 2

Tip
跟下載不同的是POSTROUTING要改成PREROUTING,-d改成-s。
觀察連接數
通過iptables的nat連接可以通過下面的代碼查看。至於統計連接數可以寫代碼實現,也可以利用awk,grep等工具。反正裡面的內容就是文本,處理起來也比較簡單。
cat /proc/net/ip_conntrack

寫在結尾
到此上網、埠轉發和流量限制都已經實現。下次再考慮配置個dhcp server和dnsmasq。至於一些路由器其它諸如mac地址綁定,限制上網等用到的時候再去研究研究。

㈦ linux下有什麼可以限制網速的軟體

專門的限速軟體,只有linux防火牆如:pfsence,不過默認的iptables防火牆也可以限速的
如以ip地址來限速
iptables -A FORWARD -m limit -d 202.96.209.6 --limit 2400/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -d 202.96.209.6 -j DROP
iptables -A FORWARD -m limit -s 202.96.209.6 --limit 2400/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -s 202.96.209.6 -j DROP
限制某網段
iptables -A FORWARD -s 192.168.100.0/24 -m limit --limit 100/s -j ACCEPT
iptables -A FORWARD -s 192.168.100.0/24 -j DROP
以協議icmp放ddos限速
iptables -A INPUT -f -m limit --limit 150/sec --limit-burst 100 -j ACCEPT
限制ssh接入頻率
iptables -A INPUT -p tcp –dport 22 -s 10.1.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -j ratelimit

㈧ 為什麼linux下的無限網卡速度慢阿

網卡大功率 信號很強 只能說明信號由你網卡發出去 信號傳得遠,中途信號強度損失小,但是 你接受信號就不一樣, 別人路由器發送信號低,在途中信號損失較嚴重,當網卡接收到時,信號都已經損失了一大半,那網速肯定低。

㈨ 如何對linux下某個埠限速

iptables不行,需要用tc進行流量控制。
iptables可以通過限制包的數量來控制速度 --m limit --limit xx/s

㈩ 為什麼150m的網卡在Linux上用hostapd開出的熱點只有54Mbps的速度

這個不是說你的無線網卡是150M就一定連接成150M,原因如下:

  1. WiFi設置問題,WiFi一般會設置成自動分配帶寬,比如說300M的WiFi,10個人連接,可能每個人平均分配到30M,無線顯卡里也顯示30M,當然不會這么公平的,可能會多或者會少,即使是手動分配,也不會超過100M;

  2. 電腦無線網卡本地設置,在無線網卡屬性中有一個設置,會強制帶寬到多少;

  3. 最後一個就是協議,看你的無線網卡和WiFi支持那種802.1哪種協議,a/b/n/g/ac,每個協議有個最大允許帶寬。

閱讀全文

與linux網卡限速相關的資料

熱點內容
app是什麼東西合法嗎 瀏覽:227
怎麼鎖app視頻教程 瀏覽:839
迅捷pdf注冊碼生成器 瀏覽:742
androidsdkosx 瀏覽:296
壓縮面膜紙熒光 瀏覽:837
app怎麼分身三個 瀏覽:742
電影bt下載源碼 瀏覽:417
iwatch屏幕加密晶元 瀏覽:566
公安主題網站源碼 瀏覽:982
天津市伺服器供應商雲伺服器 瀏覽:113
數控車床子程序編程 瀏覽:108
floydwarshall演算法 瀏覽:715
丟失微信app怎麼找 瀏覽:250
php能寫前端嗎 瀏覽:6
伺服器如何更改raid模式 瀏覽:90
方舟伺服器怎麼導出來 瀏覽:608
手機顯示伺服器異常什麼鬼 瀏覽:379
新聞伺服器的網址是什麼 瀏覽:669
程序員年底招人 瀏覽:319
廣發app怎麼查房貸 瀏覽:860