在开发多宿主可靠udp时,如何使用mininet检测到链路断开?

时间:2015-05-27 10:29:30

标签: python networking udp mininet multihomed

这是拓扑:

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

h1以可靠的方式使用UDP将文件泵送到h2。 s0和s1之间的链接可能已关闭。然后它应该继续仅使用底部路径发送数据。有没有办法检测链接是否已关闭?

到目前为止,我在h1中创建了两个python套接字,并在每个路径中创建了两个h2。使用select.select我可以使用就绪套接字来读取ack。如果发生超时,我可以重新发送。但是,当链接断开时,我无法知道它已关闭。

1 个答案:

答案 0 :(得分:3)

如果 从头开始执行此操作,无论出于何种原因;

  

尝试ping否则,等待确认;如果你不这样做超时   在一段时间内收到确认;尝试另一条路。任何原因   你没有使用TCP?基本上在UDP上实现可靠性   什么TCP是IP。

有关如何建立TCP握手的说明和指南,请参阅The 3-way handshake

您还可以考虑使用SCTP这是一种多宿主,基于流的传输控制协议。相当多的平台支持它,包括Linux,BSD,Windows等。

还有Python SCTP lirbary

这很简单:

import socket
import sctp

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

并实现与socket

相同的大多数接口