41、延迟容忍网络(传输层)

引言

  • 我们将通过描述一种全新的传输来结束本章,这种传输有朝一日可能会成为Internet的重要组成部分。TCP 和大多数其他传输协议建立在这样的假设基础之上:发送端和接收端通过一些工作路径持续地连接在一起,否则协议就会失败且数据将无法传递。在某些网络中,往往没有端到端的路径。一个例子是空间网络,比如低地球轨道(LEO)卫星网络,卫星频繁进出地面站的探测范围。一个给定的卫星或许只能在特定的时间与地面站通信,而两颗卫星可能在任何时间都永远也无法彼此沟通,甚至通过一个地面站作中转也无法直接通信,因为其中一颗卫星可能总是超出地面站范围。其他类似的网络涉及潜艇、公共汽车、移动电话和其他具有计算机的设备,由于移动性或极端条件的限制,使得它们只有间歇性的连通性。
  • 在这些偶尔连接的网络中,可以把数据存储在某些节点,并在随后有工作链路时再转发这些数据,因此数据通信仍然可以进行,这种技术称为消息交换。最终数据将被中继到目的地。基于这种通信方法构建的网络体系结构称为延迟容忍网络或中断容忍网络(DTN, Delay-Tolerant Network, or a Disruption-Tolerant Network )。
  • DTN 的工作始于2002 年,当时IETF 成立了一个研究小组来研究这个主题。DTN 的灵感来自一个不太可能的源头:努力在太空中发送数据包。空间网络必须处理间歇性的通信和很长的延迟。Kevin Fall 观察到这些星际互联网的思想可以应用到地球上那些间歇性连接呈现常态的网络( Fall, 2003 )。该模型给出了Internet 的一个有用的概括,即在Internet上通信期间可以进行存储和延迟。数据传输是类似于邮政系统或者电子邮件的传递,而不
    是路由器上的数据包交换。
  • 自2002 年以来, DTN 体系结构己经经过了细化, DTN 模型的应用也有了很大增长。作为主流应用,考虑由科学实验、媒体事件或基于Web 服务生成的许多TB 级的大量数据集,需要将这些数据集复制到位于世界各地不同地点的数据中心。运营商希望在非高峰时间发送这大块的流量,以便使用己经支付但没有被使用的带宽,并且愿意容忍一些延迟。它喜欢在晚上做备份,当其他应用程序没有大量使用网络时。问题在于对于全球性的服务,非高峰时间在世界各地不同的位置是不同的。波士顿和西斯数据中心的非高峰期网络带宽在时间上很少有重叠,因为一个城市的夜晚是另一个城市的白天。
  • 然而, DTN 模型允许在数据传输过程中进行存储和延迟。有了这个模型,就有可能使用非高峰期的带宽把数据集从波士顿发送到阿姆斯特丹,因为这两个城市的时差仅相隔6个小时的时区:然后将数据集存储在阿姆斯特丹,直到阿姆斯特丹和西斯之间有非高峰期带宽可用:然后将数据集发送到珀斯,完成这次数据传送。(Laoutaris 等, 2009 )对该模型进行研究,并发现它可以较小的代价提供很大的容量:与传统的端到端模型相比,经常使用DTN 模型通常能将容量增加一倍。

1、DTN体系结构

  • Internet 的主要假设是在整个通信会话期间源端和接收方之间存在一条端到端路径,这正是DTN 寻求释放的条件。当情况并非如此时,正常的Internet 协议就会失败。DTN 能避开这种缺乏端到端连接这个问题,关键在于它采用了如下图所示的基于消息交换的体系结构。DTN 的目的还在于容忍低可靠性和大延迟的链路。DTN 的体系结构由RFC 4838说明。在这里插入图片描述
  • 按照DTN 的术语,一条消息称为一个数据束( bundle )。DTN 节点都配备了存储器,典型的是持久性存储介质,比如磁盘或闪存。它们将数据束存储起来,直到链路变得可用,然后转发该束。链路的工作呈现间歇性特点。图中显示了5 条当前都没有在工作的间歇性链路和两条正在工作的链路。一条工作链路称为一次接触( contact )。图中还显示了存储在两个DTN 节点上的数据束,它们正在等待接触的到来以便向前发送。以这样的方式,通过一次次接触数据束从源被中继到它们的目的地。
  • 在DTN 节点存储和转发包,听起来类似于路由器上的排队和转发数据包,但两者之间有质的区别。在Internet 的路由器上,排队发生以毫秒计,或最多以秒计。而在DTN 节点,数据束可存储好几个小时。第二个区别是存储了数据的节点可能会移动(比如公交车或飞机),而且这种运动甚至是数据传递的关键部分。Internet 上的路由器不允许移动。移动数据束的整个过程可能更好地称为“存储·携带·转发”。
  • 作为一个例子,考虑下图所示的场景,这是在空中第一次使用DTN 协议( Wood等, 2008 )。数据束源是一种LEO (低地球轨道卫星),它正在记录地球图像,作为灾害监测星座卫星的一部分。记录下来的图像必须返回给采集点。然而,卫星在绕地球旋转时只能间歇性地接触三个地面站。它依次与每个地面站进入接触。卫星、地面站和收集点每个都作为一个DTN 节点。在每一次接触时,一个数据束(或一束的一部分)被发送到地面站:然后经过骨干陆地网络,数据束被发送到采集点,由此完成地球图像的传送。在这里插入图片描述
  • 在这个例子中, DTN 体系结构的主要优点是它自然而然适应了卫星需要存储图像的情形,因为在图像拍摄时根本没有连接。除此之外,在这种应用场景中该体系还有另外两个优点。首先,恐怕不存在一个单一的接触,持续时间足够长到发送完整个图像。然而,它们可以分散到与三个地面站的接触上。其次,使用卫星和地面站的接触可以将链路与骨干网络彻底脱钩。这意味着卫星的下载不会受到慢速地面链路的限制。它可以全速率地处理,数据束存储在地面站上,直到它可以中继给采集点。
  • 这个体系结构没有说明的一个重要问题是如何寻找一条穿过DTN 节点的良好路径。良好的路由取决于描述何时发送数据的体系结构性质,也取决于采用哪次接触。有些接触在使用之前就已经知道。一个很好的例子是在空间的天体运动。对于太空实验而言,早就知道何时会发生接触,每经过一个地面站的接触时间间隔为5~ 14 分钟,下行链路的容量为8.134 Mbps 。有了这方面的知识,可以提前计划传输一束图像的路径。
  • 在其他情况下,接触也可以预测,但是缺少确定性。当存在着不可预测的接触时,可采用这样的路由策略:沿着不同的路径发送数据束的副本,希望在束的生存期到达之前其中的一个副本能被传递到目的地。

2、数据束协议

  • 为了更清楚地了解DTN 操作,我们现在来考查IETF 协议。DTN 是一种新兴的网络,因而没有使用IETF协议的需求,所有实验性质的DTN 都使用了不同的协议。然而,这些协议至少是我们开始和突出许多关键问题的良好的开端。DTN 协议栈如图所示。关键的协议是数据束协议( Bundle protocol ),该协议由RFC 5050 描述。它负责接受来自应用程序的消息,并通过“存储-携带=转发”操作将这些数据作为一个或者多个数据束发送到目标DTN 节点。从图中很明显地看出,数据束协议运行在TCP/IP 层之上。换句话说, TCP/IP 可以被用在DTN 节点之间的每个接触上,把数据束从接触一端的DTN 节点移动到另一端的DTN 节点。这种协议定位提出了数据束协议究竟是一个传输层协议还是应用层协议这样一个问题。正如RTP 一样,我们采取这样的立场,尽管它运行在传输协议之上,但是束协议为许多不同的应用提供了传输服务。在这里插入图片描述
  • 在图中我们看到,数据束协议可能运行在其他协议之上,比如UDP ,或者甚至其他种类的互联网协议之上。例如,在一个空间网络中链路可能有很长的延迟。地球和火星之间的往返时间很轻易地达到20 分钟,这取决于行星的相对位置。可以设想一下,在这样的链路上TCP 确认和重传将如何工作,尤其是针对相对短的消息。它根本无法工作。相反,另一种使用纠错码的协议可能会有作用。或者在资源受到非常约束的传感器网络中,可以使用一个比TCP 更轻量级的协议。
  • 由于数据束协议是固定的,但它主要运行在各种传输协议之上,因此在功能上协议之间必定留有沟整。这种沟整正是在图中引入汇聚层的原因。汇聚层就像是匹配所连协议接口的粘胶层。根据定义,针对每个不同的底层传输协议,有一个不同的汇聚层。汇聚层通常是在标准中加入新的和现有协议。数据束协议的消息格式如下图所示。这些消息中的不同字段告诉我们一些由数据束协议处理的关键问题。在这里插入图片描述
  • 每个消息由一个主块( Primary block )、一个有效载荷块( Payload block )和一个可选块( Optional block )组成。主块可以被看作是头,有效载荷包含着数据,而其他块可以携带一些安全参数。主块始于版本( Version )字段(当前为6 ),紧接着一个标志( Flags )字段。在其他功能中,标志位编码了一类服务,让源端把它的数据束标记成更高或更低的优先级,以及诸如接收方是否应该确认该数据束等其他处理请求。然后是地址字段,其中突出了3 个有趣的设计部分。除了目标端( Destination )和源端( Source )标识符宇段外,还有一个托管(Custodian )标识符。托管是负责照看包交付的当事人。在Internet 中源节点通常就是托管人,因为如果数据没有最终交付到目的地,那么它就是重发的节点。然而,在DTN 中,源节点可能并不总能连接上,而且可能没有办法知道这些数据是否己经传递到目的地。DTN 使用了托管传送( custody transfer )来处理这个问题。在托管传送方式中,另一个接近接收方的节点假设承担照看数据安全传递的责任。例如,如果一个包裹被装在飞机上,在稍后时间和地点被转发,那么飞机就成为包裹的托管人。
  • 第二个有趣的方面是这些标识符不是IP 地址。由于数据束协议是为了能在跨越各种传输协议和互联网上工作,它定义了自己的标识符,这些标识符实际上比诸如IP 地址这样的底层地址更像个高层名称,如网页的URL。它们给DTN 提供了应用程序级的路由,比如电子邮件传送或软件更新分发。
  • 第三个有趣的方面是标识符的编码方式。还有一个报告( Report)标识符用于诊断消息。所有的标识符被编码为一个指向可变长度字典( Dictionary )字段的引用。当托管人或报告节点与源或目标节点相同时,这种方式就提供了压缩.事实上,消息的格式设计牢记着可扩展性和效率,因而使用了可变长度字段的压缩表示法。压缩表示法对于无线链路和资源受限的节点〈比如传感器网络〉至关重要。
  • 接下来是一个创建( Creation )字段,该字段携带数据束的创建时间、从远端开始排序的序号以及生存期( Lifetime )字段,生存期给出了该柬数据的有效时间。这些字段必须给出,因为数据可能被存储在DTN 节点上相当一段时间,必须有某种方式从网络中删除过时的数据。与Internet 不同的是,它们需要DTN节点有松散同步的时钟。
  • 主块的结尾是字典( Dictionary )字段。接着是有效载荷块,该块由一个简短的类型(Type )字段开始,标识了它的有效载荷:接着是一些标志( Flag)字段,描述了如何处理该数据束的选项;然后是数据( Data )字段,之前是长度( Length )字段。最后,还有可能有其他可选块,比如携带安全参数的块。
  • 有关DTN 的许多方面正处于学术研究界的探索之中。良好的路由策略取决于接触的性质,正如上面所述的那样。存储在网络内部的数据提出了其他问题。现在拥塞控制必须考虑节点上的存储器, 因为存储器变成了另一种可耗尽的资源。缺乏端到端的通信同时加剧了安全问题。在DTN 节点成为数据束的托管人之前,它要知道发送端是否授权使用网络,并且数据束是否是接收方想要的。这些问题的解决方案将取决于DTN 的类型,因为空间网络与传感器网络是完全不同的两种网络。

传输层总结

  • 传输层是理解分层协议的关键。它提供了各种服务,其中最重要的服务是一个从发送端至接收端的端到端的、可靠的、面向连接的字节流。通过一组服务原语可以访问此服务,原语可用来建立、使用和释放连接。Berkeley 套接字提供了一个常用的传输层接口。传输协议必须能在不可靠的网络上完成连接管理工作。由于延迟的重复数据包可能会重新出现在不恰当的时刻,因而连接的建立过程非常复杂。为了处理这些问题, 需要使用三次握手法来建立连接。释放连接比建立连接要容易得多,但由于存在两军对垒问题,释放连接也并非轻而易举。
  • 即使网络层完全可靠,传输层也有大量的工作要做。它必须处理所有的服务原语、管理连接和计时器、拥塞控制与分配带宽以及运行大小可变的滑动窗口流量控制。
  • 拥塞控制应该在竞争流之间公平地分配所有可用带宽,并跟踪网络使用的变化。AIMD控制法则能收敛到公平和有效的带宽分配。
  • Internet 有两个主要的传输协议: UDP 和TCP。UDP 是一个无连接的协议,它主要对IP数据包进行了包装, 由此引入了多个进程复用和分用一个IP 地址这一特性。UDP 可以被用于客户机-服务器之间的交互〈比如RPC ) , UDP 也可以被用来建立实时协议(比如RTP)。主要的Internet 传输协议是TCP。它提供了一个可靠的、双向的、拥塞可控的字节流,构成字节流的所有段都有一个20 个字节长的头。大量的工作针对TCP 性能进行了优化,它们主要是Nagle 、Clark、Jacobson、Kam 和其他的算法。
  • 网络性能通常由协议和段的处理开销来主宰,在速度很高的时候这种状况变得更糟。协议应该被设计成最小化段的数量,而且在带宽延迟乘积大的路径上工作良好。对于千兆网络,要求使用尽可能简单的协议,并实行流水线式处理。延迟容忍网络提供了一个跨网络的传递服务,这种网络具有偶尔的连通性或链路的延迟很长。中间节点存储、携带并转发捆绑在一起的数据束,因此最终得以传递到目的地,即使在任何时间都不存在一条从发送端到接收端的工作路径。

猜你喜欢

转载自blog.csdn.net/ao__ao/article/details/88598803