首页 > 代码库 > NDN与TCP/IP

NDN与TCP/IP

搬运自http://blog.csdn.net/programmer_at/article/details/49203241

 当前TCP/IP协议存在哪些问题?如何改进?

当时没有回答好,然后提到了NDN可以针对TCP/IP做出改进,但是在行家面前就漏洞百出,一是对TCP/IP网络理解不够深入,另外一方面是自己对NDN比较陌生。趁着这段时间比较得闲,在网上搜了《Named Data Networking(NDN) Project》(2010.10)和初略看了看北大出版的《信息中心网络与命名数据网络》(雷凯老师编著),对我当时的回答进行补充和完善吧。


有需求才有探索与实践,所以,首先,要理解一下当前的互联网的发展背景,才知道TCP/IP为什么逐渐无法满足我们的需求了。

一.当今互联网发展趋势与特征

1.随着用户接入网络的物理带宽的提高,互联网应用主题已经转向文字信息和多媒体音视频等内容的获取,信息内容服务已经成为网络服务的主体。
2.手机网民规模日益扩大,对移动性网络的需求在增强
3.互联网应用习惯出现显著变化,包括新型即时通信(微信),微博,云视频,云存储等在内的新兴互联网内容应用迅速扩散,说明用户越来越依赖互联网来进行内容的传播和分发,对于内容共享需求日益强烈。

二.TCP/IP协议

1.目的

在两个实体之间端到端的数字数据交换

2.优势

在数据帧的设计上简单,标准统一,兼容异构的网络互联互通,良好的破坏恢复机制,低数据开销

3.问题

(1)安全性

基于IP网络安全需要对终端和连接同时信任。IP网络接受任何人发送的任何内容,不管数据包的内容,只要发送者看似合法,这种情况导致恶意信息发送到接收者,这是IP网站容易被攻击的根源。

(2)移动性和多网址

IP地址网络层寻址器和传输层定位标识符的双重作用限制了移动性和多网址的灵活性。特别是,传输协议绑定地址以确定通信会话,如果地址变化就会中断会话,需要重新建立连接。这种语义重载又导致IP网络中不允许存在回路,也不能同一时刻具有多个网络地址。

(3)组播传输

IP组播协议是事后添加到原有的点对点通信模型,以提供将信息发送到一组接收者的能力,然而因为其拓展性方面的缺点,组播从未在局域网之外的环境中大规模使用过。

(4)可拓展性和服务质量的保证

(5)资源浪费

互联网上发生了大量的重复冗余传输

(6)带宽竞争和拥塞会导致骨干网压力,网络出入口压力大


针对TCP/IP网络的这些问题,NDN做出如下的改进或者革命(其实NDN的提出是想要替代IP网络的主体地位)


三.NDN网络

1.数据和网络安全性高——安全性

通过检查IP数据包头部或有效载荷来推测数据包的内容,通过检查目的地址可以得出谁(来自哪里)在请求该数据。NDN明确的命名数据,无疑使网络更容易监控什么样的数据被请求,然而,NDN通过签名加密了关于数据请求者的信息,除非点对点链路直接连接到发出请求的主机,否则路由器将只知道有人请求某些数据,但不知道是谁发起请求。

2.内容中心的位置无关传输机制——移动性

采用名字来标识数据包,NDN不再包含明确的主机或接口地址等位置信息,其通信是由数据请求驱动的,主要是拉数据模式,一旦Interest到达一个有请求数据的节点,那么就会返回一个数据包。无论请求包还是数据包,都没有携带任何主机或接口位置信息(如IP地址),请求包只依据自身携带的内容进行路由,而数据包则延Interest原路返回。

3.原路返回的反馈式流量平衡机制——流量,负载均衡;组网传播

NDN中只有Interest包被路由器转发,任何接收到该Interest包的路由节点,如果拥有可以满足这个Interest包的数据,就回复一个Data包,而Data包沿着各个节点PIT中所记录的接口信息按“原路返回”:不进行路由转发,只简单沿着Interest包被传输的相反路径返回。
IP路由采用单一的最佳路径以防止循环,不能形成网络回路;而NDN中Interest包是不会形成环路的,,其关键设计是Interest包中的Nonce字段,该字段是个随机数,根据它可以很容易地判断出重复的Interest包,及时地丢弃,而Data包沿着Interest包被传输的相反路径返回,不形成环路,从而解决了组播的问题。

4.基于名字路由的可拓展性更优

NDN解决了TCP/IP网络中的IP地址耗尽问题,内网穿透问题,移动性问题,可扩展地址管理问题,打破传统的C/S结构,解决了TCP/IP网络下热门服务器负载过重的问题。

5.基于逐跳的报文包转发——减少冗余传输

请求数据时,请求方发出Interest包(含标识目标数据的数据命名),请求包可以在任意的连接无关的中间节点上被转发,一个Internet包经过每一跳都有可能从不同数据源(包括缓存)得到匹配的的Data包,不一定要走完路径到达数据源的终点。一旦data包在回传的路径上丢包,只需在丢包的节点断点续传。这样,就消除了对终端主机执行拥塞控制和传输确认的依赖。

6.传输层的嵌入式缓存——减轻带宽压力

NDN路由器可以对内容缓存,而且这个缓存直接建立在网络传输层,节省了带宽,提高了内容共享率,无论IP路由器转发后不能重用该数据,而NDN路由器能够重用该数据,因为它们的命名是不变的,而且不包含代表位置相关的IP地址信息,数据可以在传输路径中间任意节点缓存,复制或者移动,尽可能长时间地保存接收到的数据,将数据缓存自身以满足未来潜在的请求。

四.NDN网络工作机制简介

NDN中的通信是由接收端(即数据消费者)驱动的。为了接收数据,一个消费者发出一条兴趣(Interest)报文,该报文携带一个名字,由名字识别期望的数据(见1)。例如,一个消费者可请求/parc/videos/WidgetA.mpg。一台路由器记住请求到达的接口,之后通过在其转发信息表(FIB)(是由一种基于名字的路由协议传播的)中查找该名字而转发兴趣报文。一旦兴趣到达拥有被请求数据的一个节点,则发回一条数据(Data)报文,它携带数据的名字和内容,还有生产者密钥的一个签名(图1)。这条数据报文经兴趣报文所产生的反向路径到达消费者。注意兴趣或数据报文都没有携带任何主机或接口地址(例如IP地址);依据兴趣报文中携带的名字,兴趣报文向数据生产者路由,而数据报文依据在每个路由跳处由兴趣所建立的状态信息得以返回(图2)。

 技术分享

NDN路由器在一段时间内保持兴趣和数据。当从下游接收到相同数据的多条兴趣报文时,仅有第一条兴趣报文朝向数据源发送到上游。之后路由器将兴趣存储在未决兴趣表(PIT)之中,其中每个表项包含兴趣的名字以及由之接收到匹配兴趣的接口集合。当数据报文到达时,路由器查找匹配PIT表项,并将数据转发到PIT表项中列出的所有接口。之后路由器清除相应的PIT表项,并在内容存储(Content Store)中缓存数据,内容存储基本上是受限于缓存替换策略的路由器缓冲内存。数据采取与请求数据的兴趣报文相同的路径,但方向相反。一个数据沿每跳满足一个兴趣,取得逐跳的流平衡。

NDN与TCP/IP