Open
Description
问题描述:
vnt与服务端vnts默认使用udp协议进行连接,vnt与服务端连接时会使用Udp listen的端口作为源端口与vnts服务端进行连接。
- 举例:vnt [1.1.1.1:100]----- vnts [9.9.9.9:29871] (这里vnts服务端的端口是固定的)
- 问题说明:长时间的会话连接,可能因为运营商udp阻断、nat网关映射表老化等原因导致会话断开, 而vnt重连时还是使用原会话的源端口 100,原来的会话五元组未发生变化,nat网关也不会重新创建新的会话映射,数据包不能正常转发,导致重建连接失败,vnt客户端处于离线状态
- 验证:在vnt客户端的出口网关和vnts服务器上抓包, vnt出口网关有发往vnts报文, vnts服务端没有收到报文; 说明公网没有正常转发udp报文(可能是运营商阻断,也有可能是中间网络设备nat映射表老化问题)
- 解决: 重启vnt客户端,vnt 分配了新的端口与vnts连接,vnt则能正常上线。
- PS:vnt与vnts之间可配置为tcp协议连接,测试后发现使用tcp协议,vnt源端口也会固定使用Tcp listen的端口,可能出现udp 类似问题
解决方案及建议:
- vnt与vnts 连接时使用系统随机分配的源端口,连接断开后, 重试一定次数后, 使用新的源端口进行重连
- 采用vnt客户端之间p2p多会话连接的方式, 在vnt与vnts之间也使用多条udp会话通道
- 可选择配置支持tcp、udp、ws等多个协议多通道同时连接的方式,保证vnt与vnts之间的连接稳定性
Metadata
Metadata
Assignees
Labels
No labels