html tool

2020年6月30日星期二

问题:两个真实主机之间,pcap回放udp server 不接收问题II

问题:两个真实主机之间,pcap回放udp server 不接受问题

查看协议栈的统计情况
netstat -s --udp

对比发现:
upd 的 InCsumErrors 一直在发包时增长

https://www.cnblogs.com/qianyuliang/p/10542747.html
这里解释为:
. UDP Errors
type: Graph
Unit: short
Label: Datagrams out (-) / in (+)
InCsumErrors - 具有校验和错误的 UDP 数据包的平均数(5分钟内)

metrics:
irate(node_netstat_Udp_InCsumErrors{instance=~"$node:$port",job=~"$job"}[5m])
[next]这个校验和如何关闭呢?
https://cizixs.com/2018/01/13/linux-udp-packet-drop-debug/
UDP 报文错误
如果在传输过程中UDP 报文被修改,会导致 checksum 错误,或者长度错误,linux 在接收到 UDP 报文时会对此进行校验,一旦发明错误会把报文丢弃。

如果希望 UDP 报文 checksum 及时有错也要发送给应用程序,可以在通过 socket 参数禁用 UDP checksum 检查:

int disable = 1;
setsockopt(sock_fd, SOL_SOCKET, SO_NO_CHECK, (void*)&disable, sizeof(disable)

[next] 
python中如何实现呢?
https://docs.python.org/2/library/socket.html
There is a socket flag to set, in order to prevent this, socket.SO_REUSEADDR:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
[try]
s.setsockopt(socket.SOL_SOCKET, socket.SO_NO_CHECK, 1)


-----[?]测试效果还是不可以,why?

没有评论:

发表评论