linux - 获取 Linux 上特定主机之间的 UDP 流量统计

标签 linux networking statistics udp

我需要收集一些网络统计数据来测试我的服务器应用程序。我尝试过很多 linux 工具,但没有找到适合我需要的工具。

基本上我想收集一些 UDP 统计数据(字节/时间间隔、数据包/时间间隔、数据包丢失),但仅针对两个特定主机 - 例如我想从 IP_A:PORT_A 到 IP_B:PORT_B 的流量中获取 UDP 统计数据。

tcpdump/wireshark 等工具可以轻松转储此类流量,但我在获取临时速度等统计信息时遇到了问题(也请参阅吞吐量查看),而 linux 系统统计信息为我提供了所有流量的数字。

获得文本输出会更好,这样就可以解析它。

有人知道我该如何实现吗?

提前致谢 哈嫩

最佳答案

这是 libpcap 库的教程:

要确定丢失的数据包,您的程序可能需要处理一对日志,并确保在目标上找到源上的 UDP 消息。这样做的一个好方法是维护一个等于超时设置时间的数据包窗口,将所有数据包加载到窗口中,对它们进行排序,然后在所需的时间范围内搜索所有数据包,标记它们随手可得。用完一分钟后,从缓冲区中删除该分钟的一半,然后加载接下来的三十秒并重新排序。

如果您有很多(数百万?可能应该分析一下)数据包,使用所谓的 Counting Bloom Filter 可能更快 ,因此您可以很快确定您的数据包是否“可能”在那里。

如果您不是在寻求编程建议,请向 serverfault 提问。

关于linux - 获取 Linux 上特定主机之间的 UDP 流量统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6276730/

相关文章:

python - 有没有一个numpy函数可以随机采样多个概率

c++ - 代码内联工作,但在类里面

linux - 如何使用 netfilter 等 native Linux 工具按内容过滤数据包?

ssl - 我怎么知道证书实际上来 self 的目标 IP 地址?

r - 分类变量的可能排列数

java - 如何使用 gradle 为 Junit 测试授予写入权限

linux - 在我的例子中,好的分布式通用文件系统?

xml - 将播客 xml 文件的标题写入与项目 GUID 匹配的文本文件 (linux)

linux - 从命令行调用 matlab 后 Bash 环境中断

java - 如何检测 Scala 源代码中对 Java 类的依赖?