使用openstack创建两个windows实例
两个实例,经过报文转发平台相连,在两个windows实例中,使用tcp工具建立tcp连接失败。
现象具体描述:
三个实例:
实例A和实例B
报文转发实例C
在实例A上ping实例B,可以ping通。
使用网络助手建立tcp连接时,不成功。
在实例B上使用wireshark抓包,发现B上可以收到A发出的tcp syn连接请求,但是不响应。
wireshark打开checksum校验:发现checksum校验失败
原因:
网卡在开启Checksum Offload之后,会把计算checksum的工作交给网卡去做,网卡会计算出正确的checksum并且发出去的。CheckSumOffload实际上是将传输层的一部分工作交给了硬件完成,以节约系统的CPU资源。
打开CheckSumOffload发现B收到syn包未响应,应该是虚拟网卡,不支持计算checksum。设置为disabled,改为tcp协议栈计算checksum。
解决方案:
配置两业务机,网络连接中本地连接。点击属性按钮。

弹出窗口中点击配置按钮

弹出窗口中点击高级,找到TCP Checksum Offload (Ipv4)选项。选择Disabled选项。

|