如果一个 TCP SYN 数据包很可能与链路故障有关,如何实现更快的重传?

网络工程 路由 tcp ip
2022-03-05 18:00:56

考虑一个客户端应用程序,它将在检测到电力中​​断事件时建立与服务器的连接(尽管物理传感器接入电力系统)。上述电力中断还可能导致某些远程网络设备持续故障,这位于 SYN 数据包路径中的某个位置,导致数据包无声地丢失。该场景假设客户端和服务器之间存在替代路径,以便 SYN 数据包的重新传输最终可以到达服务器。然而,正常的快速重传算法无法解决这种情况,因为往返时间估计器尚未收敛,而是使用了相当长的初始重传超时 (RTO)(通常为 3 秒)。

问题是:如何实现更快的重传?当然,简单的解决方案是减少初始 RTO,但在没有 RTT 的先验知识的情况下,设置任意小的值并不是最佳的,并且可能会导致不必要的重传。

另一个问题是:是否有必要考虑路由协议,因为链路故障后路由表需要时间收敛到新的拓扑结构。

1个回答

在没有直接传感器的情况下,如您所提议的,通过网络通信链路断开的最快方式是通过路由协议。

您的客户端可能正在使用网络中的路由器(通常不允许在网络中)运行路由协议以获取最新的路由信息​​,不幸的是,该信息不会发送到应用程序或第 3 层以上的任何层。需要对路由协议进行自定义修改才能创建这样的连接,并且它可能会绑定到特定的应用程序。