在测试io设备时,常常会用到iostat、iotop工具,在查看内存时常常用到vmstat、free、slabtop工具,在查看调度器时,常常使用mpstat、top以及ps工具。这里来说说网络相关的工具,有性能分析、网络管理、状态查看类工具。下面的一张图显示了网络相关工具和其作用的层次关系。
图10.1 网络工具
由上至下的来看该这些工具。
ss
ss是iproute2包提供的工具,该包此外还支持非常重要的ip命令,ip命令设计的初衷是替代ifconfig(net-tools工具包,net-tools支持网络接口配置,路由表以及ARP表的管理),但是目前pc和服务器上通常对两种工具都支持,但是嵌入式环境对ip的支持需要开发者完成移植工作。ss工具由于导出套接字的统计信息,和图中的netstat作用类似,但是可以显示更过的TCP和网络状态信息。ss-h可以查看帮助信息。
1、查看所有打开的tcp端口使用如下命令:
ss-tnap
2、可以使用-4或者-6参数指定tcp端口是IPv4还是IPv6:
ss-tnap4
3、查看udp使用如下命令:
ss-unap
4、统计信息使用如下命令:
ss-s
例如如下是该命令的输出:
Total:684 (kernel 0)
TCP: 111 (estab 75, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
TransportTotal IP IPv6
* 0 - -
RAW 0 0 0
UDP 43 29 14
TCP 111 96 15
INET 154 125 29
FRAG 0 0 0
5、还可以使用连接状态过滤选项如下:
ss-o state established '( dport = :ssh or sport = :ssh )'
netstat工具
netstat[-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -i | [-cWnNe] -M | -s }
路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
netstress
netstress是一个DDos和网络压测工具,DDos(分布式拒绝服务),对电子商务网站而言,如果这种攻击在双十一对其攻击,目前其没有很好的方法处理。测试的攻击类型包括SYN,ACK,FIN,UDP,ICMP,HTTP,Mixed,DNS。
netperf参考
iperf
iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能。Iperf具有多种参数和UDP特性,可以根据需要调整。Iperf可以报告带宽,延迟抖动和数据包丢失。
1)TCP测试
服务器执行:./iperf -s -i 1 -w 1M 这裏是指定Linux,如果是 iperf -s则是windows平台下命令。默认包大小为8kbyte/s
客户端执行:./iperf -c host -i 1-w 1M
其中-w表示TCP window size,host需替换成服务器地址。
2)UDP测试
服务器执行:./iperf -u -s
客户端执行:./iperf -u -c10.255.255.251 -b 900M -i 1 -w 1M -t 60
其中-b表示使用多少带宽,1G的线路你可以使用900M进行测试。
iptraf
网络流量实时监控工具,功能比nload更强大,可以监控所有的流量,IP流量,按协议分的流量,还可以设置过滤器等
源码安装
wget ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.0.tar.gz
tarzxvf iptraf-3.0.0.tar.gz
cd iptraf-3.0.0
./Setup
直接运行 iptraf,后有一个如下的菜单提示,然后进入相关的选项查看
IP流量监视(IP traffic monitor)
网络接口的一般信息统计(General InterfaceStatistics)
网络接口的细节信息统计(Detailed InterfaceStatistics)
统计分析(StatisticalBreakdowns)
局域网工作站统计(LAN StationStatistics)
过滤器(Filters...)
配置(Configure...)
退出(Exit)
TcpDump
可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
nicstat
网络流量统计实用工具
nicstat使用
在解压包目录nicstat-1.92内,有个nicstat.sh脚本.
查看网卡速度(-l):
[root@CentOS192 nicstat-1.92]#./nicstat.sh -l
Int Loopback Mbit/s Duplex State
lo Yes - unkn up
eth0 No 1000 full up
间隔3秒,查看2次结果(留意%Util和Sat):
[root@centos192nicstat-1.92]# ./nicstat 3 2
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
06:19:46 lo 0.72 0.72 2.15 2.15 341.2 341.2 0.00 0.00
06:19:46 eth0 0.89 0.15 1.37 0.92 660.4 163.6 0.00 0.00
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
06:19:49 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
06:19:49 eth0 0.02 0.12 0.33 0.33 66.00 354.0 0.00 0.00
Time列:表示当前采样的响应时间.
lo and eth0 : 网卡名称.
rKB/s : 每秒接收到千字节数.
wKB/s : 每秒写的千字节数.
rPk/s : 每秒接收到的数据包数目.
wPk/s : 每秒写的数据包数目.
rAvs : 接收到的数据包平均大小.
wAvs : 传输的数据包平均大小.
%Util : 网卡利用率(百分比).
Sat : 网卡每秒的错误数.网卡是否接近饱满的一个指标.尝试去诊断网络问题的时候,推荐使用-x选项去查看更多的统计信息.
ethtool工具:
ethtool ethX /
ethtool –h //显示ethtool的命令帮助(help)
ethtool –i ethX //查询ethX网口的相关信息
ethtool –d ethX //查询ethX网口注册性信息
ethtool –r ethX //重置ethX网口到自适应模式
ethtool –S ethX //查询ethX网口收发包统计
ethtool –s ethX [speed10|100|1000]\ //设置网口速率10/100/1000M
[duplex half|full]\ //设置网口半/全双工
[autoneg on|off]\ //设置网口是否自协商
[port tp|aui|bnc|mii]\//设置网口类型
ip命令,对OBJECT 中的对象进行配置,命令功能很强大。源于iproute2工具,默认已安装,使用内核的Netlink机制和内核交互。
Usage: ip [ OPTIONS ]OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT :={ link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr |mroute | mrule | monitor | xfrm |
netns }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-f[amily] { inet | inet6 | ipx| dnet | link } |
-l[oops] {maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] |-b[atch] [filename] |
-rc[vbuf] [size]}