- 论坛徽章:
- 0
|
本帖最后由 xibeihaitao 于 2011-09-30 11:24 编辑
在做一个测试工作,两台计算机直连, 网卡都是gigabit的, udp协议, 一台发送, 一台接收数据包, 程序中有发包,收包的计数, 发现发送的包多于接收的包, 于是使用了tcpdump工具, 限定了src host, dst host, udp, 还有网络接口,如eth1, 传输结束之后tcpdump 显示的packets received by filter 数目, 也是不同的.
具体的数量关系如下:
发送 x,
发送一方tcpdump有 x1 packets received by filter,
接收 y,
接收一方tcpdump有y1 packets received by filter.
y=y1<x < x1, 有时候y=y1<x1<x
发送/接收x,y都是程序中计数的, sendto 成功,计数+1, recvfrom 成功, 计数+1.
不知道具体在哪儿丢的包, 已经增大了/proc/sys/net/core/netdev_max_backlog, /proc/sys/net/core/optmax, eth1 txqueuelen 的值. 程序中还增加了利用setsockopt增大了发送和接收缓冲区大小.
希望大家多多指教,多谢!! |
|