命名数据网络(NDN)介绍

2023-11-03 08:28
文章标签 介绍 命名 数据网络 ndn

本文主要是介绍命名数据网络(NDN)介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

命名数据网络的由来

IP网络最开始其解决的问题是两个实体间点对点通信需求,实现资源共享。(简单知道即可)

随着互联网的发展,互联网用户对internet的需求现已经发生了巨大变化。目前面临着以下挑战

  1. 首先是随着以内容为中心(如视频播放平台、资源下载平台及社交网络等)应用程序的不断发展,彻底改变了 internet 的使用模式,人们越来越关心数据,而不是IP地址。就像我们访问一个网站,更加关心它是什么域名一样,不会记住需要访问的主机IP。

  2. 随时互联网用户的急速攀升,造成了海量的数据分发和大量数据的复制需求。当前的IP网络体系都是实现主机到主机的数据传输,不能支持多播,也就是一对多的数据转发,这无疑对网络带宽提出了很大需求。

  3. 互联网的普及也导致使用移动设备用户的大量增加,移动设备可以很轻松的切换网络。但现在的网络体系不能给移动用户在改变网络环境的情景下提供,无间断无缝连接及无感通信的高要求,使得移动环境下互联网体验感下降。

以上需求导致,研究人员不得不对互联网的网络体系结构进行根本性的改变。

首先提出了ICN(Information Centric Networking),信息中心网络,简单来说就是要以信息为中心的网络,它不是一种特定的技术,而更像是一种思想!!!

在ICN思想下诞生了很多网络架构,这里就不列举了。其中借鉴 CCN 思想的**命名数据网络(Named Data Networking, NDN)**已逐渐成为 ICN 的主流,并很有希望成为下一代互联网体系架构。

NDN和IP网络的区别

相同地方在于:它们都是沙漏型体系架构,允许下层和上层不断革新变化去掉不必要的限制 ,这种瘦腰型网络体系架构推动了互联网的稳步发展。IP核心层传输IP数据包,NDN核心层传输NDN数据包(有两种数据包,兴趣包和数据包)

不同地方在在于:NDN架构本身增加了安全层和策略层,并在瘦腰处利用了内容数据检索模型代替了原来的主机到主机的数据交付模型。下面详细提一下。

  1. 安全层:每个数据包都会有签名,直接在网络层提供数据安全。
  2. 策略层:策略层可以对不同的兴趣包执行不同的响应,比如说,当检测到阻塞后,或者收到DDos攻击,可以拒绝转发。
  3. 传输控制:IP体系下的传输控制,内置在NDN转发平面中。
  4. Face抽象接口:NDN有Face这个盖帘,当与NDN路由器连接后,相当于通过Face建立了一个通道,可以进行数据转发。Face接口只是逻辑上的,具体可以是本地进程的通信,物理链路,或者是封装的TCP,UDP通道(来更好的兼容IP体系)。

在这里插入图片描述

NDN通信原理

首先,NDN的通信可以分为兴趣请求包 Interest 发出和内容数据包 Data 传回两个过程。它们的格式如下,简单知道即可。

在这里插入图片描述

在NDN路由器里面有三个非常重要的数据结构,它们分别是

  1. 内容缓存表 CS:CS是一个用于缓存已接收到的数据包的数据结构。当一个节点收到一个数据包后,它会检查CS以查看是否已经有相同名称的数据包被缓存。
  2. 待定兴趣表 PIT:用于跟踪未满足的兴趣包,记录兴趣包的来源
  3. 转发表 FIB:用于存储路由表信息。它记录了如何将特定的数据包传送到正确的下一跳节点

这三个数据结构,如何在路由转发的时候起到作用的?

当用户需要某个数据时候,他会发送数据包,当该数据包经过一个路由时,会发生…

  1. 查询CS:是否已经有缓存了;
  2. 查询PIT:是否已经有其他人请求过了,那就不用再重复发请求了,只需记录一下,在包回来时给所有请求都分一份就行;
  3. 查询FIB:查询哪条路径能满足请求,把兴趣包转发下去。

在这里插入图片描述

当服务端收到兴趣包后,会构造数据包返回,当数据包经过一个路由器后,会发生…

  1. 查询PIT:若有该数据的请求,发给所有请求列表;若无则直接丢弃。
  2. 访问CS:留一份缓存后,继续转发

在这里插入图片描述

了解NDN基本的转发流程后,下面这张图是具体一些的转发模型,可以看看,深入理解一下。(不看也没事,对简单学习NDN的同学来说不重要)
在这里插入图片描述

NDN几个关键要素

命名方案

数据如何命名是NDN发展中研究的重点,因为NDN体系架构中的所有层级都是基于命名机制得到的名称进行处理,比说说,路由、数据检索、权限控制、安全保证等等。

NDN中数据命名由以下特性,并不是简简单单确定唯一数据。

  1. 通过名称,通信系统可扩展且自适应性地检索内容数据,提高数据分发效率,以应对未来互连网海量数据分发。可扩展就是应对不断增长数据,自适应应对差异化的网络环境。
  2. 可以持久标识唯一数据,不会出现名称碰撞。
  3. 方便容易读。

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 的自适应转发策略考虑到以下内容。

  1. 哪一个兴趣请求包应该转发到哪一个接口
  2. 允许有多少未得到回应的请求包记录停留在表项 中
  3. 怎样在多个接口转发请求包的情况下实现负载均衡
  4. 以及如何在多个可选路径中选择路径以避免请求失败

这里不多讲,后面会专门写一篇NDN转发机制的介绍。

缓存机制

由于 NDN 数据包独立于数据来源及去向位置信息,因此 NDN 路由器可以对内容数据缓存。

传统的IP网络缓存,有Web缓存,内容分发网络CDN的缓存,对等网络P2P的缓存,虽然起到了一定作用,但在扩展性和安全性上,还是有很大的问题。NDN缓存有以下优点。

  1. NDN路由器缓存是可以长时间可用的,使得相同请求内容可以快速响应,IP路由器只是缓存来进行传输,传输过后立马删除。
  2. 能够满足用户的移动通信,当用户切换网络后,能尽快被最近的CS节点响应。
  3. 当多个路由器缓存了相同内容,也能有效避免单点故障。
  4. 无论是兴趣包还是数据包,里面都不包含任何信息,缓存的内容也一样,攻击者只知道有人请求了这个内容,但不知道是谁请求。

鉴于通信设施缓存不能无限大,因此缓存的数据量有一 定的上限限制,所以如何对缓存的内容合理地取舍,即缓存替换策略,一直是学术界研究的焦点。缓存替换策略主要是通过时间和访问频次两个方面对当前收到的内容是否缓存进行考量。比较早期的缓存替换策略有LRU,LFF(非常经典,知道就行)

缓存能够重用NDN架构的很大优势!!!

移动性

随着移动设备的急剧增加,使得 IP网络不得不面对在移动设备网络环境下形成的新挑战,IP网络在该挑战下,还是通过提出新协议,也就是打补丁的方式尝试解决。

NDN因为有两种身份,生产者和消费者,因此要分别对两者的移动性来进行满足。

对于消费者移动性,当其发生一个兴趣包后,移动到另一个网络环境,导致原来本该收到的数据包没有接收到,这时候只需要重新发送相同的兴趣包即可。而且鉴于网络缓存,下次本改到达消费者的数据包,会被缓存到网络中间,新的兴趣包能够被最近路由器的CS满足,大大减少延迟。能够较好的满足用户移动性的场景。

对于生产者移动性,由于网络服务的中断,导致内容不可被路由,兴趣包不会被满足。网络存储这时候就又起到了作用,对于非第一次请求的数据包,它是存储在路由器中的CS,可以重新发送给用户。但是对于第一次请求的数据包,就需要更多解决方案了,比如说多媒体实时传输的场景。这里不多介绍。

安全性

传统的 IP 网络是验证通信双方主机并保护通信信道以禁止中间人攻击的方式来提供安全性,而且这种安全是通过后续打补丁的方式加入的,如TLS,SSL协议,它们已经迭代了很多个版本。

相比之下 NDN 的安全性是通过密钥保护技术,直接将内容数据的真实性和保密性与每一个数据包绑定在一起,无需考虑数据如何及从那里获取,从根源解决了数据通信的安全问题。

每一个内容数据包都包含由内容生产者通 过数字签名生成的签名字段(Signature),以此将内容名称、 内容生产者和内容数据绑定在一起。

在这里插入图片描述

验证签名的公钥本身也是一种数据,当获取到数据包后,如何验证呢?

  1. 首先根据数据包里面的 key locator字段,来获取其公钥的Content Name
  2. 然后根据Content Name重新构造兴趣包来获取,签名的公钥。
  3. 公钥本身又是一种数据,如何验证公钥是否是安全的。
  4. 根据公钥数据包携带的 key locator字段,获取签发该公钥数据包的Content Name。
  5. 然后又获取到 上一层 的公钥数据包。
  6. 一层一层,最终要该机构的根数据包。
  7. 通过互联网上分发的该机构的公钥,可以来验证最上层的根数据包签发的公钥。

在这里插入图片描述


接下来的文章,我会提到NDN的一些应用场景,包括不限于,车联网,视频传输,物联网等。

打个广告,我在搭建以中文语言为基础的NDN交流平台(还在建设中😊),功能和 https://named-data.net 类似,还会增加我们自己创建的中文文档,当前域名为 named-data.cn且已经购买,有兴趣帮忙一起弄的话,可以联系我。能够一块在上面挂名。

这篇关于命名数据网络(NDN)介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336883

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到