基于机会网络环境模拟器的** NDN **网络转发策略的设计与实现
摘要
延迟容忍网络(Delay Tolerant Networking,DTN),又称容迟网络。现实生活中存在着这样一种网络,它的节点是稀疏、移动、存储容量小、通讯范围有限的,这使得网络中端到端的连接通常很难直接建立,同时还伴有间断性的连通、漫长而不稳定的延迟、拓扑结构变化快等特点,而DTN正是用于连接这种网络的一种面向消息,且具有存储-转发特点的网络。DTN中的路由主要分为基于知识和基于复制两种。
命名数据网络(Named Data Networking, NDN)是一种以命名数据为中心的网络,是信息中心网络(Information Centric Networking, ICN)的一种实例。以信息为中心,指的是关心数据信息的内容,而不是关心数据的来源。以命名数据为中心,指的是以一定的命名规则来命名消息(或称报文、包),并根据名字来获取数据,而不是通过IP地址从特定的节点来获取数据。
命名数据容迟网络(Named Data And Delay Tolerant Networking,NDDTN)。考略到NDN和DTN在存储-转发、多路径转发等方面的共同点,我们提出了一种以命名数据来解决延迟容忍问题的网络,即NDDTN,并为这种网络设计实现了一种转发策略。
机会网络环境模拟器(The Opportunistic Network Environment Simulator,ONE)是芬兰赫尔辛基大学用Java编写的一种基于离散事件的机会网络模拟器。利用ONE,我们可以在定义自己的NDDTN路由算法,同时与ONE中内置几种常见的容迟网络路由算法在传输成功率、传输延迟、开销比率等方面做比较,来评估我们的路由算法。
关键字 : 命名数据,延迟容忍,机会网络模拟器,转发策略
Design and Implementation of NDN Forwarding Strategy Based on Opportunistic Network Environment Simulator
Abstract
Delay Tolerant Networking (DTN), also known as late-tolerant network. In real life, there is such a network, its nodes are sparse, mobile, small storage capacity, limited communication range, which makes the host-to-host connection in the network is usually difficult to establish directly, but also accompanied by intermittent connectivity, Long and unstable delays, fast changes in topology, etc., and DTN is a kind of message-oriented and network with store-and-forward characteristics for connecting to this kind of network. Routing in DTN is mainly divided into knowledge-based and replication-based.
Named Data Networking (NDN) is a network centered on named data and an example of Information Centric Networking (ICN). With information as the center, it refers to the content of data information, not the source of the data. The naming data as the center refers to naming messages (or messages, packets) with certain naming rules, and obtaining data based on the name, rather than obtaining data from a specific node through an IP address.
Named Data And Delay Tolerant Networking (NDDTN). Having examined the common points of NDN and DTN in terms of storage-forwarding, multi-path forwarding, etc., we propose a network that uses named data to solve the delay tolerance problem, namely NDDTN, and implements a forwarding for this network design. Strategy.
The Opportunistic Network Environment Simulator (ONE) is a discrete event-based opportunistic network simulator written in Java by the University of Helsinki, Finland. Using ONE, we can define our own NDDTN routing algorithm and compare it with several common delay-tolerant network routing algorithms built into ONE in terms of transmission success rate, transmission delay, and overhead ratio to evaluate our routing algorithm.
Keywords : DTN, NDN, ONE, Forwarding Strategy
目 录
第1章 绪论 1
1.1课题背景 1
1.2研究目的 3
1.3论文结构 4
第2章 延迟容忍网络 5
2.1名字 6
2.2存储-携带-转发与保管传输 6
2.2.1存储-携带-转发 7
2.2.2保管传输 7
2.3包裹结构 8
2.4路由和转发 9
2.4.1基于知识的路由 10
2.4.2基于复制的路由 11
2.5容迟网络的应用 12
2.6本章小结 13
第3章 命名数据网络 14
3.1命名 114
3.2安全 114
3.3报文类型 16
3.4路由和转发 17
3.4.1转发模型 17
3.4.2转发过程 19
3.4.3转发策略 20
3.5本章小结 21
第4章 容迟网络和命名数据网络的融合 23
4.1融合工作的研究现状 23
4.2一种基于接口状态的带限制的洪泛型转发策略 25
4.3本章小结 28
第5章 仿真实验与性能评估 29
5.1仿真环境 29
5.2评估指标 33
5.3场景设计 34
5.4实验结果与分析 37
5.5本章小结 39
第6章 总结与展望 40
6.1工作总结 40
6.2工作展望 40
以TCP/IP为核心的因特网是当今世界最大、最流行的计算机网络,它是一个连接网络的网络,将不同国家、不同个人的计算机和网络连接在了一起,实现了全球互联。经过多年的发展,文档和多媒体音视频等内容的获取成为了互联网服务的主体内容,同时互联网之外的一些新型网络不断出现,这些变化对传统的TCP/IP结构提出了巨大挑战。面对这些挑战,人们在对TCP/IP网络进行不断改进的同时,也在研究新的网络体系结构。
1.延迟容忍网络
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bfJxLDxz-1628150166167)(RackMultipart20210805-4-uzy9fb_html_fcd20c84c227b65c.png)]现实生活中存在着这样一种网络,它的节点往往是移动、稀疏、存储容量小、通讯范围有限的,网络拓扑结构往往是不断变化的,而这使得网络中端到端的连接通常难以直接建立、连通具有间断性的、网络延迟漫长而不稳定。而DTN正是用于连接这种网络的一种面向消息,且具有存储-转发特点的网络。DTN广泛应用于各类星际互联网络、救灾通信网络、军事网络、车载网络、传感器网络等。
图1-1 地球表面的各种无线网络[1]
延迟容忍网络起源于1998年由美国国防部高级研究局(Defense Advanced Research Projects Agency, DARPA)支持的星际互联网计划(Inter Planetary iNternet, IPN)[2]这一项目。2002年,K. Fall等科学家于在互联网研究中心会议(ICSI Center for Internet Research, ICIR)上提出在传输层上与应用层(当然也可以是其他层)之间添加一个包裹(Bundle,也称为束)层来解决网络对延迟的容忍[3]。而后,互联网研究任务组(Internet Research Task Force,IRTF)[4]开始着手研究这一网络体系结构的实现,各国研究者也开始关注这一网络体系结构。
当前国外DTN相关的研究项目主要有:星际互联网(Interplanetary Networking,IPN)[5]、美国国防部高级研究局研究的中断容忍网络(Disruption Tolerant Network)、IRTF建立的延迟容忍网络研究组(Delay Tolerant Networking Research Group,DTNRG[6])。
国内的DTN研究工作受关注度较低,但随着人们对网络的需求的变化,这一新型网络逐渐受到关注,并成为研究热点。刘科征、陈爱斌等学者对延迟容忍网络的体系结构进行了深入研究[7]
2.命名数据网络
随着网络的发展,由于电子商务、数字媒体、社交网络以及智能手机应用的持续增长,诸如视频、照片、文档等大型数据的分享成为互联网用户的主要需求,分布式网络的使用逐渐占据了统治地,与此同时,更快、更宽、更安全的内容入口的需求也与日俱增。而通过传统的以IP为中心的点对点通信来解决分布式问题是极为复杂并且容易出错的[8]。
在这种背景下,Van Jacobson在2006年首次提出以内容为中心的网络(Information Centric Networking, ICN[9])来适应网络服务的变化。内容中心网络研究的不再是从哪里获取数据,而是用户和应用更关心的是数据的内容。网络中的节点也不仅仅是提供传输服务,而且也提供缓存服务。相对于节点位置、应用类型、传输方式和存储等,数据独立存在。这种结构提升了网络服务的质量,使得用户可以从更多节点获取内容,带来了效率上的提升。
NDN正是ICN一种实例。以命名数据为中心,即一定的命名规则来命名消息(或称报文、包),并根据名字来获取数据,而不是像传统的IP网络一样通过IP地址从特定的节点来获取数据。以命名数据为中心,允许网络使用我们使用以往的经验来解决更广泛的网络问题,不仅仅包括端到端通信,而且包括内容分发和控制问题,以及有助于用户选择和竞争的功能,比如多路径转发和网络内存储[10]。可以看出,NDN具有很大的研究空间和价值,在网络的容断容迟方面也有先天优势。
3.命名数据容迟网络
考虑到NDN和DTN在存储-转发、多路径(洪泛)转发等方面的共同点,我们提出了一种借助命名数据来解决延迟容忍问题的网络,即命名数据容迟网络。对于这种NDN和DTN的融合网络,我们设计并实现了一种基于转发接口状态的带一定消息复制限制的转发策略。目前关于NDDTN的研究主要包括网络体系结构、内容发现、缓存策略和转发策略等方面,而各方面的研究尚处于起步阶段。
4.机会网络环境模拟器
是芬兰赫尔辛基大学用Java编写的一种基于离散事件的机会网络模拟器[11]。ONE适用于延迟容忍网络,支持多种移动模型,能模拟分析多种路由协议,能配置仿真环境,并且能将它们转化为可视化图形。利用ONE,我们可以在定义自己的NDDTN路由算法,同时与ONE中内置几种常见的机会网络路由算法做比较,来评估我们的路由算法。
本课题的研究主要考虑DTN和NDN的融合,即借助以命名数据为中心的思想来解决网络的容断容迟问题,为人们在电子商务、数字媒体、社交网络以及智能手机应用等领域提供更好的网络环境。
本课题是基于ONE模拟器来实现对NDN网络的构建,并对NDDTN设计和实现新的性能优良的转发策略。通过本课题,学生可以学习和掌握ONE模拟的Java实现,掌握NDN网络体系结构和转发策略的实现过程,并通过对不同仿真场景的设计,学会对所设计实现的转发策略的评估。本课题可以培训学生实际工程问题的建模和解决能力,熟悉和理解软件工程的开发流程及各流程中具体的工作,还可以训练学生的对软件开发工具的使用,提高学生的编程能力,为学生毕业后就业、入职打下一定的基础。
本文主要研究了一种适合命名数据延迟容忍网络的转发策略,并设计相应的仿真实验对转发策略进行性能评价。
全文共分为六个章节,每章内容如下:
第一章主要阐述了本课题的理论和实际意义及研究背景、文献综述、研究现状、研究思路。
第二章首先阐述了DTN体系结构,然后对DTN体系的命名机制、存储转发等相关概念进行了具体的介绍,重点介绍了DTN中的路由算法。
第三章首先介绍了NDN体系结构的概况,然后对NDN体系的命名机制、消息类型、转发机制进行了详细介绍,重点介绍了NDN中的转发过程。
第四章首先讨论了DTN和NDN的相通之处,以及两者融合工作的研究现状,然后提出了一种基于接口状态和带限制的洪泛的转发策略,NDDTN,借助命名数据来解决网络容断容迟。
第五章首先介绍了ONE模拟器的体系结构,然后介绍了NDDTN转发策略在ONE上的实现,最后设计了实验,将NDDTN与ONE中内置的几种路由算法的进行了比对评估。
第六章是对全文工作的总结和展望。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sb0PdU3H-1628150166175)(RackMultipart20210805-4-uzy9fb_html_d3b6a3f13ce3a8fd.png)]DTN体系结构的核心是包裹(Bundle,也翻译为束)层,一个介于应用层和传输层之间的端到端的面向消息的覆盖层。DTN正是利用包裹层对数据进行持久存储来克服网络中断[12]。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLS8mufC-1628150166177)(RackMultipart20210805-4-uzy9fb_html_4ce089ae78a25c46.png)]图2-1 包裹层示意图
图2-2 因特网协议层与DTN协议层的比较
我们在这里介绍的是DTNRG组织提出的包裹层协议(Bundle Protocol,BP)[13]。包裹层的主要功能包括:
1.处理间歇性的连接。
2.利用预定的、预知的、随机的连接。
3.将终端标识符与网络地址绑定。
包裹层可以运行在不同的底层协议之上,不受本地互联网协议的影响。下图显示了包裹层在不同底层协议上的运行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TnjcmPvJ-1628150166179)(RackMultipart20210805-4-uzy9fb_html_393771b450e649d8.png)]图2-3 包裹层运行在不同底层协议上
DTN采用基于URI的命名机制,来命名包括节点、包裹(Bundle)报文在内的对象,甚至是寻址模式。DTN中对象的名字也叫做端点标识符(Endpoint Identify, EID),其通常分为区域名和实体名两部分。区域名是层次化结构化的,全球唯一的,而实体名只需要在区域内唯一的,结构任意。
当一个包裹报文跨越两个异构区域进行传输时,我们可以用区域名来进行路由和寻址。当包裹报文到达异构的目的区域边界时,包裹名称会被解析为适用于本地协议的名称(或地址)。这种解析方式,是发生在数据交换之后的,是一种后期绑定(Late Binding)。而因特网中名字与地址的DNS解析是发生在数据交换之前的,采用的是与后期绑定相对的前期绑定(Early Binding)。在DTN这种连接经常断开的网络中,这种后期绑定可以在绑定的有限时间之内将包裹报文发送,同时可以限制映射同步需求的范围和减少网络管理信息。
存储-携带-转发( Storage-Carry-Forward, SCF )机制是DTN网络实现容断容迟的关键,保管传输是DTN包裹层针对SCF提供的服务。
DTN中的SCF有别于因特网的存储转发的。在基于TCP/IP的因特网中,端到端的连接是相对可靠的,但存储是不持久的,转发是在规定时间和有限跳数内完成的。而DTN恰恰相反,不期望连接一直保持,但期望存储持久可用。当DTN节点收到消息后,它倾向于把消息以某种形式存储到持久性存储设备上,此时消息受节点携带,随节点的移动而移动,知道遇到合适的节点才会将消息转发出去。DTN中的存储-携带-转发的过程如下图所示。
图2-4 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFyaIdFZ-1628150166181)(RackMultipart20210805-4-uzy9fb_html_7e24e55f40824384.png)]存储-携带-转发示意图
要想设计一个有效的DTN网络,我们必须实现SCF这一功能。对于SCF我们有如下假设:
与SCF功能相呼应的是包裹层提供的保管传输服务,一种粗粒度的重传机制。包裹层提供的最基本服务是一种无确认的单播交付,同时它还提供了两种可选的加强交付责任服务:端到端的确认和保管传输(Custody Transfer)[14]。端到端的确认可以由应用层自行实现。
保管员(Custodian)是DTN中提供保管传输服务的节点,这种节点可以将接收到的消息副本进行持久化存储保管起来,当保管员接近目的节点或者当消息需要重传时,保管员会将消息传输到相应节点。但并不是每个节点都可以担任保管员的,只有当节点有足够的存储资源、所处网络足够通常、不受能量限制的情况下,这个节点才有可能担任保管员。可以看出,保管传输不是一个真正的逐跳机制,因为它发生在保管员之间,而非所有节点。
保管传输提供保管员到保管员的交付确认。当一个节点收到需要保管传输的包裹时,这个节点的包裹层会向包裹中标记的保管员节点发送一个接收信号,同时将包裹中的保管员更新为当前节点要发送的保管员。
另外保管传输是可选的,如果需要保管传输,需要在报文头中填入保管员信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2BsidMwC-1628150166182)(RackMultipart20210805-4-uzy9fb_html_77d54e258a31c8e1.png)]DTN包裹报文包括主块、负载块和扩展块,主块包括必填选项,串联方式类似于IPv6报文。
图2-5 DTN包裹报文主块
其中比较重要的几个基本选项有:
生存时间:报文的存活时间,到期后消息将被丢弃。
源节点:源节点的EID,由源 scheme 偏移量和源 SSP 偏移量组成。
目的节点:目的节点的EID,由目的地 scheme 偏移量和源目的地SSP 偏移量组成。
报告节点:报告节点EID,由报告 scheme 偏移量和报告SSP 偏移量组成。
保管节点:当前保管包裹的节点的EID,由监护 scheme 偏移量和监护SSP 偏移量组成。
创建时间戳:创建时间戳与源节点EID、块长结合可用于区分包裹。
路由指的是在网络中根据一定规则选择一条最佳传输路径的过程。路由通常是网络层负责,其主要功能有两个,一是路径选择,而是数据交换。路径选择是指路由算法创建维护路由表的过程,在这过程中各节点交换路径信息和链接信息建立路由表,然后根据这些信息建立网络拓扑,确定最佳路径。数据交换比较简单,它是根据路由表进行数据转发、信息交换。
关于路由的目的,传统网络的路由算法往往是在源节点和目的节点之间根据某一标准找出一条"最短"路径,如时间最短、跳数最小或成本最小。但DTN路由算法不同。DTN路由面对的最大挑战是间断性的连通。如前文所说,DTN的节点是稀疏、移动、存储容量小、通讯范围有限的,DTN中端到端的连接通常难以直接建立,这就造成了DTN路由面临的间断性的连通、漫长而不稳定的延迟、拓扑结构变化快等等诸多挑战。所以DTN路由的目的是寻找一条或多条交付成功可能性最大的路径。
DTN中的路由算法有很多,根据不同的标准可以分成不同类型的路由。按照路由策略的不同可以分为知识路由和复制路由;按照消息有无副本可以分为单报文路由和多副本路由;按照拓扑信息的掌握可以分为随机性路由和确定性路由。
本文采用的是根据路由策略分类的方式,即将路由策略分为基于知识的路由和基于复制的路由下面将着重介绍这两种路由。
1.基于知识(Knowledge)的路由: 类似于传统的路由,根据网络信息计算最佳路径然后沿着最佳路径逐跳转发消息,资源消耗较少。
2.基于复制(Replication)的路由:将消息复制多个副本,通过多路径将这些副本转发出去,基于复制的路由也称作洪泛型路由。多副本的存在提高了消息传输成功的概率,但是也增加了网络资源的消耗。
基于知识的路由类似于传统的路由,通过查询网络拓扑信息来查找最佳路径,包裹逐跳通过这条路径,最终到达目的节点。根据采用的网络信息内容的不同,可以分为基于位置信息、基于度量节点信息或基于度量链路信息的路由,。
基于位置的路由(Location-based Routing)根据每个节点的位置通过距离函数来估算节点间的距离,然后向距离目标节点更近的方向转发消息。这里的位置可以是现实生活中的物理坐标,也可以是网络拓扑空间中的网络延时。
基于位置的路由优点在于信息需要少算法简单。当前节点只需要掌握目的节点和邻居节点的位置,就能找出最佳路径,无需保持路由表,降低了控制开销。但是这种路由也存在一定问题。一个问题是,即使两个节点位置很近,也无法保证他们之间一定存在连接,两节点间可能被障碍物阻隔。归其根源,位置信息不能完全反映网络拓扑。我们可以为节点添加虚拟坐标绕过障碍物来解决这个个问题。另一个问题是节点往往是移动的,位置和拓扑是变化的,这就使得路由变得复杂。我们可以根据节点的移动预测它们的可能位置来解决这一问题。可以看出,基于位置的路由并不是那么简单。
梯度路由(Gradient Routing)根据节点向目的节点成功交付信息的可能性为每个节点赋以权值。当下一跳节点的权值高于当前节点时,当前节点将向下一节点发送消息。这种路由被称为梯度路由,是因为消息效应值会随消息逐渐接近目的节点而逐渐增大。与基于位置的路由相比,这一路由需要更多的信息,并且收敛过程缓慢。在这种路由中,每个节点都需要保存所有目的节点的权值。节点的权值信息需要扩散指整个网络,这需要很长的时间。
基于链路度量(Link Metrics)的路由类似于传统网络的路由,与前两种路由相比,这种路由需要更多的信息。节点根据链路信息建立网络拓扑图,并为每条链路分配权值,寻找最短路径。DTN路由最重要的性能指标是交付比率,其次才是交付延时和路由开销,所以DTN中的链路度量路由面临的最大问题是如何分配权值,使网络具有最大的交付比率、交付延迟和路由开销。
基于复制的路由是指将消息复制多个副本,通过多路径将这些副本转发出去。基于复制的路由也称作洪泛型路由,这种路由的核心是消息副本的产生和管理。
1.直接投递路由
直接投递(Direct Delivery)路由不进行消息的复制,而是等待源节点与目的节点相遇时,将消息直接投递,可以看作一种退化的洪泛型路由。这种路由不需要知道任何网络信息,所以将其归为洪泛路由。这种路由存在于一些网络情报网中,通过移动节点与网关之间的直接通信来提高交付比率,降低交付延迟和路由开销。
2.传染路由
传染(Epidemic)路由最初被用来同步数据库,直到Vahdat和Becker将其用路由算法[16]。传染路由的基本思想是,当两个节点相遇时交换对方没有的消息。在经过足够的交换后,网络中的所有节点拥有所有的消息。这一传播过程就像病毒的传染扩散一样。这种路由不需要任何网络信息,同时可以最大化消息的传输成功率,减少交付延迟,但是当网络中消息副本大量存在时,会消耗大量的网络资源。
这种路由的一种改良是当一个消息成功交付到目的节点后,目的节点会发送新的消息来通知其他节点停止该消息的转发及丢弃关于这个消息的副本。这一做法可以释放节点的缓存空间,使得节点可以携带传播更多的消息,从而提升消息的交付比率。
3.预测路由
在预测(Prophet)路由中,源节点复制一定数量的消息副本然后进行转发。在转发过程中,各节点根据节点间相遇的历史信息计算出投递预测值(Delivery Predictabilities),节点间相遇越频繁投递预测值越大,如果邻居节点的投递预测值高于当前节点,那么消息将按照一定比例复制转发给该邻居节点。关于投递预测率,如果一对节点在一定时间内没有相遇,那么这两个节点间的投递预测率会衰减。
4.扩散等待路由
扩散等待(Spray and Wait)路由的路由过程主要分为扩散和等待两个阶段。源节点生成一定数量的消息副本,然后进行消息转发。在扩散转发阶段,节点按照一定比例将消息副本分给相遇节点,直到持有的副本数量为1。当副本数量为1时,进入等待转发阶段,而这一阶段会一直持续到当前节点与目的节点相遇,消息交付给目的节点,或者因超时或缓存已满而被清除。。这种路由可以看作是直接投递路由和传染路由的一种折衷。扩散阶段消息的分发比例可以是对半分,也可以是根据节点的社会属性进行分配。
有研究指出,扩散等待路由在传输成功率、传输延迟和路由开销这三方面的综合性能比其他算法要好。
DTN对容断容迟的支持使得其在恶劣的网络环境中也能工作,是一种具有很大实用价值网络。下面我们将介绍DTN较为广泛的几种应用场景:
科研机构为了对野生动物进行研究,往往需要在动物身上安装追踪器,记录动物的行为活动信息。而野生动物生活的野外环境往往是一种连基础通信设施都没有的环境,更不用说通信网络的存在。所以为了将这些信息收集,研究人员还需要安装收集器。收集器的作用相当于我们手机网络中的基站。由追踪器和收集器构成的追踪网络就是一种DTN。用于研究斑马的的ZebraNet[17]系统就是DTN在野生动物追踪上的真实案例。研究人员在斑马身上安置追踪器,利用车载收集器收集斑马的行为活动信息。
在一些偏远地区,因为建设成本问题,这里往往是不存在基础通信网络的。而DTN则可以为这些地区提供廉价的网络服务。例如,麻省理工学院开发的驿站网络(DakNet[18])就部署在东南亚的偏远地区,为那里的人们提供非实时的网络通信服务。在这一系统中,具有短距通信和存储功能的消息亭作为接入点被安放在乡村里,为人们提供简单的网络服务。
车载网络是一种典型的DTN,其节点-车辆具有移动性强、通信距离有限等特点。随着车联网和无人驾驶的兴起,车辆可以收集道路状况、道路拥塞情况、环境检测等信息,然后将这些信息加以汇集、分析和处理。可以看出,车载网络拥有巨大应用前景。
本章主要介绍了延迟容忍网络的体系结构,分析了TCP/IP体系结构无法直接用于容迟网络的原因,然后详细介绍了容迟网络的命名、存储-携带-转发、保管传输、包裹基本结构和路由,以及容迟网络的应用,并对路由机制和分类做了详细介绍,为后续章节探讨DTN与NDN的融合做了准备工作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zIwr6cOP-1628150166183)(RackMultipart20210805-4-uzy9fb_html_d89d6d037643788e.png)]NDN正是ICN一种实例,是一种以命名数据为中心的网络体系结构。以命名数据为中心指的是以一定的命名规则来命名消息(或称报文、包),并根据名字来获取数据,而不是像传统的IP网络一样通过IP地址从特定的节点来获取数据。以命名数据为中心,允许网络使用我们使用以往的经验来解决更广泛的网络问题,不仅仅包括端到端通信,而且包括内容分发和控制问题,以及有助于用户选择和竞争的功能,比如多路径转发和网络内存储。可以看出,NDN具有很大的研究空间和价值,在网络的容断容迟方面也有巨大优势。
图3-1 NDN测床地图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rFwLMJfy-1628150166183)(RackMultipart20210805-4-uzy9fb_html_8eab60952464aa68.png)]今天的因特网采用的是一种以IP为中心的沙漏模型,IP所处的网络层实现了全球互联的最小必需功能。而沙漏结构允许对上层和下层进行各自技术革新,促进了互联网的繁荣发展。而DTN沿用了这一沙漏模型,以命名数据为中心,其协议模型如下图所示。
图3-2 因特网和NDN协议模型对比
与DTN相同,NDN也采用了基于URI的层次化结构化的命名机制,来命名包括节点、消息在内容的对象,甚至是寻址模式。NDN中的名字分为区域名和实体名两部分。例如,吉林大学发布了一支名为"/www.jlu.edu.cn/videos/demo.mp4"的短片,其中"/"用来分隔名字组件,"/www.jlu.edu.cn"和"/www.jlu.edu.cn/videos"是实体名,可以作为名字前缀用于路由查找和转发,"demo.mp4"是这个数据对象的实体名。这种层次化命名机制允许应用程序表示数据内容和关系。例如,demo.mp4的第2段版本1的视频可以命名为"/www.jlu.edu.cn/videos/demo.mp4/2/1"。这种命名机制也为路由提供了可扩展性。
虽然路由器能够从名字中识别不同的组件,但是它们并不能理解名字的具体含义,也就是说名字对于网络来说是不透明的。这项设计允许应用程序采用它们自己的命名方案,同时决定了网络中的命名方案的自由发展。
为了获取动态生成的数据,数据消费者必须能为期望的数据片准确地构造名字,而不是使用之前的名字或数据。一种方法是生产者和消费者根据一定的信息构造出相同的名字;另一种方法是对名字进行最长前缀匹配。例如,消费者请求名为"/www.jlu.edu.cn/videos/demo.mp4"的数据,生产者返回了名为"/www.jlu.edu.cn/videos/demo.mp4/1"的数据。消费者可以根据返回的这个数据包包含的信息和生产者发送的命名约定为后续的数据请求构造名字。
NDN基于名字的路由从根本上消除了IP网络中因为地址带来的问题:地址耗尽、地址管理和名称地址转换。
在传统的TCP/IP网络中,数据的安全是由端节点来负责的,而NDN自身即可保证数据的安全。数据生产者通过为数据包添加签名,保证了数据完整性。另外以命名数据为中心虽然使得什么样的数据被请求变得容易监控,但是除非与资源请求者直连,否则监听者无法知道是谁发起的请求。
另外NDN支持多路径转发,自适应转发策略可以检测前缀劫持攻击,并寻找替代路径转发。而且NDN报文引用的是内容而不是特定地址的节点,恶意攻击NDN网络中的一个特定节点变得困难。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NSIqq0HG-1628150166184)(RackMultipart20210805-4-uzy9fb_html_ace7c2d02c33e3f4.png)]NDN网络中存在两种原生种报文,兴趣报文(Interest Packet)和数据报文(Data Packet),和一种补充报文,否定回答报文(NACK Packet)。三种报文的结构如下图所示。
图3-3 NDN报文结构
兴趣报文是消费者发送的用于请求数据资源的报文;数据报文是生产者根据兴趣报文向消费者返回的数据资源的响应;而NACK报文可以由网络中的任何节点发送,用于向其他节点返回否定信息。这三种报文的共同具有的内容有类型(Type)、名字(Content Name)和内容(Content),除此之外它们还具有各自的一些内容选项。兴趣报文的内容是一个随机序列号(Nonce)用于区分对具有相同名字的数据资源的不同请求;数据报文的内容是他要返回的经过格式化的数据块;而NACK报文的内容是表示否定回答原因的错误代码,用于通知下游节点的停止向此方向转发兴趣报文。NACK报文的错误码如下图所示。
表3-1 NACK错误码表
错误代码 | 错误原因 |
---|---|
Duplicate | 上游节点接收到了一个与之前已经到达未被满足的兴趣报文的完全相同的兴趣报文,这说明兴趣报文的转发路径即将出现回路。 |
Congestion | 上游节点没有可以用于发送该兴趣报文的接口,或上游节点返回数据报文的下游链路出现拥塞 |
No Data | 上游终端节点没有(无法生产或没有存储)与兴趣报文匹配的数据。 |
在IP网络中,转发往往被当作路由的一部分,也没有转发策略一说。传统网络中的路由就是在网络中寻找一条从源节点(消费者)通往目的节点(生产者)的最佳路径,即建立FIB,然后根据FIB沿着这条路径将消息进行转发即可。而在NDN中,消息的转发往往是多路径的,消息的请求响应过程被分成了路由和转发两部分。NDN中,路由指的是根据网络拓扑建立和维护FIB,转发指的是决定在何时、向哪里、是否发送消息,同时转发负责确保无回路、控制拥塞[19]。
NDN转发模型主要包含三种数据结构:内容存储(Content Store,CS)、待定兴趣表(Pending Interest Table, PIT)和转发信息表(Forwarding Information Bases,FIB)。CS负责保存数据报文,提供缓存服务;PIT记录待定兴趣,用于处理相同的兴趣报文,及为数据报文的返回提供参照;FIB记录了通往生产者的接口信息,为兴趣包的转发提供转发依据。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sH3AhZt1-1628150166185)(RackMultipart20210805-4-uzy9fb_html_c2c784de2b6e1841.png)]图3-4 NDN转发引擎模型
CS的结构较为简单,是一个二维数组,只有名字和数据内容两列,且名字和数据内容是一对一关系。程序的实现上可以用哈希表来表示。
PIT记录的是未被满足的兴趣报文的相关信息,PIT记录的不只是兴趣报文的名称和其接收接口,PIT其实包含的是未满足的兴趣报文的名字以及一条或多条与之相对应的兴趣项。每条兴趣项记录的是一条兴趣报文到达时的接口,该兴趣报文的随机序列号以及该兴趣项的到达间。PIT中名字和兴趣项是一对多的关系,这是因为同一节点可能收到不同节点发送过来的兴趣报文,而兴趣项中的随机序列号正是用于区分这些兴趣报文是否重复接收。当节点收到与PIT中相应兴趣报文名称相匹配的数据报文后,该兴趣名称及其所辖的兴趣项会被移除。兴趣项中到达时间可以用于计算兴趣项的生存时间,当生存时间到期时,该兴趣项也将被移除。同时,兴趣项中的到达时间也可以为FIB中的往返时间计算提供帮助。
FIB为兴趣包的转发提供依据。FIB结构较为简单,只有名字前缀和转发接口,当然也可以追加往返时间、接口状态、优先级、限制速率等选项。诸如往返时间、接口状态等追加选项,可以用作自适应转发策略和拥塞控制机制的设计依据。其中,名字前缀和转发接口是一对多的关系。
IP网络中也存在FIB,但它与NDN中的FIB是两个概念。IP网络中的FIB记录的是路由地址,而NDN中记录的是转发接口列表。并且,IP网络中的FIB只记录了下一跳信息,而NDN中的FIB可以记录关于接口的更多信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSPdviW0-1628150166185)(RackMultipart20210805-4-uzy9fb_html_b659a9722e79ae7f.png)]关于NDN的转发过程。NDN中通信是一种"拉"操作,由兴趣报文和数据报文两种报文驱动(NACK报文稍后提到),转发消息的过程自然分为了转发兴趣报文的消息请求阶段和转发数据报文的消息响应阶段。
图3-5 NDN报文转发过程
1.请求阶段
在消息请求阶段,消费者根据所需资源的名称构造出了兴趣报文,然后向路由器中发送该兴趣报文。
首先,兴趣报文进入,路由器根据兴趣名称查找CS,如果匹配,将生成并返回数据报文;如果未能匹配,则查找PIT。
然后,路由器根据名字查找PIT,如果根据名字有没有匹配到兴趣项,那么将创建新的待定兴趣项,插入表中,然后根据FIB通过相应的接口,向下一节点转发;如果在PIT中匹配到兴趣项,还需要将当前兴趣报文和查找到的兴趣项做比较,根据兴趣项的随机序列号确定当前兴趣报文是否只是同一消费者发送的对相同资源的请求,如果是则丢弃该兴趣报文,以及当前兴趣报文是否是不同不同消费者对同一资源的请求,如果是则新建兴趣项,插入到该兴趣名称下。
最后,如果路由器在FIB中没能找到合适的端口来转发该兴趣报文,兴趣报文只好被丢弃,路由器向上一节点发送NACK报文,上一节点根据NACK报文采取进一步措施,即不再向该路由器转发相同名称前缀的兴趣报文,需要的会上一节点会继续转发NCAK报文;如果路由器根据FIB成功转发兴趣报文,下一节点将会重复这一过程,继续转发兴趣报文,直到兴趣报文到达生产者,进入消息响应阶段。
2.响应阶段
在这一阶段中,生产者收到收到下游节点发送过来的兴趣报文,如果生产者的CS中没有匹配这一兴趣报文的数据,而且生产者也无法生产于该兴趣报文的名称匹配的数据报文,那么生产者会返回一个NACK报文,通知一系列的下游节点。如果CS中有匹配的数据或者CS中没有但是生产者可以生产相应的数据,那么生产者直接打包好数据报文,返回给下游节点。
下游节点接收到返回的数据报文后,会根据PIT中记录的兴趣项,向相应的节点转发数据报文,相应的待定兴趣得到满足;转发后该节点会将数据报文缓存到CS中,同时将PIT中已经满足的待定兴趣删除。
数据报文就这样根据PIT沿着与兴趣报文相反的路径返回到消费者那里,消息请求响应阶段完成。
介绍完消息的请求响应后,让我们回到转发策略的讨论上来。NDN中允许消息的多路径转发,根据是否使用多路径,我们可以将转发策略分为使用单路径的最优路径(Best Route)转发策略和使用多路径的洪泛型(Flooding)转发策略。需要注意的是,这里的转发策略仅仅指的是兴趣报文的转发,而不包括数据报文。因为数据报文的转发是完全沿兴趣报文的相反路径进行的,无需额外的转发策略。
1.最优路径策略
最优路径转发策略类似于传统路由,比如链路状态路由和距离向量路由,只向最佳路径上的节点转发兴趣报文。这种转发策略使用名字前缀代替IP前缀用来绑定数据。路由器之间相互交换这些包含名字前缀的拓扑信息,将链接赋以权值,构建出自己的FIB,从最终获取网络的拓扑结构,找出兴趣报文最佳传输路径然后进行转发。
2.洪泛转发策略
洪泛型转发策略充分利用了NDN多路径转发的特点,它将兴趣报文复制多份,根据FIB沿着不同的路径向多个节点转发这些消息报文。FIB由相应的路由策略在网络拓扑建立和变化时写入[20]。这种转发策略与DTN中的基于复制的路由是极为相似的。如何控制消息副本的数量,或者说是如何维护FIB中的转发接口是这类转发策略的研究核心。
杨若冰提出了一种洪泛型转发策略[21]。这种转发策略是一种基于接口状态和重传时间的策略,根据接口的状态和接口的重传时间对接口进行排序,从排在前面的接口开始,对兴趣包进行转发。如果接口超时或返回NACK报文,则标记接口为不可用,然后选择下一个接口进行转发,直到返回数据报文节点,或者没有可用的转发接口。当返回数据报文时节点将继续转发数据报文,如果没有可用的转发接口,节点将向下游节点返回相应的NACK报文。这一转发策略主要针对网络拥塞控制,也确实取得了良好的效果。虽然这一策略在兴趣包的初始转发阶段使用洪泛转发,但是当拓扑趋向稳定时,兴趣报文就会只在最佳路径上进行转发,以达到网络拥塞的控制。这种转发策略应该看作最优路径和洪泛转发的结合策略。
黎耀星就提出了一种基于距离向量的NDN转发策略[22]。这种转发策略使用距离向量表取代了FIB,并向消息报文种添加距离向量,用以传递网络拓扑信息。兴趣报文包含源节点标识和距离当前节点到源节点的距离,报文中的距离每经过一跳就会自动加1,当兴趣报文到达目的节点时。各节点通过洪泛的方式对兴趣报文进行转发,在转发兴趣报文的过程中,会根据报文中的源节点距离向量更新自己的距离向量表。数据报文不仅包括了对应兴趣报文的源节点距离向量,还包括了目的节点(数据生产者)的距离向量,只用于比较,而不用于更新。当节点转发数据报文时会比较自身的距离向量表来确定节点是否在该数据报文的最佳转发路径上,如果在,则根据PIT继续转发,否则丢弃报文。这种转发策略应用场景也是DTN和NDN融合网络,并在容断容迟方面取得了较好的表现。但是这种转发策略更像是一种路由方法,而且它使用距离向量表代替了原生的FIB,同时因为使用了距离向量表,原有的兴趣报文和数据报文的转发过程也变得不同。
本章主要介绍了NDN网络的体系结构,包括与传统IP网络的区别,主要包括NDN的命名机制、安全性问题、消息类型、路由和转发过程,并对路由过程中用到的三种数据结构、消息的请求响应过程以及转发策略做了详细介绍。当然NDN在拥塞控制、信任管理、应用程序适配、缓存策略、网络性能优化等方面也具有很大的研究价值,但限于篇幅和研究方向,我们不在这里进行探讨。
命名数据容迟网络(Named Data And Delay Tolerant Networking,NDDTN)。是本文研究的重点,这是一种借助命名数据来解决延迟容忍问题的网络,换句话说,这是NDN在DTN上的融合和适配。对DTN和NDN进行比较我们不难发现,DTN和NDN具有相似的命名机制,在存储-携带-转发、多路径(洪泛)转发等方面也具有共同特点。下面我们将对DTN和NDN的共同之处进行探讨,并考虑两者的结合。
目前国内外已有不少研究人员对容迟网络和命名数据网络結合进行了研究,其主要方法是将NDN的思想結合到DTN中,以解决容断容迟问题。
1.加州大学洛杉矶分校的张丽霞等人在Ad Hoc Networking via Named Data[23]这篇文章中探讨了NDN对无线自组织网络适应。NDN在设计之初就考虑了容断容迟的支持,无需添加额外的组件。他们在这篇文章中提出了一种基于距离的先听后播(Listen First, Broadcast Later, LFBL)转发策略[24]。LFBL用到了NDN的命名机制,使用命名数据驱动端到端的网络通信。LFBL中的节点根据消息的名字决定是否响应请求以及向哪转发,因此消息不受节点移动的影响,向目的节点方向转发。
但是他们的设计中DTN和NDN的结合还不够紧密。LFBL中,除了使用了命名数据,用距离表(Distance Table)替代了FIB外,并没有使用NDN的CS和PIT。针对这一情况,国内有人提出了一种也是基于距离的先听后播的,但加强了DTN和NDN结合的转发策略。
2.北京邮电大学的黎耀星等人提出了基于命名数据的距离路由(Named Data based Distance Routing, NDDR)。这种策略基于命名数据和节点距离,沿用了先听后播思想,同时加强了DTN与NDN结合的转发策略。具体而言,这种策略使用了距离表替代了NDN中的FIB,用于作消息转发的依据,同时充分利用了CS和PIT,缓存了数据,减少了兴趣包的重复。这种转发策略与传统的距离向量路由有相似之处。虽然这种转发策略允许消息多路径的,但是这种转发策略更倾向于寻找一条最短路径来转发消息,对于节点的移动、链路的断开考虑不够,同时数据报文的返回过程较为繁琐。
3.伦敦大学Gareth Tyson等人在Towards an Information-Centric Delay-Torelant Network[25]这篇文章中对ICN和DTN进行了深入探讨,对ICN和DTN的融合网络ICDTN进行了理论探索。
讲过之前对DTN和NDN的介绍,我们不难看出两者是具有相似之处的,包括命名数据、后期绑定、存储转发、保管传输、路由转发等方面。下面我们将就这几个方面对DTN和NDN的融合进行可行性分析:
DTN和NDN都是使用名字来命名数据,两者的支持基于URI的命名机制,名字的结构都可以采用区域名+实体名的形式。其中区域名是全球唯一的,而实体名只需要在区域内唯一即可。消息的获取根据的都是名字,而非IP地址,两者都是先解析名字,然后根据名字决定向哪里转发消息。换句话说,两者采用的都是后期绑定的形式。在DTN的消息转发过程中,特别是在那些基于复制的路由中,请求节点和目的节点关心不是消息沿着怎样的路径到达,也不关心是哪份副本到达,他们关心的是消息名字和消息的内容,这其实正是NDN中的以命名数据为中心思想。
在DTN中包裹层可以将包裹报文进行持久化保存,然后选择合适的时机将消息进行转发。而在NDN中的CS可以用来存储消息,在将来遇到相同的资源请求时可以做出响应,而且NDN中的CS完全可以根据需要进行持久化存储。可以说两者都具有存储-携带-转发的特点,并且两者的存储都是很好的分布在网络中的,容易获得的,而存储转发正是网络容断容迟的关键。DTN中的持久化存储的消息在消息送达目的节点后就会失去利用价值,占据空间,需要额外的算法来处理这些消息。而在NDN中缓存是可以被用来重新利用的。
在DTN中,传输成功率是最基本的性能指标,交付延迟和路由开销是衡量算法好坏的两个重要指标。在DTN的众多路由算法中,基于复制的预测路由和扩散等待路由是两类传输成功率较高且综合性能较好的路由。在NDN的转发策略中,洪泛转发最基本的容易实现的转发策略。虽然基于链路状态和距离向量的转发策略具有良好的性能,但是单路径的转发在DTN这种连接经常断开的网络中并不适应,性能表现也不会很好。NDN中的洪泛转发与DTN中的基于复制的路由是基本相同的,两者都是将消息分成多个副本,然后进行转发。但是严格来说NDN中的洪泛只存在于兴趣包的转发过程,或者说是数据请求阶段,数据响应阶段,消息是沿着兴趣包转发的反向路径进行转发的;而DTN中的对资源的请求与响应不加以区分,消息只有一种,洪泛贯穿于数据请求与响应。所以如果我们想要将NDN应用到DTN中,就需要对NDN的数据返回阶段进行适当修改,使其变为洪泛型转发,增强网络的传输成功能力。
综合以上讨论我们提出了一种基于接口带限制的洪泛型转发策略。
在基于接口状态的带限制的洪泛型转发策略中,我们在DTN的包裹层之上,应用层之下,建立了命名数据层(Named Data Layer),用于构建命名数据网络。我们将这样的网络称之为命名数据容迟网络(Named Data Delay Tolerant Networking, NDDTN)鉴于NDN对容断容迟具有先天性良好支持,命名数据层的实现上,我们保持了NDN的绝大部分体系结构同时,对消息的请求响应做了如下改进,以增强明命名数据网络对容断容迟的支持:
在上一章节介绍NDN的FIB时我们提到可以根据需要为转发接口添加接口状态,对FIB进行了扩展。在这里FIB不再是名称前缀与转发接口的对应,而是名称前缀与转发接口项(Forward Face Item, FFI)的对应,名称前缀与FFI依然保持一对多的关系。而接口项主要包括转发接口(Forward Face)、接口状态(Face State)和往返时间(Round-trip Time)。
接口状态用于资源请求阶段,也就是兴趣报文的转发阶段,控制兴趣报文的转发(即,控制消息副本的数量),起到减缓拥塞、降低开销的作用。接口状态有红(Red)、黄(Yellow)和绿(Green)三种基本状态,具体含义如下表所示。
表4-1 接口状态表
接口颜色 | 状态含义 |
---|---|
红 | 接口不可用 |
黄 | 接口可能可用 |
绿 | 接口可用 |
接口颜色采用的是简单颜色方案,当然我们也可以根据需要增加其他接口状态和相应颜色。接口状态的颜色变化的具体过程如下:
黄色接口表示接口的可用性待定,即不确定能不能及时响应资源请求。当一条兴趣报文进入路由器时,依次经过CS、PIT时,它所记录的名称前缀从没有在当前节点中出现过,那么我们需要为这个名称前缀插入到FIB中,并根据当前节点的连接情况,创建新的FFI,其中FFI的接口状态默认为黄色。在FIB中创建完新的转发接口后,我们想这些新的"黄色"接口转发兴趣包,等待数据报文的返回。
绿色接口表示该接口状态良好、传输可信赖,有数据报文经由此接口返回。
关于黄、绿接口涉及到一个问题,拥塞控制。当节点移动性低、不是那么稠密、数据请求较少、线路通畅,即网络良好时,我们期望并且网络也允许我们大量广泛的转发兴趣报文,也就是尽可能的利用更多的转发接口,无论黄、绿,以期尽快的返回数据报文;但当节点变得稠密、网络变得繁忙时,我们需要减少转发的接口,减少兴趣报文的发送,以期减轻网络的负担,此时我们只向绿色端口转发兴趣报文,如果没有绿色端口,我们才开启黄色接口。
红色接口表示接口不可用,当前无法返回满足该名称前缀的数据报文。当当前节点与某一节点断开连接时(假设两节点间只有一种连接方式),当前节点会将FIB中所有包含该节点的FFI的状态变为红色。或者当上游节点返回NACK报文,表示该接口指向的方向无法返回相应的数据报文时,接口状态也会变为红色。那么这有一个问题,当上游节点重新变得可以返回数据报文时,那么这个接口会不会已经被我们封死,使当前节点错过数据报文呢?
关于这一问题,究其根本,是由DTN节点的移动性、拓扑快速变化引起的。所以我们增加了一项机制,当两个NDDTN节点相遇、建立连接后,会交流PIT。PIT的具体交流过程为,双方将对方没有的待定兴趣制作成新的兴趣报文,同时新建FFI插入到FIB中,然后发送给对方。对方收到新的兴趣报文,按照标准转发过程,依次查找CS、PIT、FIB。如果对方返回对应的数据报文,那么数据报文逆向返回,途径节点的响应FFI也会修改为绿色,从而避免了数据报文的错过。
带限制的洪泛是指兴趣报文转发时,根据网络情况,可能会限制转发接口,只选择绿色接口进行转发,二是指数据报文转发阶段,采用带限制的洪泛转发。关于资源请求阶段的带限制洪泛我们已经在上文讨论过了,下面将主要讨论消息响应阶段,即数据报文的转发阶段的带限制洪泛。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uKekenZf-1628150166186)(RackMultipart20210805-4-uzy9fb_html_ac291b30dad051c3.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FU8kOfUJ-1628150166186)(RackMultipart20210805-4-uzy9fb_html_f24f21c54c423c4a.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-loDzPaRk-1628150166187)(RackMultipart20210805-4-uzy9fb_html_f24f21c54c423c4a.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kuf4Tlyv-1628150166187)(RackMultipart20210805-4-uzy9fb_html_ccd9669adee6a7c9.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-23tNtESM-1628150166188)(RackMultipart20210805-4-uzy9fb_html_f24f21c54c423c4a.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hZH7H5GX-1628150166188)(RackMultipart20210805-4-uzy9fb_html_7698ef92c50d4f7c.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLvxUOUp-1628150166189)(RackMultipart20210805-4-uzy9fb_html_b95637586021953a.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtDSboQz-1628150166190)(RackMultipart20210805-4-uzy9fb_html_aca32ad17222a81.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNXTgTqQ-1628150166191)(RackMultipart20210805-4-uzy9fb_html_40dfb16e1864ebc1.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcfvMTyw-1628150166192)(RackMultipart20210805-4-uzy9fb_html_ab3aed43c8e09923.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ytOArzfF-1628150166192)(RackMultipart20210805-4-uzy9fb_html_b0388a6c0a906037.gif)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y7OvfRsb-1628150166193)(RackMultipart20210805-4-uzy9fb_html_ab3aed43c8e09923.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DdMRsKwu-1628150166193)(RackMultipart20210805-4-uzy9fb_html_90718eb5a3d77da2.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yZGklxjs-1628150166194)(RackMultipart20210805-4-uzy9fb_html_acb070a9f9a4dc9f.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UNwl01w8-1628150166195)(RackMultipart20210805-4-uzy9fb_html_ab3aed43c8e09923.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OIPueo4I-1628150166195)(RackMultipart20210805-4-uzy9fb_html_ac291b30dad051c3.gif)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hQcprgSq-1628150166196)(RackMultipart20210805-4-uzy9fb_html_90718eb5a3d77da2.gif)]
forward
FIB
` CS
cache
Data Packet
` PIT
×
× lookup miss
not forward
√ lookup hit
√
图4-1 NDDTN数据报文转发过程
标准的NDN的数据报文的转发,是沿着兴趣报文到达的反向路径进行的:数据报文到达,节点查找PIT,如果匹配,那么缓存数据报文至CS,同时根据匹配结果向下一节点转发数据报文,然后移除相应的待定兴趣项,直至送达消费者。但在DTN中,这可能是行不通的,因为节点往往是移动的,网络连接是频繁断开、建立的。对此我们在原有数据报文的返回过程的基础上做如下修改:数据报文到达,直接缓存数据报文,然后再查找PIT。如果没有匹配项,那么不做操作,等待相关兴趣报文的进入;如果有匹配项,那么数据报文将查找FIB,根据名字前缀找出绿色状态的上游节点,向这些上游节点之外的节点洪泛数据报文。这就是数据响应阶段的带限制洪泛。
消息响应阶段这一"等待"一"洪泛",与扩散等待算法有相似之处。NDDTN的洪泛操作,尽可能的把数据报文散播到更广泛的区域,增加了投递成功的可能性,同时根据接口状态进行洪泛,避免了回路、提高了效率;而等待操作对拥塞控制、减少网络开销提供了保障。
表4-2 转发策略的伪代码
update(){for(Message message : getMessages()){switch(type){case Packet.INTEREST_PACKET : trySendInterest(){String type = message.getType();String name = message.getName();String content = message.getContent();PITItem pitItem = new PITItem(type, name, content);if( lookupCS(PIT) )return;if( lookupFIB(PITItem) )return;elselookupPIT(PITTtem) return;};break;case Packet.DATA_PACKET :trySendData(){insertCSItem(Packet)if(!notInPIT())return;for(ForwardFace face: FIB.getForwardFaces(prefixName))sendMessage(Mesaage, DTNHost);};break;case Packet.NACK_PACKET :break;default:break;}} |
---|
本章对DTN和NDN的融合进行了讨论,并根据两者的相通之处,借助命名数据思想,在DTN的包裹层之上实现了NDN命名数据层,并将这一产物命名为NDDTN。并通过增加接口状态,采用带限制的洪泛型转发,增强了两者的融合程度。因为使用了副本存储、洪泛转发,以及命名数据、PIT和FIB,可以预见NDDTN将在容断容迟方面有良好表现。
但是NDDTN也摆脱不了洪泛型转发的缺点,不可避免的存在资源占用、网络开销的增加等问题。如何控制洪泛的广度和深度,NDDTN仍有很大提升空间。
本章将主要介绍NDDTN在ONE上的仿真实验,并与DTN中的传染式路由、预测式路由和扩散等待路由进行了比较,在传输成功率、平均交付时延和路由开销方面做比较,来评估我们的路由算法。并对实验结果进行了分析。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K6xiJOxc-1628150166196)(RackMultipart20210805-4-uzy9fb_html_f566e5e2d3a6f069.png)]
图5-1 ONE中的赫尔辛基市主要道路
本文使用机会网络环境模拟器ONE作为仿真实验的环境。ONE是芬兰赫尔辛基大学用Java编写的一种基于离散事件的机会网络模拟器,对DTN路由协议和应用协议具有良好的支持。
ONE适用于延迟容忍网络,支持多种移动模型,能模拟分析多种路由协议,并可以根据配置,模拟不同的仿真环境,同时能将模拟过程转化为可视化图形,便于我们的分析研究。利用ONE,我们可以在定义自己的NDDTN路由算法,同时与ONE中内置几种常见的机会网络路由算法做比较,来评估我们的路由算法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ktn6NsKe-1628150166197)(RackMultipart20210805-4-uzy9fb_html_696386e3378129a3.png)]ONE是一种可配置的模拟器。通过修改默认配置文件,或者创建我们自定义配置文件就可以实现不同的仿真环境。我们可以在配置文件中配置仿真环境的区域大小、仿真时长,节点的通信方式、移动模型、传输速度等一系列参数。
图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGqhUWij-1628150166197)(RackMultipart20210805-4-uzy9fb_html_f79596c40f461ace.png)]
5-2 ONE的架构概览
图5-3 ONE的软件包结构
ONE由不同的模块组成,其中比较重要的几个模块为core、gui、input、movement、report、routing、ui。这几个模块的功能为:
其中核心模块、移动模型、路由模型、输入模块是我们会经常接触的几个模块,关于这几个模块做如下介绍:
1.核心模块
ONE中的很多地方使用了一种松耦合的继承方式覆盖实现,即core中定义简单的系统接口,然后由其他几个模块来实现具体功能,同时根据配置文件实现对子类的动态选择,实现了对仿真系统的良好裁剪。ONE中几个比较重要的类有:
(1)Connection.java
节点连接状态,即连接的两端节点、当前传输速度、已传输字节数、传输结束的时间等。
(2)ConnectionListener.java
连接状态监听器,主要负责负责监听连接的状态变化,其监听的具体内容由report模块下的相关类实现。
(3)ConnectivityGrid.java
连通网格。在ONE中,地图被分割为矩形网格,网格边长大于节点通信直径,这样的话,网格中的节点只能与同网格、与自己所在网格相邻的网格中的这两种节点有通信关系。这样的设计提高了节点遍历效率,加快了节点状态的更新。
(4)DTNHost.java
DTN节点,即仿真系统中的通信节点。节点属性包括有当前坐标、移动速度、消息路由器、网络连接管理器、运动模型、最近要走的运动路径、下一次动作的时间、通信总线、消息监听器、行为监听器等属性。
(5)DTNSim.java
仿真系统程序入口。
(6)Message.java
仿真消息,其主要包括以下属性:源节点、目的节点、经过的路径、创建时间、到达时间等。
(7)NetworkLayer.java
(网络层)节点连接管理器。因为节点是不断运动的,节点与节点的连接状态也是实时在变化,所以需要该类负责管理节点的连接与断开。
(8)Setting.java
配置文件的解析类。
(9)SimClock.java
仿真时间管理器。
(10)World.java
仿真世界模型的实现,主要功能有仿真场景、仿真节点、事件模型的初始化,以及节点状态的更新。
2.移动模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIJH3tRY-1628150166198)(RackMultipart20210805-4-uzy9fb_html_bd79827ad841ccf8.png)]移动模型决定了节点的移动方式,包括移动的方向、速度、停留时间。基本的移动模型为MovementModel,其具体实现有六种:随机移动(Random Way Point, RWP)、基于地图的移动(MapBasedMovement, MBM)、基于地图的最短路径移动(ShortestPathMapBasedMovement, SPMBM)、地图路由移动(MapRouteMovement, MRM)、扩展移动(ExternalMovement, EM)。关于这几种移动模型,RWP是随机生成出发地和目的地,然后沿直线移动;MBM限制节点只能在路径上移动;而SPMBM是MBM的基础上,采用了Dijkstra算法进行最短寻路。这两种基于地图的算法都可以指定兴趣区域(POIs),兴趣区域由一组兴趣点((Point of Interest,POI)组成。当使用兴趣点时,移动模型会挑选兴趣点作为目的地,而不再是随机挑选任意坐标,兴趣区域可以用来表示生活中人们经常出现的地点,比如食堂、宿舍、图书馆等。POIs提高了仿真过程的真实程度。
图5-4 各移动模块之间的继承关系
3.路由模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WOLw5465-1628150166199)(RackMultipart20210805-4-uzy9fb_html_d74ee8da5072c24b.png)]ONE中内置了几种常见的路由模块:Direct Delivery 、First Contact 、Spray-and-Wait、PRoPHET、Max-Prop、Epidemic。这些路由模块都继承了ActiveRouter,而ActiveRouter继承了MessageRouter。 ActiveRouter提供了关于消息传输的绝大多数方法,同时提供了先入先出和随机两种缓存管理。要想实现自己的路由算法,我们只需继承ActiveRouter,然后调用、重载相应的方法即可。
图5-5 各路由算法之间的继承关系
4.输入模型
ONE中消息的产生,即输入模型,有两种,一种是导入外部事件,另一种是通过消息产生器。带入外部事件指的是将一个记录有时间戳、消息名称、源节点、目的节点、消息大小等信息的txt格式的文件。消息产生器则是一个名为MessageEventGenerator的类,它可以动态的产生消息。首先,它是一个事件队列EventQueue(接口)。MessageEventGenerator通过实现super.nextEvent()方法来产生一个事件MessageCreateEvent,同时产生一个随机时间n,经过n段时间后产生下一个事件,然后仿真器通过调用nextEvent()获取一个事件,并处理这个事件即可。而MessageCreateEvent是创建一个仿真消息的事件,继承自externEvent(),并提供processEvent()接口。MessageCreateEvent的processEvent()用于消息的创建。
在DTN中,连接的经常断开是网络面临的最大问题,消息的交付受到很大的挑战。所以,代表消息交付能力的传输成功率是衡量DTN路由算法好坏的最基本指标。如果一个路由算法能较好地较成功的交付消息,那么我们希望这个算法在传输延迟和网络开销上也能有良好的表现。
所以对于DTN来说,评价一个路由算法的好坏往往三个指标:传输成功率、平均传输延迟和路由开销比率。这三个指标的具体定义如下:
1.传输成功率(Delivery Ratio):成功到达目的的节点报文数量与源节点发出的报文数量之比。传输成功率代表了路由算法转发报文的能力;对于存在多个拷贝的消息,记作产生一次,且其中只要一个完成传输就算传输成功。
2.平均传输延迟(Delivery Delay):报文从产生到抵达目的节点所需的平均时间。平均传输延迟代表着路由算法传输能力、效率、网络资源占用和网络资源利用率。
3.路由开销(Overhead Ratio):成功转发报文数量与抵达目的节点的报文数量的差值同目的节点接收报文数量的比值。路由开销比率代表了网络中一个报文成功传输所需的平均传输次数。
但是经过思考我们不难发现,对于NDDTN网络来说,消息的转发分为请求和响应两个阶段,报文类型也主要分为兴趣报文和数据报文。而上文中的三个指标并没有将消息转发过程进行分类,所以上面的指标,并不能准确地反映我们算法的好坏。所以我们对传输成功率、平均传输延迟、路由开销重新定义为:
1.传输成功率(Delivery Ratio):指一定时间内,消费者发送的请求报文的数量与其最终接收到来自生产者的响应报文的数量的比值。
2.传输延迟(Delivery Delay):指消费者从发送兴趣报文到最终收到数据报文所需的平均时间。
3.开销比(Overhead Ratio):指网络中成功转发的报文数量与消费者接收的数据报文的数量的比值。
如前文所说,ONE是一种基于配置的模拟器。我们使用ONE内置的赫尔辛基市地图,并使用了默认的兴趣区域,同时生产者分布在节点之中,并对ONE进行如下表所示的配置,未提到的配置选项使用默认值:
表5-1 实验参数配置
参数 | 值 |
---|---|
路由方法 | NDDTN+对照组(Epidemic、Spray and Wait) |
节点数量 | 生产若干(4个)+消费者若干(10/20/30/40) |
仿真时间 | 8000s |
节点移动速度 | 13-15m/s |
节点传输范围 | 150m |
节点移动模型 | ShortestPathMapBasedMovement |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXOI2vFB-1628150166200)(RackMultipart20210805-4-uzy9fb_html_c5e11aef84f74ed9.png)]4个生产者位置如下:
图5-6 生产者位置分布
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWzsXwrn-1628150166201)(RackMultipart20210805-4-uzy9fb_html_a55baa7d15c75f18.png)]不同消费者节点密度下的实验场景:
图5-7 消费者数量为10的实验场景
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k644KQrb-1628150166202)(RackMultipart20210805-4-uzy9fb_html_51de544d8b2f4c79.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sAZTz4oK-1628150166202)(RackMultipart20210805-4-uzy9fb_html_c719416eb9e573b3.png)]图5-8 消费者数量为50的实验场景
图5-9 消费者数量为100的实验场景 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0NOBVkj-1628150166203)(RackMultipart20210805-4-uzy9fb_html_cfa3f23c21d1c71.png)]
图5-10 消费者数量为200的实验场景
表5-2 节点密度对传输成功率的影响
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dTFNCVdH-1628150166204)(RackMultipart20210805-4-uzy9fb_html_54f55d21d76aadc5.gif)]
从上图我们可以看出,当节点密度较低时,扩散等待路由和传染式路由的传输成功率在14%左右,而NDDTN因为节点密度太低、节点移动性强,导致连接不稳定,成功率远低于另外两者。随着节点密度的增加,节点之间的联系得以加强,而NDDTN的传输成功率得以上升。但是随着节点密度的增加,三者都比可避免的出现了网络拥塞,其中扩散等待路由受其影响较大。另外,因为我们消息的转发采用的是双向流,丢包的几率更大。NDDTN和扩散等待路由也正是受双向流的影响,有了上图的表现,而传染式路由依靠强大的复制、广播,受双向流的影响并不是很大。
NDDTN的表现并不是很稳定,因为相比于扩散等待路由和传染式路由,NDDTN采用的是带限制的洪泛,即限制了洪泛的广度和深度。因为这种限制,NDDTN在节点密度较低时,表现较差,也正是因为这种限制,使得其在节点密度,网络较为拥塞时有较好表现。
可以看出,NDDTN更适合在节点密度较高的环境中工作。
表5-3 节点密度对平均传输延迟的影响
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5FssvRsH-1628150166205)(RackMultipart20210805-4-uzy9fb_html_c91b1b51e9907dae.gif)]
可以看出,相比于扩散等待路由和传染式路由,NDDTN在平局传输延迟方面有巨大优势。同时,当节点密度增加时,扩散等待路由和传染式路由的平均传输延时是大幅降低的,而NDDTN是小幅上涨的。传染式路由的平均传输延迟始终是最大的。对NDDTN中,这是因为响应报文的转发扩散是有方向的,其方向与兴趣报文的传递方向大致相反,即大致指向请求节点。而另外两者的扩散是无序的、随机的。
表5-4 节点密度对开销比率的影响
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4bnUKOdn-1628150166207)(RackMultipart20210805-4-uzy9fb_html_6fb4580d89df5e5a.gif)]
从上图我们可以看出,NDDTN在开销比率上有较好的表现,扩散等待路由受节点密度的影响较大,且随着节点密度的增加,开销比率成倍增加。
本章我们介绍了ONE模拟器,并在ONE进行了仿真对照实验,研究了NDDTN在不同网络节点密度条件下的传输成功率、平均传输时延、路由开销比等。同时,为了保证实验的公平性,我们对传输成功率、平均传输时延、路由开销比进行了重新定义,并将ONE中的单向通信过程修改为双向通信。通过与对照组的对照我们发现NDDTN转发策略在传输成功率、交付延迟、开销比率等方面较好表现,但是NDDTN在传输成功率上的表现并不是很理想,没有与对照组拉开差距,但是在平均传输延迟和路由开销比上保持领先。这是因为,相比于对照组的扩散等待路由和传染式路由,而NDDTN是一种基于接口状态的带限制的洪泛,我们限制了洪泛的广度和深度。
当然受制于ONE自身的限制,我们实验的带有一定的局限性,与真实世界中的容迟网络还有一定的差距。首先,ONE是一款针对DTN的模拟器,对NDN的先先天性支持不是很好,尤其是NDN双向流的设计在ONE不能很好适配,预测式路由甚至因为双向流而无法正常工作。另外,现实生活中的DTN网络是复杂的,其节点的移动移动规律、传输保管能力都是需要有深入调查的。要想设计一个合理的实验,我们还需要对DTN网络做更深入地了解。
总之,我们的NDDTN转发策略表现基本达到预期,但仍有很大的空间需要进行改进。
DTN是一种广泛存在于现实世界中的网络,用于连接各种。NDN网络是一种新型的网络,它以命名数据为中心,摆脱了以IP为中心的而带来的地址空间耗尽,NAT转换和地址管理问题,且在容断容迟方面有先天性的支持。用以命名数据为中心思想来解决网络的容断容迟问题是一门新兴的学科,各方面的探索还处于起步阶段。但可以肯定的是,DTN和NDN的融合有巨大的研究价值和实际意义。
本文主要探讨了用DTN和NDN的融合,即借助以命名数据为中心的思想来解决网络的容断容迟问题。对此,我们研究了DTN、NDN的基本体系架构,并对其路由方法做了详细探讨。
经过我们的研究可以看出,DTN和NDN的融合是完全可行的,其融合产物NDDTN的表现基本满足预期的。特别的NDDTN在网络拥塞、传输时延、开销比率上有良好的控制,在网络节点密度较高时有良好表现,但是在节点密度较低的情况下传输成功率还有较大的提升空间。当网络较为稀疏时,我们还是建议使用传统的洪泛型路由,如扩散等待路由、传染式路由等。
在我们的实验中,我们只是简单的设置了兴趣区域,未能将其完全利用。比如消费者的移动仍然是比较随机的、缺乏规律性,而我们现实生活中的网络的移动节点往往具有规律以及相关的社会属性,我们完全可以利用这些信息来改进我们的转发策略;另外消费者和生产者的分布不够广泛、偏向集中也对实验带来了一定的偏差。
下一步我们需要根据DTN网络节点的移动规律,针对某一具体的、特定的DTN进行研究,比如社会网络、车载网络等,对NDDTN转发策略进行优化改良,提升NDDTN的稳定性。
同时我们可以借鉴其他的DTN路由的长处来改进我们的NDDTN转发策略,比如节点的CS的管理,我们可以借鉴传染算法,以提高节点稀疏情况下的传播广度和深度,提高转发策略的转发成功率。
无论是DTN还是NDN,本文的探讨都是有限的,两者各自的体系结构以及融合工作还有很大的研究空间和范围。
参考文献