Linux检测每个TCP连接的速度


检查指定端口的连接的速度
modprobe ip_nat_ftp
cat /proc/net/ip_conntrack
或者
modprobe nf_conntrack_ipv4
cat /proc/net/nf_conntrack
原理:/proc/net/ip_conntrack,ip_conntrack是Linux NAT一个跟踪连接条目的模块记录着允许的跟踪连接条目,ip_conntrack 模块会记录 tcp 通讯协议的 established connection 记录, 而且预设 timeout 时间长达五天(432,000 秒).
网上找的脚本:
#!/bin/sh
if [ $# != 1 ]
then echo "Please Enter tcp Port"
exit 0
fi
modprobe ip_nat_ftp
while true
do
echo
((cat /proc/net/ip_conntrack | grep sport=$1 | grep ESTABLISHED | gawk -F " " '{print $11,$13,$12,$14,$16}') && sleep 3 && (cat /proc/net/ip_conntrack | grep sport=$1 | grep ESTABLISHED |  gawk -F " " '{print $11,$13,$12,$14,$16}')) | sort -k1 -k2 -k3 -k4  | gawk -F "bytes=" 'BEGIN{last=0}{if (NR%2!=0) {last=$2} else {last=$2-last; if (last < 0) {last=-100} else {last=(last/1024)/3}; print $1, "bytes="last}; ;}END{print "next round..."}'
done
这个脚本需要一个传入参数就是tcp端口,默认网卡是eth0,网速是单位:kb/s
这个脚本会隔3秒统计流量然后计算速度
sleep 3  睡眠3秒
last=(last/1024)/3  计算速度
##################
自己写个了脚本在服务器运行可以检查某台电脑的某个端口下载该服务器资源时候的速度
#!/bin/bash
read -p "Please Enter Source IP:" ip
cat /proc/net/ip_conntrack | grep "ESTABLISHED src=$ip"|awk -F " " '{print $5,$7,$6,$8}'
read -p "Please Enter Source Port:" sport
read -p "Please Enter Test Interval (s):" interval
S1=`cat /proc/net/ip_conntrack | grep "ESTABLISHED src=$ip"|grep sport=$sport|awk -F "bytes=" '{print $3}'|awk -F " " '{print $1}'`
sleep $interval
S2=`cat /proc/net/ip_conntrack | grep "ESTABLISHED src=$ip"|grep sport=$sport|awk -F "bytes=" '{print $3}'|awk -F " " '{print $1}'`
#echo "$S1 , $S2 , $interval"
printf `echo "($S2-$S1)/$interval/1024"|bc`;echo " kB/s"

##############
[root@test ~]# speed
Please Enter Source IP:192.168.1.26
src=192.168.1.26 sport=58491 dst=192.168.1.210 dport=80
Please Enter Source Port:58491
Please Enter Test Interval (s):5
2465 kB/s
#######附:iperf测试带宽#####
1)TCP测试
   服务器执行:./iperf -s -i 1 -w 1M '这裏是指定windows如果是 iperf -s则windwos默认大小为8kbyte/s
   客户端执行:./iperf -c host -i 1 -w 1M
   其中-w表示TCP window size,host需替换成服务器地址。
2)UDP测试
   服务器执行:./iperf -u -s
   客户端执行:./iperf -u -c 10.255.255.251 -b 900M -i 1 -w 1M -t 60
   其中-b表示使用多少带宽,1G的线路你可以使用900M进行测试。