ICN(Information-Centric Networking)初步介绍
当前的互联网体系结构是基于终端间包交换的点到点连接通信架构。随着实时视频、话音等通信业务量的日益激增,由于TCP/IP体系固有结构的束缚,互联网传输、处理这些实时多媒体数据的能力受到越来越大的挑战,体现在效率低下、用户体验差。
总结如下,目前基于TCP/IP的互联网体系架构具有以下缺点:
1.不安全,可靠性差
2.大量信息冗余,资源浪费
3.系统由简变繁,复杂度高。
因此信息中心网络ICN(Information-Centric Networking)应运而生,它将改变当前互联网端到端的通信机制,把内容与终端位置剥离,通过发布/订阅范式(Publish/Subscribe Paradigm)来提供存储和多方通信等服务。
ICN打破了TCP/IP以主机为中心的连接模式,变成以信息(或内容)为中心的模式。通过ICN,数据将与物理位置相独立,ICN网络中的任何节点都可以作为内容生产者生成内容。作为一项正在研究的技术,目前ICN技术并没有明确的定义,但这些ICN研究有一些共同目标:提供更高效的网络架构促使内容分发到用户,提高网络的安全性,解决网络大规模可扩展性,并简化分布式应用的创建。
在以往的TCP/IP协议中,客户机必须首先确定一个可以提供内容的服务器IP地址,比如当我们利用socket网络编程时,我们都需要用到IP地址作为传递参数。而ICN打破了这种以主机为中心的模式,端到端的连接和基于内容分发架构的唯一命名数据替换了传统方式,能建立一个更加安全,可扩展,灵活的网络,并支持位置透明性,流动性和间接性的连接。
ICN特点如下:
1.一切都是信息,信息互联
2.通过信息的名字标识每一个信息
3.网络的作用就是管理所有信息的流动和缓存,并用正确的信息快速响应信息的请求者。
ICN路由和转发流程
ICN通信主要包括两种包类型:信息包和数据包。其中信息包是用于记录用户请求的路径,方便内容发布者返回响应数据;数据包是发布者根据用户的请求进行回应的内容。
无论是信息包还是数据包都包含三张表:
1、内容存储表(Content Store,CS)用于半永久性存储接收到的数据包;
2、待定请求表(Pending Interest Table,PIT)储存信息包信息及接收到的匹配信息的接口集;
3、转发信息表(Forwarding Information Base,FIB)转发信息。
当有用户的请求信息包到达内容路由器时,ICN的处理流程如下:
查找CS表,根据匹配前缀的内容对象,查找用户请求的内容。
找到请求内容:立刻通过信息转入接口返回数据信息,并丢弃信息包;
未找到请求内容:查找PIT表;
查找PIT表,查找之前是否转发过来自其他节点发起的与该条目的请求内容相同的兴趣包。
找到:转发过,将本次兴趣包的转入接口添加到已经存在的PIT中;
未找到:查找FIB表;
查找FIB,查找最长匹配前缀,进行路由寻址,决定转发信息包的路径。
找到:在PIT表中创建信息包转入接口的信息条目,并转发信息包;
未找到:丢弃信息包。
当数据包到达内容路由器时,首先对数据包进行最长前缀匹配,查找CS缓存条目,如果有相同的缓存数据,则为重复数据包,丢弃;若没有,则与PIT表中条目匹配。如果PIT中由匹配条目,则向相应的接口转发数据包,并将数据包缓存在内容存储表中,如果PIT中没有匹配条目,则丢弃数据包。数据包的路由路径与兴趣包的路径刚好相反。
另外,当在发布者或者内容存储表中找到内容对象时,信息被丢弃,响应的信息以数据包的形式原路返回。当一个内容路由器接收到一个数据信息,在匹配PIT表的时候,发现一个条目列表包含多个接口,则复制内容进行多播,直到数据到达用户,然后删除PIT表中的信息包匹配目录。
命名数据网络(NDN)上的路由转发过程
NDN的路由器需要维护3个表:Content Store(CS)、Pending Interest Table(PIT)和Forwarding Information Base(FIB). 在NDN中,有两个重要的角色,消费者(Consumer)和生产者(Producer),前者是发送兴趣包(Interest Packets)的数据消费者,后者是提供数据包(Data Packets)的数据生产者。通信是有消费者通过发送兴趣包来驱动的,通信转发过程如下图所示,用户想要获取数据时,首先发出一个兴趣包(包含所需数据的名称),路由器接收到这个包后,首先在CS中查找是否有与当前名称匹配的内容,如果有,则直接将匹配的数据包返回给发起请求的节点;如果没有,路由器会在PIT中记录下当前名称对应的兴趣包是从哪个接口进入的,同时路由器在FIB表中查找与当前名称匹配的记录,以确定从哪些接口把这个兴趣包转发出去。当某个节点拥有与名称匹配的数据时,就返回数据包。这个包会沿着刚才兴趣包经过的路径返回,当路由器接收到数据包时,它会根据这个包的名称在PIT中查询匹配的记录,将这个包从所有匹配的接口发出。这样,所有之前请求过相同数据的节点都可以的到所需的数据,PIT中匹配的记录都将被删除。路由信息和用户请求过的内容都保存在路由器中,这种方式最大限度地挖掘了路由器的存储能力。如果链路发生故障,恢复后可以从中间节点的缓存中取得数据,而不需要路由到原始数据生产者,以减少延时和带宽消耗,提高内容分发的效率。
分布式缓存的效率
分布式缓存是ICN的核心特征。然而, 为了最大程度上利用ICN的缓存机制,物联网框架必须要经过更为合理的设计。当内容的流行度是异构时,一些内容数据通常会被重复请求,这种情况下,网络能够从缓存机制中获益。
然而,当每个目标数据最多只需要一次时,分布式缓存的作用就无法凸显出来了,因为缓存只从第二次之后需要某个数据时才能发挥作用。另外,当网络中存在分布式仓库作为覆盖层时,ICN的缓存作用被削弱,比如云存储或者Content Distribution Network (CDN),所有客户端都可以从中检索数据。使用ICN协议从这些服务中检索数据毫无疑问是有帮助的,但对于存在大量的CDN服务器作为覆盖层时,ICN缓存机制所带来的性能优化会有所折损。
同时,在ICN有线网络中,虽然网络缓存已经得到了广泛的研究 ,由于IoT对信息实时性的严格要求以及IoT设备有限的资源,为internet设计的传统的缓存算法显然不适用于IoT。