7.5.2 CCN的路由、转发与缓存机制
CCN节点的基本工作内容和IP节点非常相似,都承担着数据包的存储、路由和转发任务。
1.路由技术
CCN的路由技术解决的是内容请求包如何从用户到达内容提供者或缓存节点的路径选择问题。任何在现有IP网络中运行的路由协议,都可以在CCN中有效地运行。CCN中包含非结构化路由和结构化路由两种模式。
(1)非结构化路由
非结构化路由模式中,路由通告基于泛洪机制发送。下面以图7-45所示网络结构为例,说明非结构化路由的实现方式。图中,节点A、B、E、F使用的是IP+CCN混合路由器,节点C和D节点使用的是传统IP路由器。
节点A和节点B通过CCN广播最先接收到两个数据源的通告,了解到它们各自能够提供的内容。接着,节点A、B通过泛洪机制(例如,开放式最短路径优先OSPF协议中链路状态通告机制)将内容信息发布。E节点通过对收到的链路状态进行本地计算,得到到达节点A、B的路由。之后,当节点E收到一个内容名为“parc.com/media/art/Avatar.mp4”的请求时,由于该内容名的前缀与到达A、B节点的路由都匹配,节点E将会同时向节点A和B转发请求。
网络中的C、D节点由于使用的是传统IP路由器,当收到携带命名前缀的数据分组时,会忽略此前缀,仅基于IP地址进行转发。这种机制可以利用OSPF或者IS-IS协议中的TLV(type-length-value)字段来完成,因为开放式最短路径优先协议规定,对于协议不理解的前缀,直接忽略不做处理。
图7-45 CCN非结构化路由示例
(2)结构化路由
在结构化路由中,网络存在一个维持CCN节点路由表的树状拓扑结构,用来完成命名的解析和内容的定位,如图7-46所示。
图7-46 CCN结构化路由示例
在图7-46所示的结构中,引入了解析处理器的概念。解析处理器用于内容的查找和注册,并完成对内容请求及响应的路由功能。解析处理器是分等级的,并以树状结构相互连接。内容提供者会根据需要发布内容,向其所属的解析处理器注册,并逐级上报到根节点。客户端有内容的需求时,会发起查询请求,并沿着解析处理器的树状结构逐级向上查找,直到存在相应的解析处理器响应其查询请求。在这种树状结构中,每一个解析处理器都要为其下属的解析处理器维护所有已注册内容的路由信息。因此,当内容文件发生更改、复制、删除时,路由的通告会沿着树传播,直到所有相关的解析处理器都完成更新。
从扩展性的角度来看,非结构化路由比结构化路由具有更好的可扩展性,能够更好地适应复杂的网络;从部署的角度来看,非结构化路由也相对容易实现部署。但在CCN中采用结构化路由还是非结构化路由,最终还是取决于网络的体系架构及其采用的命名方式。
2.转发与缓存机制
CCN实现了路由与转发技术的分离。转发技术是根据转发节点的决策层来执行内容请求包和内容数据包的处理,决定在已有若干可转发的端口中,哪些端口距离内容提供者更近、具有高带宽或者具有更强稳定性。
为了快速可靠地完成包的转发与传输,CCN定义了节点引擎模型,它主要由内容存储器(Content Store,CS)、待定请求表(Pending Interest Table,PIT)和前向转发表(Forwarding Information Base,FIB)3个部分组成,如图7-47所示。
(a)CS是内置在转发节点上的存储空间,用于缓存内容副本。CS类似于IP路由器的缓存,但它采用了与IP路由器不同的缓存替换策略。IP路由器在完成本次会话后就将所存储的信息清空,这种策略叫作MRU(Most-Recently Used)替换。而在CCN中,所存储的信息(如影片、视频等内容)除了为本次会话服务,还可以为其他用户会话服务,因此该内容在本次会话完成后仍然存在于节点中,以便下一次使用,从而减少内容下载时延和网络带宽占用。为了最大限度地提高存储信息的共享效率,CCN采用LRU(Least Recently Used)或LFU(Least Frequently Used)替换策略来最大限度地存储重要的信息。
(b)PIT用于记录经过的请求信息,依此实现所请求的内容顺利地传回请求节点。在CCN中,只有内容请求包经过路由过程,而内容数据包是按照PIT的指示一步步地发回请求节点的。所请求的内容传回节点后,该条目将从PIT中删除,此外还可以利用时钟来删除那些一直没有找到匹配内容的过期条目。
(c)FIB用于接收内容提供者发布的内容,并记录内容名称和接收端口,该信息作为内容请求包转发的依据。FIB和IP路由器的处理机制类似,但FIB可以同时向多个方向转发请求。
图7-47 CCN的节点引擎模型
当节点从一个接口收到一个内容请求包时,将根据它所包含的内容名进行最大匹配查询,查询的优先级顺序依次为CS、PIT、FIB,而后根据查询结果进行下一步的操作。具体流程如图7-48所示。
图7-48 CCN数据包的转发流程
(a)当节点接收到内容请求包时,首先在CS中根据最大前缀匹配查找匹配条目。若找到匹配项,则称为缓存命中,此时缓存节点就能够将缓存的内容从接收到内容请求包的端口回传给用户。否则,在节点需要继续在PIT中查找与请求中的内容命名相匹配的条目。
(b)若在PIT中查找到匹配的项目,则CCN的请求聚合机制开始发挥作用。按照请求聚合机制的规则,若与PIT中已有条目相匹配,则说明之前已有用户请求过相同的内容。此时,为了避免相同内容被重复请求和回传,节点会将后续相同请求的到达端口添加到已有PIT匹配的条目中,并将这个请求丢弃。CCN请求聚合机制减少了内容请求包的转发数量,特别是需求量较大的热点内容请求包。
(c)若未能与PIT中已有条目匹配,则说明没有事先请求过的相同内容可以复用,必须向上游网络发送请求,才能获得所需要的内容。此时,PIT中新增一条信息,记录所需内容名称和请求到达的端口,并将内容请求包按照FIB中记录的端口转发出去。
(d)内容数据包的转发路径是内容请求包转发的相反路径。节点接收到内容数据包后,利用内容名称与PIT进行匹配。若找到匹配项,则表明由用户正在等待该内容。此时,转发按节点会将数据包按照PIT项目中记录的所有端口转发出去,形成多播转发,然后删除PIT中的相应条目。与此同时,节点根据缓存算法将数据包携带的内容缓存在CS中。内容数据包会沿着PIT记录的信息,被逐跳转发至需求内容的用户。若没有在PIT中找到匹配项,则说明没有用户期望从该转发节点获得所需的内容,这个数据包会被丢弃。
图7-49进一步描述了CCN转发与缓存相结合的工作机制。图中,节点R1和节点R2是用户节点,它们产生对内容的需求。节点P是内容提供者,它既可能是部署在核心网中的内容服务器,也可能是另一个产生自媒体内容的社交网络用户节点。网络中的其他节点作为具有缓存功能的转发节点,除对用户请求和所需内容进行转发外,还承担着根据缓存策略进行缓存放置与替换的工作。R1节点第一次发出请求后,相邻节点由于没有缓存R1所需内容,只得将内容请求包继续转发,直至在P节点获得所需内容。内容数据包是沿内容请求包转发路径的相反方向传回用户的。在数据包转发的过程中,按照缓存算法,路径上的全部或部分节点会缓存所转发的内容。在此之后,R2节点请求相同的内容时,假设P1节点缓存了该内容,则由它直接将数据发送给R2节点。显然,由于在转发节点的缓存命中,第二次获取内容的过程避免了从P1节点向内容源节点P的请求与数据传输过程,因此节省了网络负载资源和用户获取内容的等待时延。
图7-49 CCN的转发与缓存示例