本文主要是介绍命名数据网络(NDN)介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
命名数据网络的由来
IP网络最开始其解决的问题是两个实体间点对点通信需求,实现资源共享。(简单知道即可)
随着互联网的发展,互联网用户对internet的需求现已经发生了巨大变化。目前面临着以下挑战
-
首先是随着以内容为中心(如视频播放平台、资源下载平台及社交网络等)应用程序的不断发展,彻底改变了 internet 的使用模式,人们越来越关心数据,而不是IP地址。就像我们访问一个网站,更加关心它是什么域名一样,不会记住需要访问的主机IP。
-
随时互联网用户的急速攀升,造成了海量的数据分发和大量数据的复制需求。当前的IP网络体系都是实现主机到主机的数据传输,不能支持多播,也就是一对多的数据转发,这无疑对网络带宽提出了很大需求。
-
互联网的普及也导致使用移动设备用户的大量增加,移动设备可以很轻松的切换网络。但现在的网络体系不能给移动用户在改变网络环境的情景下提供,无间断无缝连接及无感通信的高要求,使得移动环境下互联网体验感下降。
以上需求导致,研究人员不得不对互联网的网络体系结构进行根本性的改变。
首先提出了ICN(Information Centric Networking),信息中心网络,简单来说就是要以信息为中心的网络,它不是一种特定的技术,而更像是一种思想!!!
在ICN思想下诞生了很多网络架构,这里就不列举了。其中借鉴 CCN 思想的**命名数据网络(Named Data Networking, NDN)**已逐渐成为 ICN 的主流,并很有希望成为下一代互联网体系架构。
NDN和IP网络的区别
相同地方在于:它们都是沙漏型体系架构,允许下层和上层不断革新变化去掉不必要的限制 ,这种瘦腰型网络体系架构推动了互联网的稳步发展。IP核心层传输IP数据包,NDN核心层传输NDN数据包(有两种数据包,兴趣包和数据包)
不同地方在在于:NDN架构本身增加了安全层和策略层,并在瘦腰处利用了内容数据检索模型代替了原来的主机到主机的数据交付模型。下面详细提一下。
- 安全层:每个数据包都会有签名,直接在网络层提供数据安全。
- 策略层:策略层可以对不同的兴趣包执行不同的响应,比如说,当检测到阻塞后,或者收到DDos攻击,可以拒绝转发。
- 传输控制:IP体系下的传输控制,内置在NDN转发平面中。
- Face抽象接口:NDN有Face这个盖帘,当与NDN路由器连接后,相当于通过Face建立了一个通道,可以进行数据转发。Face接口只是逻辑上的,具体可以是本地进程的通信,物理链路,或者是封装的TCP,UDP通道(来更好的兼容IP体系)。
NDN通信原理
首先,NDN的通信可以分为兴趣请求包 Interest 发出和内容数据包 Data 传回两个过程。它们的格式如下,简单知道即可。
在NDN路由器里面有三个非常重要的数据结构,它们分别是
- 内容缓存表 CS:CS是一个用于缓存已接收到的数据包的数据结构。当一个节点收到一个数据包后,它会检查CS以查看是否已经有相同名称的数据包被缓存。
- 待定兴趣表 PIT:用于跟踪未满足的兴趣包,记录兴趣包的来源
- 转发表 FIB:用于存储路由表信息。它记录了如何将特定的数据包传送到正确的下一跳节点
这三个数据结构,如何在路由转发的时候起到作用的?
当用户需要某个数据时候,他会发送数据包,当该数据包经过一个路由时,会发生…
- 查询CS:是否已经有缓存了;
- 查询PIT:是否已经有其他人请求过了,那就不用再重复发请求了,只需记录一下,在包回来时给所有请求都分一份就行;
- 查询FIB:查询哪条路径能满足请求,把兴趣包转发下去。
当服务端收到兴趣包后,会构造数据包返回,当数据包经过一个路由器后,会发生…
- 查询PIT:若有该数据的请求,发给所有请求列表;若无则直接丢弃。
- 访问CS:留一份缓存后,继续转发
了解NDN基本的转发流程后,下面这张图是具体一些的转发模型,可以看看,深入理解一下。(不看也没事,对简单学习NDN的同学来说不重要)
NDN几个关键要素
命名方案
数据如何命名是NDN发展中研究的重点,因为NDN体系架构中的所有层级都是基于命名机制得到的名称进行处理,比说说,路由、数据检索、权限控制、安全保证等等。
NDN中数据命名由以下特性,并不是简简单单确定唯一数据。
- 通过名称,通信系统可扩展且自适应性地检索内容数据,提高数据分发效率,以应对未来互连网海量数据分发。可扩展就是应对不断增长数据,自适应应对差异化的网络环境。
- 可以持久标识唯一数据,不会出现名称碰撞。
- 方便容易读。
NDN中使用类似统一资源定位符号的方式来命名数据(URL),比如说一个数据名/ndn/example/video/cat,它的含义如下。
- /ndn 表示根命名空间,类似于互联网中的根域名(例如.com)。
- /example 表示某个实体、组织或者应用的命名空间,类似于一个域名(例如example.com)。
- /video 表示数据的类型或者内容类别。
- /cat 是具体的数据标识符,代表某个视频的名称。
路由转发机制
NDN的路由层和转发层是相互隔离的,路由层决定了路由的可达性,转发层则根据其数据包传输状态来决定路由的优先级和使用情况。
NDN体系下的 FIB 和 IP 网络中的路由表类 似,用于保存全网的路由信息。
如何根据FIB得到最优的转发策略,是路由转发机制需要考虑的问题。
第一个NDN 路由协议是命名数据OSPF,OSPFN 由于不能支持动态多路径转发,并且没有建立认证路由数据的机制,现在已被命名数据链路状态路由协议(Named-Data Link State Routing protocol, NLSR)所取代。
NDN 的自适应转发策略考虑到以下内容。
- 哪一个兴趣请求包应该转发到哪一个接口
- 允许有多少未得到回应的请求包记录停留在表项 中
- 怎样在多个接口转发请求包的情况下实现负载均衡
- 以及如何在多个可选路径中选择路径以避免请求失败
这里不多讲,后面会专门写一篇NDN转发机制的介绍。
缓存机制
由于 NDN 数据包独立于数据来源及去向位置信息,因此 NDN 路由器可以对内容数据缓存。
传统的IP网络缓存,有Web缓存,内容分发网络CDN的缓存,对等网络P2P的缓存,虽然起到了一定作用,但在扩展性和安全性上,还是有很大的问题。NDN缓存有以下优点。
- NDN路由器缓存是可以长时间可用的,使得相同请求内容可以快速响应,IP路由器只是缓存来进行传输,传输过后立马删除。
- 能够满足用户的移动通信,当用户切换网络后,能尽快被最近的CS节点响应。
- 当多个路由器缓存了相同内容,也能有效避免单点故障。
- 无论是兴趣包还是数据包,里面都不包含任何信息,缓存的内容也一样,攻击者只知道有人请求了这个内容,但不知道是谁请求。
鉴于通信设施缓存不能无限大,因此缓存的数据量有一 定的上限限制,所以如何对缓存的内容合理地取舍,即缓存替换策略,一直是学术界研究的焦点。缓存替换策略主要是通过时间和访问频次两个方面对当前收到的内容是否缓存进行考量。比较早期的缓存替换策略有LRU,LFF(非常经典,知道就行)
缓存能够重用NDN架构的很大优势!!!
移动性
随着移动设备的急剧增加,使得 IP网络不得不面对在移动设备网络环境下形成的新挑战,IP网络在该挑战下,还是通过提出新协议,也就是打补丁的方式尝试解决。
NDN因为有两种身份,生产者和消费者,因此要分别对两者的移动性来进行满足。
对于消费者移动性,当其发生一个兴趣包后,移动到另一个网络环境,导致原来本该收到的数据包没有接收到,这时候只需要重新发送相同的兴趣包即可。而且鉴于网络缓存,下次本改到达消费者的数据包,会被缓存到网络中间,新的兴趣包能够被最近路由器的CS满足,大大减少延迟。能够较好的满足用户移动性的场景。
对于生产者移动性,由于网络服务的中断,导致内容不可被路由,兴趣包不会被满足。网络存储这时候就又起到了作用,对于非第一次请求的数据包,它是存储在路由器中的CS,可以重新发送给用户。但是对于第一次请求的数据包,就需要更多解决方案了,比如说多媒体实时传输的场景。这里不多介绍。
安全性
传统的 IP 网络是验证通信双方主机并保护通信信道以禁止中间人攻击的方式来提供安全性,而且这种安全是通过后续打补丁的方式加入的,如TLS,SSL协议,它们已经迭代了很多个版本。
相比之下 NDN 的安全性是通过密钥保护技术,直接将内容数据的真实性和保密性与每一个数据包绑定在一起,无需考虑数据如何及从那里获取,从根源解决了数据通信的安全问题。
每一个内容数据包都包含由内容生产者通 过数字签名生成的签名字段(Signature),以此将内容名称、 内容生产者和内容数据绑定在一起。
验证签名的公钥本身也是一种数据,当获取到数据包后,如何验证呢?
- 首先根据数据包里面的 key locator字段,来获取其公钥的Content Name
- 然后根据Content Name重新构造兴趣包来获取,签名的公钥。
- 公钥本身又是一种数据,如何验证公钥是否是安全的。
- 根据公钥数据包携带的 key locator字段,获取签发该公钥数据包的Content Name。
- 然后又获取到 上一层 的公钥数据包。
- 一层一层,最终要该机构的根数据包。
- 通过互联网上分发的该机构的公钥,可以来验证最上层的根数据包签发的公钥。
接下来的文章,我会提到NDN的一些应用场景,包括不限于,车联网,视频传输,物联网等。
打个广告,我在搭建以中文语言为基础的NDN交流平台(还在建设中😊),功能和 https://named-data.net 类似,还会增加我们自己创建的中文文档,当前域名为 named-data.cn且已经购买,有兴趣帮忙一起弄的话,可以联系我。能够一块在上面挂名。
这篇关于命名数据网络(NDN)介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!