CENTOS7的KVM虚机内跑GRE遂道无法正常TCP通讯
公司的云专线+互联云业务的场景某些客户需要在公有云和我们的互联云之间起GRE隧道进而实现同子网IP段。我们发现从互联云-》公有云的速度正常,但是公有云-》互联云的速度不正常。而不用GRE遂道,直接使用路由速度也正常。问题已经发现了好些天了,同事死活无法解决。更换IPIP隧道测试没有问题,GRE隧道就是不行。我进行抓包,发现了奇怪的现象
公司的云专线+互联云业务的场景
某些客户需要在公有云和我们的互联云之间起GRE隧道进而实现同子网IP段。
我们发现从互联云-》公有云的速度正常,但是公有云-》互联云的速度不正常。
而不用GRE遂道,直接使用路由速度也正常。
问题已经发现了好些天了,同事死活无法解决。
更换IPIP隧道测试没有问题,GRE隧道就是不行。
我进行抓包,发现了奇怪的现象:
客户侧:
服务器------HOST侧:
而服务器-------GUEST OS侧,则压根没有收到seq 38以后的包:2886 4310 等
截图忘记了
然后各种实验,发现centos7的3.10.0-514.el7.x86_64 内核在进行转发GRE数据包时有BUG--------注意,不是直接使用,也就是说,物理机上直接创建GRE隧道没有问题。
升级KERNEL到4.1x则问题被解决。
为了查这个问题怀疑了各个因素:
MTU
链路质量
VLAN
一一验证出来不是。结果验证出来无论是用BRIDGE 还是 使用 direct方式创建VM 的interface,只要数据包经过HOST转发就有问题。
最终怀疑是HOST的KERNEL有BUG,验证后证实。这个场景应该是比较少见,在网络上也没有发现有同样的人说这个问题。
说出来和解决起来是挺简单的,但是中间排查的过程真的是很曲折。
更多推荐
所有评论(0)