基于缓存的路由方法及路由节点的制作方法

文档序号:8417875阅读:389来源:国知局
基于缓存的路由方法及路由节点的制作方法
【技术领域】
[0001]本发明涉及通信领域,特别涉及一种基于缓存的路由方法及路由节点。
【背景技术】
[0002]随着互联网技术与应用的飞速发展以及互联网用户的快速增长,基于TCP/IP的现有互联网逐渐暴露出许多的不适应,主要包括可扩展性差、动态连续性弱、安全可控性低、运营成本高等问题。为此,互联网正逐步由主机中心向内容中心转变,世界各国纷纷展开了以内容为中心的未来网络的研宄,包括北美的内容中心网络(ContentCentric Network, CCN) /命名数据网络(named data network,NDN),以及欧盟的追赶网络(PERSnT)/网络通知网络(NetInf)等。虽然这些未来网络的架构细节有些不同,但是都主张在网内部署缓存,以请求内容的方式来获取信息。
[0003]典型的以内容中心网络的节点主要包含内容存储器(Content Store,CS)、待定请求表(Pending Interest Table,PIT)和前向转发表(Forward Informat1n Table,FIB) 3个逻辑部分,其中:
[0004]CS类似于IP路由器的缓存,用于缓存经过该节点的数据内容(即,内容数据包),该信息除了为单次会话服务,还可以为其他用户会话服务,因此CS中的缓存数据在单次会话完成后仍然存在于节点中,以便下一次使用,通常,可采用最近最少使用(LeastRecently Used,LRU)或最少使用频率(least frequently used,LFU)替换策略来更新 CS中存储的数据内容。
[0005]PIT用于记录经过该节点的请求信息的,依此实现将所请求的内容顺利地传回请求节点。被请求的内容数据包是按照pit的指示一步步地发回请求节点的。
[0006]FIB和IP路由表处理机制类似,即将请求数据包(也可称为兴趣包)发往用于存储请求数据包所请求的数据内容的服务器端,但是与IP路由表不同的是,FIB可以同时向多个方向转发请求数据包。
[0007]当前,当一个节点从一个接口收到一个请求数据包时,将根据它所包含的内容名进行所请求的内容的最大匹配查询,而后根据查询结果进行一步的操作。
[0008]查询的优先级顺序依次为CS、PIT、FIB,其查询步骤具体包括:
[0009](I)CS如果包含请求数据包请求的内容,就会直接将相应的内容发送到请求端口,并丢弃请求数据包,否则继续在PIT中继续查询。
[0010](2)PIT如果包含与内容名相关的条目,就将请求端口添加到请求端口列表中,并丢弃请求数据包,否则将在FIB中继续查询。
[0011](3)FIB如果包含与内容名相关的条目,就按照FIB的指示将该请求数据包转发到靠近服务器的下一节点。
[0012](4)如果以上3种情况都不符合,说明不存在相关的匹配路由,则丢弃该请求数据包。
[0013]由上述流程可知,现有技术中,当节点接收到请求数据包时,如果所述节点内没有可能获得缓存的数据内容(即在CS和PIT均查询不到),会根据节点的FIB中存储的路由朝接近服务器的方向转发请求数据包,但是,越是靠近服务器的节点缓存的内容更新越频繁,向靠近服务器的方向路由请求必然会降低中途命中内容的概率,进而增加请求的响应时间。

【发明内容】

[0014]鉴于此,本发明提供一种基于缓存的路由方法和路由节点,可以增加中途命中内容的概率,以及节省系统对请求的响应时间。
[0015]本发明第一方面提供一种基于缓存的路由方法,其可包括:
[0016]当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT ;
[0017]当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口 ;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
[0018]当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
[0019]结合第一方面,在第一种可能的实现方式中,当未在所述节点的待定请求表PIT表中查询到第一表项时,还包括:
[0020]在所述PIT表中生成所述第一表项。
[0021]结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当查询到所述NFT表中存在第三表项时,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
[0022]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
[0023]删除所述NFT表中的所述第三表项。
[0024]结合第一方面的第二种可能的实现方式,在第四种可能的实现方式中,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
[0025]当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;
[0026]删除所述NFT表中的所述第三表项。
[0027]结合第一方面,或第一方面的第一种可能的实现方式,在第五种可能的实现方式中,当查询到所述NFT表中存在第四表项时,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
[0028]结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
[0029]当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;
[0030]删除所述NFT表中的所述第四表项。
[0031]结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
[0032]当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;
[0033]删除所述NFT表中的所述第四表项。
[0034]结合第一方面,或第一方面的第一种可能的实现方式,在第八种可能的实现方式中,当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
[0035]结合第一方面,或第一方面的第一种可能的实现方式,在第九种可能的实现方式中,当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
[0036]结合第一方面的第二种可能的实现方式、第四种可能的实现方式、第五种可能的实现方式,第七种可能的实现方式,第九种可能的实现方式中任一种,在第十种可能的实现方式中,当未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,包括:
[0037]判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
[0038]本发明第二方面提供一种路由节点,其可包括:
[0039]存储模块,用于存储内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表 NFT ;
[0040]接收模块,用于从第一端口接收第一命名的请求数据包;
[0041]第一查询模块,用于查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表pit ;
[0042]第二查询模块,用于当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口 ;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
[0043]转发模块,用于当所述第二查询模块查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
[0044]结合第二方面,在第一种可能的实现方式中,本发明的路由节点还包括:
[0045]第一生成模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项时,在所述PIT表中生成所述第一表项。
[0046]结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述转发模块还用于当所述第二查询模块查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
[0047]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述路由节点还可包括:
[0048]第一表项更新模块,用于当所述转发模块按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
[0049]结合第二方面的第二种可能的实现方式,在第四种可能的实现方式中,所述路由节点还可包括:
[0050]第二表项更新模块,用于当所述转发模块按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口 ;并删除所述NFT表中的所述第三表项。
[0051]结合第二方面,或第二方面的第一种可能的实现方式,在第五种可能的实现方式中,所述转发模块还用于当所述第二查询模块查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口 O
[0052]结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述路由节点还包括:
[0053]第三表项更新模块,用于当所述转发模块按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口 ;并删除所述NFT表中的所述第四表项。
[0054]结合第二方面的第五种可能的实现方式,在第七种可能的实现方式中,所述路由节点还包括:
[0055]第四表项更新模块,用于当所述转发模块按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口 ;删除所述NFT表中的所述第四表项。
[0056]结合第二方面,或第二方面的第一种可能的实现方式,在第八种可能的实现方式中,所述路由节点还包括:
[0057]第三查询模块,用于当所述第二查询模块查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
[0058]结合第二方面,或第二方面的第一种可能的实现方式,在第九种可能的实现方式中,所述路由节点还包括:
[0059]第四查询模块,用于当所述第二查询模块查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
[0060]结合第二方面的第二种可能的实现方式、第四种可能的实现方式、第五种可能的实现方式,第七种可能的实现方式,第九种可能的实现方式中任一种,在第十种可能的实现方式中,所述路由节点还包括:
[0061]判断模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项之后,所述第二查询模块查询所述节点的下一端口表NFT表之前,判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
[0062]本发明第三方面提供一种路由节点,其包括存储器、接收装置、处理器以及发送装置,其中:
[0063]所述存储器,用于存储内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT ;
[0064]所述接收装置,用于从第一端口接收第一命名的请求数据包;
[0065]所述处理器,用于查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT ;并用于当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口 ;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
[0066]所述发送装置,用于当所述处理器查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
[0067]结合第三方面,在第一种可能的实现方式中,所述处理器还用于当未在所述节点的待定请求表PIT表中查询到第一表项时,在所述PIT表中生成所述第一表项。
[0068]结合第三方面,或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述发送装置还用于当所述处理器查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
[0069]结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
[0070]结合第三方面的第二种可能的实现方式,在第四种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口 ;并删除所述NFT表中的所述第三表项。
[0071]结合第三方面,或第三方面的第一种可能的实现方式,在第五种可能的实现方式中,所述发送装置还用于当所述处理器查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端
□ O
[0072]结合第三方面的第五种可能的实现方式,在第六种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口 ;并删除所述NFT表中的所述第四表项。
[0073]结合第三方面的第五种可能的实现方式,在第七种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口 ;删除所述NFT表中的所述第四表项。
[0074]结合第三方面,或第三方面的第一种可能的实现方式,在第八种可能的实现方式中,所述处理器还用于当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
[0075]结合第三方面,或第三方面的第一种可能的实现方式,在第九种可能的实现方式中,所述处理器还于当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
[0076]结合第三方面的第二种可能的实现方式、第四种可能的实现方式、第五种可能的实现方式,第七种可能的实现方式,第九种可能的实现方式中任一种,在第十种可能的实现方式中,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
[0077]本发明第四方面提供一种计算机存储介质,该计算机存储介质可存储有程序,给程序执行时可包括本发明所述方法的部分或全部步骤。
[0078]由上可见,在本发明的一些可行的实施方式中,当节点从第一端口收到第一命名的请求数据包时,若未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口 ;所述NFT表中记录的属性包括名
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1