- 命名数据网络原理、技术与应用
- 谢人超 霍如 刘江 黄韬 刘韵洁编著
- 3318字
- 2020-06-24 18:44:08
2.1 NDN基本原理
NDN作为全新的网络架构,与TCP/IP架构最大的区别是其以信息为中心的设计思想,NDN将数据与位置分离,从TCP/IP架构关注内容位置转移到关注内容自身上。对于TCP/IP网络而言,NDN是一种“革命性”的网络架构。本节主要介绍NDN的设计原则及其体系架构,让读者对命名数据网络有一个整体的认识,以方便后面章节的阅读和理解。
2.1.1 NDN设计原则
NDN的主要设计目标是更好地支持内容检索与获取,这一目标决定了NDN的体系架构不是一个会话模型,而是一个以信息为中心的模型(兼顾资源共享式的通信)。NDN体系架构的设计原则主要包括以下6个方面。
(1)保留沙漏模型。沙漏模型的中心是一个通用的网络层,为全局连接实施最小而必要的功能。这种“细腰”特性使原有互联网设计更加强大,允许下层和上层不断革新变化并去掉不必要的限制,保证了互联网的迅猛增长。如图2-1所示,NDN协议栈模型沿用了传统TCI/IP的这种沙漏结构。
图2-1 TCP/IP栈与NDN协议栈
(2)考虑安全性。互联网在设计之初并没有考虑到网络的安全性,所有的安全措施都是事后增加的,这种修补式的安全,已无法满足当今互联网环境的要求,对互联网造成了很大的负面影响。因此,在设计NDN架构时,必须考虑网络的安全性。
(3)保留端到端原则。端到端的原则在网络出现故障时,维持了应用的顽健性,一般分层系统设计都应该考虑,NDN继承并扩展了这一原则。
(4)流量自调节。数据分发的流量均衡是网络稳定可靠运行的保证。由于IP提供的是开环数据分发,即只负责数据的分发,对数据是否到达以及数据在传输过程中遇到的问题没有反馈调节机制,而是由传输层协议承担了单播的流量均衡任务。不同于IP, NDN在设计中融入了流量均衡机制。
(5)保留路由和转发平面的分离。路由和转发平面的分离使路由系统即使不断演进更新,也能保证转发平面的正常运行,这就保证了转发技术和路由技术能够并行发展。因此,保留路由和转发平面的分离十分必要,NDN沿用了这种设计原则。
(6)保证网络架构的中立,使用户选择和竞争尽可能简单。网络架构应有利于用户的选择和竞争,尽管以前的网络设计没有考虑到网络架构的中立性问题,但全局部署的经验告诉我们“网络架构并不是中立的”。因此,NDN的设计需要考虑到授权给用户或终端的必要性,使之能够相互竞争。
2.1.2 NDN体系架构
如图2-1所示,NDN保留了TCP/IP网络的沙漏模型,不同的是,NDN用内容块(Content Chunk)代替了IP层。从网络的角度看,就是在网络中用对数据命名代替对物理实体命名,用户所交换的信息与位置无关,其安全性将依赖于数据包中必须携带的签名。另外,利用网络泛在缓存功能来缓存经过的数据包,缩短了其他用户访问缓存数据包的响应时间,特别是对于流行度较高的内容,从整体上减少了网络流量。此外,NDN在时间和空间上对信息的接收者和请求者进行了解耦,增加了网络的顽健性,能够抵抗对内容源的DDoS攻击、抵抗通道攻击等。
在内容块层之上的是支持基于命名数据的应用层,应用层可完成可靠性检验、数据签名等功能,从而保证了网络中数据的安全和完整性。内容块下层是策略层,具有转发、路由选择和存储功能,兴趣包(Interest Packet)可根据策略层的规则沿多条路径进行转发。策略层以下是支持传输的协议和底层物理链路,最下层可以兼容UDP、IP以及P2P、广播等机制,保证了对IP网络的兼容性。
与传统的TCP/IP体系架构相比,NDN主要有以下几方面的优势。
(1)NDN节点不再是传统的基于终端位置进行路由,而是基于数据内容的名字进行路由。内容文件的位置与其名字剥离,路由不再依赖内容的具体位置,而是通过识别网络内容来确定终端,从而摆脱了移动性等问题的束缚。
(2)NDN主要传输模型采用发布-订阅范式。订阅者与发布者不需要事先建立连接,用户可以根据内容名获取发布者发布的内容而不需要知道具体哪一个数据源拥有自己感兴趣的内容。这种传输模型使内容的产生、获取在时间和空间上分离开,拥有更高的内容传输效率,增强了可扩展性。
(3)NDN通过公钥加密的方法保证数据的合法性。在TCP/IP网络体系中,用户所看到的终端地址与实际的内容名字并不相干,使TCP/IP网络存在很大的安全隐患,用户很容易受到恶意网站的攻击。NDN通过对数据包进行签名,大大提高了网络的安全性能。
2.1.3 NDN工作机制
NDN网络的通信是由请求方(Consumer)驱动的,数据可以进行块级传输,其数据报文分为兴趣包和数据包两类。如图2-2所示,兴趣包和数据包都含有一个内容名称来标识用户想要获取的内容或数据包负载的数据。与兴趣包不同的是,数据包还包含所要交换的内容及其内容发布者的签名。
图2-2 NDN兴趣包与数据包结构
如图2-3所示,NDN路由节点通过3种重要的数据结构完成数据的转发,分别是转发信息库(Forwarding Information Base, FIB)、待定兴趣表(Pending Interest Table, PIT)和内容缓存库(Content Store, CS)。其中,FIB记录当前节点到达内容提供节点的下一跳接口,相当于IP网中的FIB,由路由协议自动生成,是转发兴趣包的依据。与IP转发不同的是,NDN转发允许有一组转发出口,而不限于一个。PIT用于记录已经转发但未响应兴趣包的内容名及其来源接口,目的是使相应的数据包能够准确到达请求者,当响应数据包利用某PIT条目转发后,或者某PIT条目超出阈值,则将该条目删除。CS用于保存路由节点的缓存内容,类似于IP路由器中的缓存,但采用了不同于IP的缓存替换策略,路由器会定期更新CS缓存的信息,对于热点请求的数据路由器进行持续的缓存,而对于超时的数据路由器则将其从缓存中删除。
图2-3 NDN转发模型
基于NDN定义的两种数据报文格式与路由节点定义的3种数据结构,当内容请求者需要请求内容时,首先广播兴趣包,兴趣包到达路由节点后,路由器根据兴趣包中的内容名,查询CS,如果CS中包含所请求的数据包,则直接向兴趣包的来源接口返回该数据包的副本并丢弃这个已经被满足的兴趣包,否则在PIT中继续查询。如果PIT中有该内容名条目,则说明之前已经收到过相同的兴趣包且已经转发,但是没有获得返回结果,需要把该兴趣包的来源接口加入PIT对应的接口列表中,同时将该兴趣包丢弃。当对应数据包返回时,根据接口列表向对应接口恢复数据的副本,并将该数据包存储在CS中以满足未来的潜在请求。如果CS和PIT中都没有结果,则查找FIB,如果在FIB中发现有对应内容名条目,则说明该节点第一次收到该兴趣包,这时根据FIB的接口列表(不包含兴趣包进来的接口)转发该兴趣包,并在PIT中增加新的条目。如果在3个结构中都没有结果,则说明不存在相关的匹配路由,该节点无法处理这个兴趣包,于是将其丢弃。该过程在基于命名路由协议中很常见,当兴趣包到达缓存有对应请求数据的节点后,就会沿原路径返回一个包含该数据名和数据内容以及发送者签名的数据包到请求节点。需要注意的是,兴趣包和数据包并不携带主机或接口地址(如IP地址),兴趣包根据所要请求数据的名称路由到数据的持有者,数据包则通过兴趣包经过各个节点时所建立的状态信息反向传送给数据的请求方。
路由器对于数据包的处理则相对简单,当数据包到达路由节点时,根据数据包的内容名字段,先在CS中查找。如果CS中存在,则丢弃该数据包;如果CS中没有,则在PIT中查找。如果存在对应条目,将数据转发给该PIT匹配条目的所有接口,并缓存该内容到CS中;如果PIT中没有匹配条目,则丢弃该数据包。
综上所述,NDN路由器能够将兴趣包和数据包保存一段时间,当节点收到对同一个数据的多个兴趣请求时,路由器仅需要向上游传递一个兴趣包,然后将其存储在PIT中。当数据包返回时,路由器查找PIT,将数据转发给该PIT匹配条目的所有接口,然后将该内容缓存在CS中并擦除对应的PIT条目。因为NDN数据包独立于其位置而存在,因此缓存的数据包可以用于响应将来的数据请求。数据沿着接收到的兴趣包的路径反向传输,每个数据包经过每一跳只满足一个兴趣包,这就实现了NDN逐跳的流量均衡。
NDN数据包从某种意义上讲,与它来自哪里或转发到哪里无关,因此路由器能够缓存NDN数据包以满足未来的潜在请求。这使NDN不需要额外的基础设施就能自主地实现各种功能,包括内容分发、组播、移动性以及延迟容忍网络等。例如,设想一个用户正在一辆移动的车中观看视频,用户在发起了某数据请求后可能移动到了新的网络区域,虽然原来的请求数据到达用户原来的地方后被丢弃,但它却沿路保存,当用户重新发送请求时,它很可能从临近的缓存中获取数据,从而实现中断的最小化。数据靠近用户缓存也改善了包的传输性能并降低了对某一特定数据源的依赖。