[英]While developing multihomed reliable udp, how can I detect that a link is down using mininet?
这是拓扑:
-----s0---s1-----
h1 --| |--h2
-----s2---s3-----
h1以可靠的方式使用UDP将文件泵送到h2。 s0和s1之间的链接可能断开。 然后,它应继续仅使用底部路径发送数据。 有没有办法检测到链接已断开?
到目前为止,我为每个路径在h1中创建了两个python套接字,在h2中创建了两个。 使用select.select我可以获得准备好读取ack的套接字。 如果发生超时,我可以重新传输。 但是,当链接断开时,我不知道它断开了。
如果出于某种原因必须从头开始执行此操作;
尝试ping否则,等待确认; 如果您在一段时间内未收到确认,则超时; 尝试另一条路。 有什么原因不使用TCP? 在UDP之上实现可靠性基本上是TCP通过IP实现的。
有关如何建立TCP握手的图示和指南,请参阅3向握手 。
您还可以考虑使用SCTP ,它是基于数据流的多宿主传输控制协议。 相当多的平台支持它,包括Linux,BSD,Windows等。
还有一个Python SCTP库
就像这样简单:
import socket
import sctp
sk = sctpsocket_tcp(socket.AF_INET)
sk.connect("10.0.1.1")
并实现与套接字大多数相同的接口
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.