當前位置:首頁 » 操作系統 » linux網卡流量

linux網卡流量

發布時間: 2022-08-23 21:19:34

『壹』 linux 雙網卡綁定 流量怎麼走

linux的雙網卡bond,共有7種模式,可參閱網路文章。

第一種模式:mod=0 ,即:(balance-rr)Round-robin
policy(平衡掄循環策略)

特點:傳輸數據包順序是依次傳輸(即:第1個包走eth0,下一個包就走eth1….一直循環下去,直到最後一個傳輸完畢),此模式提供負載平衡和容錯能力;但是我們知道如果一個連接或者會話的數據包從不同的介面發出的話,中途再經過不同的鏈路,在客戶端很有可能會出現數據包無序到達的問題,而無序到達的數據包需要重新要求被發送,這樣網路的吞吐量就會下降

第二種模式:mod=1,即: (active-backup)Active-backup
policy(主-備份策略)

特點:只有一個設備處於活動狀態,當一個宕掉另一個馬上由備份轉換為主設備。mac地址是外部可見得,從外面看來,bond的MAC地址是唯一的,以避免switch(交換機)發生混亂。此模式只提供了容錯能力;由此可見此演算法的優點是可以提供高網路連接的可用性,但是它的資源利用率較低,只有一個介面處於工作狀態,在有 N 個網路介面的情況下,資源利用率為1/N

第三種模式:mod=2,即:(balance-xor)XOR policy(平衡策略)

特點:基於指定的傳輸HASH策略傳輸數據包。預設的策略是:(源MAC地址 XOR 目標MAC地址)%
slave數量。其他的傳輸策略可以通過xmit_hash_policy選項指定,此模式提供負載平衡和容錯能力

第四種模式:mod=3,即:broadcast(廣播策略)

特點:在每個slave介面上傳輸每個數據包,此模式提供了容錯能力

第五種模式:mod=4,即:(802.3ad)IEEE 802.3ad
Dynamic link aggregation(IEEE802.3ad 動態鏈接聚合)

特點:創建一個聚合組,它們共享同樣的速率和雙工設定。根據802.3ad規范將多個slave工作在同一個激活的聚合體下。外出流量的slave選舉是基於傳輸hash策略,該策略可以通過xmit_hash_policy選項從預設的XOR策略改變到其他策略。需要注意的 是,並不是所有的傳輸策略都是802.3ad適應的,尤其考慮到在802.3ad標准43.2.4章節提及的包亂序問題。不同的實現可能會有不同的適應 性。

必要條件:

條件1:ethtool支持獲取每個slave的速率和雙工設定

條件2:switch(交換機)支持IEEE802.3ad
Dynamic link aggregation

條件3:大多數switch(交換機)需要經過特定配置才能支持802.3ad模式

第六種模式:mod=5,即:(balance-tlb)Adaptive
transmit load balancing(適配器傳輸負載均衡)

特點:不需要任何特別的switch(交換機)支持的通道bonding。在每個slave上根據當前的負載(根據速度計算)分配外出流量。如果正在接受數據的slave出故障了,另一個slave接管失敗的slave的MAC地址。

該模式的必要條件:ethtool支持獲取每個slave的速率

第七種模式:mod=6,即:(balance-alb)Adaptive
load balancing(適配器適應性負載均衡)

特點:該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receiveload
balance, rlb),而且不需要任何switch(交換機)的支持。接收負載均衡是通過ARP協商實現的。bonding驅動截獲本機發送的ARP應答,並把源硬體地址改寫為bond中某個slave的唯一硬體地址,從而使得不同的對端使用不同的硬體地址進行通信。

來自伺服器端的接收流量也會被均衡。當本機發送ARP請求時,bonding驅動把對端的IP信息從ARP包中復制並保存下來。當ARP應答從對端到達時,bonding驅動把它的硬體地址提取出來,並發起一個ARP應答給bond中的某個slave。使用ARP協商進行負載均衡的一個問題是:每次廣播 ARP請求時都會使用bond的硬體地址,因此對端學習到這個硬體地址後,接收流量將會全部流向當前的slave。這個問題可以通過給所有的對端發送更新(ARP應答)來解決,應答中包含他們獨一無二的硬體地址,從而導致流量重新分布。當新的slave加入到bond中時,或者某個未激活的slave重新 激活時,接收流量也要重新分布。接收的負載被順序地分布(roundrobin)在bond中最高速的slave上當某個鏈路被重新接上,或者一個新的slave加入到bond中,接收流量在所有當前激活的slave中全部重新分配,通過使用指定的MAC地址給每個 client發起ARP應答。下面介紹的updelay參數必須被設置為某個大於等於switch(交換機)轉發延時的值,從而保證發往對端的ARP應答 不會被switch(交換機)阻截。

必要條件:

條件1:ethtool支持獲取每個slave的速率;

條件2:底層驅動支持設置某個設備的硬體地址,從而使得總是有個slave(curr_active_slave)使用bond的硬體地址,同時保證每個 bond 中的slave都有一個唯一的硬體地址。如果curr_active_slave出故障,它的硬體地址將會被新選出來的 curr_active_slave接管其實mod=6與mod=0的區別:mod=6,先把eth0流量占滿,再佔eth1,….ethX;而mod=0的話,會發現2個口的流量都很穩定,基本一樣的帶寬。而mod=6,會發現第一個口流量很高,第2個口只佔了小部分流量

『貳』 linux系統中如何限制網路流量

限制網路流量速率的一種方法是通過一個名為trickle的命令行工具。通過在程序運行時,預先載入一個速率限制 socket 庫 的方法,trickle 命令允許你改變任意一個特定程序的流量。 trickle 命令有一個很好的特性是它僅在用戶空間中運行,這意味著,你不必需要 root 許可權就可以限制一個程序的帶寬使用。要能使用 trickle 程序控製程序的帶寬,這個程序就必須使用非靜態鏈接庫的套接字介面。
將你的 scp 會話的最大上傳帶寬設定為 100 KB/s:

$ trickle -u 100 scp backup.tgz alice@remote_host.com:

另一種控制你的帶寬資源的方式是在每一個介面上限制帶寬。這在你與其他人分享你的網路連接的上行帶寬時尤為實用。同其他一樣,Linux 有一個工具來為你做這件事。wondershaper就是干這個的。

wondershaper 實際上是一個 shell 腳本,它使用 tc 來定義流量調整命令,使用 QoS 來處理特定的網路介面。外發流量通過放在不同優先順序的隊列中,達到限制傳出流量速率的目的;而傳入流量通過丟包的方式來達到速率限制的目的。
舉個例子, 將 eth0 的最大下載/上傳帶寬分別設定為 1000Kbit/s 和 500Kbit/s:

$ sudo wondershaper <interface> <download-rate> <upload-rate>

『叄』 linux網卡流量突然增加怎麼查看是怎麼回事

yum -y install iftop

iftop
看下進出流量
如果出流量異常先看下是否被黑了對外發包 ,暫停下web服務查詢下那些文件有問題

『肆』 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下怎麼看網路流量

Linux查看網路流量
在GUI下面,有一大把的工具可以顯示網路流量,那麼,命令行下面怎麼辦?顯然辦法是有的,比如,ifconfig,會有這樣的輸 出:RX bytes:1224128649 (1.1 GiB) TX bytes:34114947 (32.5 MiB)過 一會再看,數值有所變化,兩者的差值就是過去一段時間的流量。可是,這也太不人性化了……正所謂自己動手,豐衣足食,我們自己來寫一個腳 本,實時顯示並刷新!腳本如下,還是哪句話,本人功力有限,寫腳本的原則是夠用就好。
#!/bin/bashif [ -n "$1" ]; theneth_name=$1elseeth_name="eth0"fii=0send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`send_n=$send_orecv_n=$recv_owhile [ $i -le 100000 ]; dosend_l=$send_nrecv_l=$recv_nsleep 1send_n=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`recv_n=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`i=`expr $i + 1`send_r=`expr $send_n - $send_l`recv_r=`expr $recv_n - $recv_l`total_r=`expr $send_r + $recv_r`send_ra=`expr /( $send_n - $send_o /) / $i`recv_ra=`expr /( $recv_n - $recv_o /) / $i`total_ra=`expr $send_ra + $recv_ra`sendn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $3}' | awk -F /) '{print $1}'`recvn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $2}' | awk -F /) '{print $1}'`clearecho "Last second : Send rate: $send_r Bytes/sec Recv rate: $recv_r Bytes/sec Total rate: $total_r Bytes/sec"echo "Average value: Send rate: $send_ra Bytes/sec Recv rate: $recv_ra Bytes/sec Total rate: $total_ra Bytes/sec"echo "Total traffic after startup: Send traffic: $sendn Recv traffic: $recvn"done
該腳本(假設名叫traffic)默認顯示eth0的流量,如果你有多個網卡,請將網卡作為參數傳進去,比如:./traffic eth1
運行結果如下:

『陸』 如何在Linux下統計高速網路中的流量

Linux下統計高速網路流量方法如下:

在Linux中有很多的流量監控工具,它們可以監控、分類網路流量,以花哨的圖形用戶界面提供實時流量分析報告。大多數這些工具(例如:ntopng,iftop )都是基於libpcap 庫的,這個函數庫是用來截取流經網卡的數據包的,可在用戶空間用來監視分析網路流量。盡管這些工具功能齊全,然而基於libpcap庫的流量監控工具無法處理高速(Gb以上)的網路介面,原因是由於在用戶空間做數據包截取的系統開銷過高所致。
在本文中我們介紹一種簡單的Shell 腳本,它可以監控網路流量而且不依賴於緩慢的libpcap庫。這些腳本支持Gb以上規模的高速網路介面,如果你對「匯聚型」的網路流量感興趣的話,它們可統計每個網路介面上的流量。
腳本主要是基於sysfs虛擬文件系統,這是由內核用來將設備或驅動相關的信息輸出到用戶空間的一種機制。網路介面的相關分析數據會通過「/sys/class/net/<ethX>/statistics」輸出。
舉個例子,eth0的網口上分析報告會輸出到這些文件中:
/sys/class/net/eth0/statistics/rx_packets: 收到的數據包數據
/sys/class/net/eth0/statistics/tx_packets: 傳輸的數據包數量
/sys/class/net/eth0/statistics/rx_bytes: 接收的位元組數
/sys/class/net/eth0/statistics/tx_bytes: 傳輸的位元組數
/sys/class/net/eth0/statistics/rx_dropped: 收包時丟棄的數據包
/sys/class/net/eth0/statistics/tx_dropped: 發包時丟棄的數據包
這些數據會根據內核數據發生變更的時候自動刷新。因此,你可以編寫一系列的腳本進行分析並計算流量統計。下面就是這樣的腳本(感謝 joemiller 提供)。第一個腳本是統計每秒數據量,包含接收(RX)或發送(TX)。而後面的則是一個描述網路傳輸中的接收(RX)發送(TX)帶寬。這些腳本中安裝不需要任何的工具。
測量網口每秒數據包:
#!/bin/bash

INTERVAL="1" #update interval in seconds

if [ -z "$1" ]; then
echo
echousage: $0 [network-interface]
echo
echoe.g. $0 eth0
echo
echoshows packets-per-second
exit
fi

IF=$1

while true
do
R1=`cat/sys/class/net/$1/statistics/rx_packets`
T1=`cat/sys/class/net/$1/statistics/tx_packets`
sleep$INTERVAL
R2=`cat/sys/class/net/$1/statistics/rx_packets`
T2=`cat/sys/class/net/$1/statistics/tx_packets`
TXPPS=`expr$T2 - $T1`
RXPPS=`expr$R2 - $R1`
echo"TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/s"
done

網路帶寬測量
#!/bin/bash

INTERVAL="1" #update interval in seconds

if [ -z"$1" ]; then
echo
echousage: $0 [network-interface]
echo
echoe.g. $0 eth0
echo
exit
fi

IF=$1

while true
do
R1=`cat/sys/class/net/$1/statistics/rx_bytes`
T1=`cat/sys/class/net/$1/statistics/tx_bytes`
sleep$INTERVAL
R2=`cat/sys/class/net/$1/statistics/rx_bytes`
T2=`cat/sys/class/net/$1/statistics/tx_bytes`
TBPS=`expr$T2 - $T1`
RBPS=`expr$R2 - $R1`
TKBPS=`expr$TBPS / 1024`
RKBPS=`expr$RBPS / 1024`
echo"TX $1: $TKBPS kb/s RX $1: $RKBPS kb/s"
done

下面的屏幕截圖顯示了上面的兩個腳本的輸出。

『柒』 Linux下查看網卡流量方法

Linux通過vnstat查看網卡流量

直接運行

yum install vnstat -y

安裝完後測試:

源碼編譯方式安裝vnstat

適用於個別系統無法yum安裝的查看網卡流量情況。

wget http://humdi.net/vnstat/vnstat-1.10.tar.gz

tar xvzf vnstat-1.10.tar.gz

cd vnstat-1.10

make && make install

熱點內容
c程序編譯連接 發布:2025-05-16 06:02:36 瀏覽:963
腳本魔獸 發布:2025-05-16 06:01:52 瀏覽:329
文件夾python 發布:2025-05-16 06:01:43 瀏覽:626
電腦我的世界伺服器游戲幣 發布:2025-05-16 05:27:25 瀏覽:487
索尼手機為什麼不能用安卓10 發布:2025-05-16 05:18:46 瀏覽:784
蔚來es6選擇哪些配置實用 發布:2025-05-16 05:18:05 瀏覽:130
小米如何掃碼wifi密碼 發布:2025-05-16 05:13:38 瀏覽:807
樓層密碼是什麼意思 發布:2025-05-16 05:13:37 瀏覽:13
創建文件夾失敗 發布:2025-05-16 05:12:59 瀏覽:396
電腦上如何查詢自己的配置 發布:2025-05-16 05:06:36 瀏覽:105