在linux中有很多的流量监控工具,它们可以监控、分类网络流量,以花哨的图形用户界面提供实时流量分析报告。大多数这些工具(例如:ntopng,iftop)都是基于libpcap库的 ,这个函数库是用来截取流经网卡的数据包的,可在用户空间用来监视分析网络流量。尽管这些工具功能齐全,然而基于libpcap库的流量监控工具无法处理高速(gb以上)的网络接口,原因是由于在用户空间做数据包截取的系统开销过高所致。
在本文中我们介绍一种简单的shell 脚本,它可以监控网络流量而且不依赖于缓慢的libpcap库。这些脚本支持gb以上规模的高速网络接口,如果你对“汇聚型”的网络流量感兴趣的话,它们可统计每个网络接口上的流量。
脚本主要是基于sysfs虚拟文件系统,这是由内核用来将设备或驱动相关的信息输出到用户空间的一种机制。网络接口的相关分析数据会通过“/sys/class/net//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)带宽。这些脚本中安装不需要任何的工具。
测量网口每秒数据包:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
interval=1# update interval in seconds
if [ -z $1 ]; then
echo
echo usage: $0 [network-interface]
echo
echo e.g. $0 eth0
echo
echo shows 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
网络带宽测量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
interval=1# update interval in seconds
if [ -z $1 ]; then
echo
echo usage: $0 [network-interface]
echo
echo e.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
下面的屏幕截图显示了上面的两个脚本的输出。
机器人产品的实在是它超越AI领先全球投资方向的主要原因
盘点2016年的云计算,互联网巨头们的多维战争
iPhone 7 Plus也出状况,部分用户反映摄像头无法使用
5G通信中对高频连接器的需求
ATL与宁德时代CATL这两家同源的公司在电池领域全面开战
如何在Linux下统计高速网络中的流量
关于Vivado中三种操作Debug的方式
2020年举行的重要AI和ML研究会议的清单
液晶面板销量额下降,OLED面板需求升高
2nm工艺芯片的优势都有哪些
TC-PD-10G型10GHz高速光探测模块
AI是这个时代的突破技术 企业想在AI时代脱颖而出还需努力
怎样用运放制作灵敏电压表
PCB抄板软件如何选择
基于Freescale的MC34704多路DC电源管理方案
应急物资管理系统|DW-S300全国均有成熟案例
单片机内部的时序
vivox9s、vivox9splus怎么样?vivox9s、vivox9splus评测:vivox9s、vivox9splus发布会四大爆点回顾你值得拥有
关于三星智能语音交互技术的简析
2019年山东联通IDC将迎来三大利好