linhua55/lkl_study

DUP in when ping host running rinetd?

bash99 opened this issue · 3 comments

When rinetd_bbr_powered is running on VPS, and make a ping from other host, I got

64 bytes from 63.223.xxx.xx (63.223.xxx.xx): icmp_seq=1 ttl=47 time=211 ms
64 bytes from 63.223.xxx.xx (63.223.xxx.xx): icmp_seq=1 ttl=47 time=211 ms (DUP!)
64 bytes from 63.223.xxx.xx (63.223.xxx.xx): icmp_seq=2 ttl=47 time=194 ms
64 bytes from 63.223.xxx.xx (63.223.xxx.xx): icmp_seq=2 ttl=47 time=194 ms (DUP!)

LKL内只过滤了TCP协议流量,因为内核只针对TCP协议 发RST包断掉连接。没有过滤 ICMP协议流量,所以 LKL 和 本地内核 都会对 ping 做出响应,所以会重复

相关代码 https://github.com/linhua55/linux/blob/rinetd_bpf/tools/lkl/lib/virtio_net_fd.c#L57

0x06是TCP协议号

这个应该 不影响使用吧

不过hostloc上,有人说 LKL会影响 KCP(基于UDP)(可能是CPU占用高,影响速率,因为LKL也处理了UDP的流量(解析出UDP包,但没做出响应)), 下一版会试着去掉。 不过得注意 开启 UDP 53端口,因为LKL内核 需要 DNS查询,理想的方案是 在LKL上建立NAT表

其实是有点担心会被主机商说发包工具而被封vps。
因为net_speeder也会造成同样效果,而某些主机商传说是不允许net_speeder的。

不用担心,LKL内核只会对ping(ICMP)自动做出响应,不会对UDP做出响应