首页 > 其他分享 >从IP网络到命名数据网络(NDN)简介

从IP网络到命名数据网络(NDN)简介

时间:2024-04-19 16:34:41浏览次数:30  
标签:缓存 NDN IP 网络 内容 转发 数据网络

从IP网络到命名数据网络(NDN)简介

由于科研需求,学习了解一下NDN相关技术。

由于本人的排版太菜了,本文还是由GPT-4排版+润色。

本文章用双拼完成,还在学习中。

传统IP网络面临的挑战

IP网络的诞生

IP网络的概念最初是在20世纪70年代由美国国防部高级研究计划局(DARPA)提出的,其目的是为了解决在军事环境中,如何构建能够在核战争等极端情况下也能稳定运行的通信网络。此外,当时不同类型的网络系统之间缺乏有效的互操作性,这促使研究人员开发一种新的方法来实现网络间的互联。

IP网络解决的主要问题

IP网络主要解决的问题包括:

  1. 互操作性:在IP网络中,不同物理和链路技术的网络可以通过一个统一的协议——互联网协议——进行通信。
  2. 可扩展性:IP网络设计支持广泛的网络规模,从小型局部网络到全球互联网,都能通过相同的协议框架工作。
  3. 鲁棒性:IP网络采用分包、路由和重组的方法来传输数据,即使网络中的某些部分出现故障,数据仍然可以通过其他路径到达目的地。

关键技术和发展

传输控制协议(TCP)和互联网协议(IP)。TCP/IP协议栈由Vint Cerf和Bob Kahn在1974年提出。这个协议栈包括更高层的应用协议,如HTTP(超文本传输协议)和FTP(文件传输协议),以及负责物理网络交互的网络接口层。

现代背景下IP网络面临的挑战

  1. 地址空间受限:最初设计的IP网络主要使用IPv4,它提供大约43亿个唯一地址。随着设备数量的激增,尤其是智能设备和移动设备的普及,IPv4地址的需求已远远超出了供应。虽然IPv6已被引入以扩展地址空间(提供约340万亿万亿万亿个地址),但IPv6的部署进度缓慢,与IPv4的兼容性问题也成为了转换的障碍。

  2. 安全问题:如果说IP地址的消耗不算太严重,可以通过结构拓展,软件层面映射等方案解决。安全问题则是困扰工程师们几十年的隐患。

  • 数据传输安全性:IP网络本身不提供加密或完整性验证,这使得网络通信容易受到监听和篡改。虽然可以通过额外的安全协议(如SSL/TLS)来增强安全性,但这些措施需要在应用层额外实现,增加了复杂性。
  • 分布式拒绝服务攻击(DDoS):IP网络容易受到DDoS攻击,攻击者利用大量的伪造或劫持的IP地址生成大量无效流量,攻击目标服务器,导致服务中断。
  1. 可拓展性问题
  • 路由表膨胀:随着互联网规模的扩大,全球路由表的大小也在不断增长,这对网络设备的处理能力和内存需求提出了更高要求。
  • 网络管理复杂性:大规模和动态的网络环境使得网络配置和管理变得更加复杂。IP网络需要更智能的网络管理工具和策略来有效应对快速变化的网络需求。
  1. 性能问题
  • 网络拥塞和延迟:尽管现代网络提供了较高的数据传输速率,但在数据流量高峰期间,网络拥塞和延迟仍然是一个问题,尤其是在大型数据中心和跨大洲通信中。特别是只能实现主机到主机的传输,而不能进行一对多的数据转发。
  • 无连接和尽力而为的服务质量:IP是一种无连接的协议,采用“尽力而为”(best-effort)的传输方式,不保证数据包的送达、顺序或避免重复,这对于需要高可靠性和实时性的应用(如视频会议和在线游戏)来说是一个挑战。

云游戏、VR等技术的发展就受到网络的巨大约束

  1. 其他问题
  • 用户亲和:对于几十亿的互联网用户来说,他们中的超过99%都是只关注互联网的内容本身,而不是一些ip地址。甚至连域名争抢战都已经在一定程度上成为了过去式,更不要提他背后的ip地址了。而随着时代的发展,互联网的内容都是面向用户的,互联网背后的底层结构也理应做出一定调整。

  • 移动互联网:无论网络如何更新,它本身的物理结构都注定了更适合为固定地点的用户提供更优质的服务。而时代发展使得移动互联网的发展越来越迅速,提升服务质量也迫在眉睫。比如无感通讯,网络环境的不断改变等场景。

ICN

针对以上种种问题,研究人员对网络体系结构进行根本上的改变。提出了一个新的概念——信息中心网络ICN

有关ICN架构的研究最早可以追溯到斯坦福大学的TRIAD项目(Translating Relaying internetwork architecture Integrating ActiveDirectories)。

信息中心网络的核心设计理念:

  1. 数据内容命名

    img

    相比于传统网络,ICN采用具有全局唯一标识的“内容名字”的命名内容数据块,代替了本来沙漏模型的IP细腰,并且使用命名内容作为整个网络协议栈的核心。实现了“内容”与“位置”分离

  2. 基于内容名字的内容获取

    ICN的内容可以存储在网络中的任何位置。(这不就是我们边缘计算所擅长的吗?)其中包括了内容服务器的异构,网络折别的异构等复杂场景。这也使得获取内容的形式相比于IP网络的“推”的形式变成了类似查询的“拉”的形式。用户只需要关注内容本身,而不是要找到内容的ip地址和域名(这种设计其实和npm和conda类似)。而内容的解析与检索既可以是集中式的也可以是分布式的。

  3. 缓存技术

    中间节点的内容存储,以及内容分发对提升整体效率起着关键性作用,这一点和边缘计算场景下资源调度是一致的。缓存其他节点的内容可以将内容与其生产者分离开,通过在网络中提供多份副本来有效减少服务器的负载和开销。同时缓存本身可以进行动态组播和丢包重传等操作提升效率。目前如何使用有限的缓存采取有效的策略来提升缓存整体命中率是一个富有挑战的问题。

  4. 对于移动性的支持

    ICN网络对移动端有天然的支持,由于内容本身和位置分离,所以内容本身不需要与特定的主机或者物理位置绑定,内容消费者只需要再次接入节点发送对同一个内容的请求即可,结合上述的缓存技术,可以极有效地改善用户体验。

  5. 安全性保证

    由于IP本身是无状态的,所以从根本上没办法内置安全,而ICN网络中支持以可验证的方式将分层或者平面化的信息名称与内容对象关联,实现内容级别的安全认证。比如ICN的每个数据包都可以携带内容本身以及内容提供者的身份信息和密钥,每个用户和网络节点都可以对其进行安全认证。

NDN体系结构

图示

NDN体系结构沙漏模型示意图:

img

NDN和IP网络的区别和联系

  • 联系:都使用了沙漏结构,允许上下层不断变化并发展,NDN核心层传输数据包
  • 区别:
    • 安全层:每个数据包都有签名(见上文“安全性保证部分”)
    • 策略层:针对数据包,分为兴趣包和数据包,如果受到ddos攻击,策略层可以拒绝转发
    • FACE抽象接口:通过FACE建立接口可以进行数据转发。同时也可以更好兼容IP体系。(face可以是本地进程的通信、物理链路、封装好的TCP、UDP通道)

NDN中的两类包及其通信原理

两类包分别是Interest包和Data包,都用名字标识。

  • Interest包结构:名字+筛选器+随机数+规则
  • Data包结构:名字+源数据+内容+签名

当消费者请求内容时,产生含相应名字的兴趣包,通过转发到达某含有该内容的结点,沿着兴趣包的反向路径返回携带名字的Data包。

上述过程就是“拉机制”

详细来说,NDN的每个中间节点都支持缓存,缓存维护三个模式:内容存储(CS)、待定Interest表(PIT)、转发数据库(FIB)。

收到兴趣包后,路由器先检查CS中的缓存内容,如果没有则查找PIT,如果PIT已有相应条目则记录收到兴趣包的接口而不转发(说明已有其他人请求过了,记录是为了收到数据后挨个转发)。若没有则按照FIB转发(一直这样直到找到数据),并增加PIT条目/丢弃兴趣包。

在收到DATA包后,路由器根据PIT中相应条目的信息转发,转发后将删除PIT条目,并根据策略进行缓存操作。

关键因素

按照ICN的理念,从以下几个方面描述:

  1. 命名方案

    NDN中使用类似URL的方式命名数据,例如:ndn/example/video/cat

    • /ndn 根命名空间,类似根域名
    • /example 表示实体、组织或应用的命名空间,类似子域名
    • /video 是数据类型或数据类别
    • /cat 是内容名称
  2. 转发机制

    刚刚已经提到,NDN体系下FIB表的功能,和IP中的路由表类似。第一个NDN 路由协议是命名数据OSPF,OSPF由于不能支持动态多路径转发,并且没有建立认证路由数据的机制,现在已被命名数据链路状态路由协议(Named-Data Link State Routing protocol, NLSR)所取代。

    NDN 的自适应转发策略考虑到以下:

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

    传统网络的缓存机制在扩展性和安全性上有缺陷,NDN的缓存可以较长时间保存。

    但缓存策略仍是个挑战。

  4. 移动性

    用户如果移动通信,能很快响应。更换网络环境后,重新请求兴趣包,基于缓存机制的特性,可以很快响应。

  5. 安全性

    同时多个路由器缓存了相同内容,可以避免单点故障。如果被窃取信息,也只知道有用户请求了内容,并不知道是谁请求。(如果IP的话,知道IP就知道是谁请求的)

    同时,数据包本身携带公钥、无需考虑获取的路径,从根源上解决验证安全问题。

参考链接

命名数据网络(NDN)简介 - 知乎 (zhihu.com)

学长写的文章!!!深入浅出,强烈推荐!!!

什么是命名数据网络NDN? - 知乎 (zhihu.com)

[信息中心网络提出的背景、研究现状及研究内容_企业数据中心网络架构研究和设计论文的背景,国内外研究现状-CSDN博客](https://blog.csdn.net/weixin_62646577/article/details/134494012#:~:text=相对于传统网络%2C信息中心ICN中实现了从 端到端 主机通信为核心到以内容为核心的传输思想的转变。,ICN中 采用具有全局唯一标识即内容名字的命名内容数据块取代了传统网络沙漏模型中的IP细腰%2C并使用命名内容作为整个网络协议栈的核心%2C实现了内容名称与位置的分离%2C在此基础上衍生出了基于 内容名字的转发、路由及网内缓存功能 。)

标签:缓存,NDN,IP,网络,内容,转发,数据网络
From: https://www.cnblogs.com/ZzTzZ/p/18146248

相关文章

  • JavaScript 的 Mixin 问题
    JavaScript从ES6开始支持class了,如何在现在的class上实现mixin呢?很多人推荐这种搞法Object.assign(MyClass.prototype,MyMixin);这个做法很丑,不能令人满意。我找到了一个更有趣的做法,和dart比较接近:"Real"MixinswithJavaScriptClasses他最终的做法是......
  • Effective Python:第8条 用zip函数同时遍历两个迭代器
    用Python内置的zip函数来实现。这个函数能把两个或更多的iterator封装成惰性生成器(lazygenerator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。names=["Cecilia","Lise","Marie"]counts=[len(n)forninnames]max_count=......
  • 若依框架中配置使得每次打包不修改前端访问接口IP和端口
    1.添加配置文件配置文件中的数据和application.yml中的context-path保持一致 2.添加配置代码<scripttype="text/javascript">document.write("<scriptsrc='./static/config.js?v="+newDate().getTime()+"'><\/script>");&......
  • 洛谷题单指南-动态规划1-P1077 [NOIP2012 普及组] 摆花
    原题链接:https://www.luogu.com.cn/problem/P1077题意解读:n种花选m个的选法,每种花数量为ai。解题思路:设dp[i][j]表示前i种花选j个的选法对于第i种花,可以选0,1,2...min(ai,j)个则有递推式:dp[i][j]=∑dp[i-1][j-k],k取0,1,2...min(ai,j)初始化dp[0][0]=1100分代码:#incl......
  • JavaScript技术
    JavaScript技术一、JavaScript的定义JavaScript是一种【基于对象】和【事件驱动】的【脚本语言】,在客户端执行,客户端主要实现数据的验证和页面的特效,大幅度提高网页的速度和交互的能力,在互联网中得到了广泛的运用。基于对象:js是基于面向对象的。事件驱动:使用的时候是结合......
  • 安装iptables报错
    安装ittables报错:apt-getinstalliptablesReadingpackagelists...DoneBuildingdependencytreeReadingstateinformation...DoneSomepackagescouldnotbeinstalled.Thismaymeanthatyouhaverequestedanimpossiblesituationorifyouareusingtheuns......
  • 鸿蒙开发TypeScript语言:【Number】
    TypeScript与JavaScript类似,支持Number对象。Number对象是原始数值的包装对象。语法varnum=newNumber(value);注意: 如果一个参数值不能转换为一个数字将返回NaN(非数字值)。Number对象属性下表列出了Number对象支持的属性:序号属性&描述1.MAX......
  • sqlnet现在ip地址登录
    由于业务需要,需要使用白名单限制用户登录数据库的地址,决定使用数据库白名单功能一般单实例数据库启动白名单只需要在sqlnet.ora中添加以下内容即可:TCP.VALIDNODE_CHECKING=yes(开启IP限制功能),TCP.INVITED_NODES=(192.168.1.103,ip2,ip3,..,..本地IP..)--白名单,必须本地IP,否......
  • 记录在JavaScript中对事件循环的理解
    JavaScript事件循环通俗解释好的,用更通俗的话来说,事件循环就像是在一个大剧院里,有一个演员(JavaScript引擎)和两个重要的角色:一个是前台的表演者(调用栈),另一个是后台的候场区(事件队列)。前台表演者:这个演员在前台表演,一次只能表演一个节目(单线程执行)。当一个节目(函数)开始时,演员就上......
  • 前端如何使用Javascript实现一个简单的发布订阅模式
    在前端开发中,我们经常需要处理事件的订阅与发布,以实现组件之间的解耦和通信。本文将介绍如何使用JavaScript实现一个简单的发布订阅模式,通过分步写代码的方式,带领读者一步步完成实现过程。步骤一:定义EventEmitter类首先,我们需要定义一个名为EventEmitter的类,作为发布订阅......