ION-DTN网络设计思想(一)

1. Fragmentation and Reassembly(分段和重组)

为了在星际链路中以最小化传输开销并适应不对称链路,我们希望在最大可能的聚合中发送“下行链路”数据 - 粗粒度传输。

但是为了最小化head-of-line blocking(延迟传输新提交的优先级项目)和通过并行路径最小化数据传输延时,我们希望在最小可能的聚合中发送“下行链路”数据 - 粗粒度传输。

我们在ION不同层对两者进行实现。

首先在应用服务层(AMS、CFDP)我们应用目前比较小应用程序数据单元(ADUS)大概64KB,然后到BP层捆绑封装。

或者,大的应用数据单元可以呈现给BP并且产生大的捆绑包可以在它们被呈现给收敛层适配器时被主动分段。此功能旨在适应其中的环境当会聚层适配器具有比最佳应用更好的信息束尺寸,例如当已知接触的剩余容量小于包的大小

然后,在BP/LTP收敛层适配器以下的协议层,我们聚合这些小捆绑成块以呈现给LTP。

综合起来,在意外链接终止导致整个块的传递失败的情况下在下一次联系时通过给定链路传送。应用级分段(或BP主动分段)和LTP聚合对需要重新配置的数据量设置上限。举个例子:如果数据速率为1Mbps并且正常块大小为128KB(相当于1s的传输时间),我们宁愿避免浪费5分钟下行链路的风险发送在传输最后一千字节时失败的37.5 MB文件,强制重传整个37.5 MB。因此将文件分开,1200个32KB大小的bundle包,每四个包聚集成一个块(128KB),因此如果单个块失败了,只需要重传单个包(128KB)即可。所花费的时间也仅仅是1s而不是5分钟,通过以这种方式控制会聚层协议故障的成本。我们避免了开销和BP实现中“反应分裂”的复杂性。

最后,在LTP本身中,我们根据需要分割块以适应基础链接服务的最大传输单元(MTU)大小,通常为传输适用的CCSDS链路协议的帧大小。


2.带宽控制

给应用程序数据的带宽分配是通过应用程序任务进行请求的,但它只需要在协议栈的最底层(也就是在能够决定带宽分配的层)以及总是在具有全局效应的节点策略决策的上下文中实现即可。

在网络中给定邻居的“输出”接口实际上是三个队列出站包而不是一个,其中一个是为了BP支持的每一个定义的优先级,当应用程序为了封装在bundle中向BP提交ADU,它表明其自己对ADU优先级的评估,之后选择该束的最接近的转发目的地节点。捆绑是附加到任何相邻接口队列对应于ADU的优先级。

通常收敛层输出(CLO)任务服务于给定的输出,比如LTP输出任务ltpclo-从头的严格优先顺序提取束,也就是说,bundle在头部的最高优先级非空队列总是提取。


3.Contact Plans

在互联网中,协议操作可以主要由当前机会性和立即发现的信息有效的驱动。因为通过网络传递此信息的延迟可以忽略不计:通信实体之间的距离小并且连通性是连续的。

在DTN网络中,ad-hoc数据发现在很多情况下会花费很长的时间以至于在这些数据失去有效性和 时效性,因此,协议的运作被那些预先放置在节点的信息所驱动,并且这些节点标有日期和时间何时有效,此信息采用的形式是contact plan,被ION的ici包中的RF contact(rfx)服务所管理。

下图是RFX数据库和BP、LTP协议状态数据库的关系 



4.路由计算

ION的路由计算对于一个给定的bundle以及一个给定的目的endpoint能够通过多种方法中的一种实现,取决于目的地,在每个情况中,成功路由的结果是将这个bundle插入到出站传输队列,

了解路由算法之前首先熟悉些术语:

Egress plans:ION只能将它们排在一些明确指定输出的节点来将bundle转发到相邻节点。规范相邻节点的输出-可能根据节点号和/或服务而变化bundle的源实体ID的数量-被称为egress plan,他们是保留在ION的单播转发数据库中。

static routes:静态路由,ION可以配置为将所有捆绑包转发到某个指定节点,该节点没有动态路由,静态路由通过下面描述的“组”机制实现

Unicast 单播:当捆绑包的目标是注册的单个节点已知的“单端点”,那么称为单播,目标端点ID必须是URL形式“dtn”方案(e.g., dtn://bobsmac/mail )或者是ION方案(e.g., ipn:913.11 )

Unicast Groups:单播组,当单播路由必须计算到没有联系计划的节点信息是已知的,计算到所有节点的路由的工作可以在多个网关节点之间进行分割,每个网关负责总体网络的一个子集的管理路由信息,网络子集-一个组,包括其节点号落入节点范围内的所有节点分配给网关的号码,单播组保留在ION的单播转发中数据库。

Multicast 多播:当包的目的地是在已知内注册的所有节点“多播端点”,那么被称为多播,为此,目的节点的ID的URL格式必须是“imc”主题,(e.g., imc:913.11 )

Multicast Groups(多播组):一系列多播节点的集合,向所有成员节点转发一个bundle,是所有的网络多播感知节点的责任。


5. Delivery Assurance:(递交保证)

数据的端到端传送可以在堆栈的不同层以许多方式失败,我们可以接受通信故障或在检测到故障的那层进行重新传输数据结构,ION是设计用于在堆栈的多个层处实现重传,这取决于最终用户应用程序的偏好
在ION可见的最低堆栈层,收敛层协议,失败传递一个或多个细分由于细分丢失或损坏将触发重传如果一个“可靠”的汇聚层协议正在使用:LTP“red-part”传输或TCP(包括基于TCP的Bundle Relay服务)


6.速率控制

一个节点的传输速率能够根据网络状态的变化而动态协商,达到最小的拥塞。在深空通信中,信号传输延时可能太大以至于无法启动有效的动态协商传输速率,幸运的是,深空链接对于通信实体对操作性的保留了在一定时间中的一定速率,保证了在contact plan中没有固有的拥塞,拥塞可以通过坚持plan contact 周期和速率来避免,速率控制就是为了这个目的。

当系统正在运行时,发送和接收bundle受限于每个输出输入的阈值,已完成的发送和接收bundle活动减少当前的阈值,这种减少可能导致管道容量变为负值,一旦变为负值,活动被阻止,直到容量被bpclock恢复。

每秒一次,bpclock任务增加每个电感的电流容量输出节流阀以该管道的标称数据速率的一秒流量,从而使得一些可能阻塞的束发送和接收进行。


7.流控制

对基于ION的网络中的数据传输速率的进一步约束是LTP流控制,TP被设计为使得能够进行多个块传输会话同时完成的阶段,为了最大化链路利用率,没有要求等待一个会话完成,然后再启动下一个会话。

为了防止完全的存储资源耗尽,我们对可以同时发生的出站块的总数设置了一个固定的上限在任何给定时间。 这些限制由节点上的ltpadmin在初始化时建立。

最大数量的传输任务被LTP管理,因此构成传输窗口。一旦最大会话数目在运行中,不能发起新的块传输会话-不管速率控制提供多大的输出传输能力,直到一些存在的任务完成或取消。


8.存储控制

dtnet中的拥塞是数据入队和出队率之间的不平衡导致在节点处排队(存储)资源的耗尽,从而防止继续在该节点处的协议的操作。

在ION中,受影响的排队资源从名义上的非易失性存储器分配SDR数据存储和/或文件系统中的空间,ION的设计需要通过简单地拒绝入队的额外数据防止资源耗尽,然而,BP路由器拒绝将接收的数据排队以用于转发可能导致昂贵的重传,数据丢失,因此ION设计还要试图阻止可能的资源耗尽,通过预测排队资源占用的水平和报告预测的任何阻塞来实现。

ION使用的非易失性存储器有几个目的:

它包含捆绑等待转发,传输和传递队列;

它包含LTP传输和接收会话,包括正在发送的数据块和收到;

它包含等待辐射的LTP段的队列

它包含协议操作状态信息,例如配置参数,静态路由,联系图等。

有效利用非易失性存储是一个复杂的问题,静态预分配的存储资源通常效率较低,尝试去为每个数据存储结构预测合理的最大大小,然后严格实施该限制通常导致存储资源的利用不足系统整体性能不佳。然而,静态预分配是强制性的对于安全关键资源,资源可用性的确定性更重要比高效的资源利用

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值