在开发多宿主可靠的udp时,我如何使用mininet检测链路是否断开



拓扑如下:

      -----s0---s1-----
 h1 --|               |--h2
      -----s2---s3-----

h1使用UDP可靠地将文件泵送到h2。50和s1之间的链路可能已经断开。然后,它应该只使用底部路径继续发送数据。是否有办法检测到链接已断开?

到目前为止,我在h1和h2中分别为每个路径创建了两个python套接字。使用选择。选择我可以让准备好的套接字读取返回的。如果超时,我可以重传。但是,当链接断开时,我无法知道它是否断开。

如果你必须从头开始为您的实现无论出于什么原因;

尝试ping,否则,等待返回;如果没有,请暂停在一段时间内收到回复;试试另一条路。任何理由你没有使用TCP?在UDP之上实现可靠性基本上是

关于TCP握手是如何建立的示例和指南,请参见3-way handshake。


你也可以考虑使用SCTP,它是多宿主的,基于流的传输控制协议。相当多的平台支持它,包括Linux、BSD、Windows和其他。

还有一个Python SCTP库

就这么简单:

import socket
import sctp
sk = sctpsocket_tcp(socket.AF_INET)
sk.connect("10.0.1.1")

并实现与套接字

相同的大部分接口

最新更新