计算服务器的网络使用情况


2

我正在尝试计算网络上服务器的%网络利用率,用于任何snmp流量(in或out)。我已按照以下步骤操作,有人可以指出我是否在此过程中出错了?

步骤1:运行tcpdump一分钟以捕获所有src或dst端口为161(snmp)的数据包并将其发送到文本文件

步骤2:从捕获的数据包中提取长度,如下面的示例行

11:09:59.602526 IP (tos 0x0, ttl 252, id 21267, offset 0, flags [none], proto UDP (17), **length 84**)
myremotedevice.snmp > mylocalserver.32802:  { SNMPv1 C=public { GetResponse(37) R=<redected>  E:redected=redected } } 

第3步:添加文件中的所有长度,比如说,总长度= 4505407字节

步骤4:执行Y =(X * 8)/ 60以获得每秒位数。

Y = (4505407 * 8) / 60
Y = 600720.93

步骤5:我有一个千兆网络,所以为了找到网络工具我执行以下操作:%util =(Y / 1000000000)* 100

%util = (600720.93/1000000000) * 100
%util = 0.06%

因此,我可以得出结论,我的服务器的SNMP流量每秒的网络利用率为0.06%

那么,问题是,上述计算是否准确?谢谢!

Answers:


1

不,这个结果大约是应该的两倍。

由于您的过滤器是源或目标端口为161,这意味着您对传入和传出的SNMP流量都感兴趣。

千兆以太网始终处于切换状态,这意味着它始终是全双工的。因此,它具有1千兆位/秒的传入带宽,加上1千兆位/秒的传出带宽,总计2千兆位/秒的总带宽。所以你应该除以20亿而不是10亿。

除此之外,您的计算可能足够接近大多数用途。如果您想要更精确,可以考虑强制的数据包间隙,物理层前同步码和帧起始分隔符占用的时间。当千兆以太网发送比特时,它以每秒1,000,000,000比特的速度发送它们,但它不会不断发送有用的比特(因为我提到的强制性间隙和前导码)。那些东西没有出现在tcpdump捕获的内容中,所以为了超精确,你必须记住要考虑它们。如果我没记错的话,间隙是96位时间,可保留的+分隔符是64位,每个数据包总共160个“不可见”位。

编辑添加:您可能还需要仔细检查您从tcpdump输出中使用的长度字段是完整的以太网帧长度,而不仅仅是IP或UDP数据报长度。


谢谢你的详细回复它真的很有帮助,我认为你是对的我只收集IP数据包的长度。假设这个长度包含UDP报头长度以及传输的实际UDP数据,我是否正确?
termcap

除了上面的评论并从你的答案中建立起来,如果对于报告IP报头长度为84字节的上述样本捕获,如果是正确的,则线路上的数据包的总大小将是
termcap

- 将是304字节+ 84字节= 388字节。 305字节包括您提到的开销以及源,目标的MAC地址和以太网类型的4字节各32字节。
termcap
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.