CN104737505B - 基于缓存的路由方法及路由节点 - Google Patents
基于缓存的路由方法及路由节点 Download PDFInfo
- Publication number
- CN104737505B CN104737505B CN201380000205.3A CN201380000205A CN104737505B CN 104737505 B CN104737505 B CN 104737505B CN 201380000205 A CN201380000205 A CN 201380000205A CN 104737505 B CN104737505 B CN 104737505B
- Authority
- CN
- China
- Prior art keywords
- port
- list item
- node
- tables
- recorded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及基于缓存的路由方法及路由节点,方法包括:当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;第一表项中记录的名称为所述第一命名,第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间。本发明实施例的技术方案有利于增加中途命中内容的概率,以及节省系统对请求的响应时间。
Description
技术领域
本发明涉及通信领域,特别涉及一种基于缓存的路由方法及路由节点。
背景技术
随着互联网技术与应用的飞速发展以及互联网用户的快速增长,基于TCP/IP的现有互联网逐渐暴露出许多的不适应,主要包括可扩展性差、动态连续性弱、安全可控性低、运营成本高等问题。为此,互联网正逐步由主机中心向内容中心转变,世界各国纷纷展开了以内容为中心的未来网络的研究,包括北美的内容中心网络(Content Centric Network,CCN)/命名数据网络(named data network,NDN),以及欧盟的追赶网络(PERSUIT)/网络通知网络(NetInf)等。虽然这些未来网络的架构细节有些不同,但是都主张在网内部署缓存,以请求内容的方式来获取信息。
典型的以内容中心网络的节点主要包含内容存储器(Content Store,CS)、待定请求表(Pending Interest Table,PIT)和前向转发表(Forward Information Table,FIB)3个逻辑部分,其中:
CS类似于IP路由器的缓存,用于缓存经过该节点的数据内容(即,内容数据包),该信息除了为单次会话服务,还可以为其他用户会话服务,因此CS中的缓存数据在单次会话完成后仍然存在于节点中,以便下一次使用,通常,可采用最近最少使用(Least RecentlyUsed,LRU)或最少使用频率(least frequently used,LFU)替换策略来更新CS中存储的数据内容。
PIT用于记录经过该节点的请求信息的,依此实现将所请求的内容顺利地传回请求节点。被请求的内容数据包是按照PIT的指示一步步地发回请求节点的。
FIB和IP路由表处理机制类似,即将请求数据包(也可称为兴趣包)发往用于存储请求数据包所请求的数据内容的服务器端,但是与IP路由表不同的是,FIB可以同时向多个方向转发请求数据包。
当前,当一个节点从一个接口收到一个请求数据包时,将根据它所包含的内容名进行所请求的内容的最大匹配查询,而后根据查询结果进行一步的操作。
查询的优先级顺序依次为CS、PIT、FIB,其查询步骤具体包括:
(1)CS如果包含请求数据包请求的内容,就会直接将相应的内容发送到请求端口,并丢弃请求数据包,否则继续在PIT中继续查询。
(2)PIT如果包含与内容名相关的条目,就将请求端口添加到请求端口列表中,并丢弃请求数据包,否则将在FIB中继续查询。
(3)FIB如果包含与内容名相关的条目,就按照FIB的指示将该请求数据包转发到靠近服务器的下一节点。
(4)如果以上3种情况都不符合,说明不存在相关的匹配路由,则丢弃该请求数据包。
由上述流程可知,现有技术中,当节点接收到请求数据包时,如果所述节点内没有可能获得缓存的数据内容(即在CS和PIT均查询不到),会根据节点的FIB中存储的路由朝接近服务器的方向转发请求数据包,但是,越是靠近服务器的节点缓存的内容更新越频繁,向靠近服务器的方向路由请求必然会降低中途命中内容的概率,进而增加请求的响应时间。
发明内容
鉴于此,本发明提供一种基于缓存的路由方法和路由节点,可以增加中途命中内容的概率,以及节省系统对请求的响应时间。
本发明第一方面提供一种基于缓存的路由方法,其可包括:
当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
结合第一方面,在第一种可能的实现方式中,当未在所述节点的待定请求表PIT表中查询到第一表项时,还包括:
在所述PIT表中生成所述第一表项。
结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,当查询到所述NFT表中存在第三表项时,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
删除所述NFT表中的所述第三表项。
结合第一方面的第二种可能的实现方式,在第四种可能的实现方式中,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;
删除所述NFT表中的所述第三表项。
结合第一方面,或第一方面的第一种可能的实现方式,在第五种可能的实现方式中,当查询到所述NFT表中存在第四表项时,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;
删除所述NFT表中的所述第四表项。
结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;
删除所述NFT表中的所述第四表项。
结合第一方面,或第一方面的第一种可能的实现方式,在第八种可能的实现方式中,当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
结合第一方面,或第一方面的第一种可能的实现方式,在第九种可能的实现方式中,当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
结合第一方面的第二种可能的实现方式、第四种可能的实现方式、第五种可能的实现方式,第七种可能的实现方式,第九种可能的实现方式中任一种,在第十种可能的实现方式中,当未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,包括:
判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
本发明第二方面提供一种路由节点,其可包括:
存储模块,用于存储内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT;
接收模块,用于从第一端口接收第一命名的请求数据包;
第一查询模块,用于查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
第二查询模块,用于当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
转发模块,用于当所述第二查询模块查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
结合第二方面,在第一种可能的实现方式中,本发明的路由节点还包括:
第一生成模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项时,在所述PIT表中生成所述第一表项。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述转发模块还用于当所述第二查询模块查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述路由节点还可包括:
第一表项更新模块,用于当所述转发模块按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
结合第二方面的第二种可能的实现方式,在第四种可能的实现方式中,所述路由节点还可包括:
第二表项更新模块,用于当所述转发模块按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
结合第二方面,或第二方面的第一种可能的实现方式,在第五种可能的实现方式中,所述转发模块还用于当所述第二查询模块查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述路由节点还包括:
第三表项更新模块,用于当所述转发模块按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;并删除所述NFT表中的所述第四表项。
结合第二方面的第五种可能的实现方式,在第七种可能的实现方式中,所述路由节点还包括:
第四表项更新模块,用于当所述转发模块按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
结合第二方面,或第二方面的第一种可能的实现方式,在第八种可能的实现方式中,所述路由节点还包括:
第三查询模块,用于当所述第二查询模块查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
结合第二方面,或第二方面的第一种可能的实现方式,在第九种可能的实现方式中,所述路由节点还包括:
第四查询模块,用于当所述第二查询模块查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
结合第二方面的第二种可能的实现方式、第四种可能的实现方式、第五种可能的实现方式,第七种可能的实现方式,第九种可能的实现方式中任一种,在第十种可能的实现方式中,所述路由节点还包括:
判断模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项之后,所述第二查询模块查询所述节点的下一端口表NFT表之前,判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
本发明第三方面提供一种路由节点,其包括存储器、接收装置、处理器以及发送装置,其中:
所述存储器,用于存储内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT;
所述接收装置,用于从第一端口接收第一命名的请求数据包;
所述处理器,用于查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;并用于当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
所述发送装置,用于当所述处理器查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
结合第三方面,在第一种可能的实现方式中,所述处理器还用于当未在所述节点的待定请求表PIT表中查询到第一表项时,在所述PIT表中生成所述第一表项。
结合第三方面,或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述发送装置还用于当所述处理器查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
结合第三方面的第二种可能的实现方式,在第四种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
结合第三方面,或第三方面的第一种可能的实现方式,在第五种可能的实现方式中,所述发送装置还用于当所述处理器查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
结合第三方面的第五种可能的实现方式,在第六种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;并删除所述NFT表中的所述第四表项。
结合第三方面的第五种可能的实现方式,在第七种可能的实现方式中,所述处理器还用于当所述发送装置按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
结合第三方面,或第三方面的第一种可能的实现方式,在第八种可能的实现方式中,所述处理器还用于当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
结合第三方面,或第三方面的第一种可能的实现方式,在第九种可能的实现方式中,所述处理器还于当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
结合第三方面的第二种可能的实现方式、第四种可能的实现方式、第五种可能的实现方式,第七种可能的实现方式,第九种可能的实现方式中任一种,在第十种可能的实现方式中,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
本发明第四方面提供一种计算机存储介质,该计算机存储介质可存储有程序,给程序执行时可包括本发明所述方法的部分或全部步骤。
由上可见,在本发明的一些可行的实施方式中,当节点从第一端口收到第一命名的请求数据包时,若未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。由此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
附图说明
图1为本发明的基于缓存的路由方法的第一实施例的流程示意图;
图2为本发明的基于缓存的路由方法的第二实施例的流程示意图;
图3为本发明的基于缓存的路由方法的第三实施例的流程示意图;
图4为本发明的基于缓存的路由方法的第四实施例的流程示意图;
图5为本发明的基于缓存的路由节点的第一实施例的结构组成示意图;
图6为本发明的基于缓存的路由节点的第二实施例的结构组成示意图;
图7为本发明的基于缓存的路由节点的第三实施例的结构组成示意图;
图8为本发明的基于缓存的路由节点的第四实施例的结构组成示意图;
图9为本发明的基于缓存的路由节点的第五实施例的结构组成示意图;
图10为本发明的基于缓存的路由节点的第六实施例的结构组成示意图;
图11为本发明的基于缓存的路由节点的第七实施例的结构组成示意图;
图12为本发明的基于缓存的路由节点的第八实施例的结构组成示意图。
具体实施例
图1为本发明的基于缓存的路由方法的第一实施例的流程示意图。如图1所示,其可包括:
步骤S110,当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS。
具体实现中,本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,在步骤S110,可通过发起请求数据包以请求内容的方式来获取节点缓存的内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与步骤S110中的第一端口为相同或不同的端口)收到第二命名(可与步骤S110中的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于步骤S110的请求数据包的内容数据包已经被删除时,在步骤S110则不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,步骤S110中的节点之前并未接收过内容数据,则在步骤S110同样不能在节点的CS中查询到所述请求数据包所请求的内容。
步骤S111,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT。
步骤S112,当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间。
具体实现中,在步骤S112,未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当未在所述节点的待定请求表PIT表中查询到第一表项时还可在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
步骤S113,当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
具体实现中,在步骤S113可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
图2为本发明的基于缓存的路由方法的第二实施例的流程示意图。如图2所示,其可包括:
步骤S110,当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS。
具体实现中,本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,在步骤S110本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与步骤S110中的第一端口为相同或不同的端口)收到第二命名(可与步骤S110中的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于步骤S110的请求数据包的内容数据包已经被删除时,在步骤S110则不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,步骤S110中的节点之前并未接收过内容数据,则在步骤S110同样不能在节点的CS中查询到所述请求数据包所请求的内容。
步骤S111,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT。
步骤S112,当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间。
具体实现中,在步骤S112,未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一、PIT表中不存在名称为第一命名的表项;
第二、PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当未在所述节点的待定请求表PIT表中查询到第一表项时还可在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
步骤S113,当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
步骤S123,当查询到所述NFT表中不存在所述第二表项,但查询到所述NFT表中存在第三表项时,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
在一些可行的实施方式中,在步骤S123,当所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:删除所述NFT表中的所述第三表项。
步骤S124,当查询到所述NFT表中不存在所述第二表项,但查询到所述NFT表中存在第四表项时,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
在一些可行的实施方式中,在步骤S124,当所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
步骤S125,当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
具体实现中,步骤S113、S123-S125可没有先后顺序之分。
图3为本发明的基于缓存的路由方法的第三实施例的流程示意图。如图3所示,其可包括:
步骤S310,当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS。
具体实现中,本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,在步骤S310本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与步骤S310中的第一端口为相同或不同的端口)收到第二命名(可与步骤S310中的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于步骤S310的请求数据包的内容数据包已经被删除时,在步骤S310则不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,步骤S310中的节点之前并未接收过内容数据,则在步骤S310同样不能在节点的CS中查询到所述请求数据包所请求的内容。
步骤S311,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT。
步骤S312,当未在所述节点的待定请求表PIT表中查询到第一表项时,判断是否在所述PIT表中查询到第五表项,第五表项存在,判断所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,执行步骤S313;如果判断为否,在所述节点的PIT中生成所述第一表项,丢弃所述第一命名的请求数据包。当第五表项不存在,(即PIT表中不存在名称为第一命名的表项),执行步骤S313。步骤S313,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间。
具体实现中,在步骤S312,未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当未在所述节点的待定请求表PIT表中查询到第一表项时还可在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
步骤S314,当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
具体实现中,在步骤S113可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
图4为本发明的基于缓存的路由方法的第四实施例的流程示意图。如图4所示,其可包括:
步骤S310,当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS。
具体实现中,本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,在步骤S310本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与步骤S310中的第一端口为相同或不同的端口)收到第二命名(可与步骤S310中的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于步骤S310的请求数据包的内容数据包已经被删除时,在步骤S310则不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,步骤S310中的节点之前并未接收过内容数据,则在步骤S310同样不能在节点的CS中查询到所述请求数据包所请求的内容。
步骤S311,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT。
步骤S312,当未在所述节点的待定请求表PIT表中查询到第一表项时,判断是否在所述PIT表中查询到第五表项,第五表项存在,判断所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,执行步骤S313;如果判断为否,在所述节点的PIT中生成所述第一表项,丢弃所述第一命名的请求数据包。当第五表项不存在,(即PIT表中不存在名称为第一命名的表项),执行步骤S313。
步骤S313,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间。
具体实现中,在步骤S312,未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当未在所述节点的待定请求表PIT表中查询到第一表项时还可在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
步骤S314,当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
具体实现中,在步骤S314可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
步骤S315,当查询到所述NFT表中不存在所述第二表项,但查询到所述NFT表中存在第三表项时,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
在一些可行的实施方式中,在步骤S315,当所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;
删除所述NFT表中的所述第三表项。
步骤S316,当查询到所述NFT表中不存在所述第二表项,但查询到所述NFT表中存在第四表项时,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
在一些可行的实施方式中,在步骤S316,当所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
步骤S317,当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
具体实现中,步骤S315-S317可没有先后顺序之分。
相应的,本发明实施还提供了可用于实施上述各方法实施例的装置实施例。下面结合附图对本发明实施例的路由节点的结构组成进行举例说明。
图5为本发明的基于缓存的路由节点的第一实施例的结构组成示意图。如图5所示,其可包括:存储模块51、接收模块52、第一查询模块53、第二查询模块54以及转发模块55,其中:
存储模块51,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收模块52,用于从第一端口接收第一命名的请求数据包;
第一查询模块53,用于查询所述存储模块51的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
第二查询模块54,用于当所述第一查询模块53未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
转发模块55,用于当所述第二查询模块54查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收模块52的第一端口为相同或不同的端口)收到第二命名(可与接收模块52的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收模块52接收的请求数据包的内容数据包已经被删除时,第一查询模块53不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则第一查询模块53同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,第一查询模块53未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当第一查询模块53未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,第二查询模块54可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
图6为本发明的基于缓存的路由节点的第二实施例的结构组成示意图。如图6所示,其可包括:存储模块61、接收模块62、第一查询模块63、第二查询模块64、转发模块65、第三查询模块66,其中:
存储模块61,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收模块62,用于从第一端口接收第一命名的请求数据包;
第一查询模块63,用于查询所述存储模块61的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
第二查询模块64,用于当所述第一查询模块63未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
转发模块65,用于当所述第二查询模块64查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口;以及,用于当所述第二查询模块64查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空;以及,用于当所述第二查询模块64查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
在一些可行的实施方式中,本发明的路由节点还可包括:
第三查询模块66,用于当所述第二查询模块64查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收模块62的第一端口为相同或不同的端口)收到第二命名(可与接收模块62的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收模块62接收的请求数据包的内容数据包已经被删除时,第一查询模块63不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则第一查询模块63同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,第一查询模块63未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当第一查询模块63未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,第二查询模块64可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
在一些可行的实施方式中,本发明实施例的路由节点还包括:
第一表项更新模块(未图示),用于当所述转发模块65按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
在一些可行的实施方式中,本发明实施例的路由节点还包括:
第三表项更新模块(未图示),用于当所述转发模块按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;并删除所述NFT表中的所述第四表项。
图7为本发明的基于缓存的路由节点的第三实施例的结构组成示意图。如图7所示,其可包括:存储模块71、接收模块72、第一查询模块73、判断模块74、第二查询模块75、转发模块76,其中:
存储模块71,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收模块72,用于从第一端口接收第一命名的请求数据包;
第一查询模块73,用于查询所述存储模块71的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
判断模块74,用于当所述第一查询模块73未在所述节点的待定请求表PIT表中查询到第一表项之后判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的。
第二查询模块75,用于当所述判断模块74的判断结果为是时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
转发模块76,用于当所述第二查询模块75查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收模块72的第一端口为相同或不同的端口)收到第二命名(可与接收模块72的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收模块72接收的请求数据包的内容数据包已经被删除时,第一查询模块73不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则第一查询模块73同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,第一查询模块73未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当第一查询模块73未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,第二查询模块75可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
在一些可行的实施方式中,本发明实施例的路由节点还包括:
第二表项更新模块(未图示),用于当所述转发模块76按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
在一些可行的实施方式中,本发明实施例的路由节点还包括:
第四表项更新模块(未图示),用于当所述转发模块76按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
图8为本发明的基于缓存的路由节点的第四实施例的结构组成示意图。如图8所示,其可包括:存储模块81、接收模块82、第一查询模块83、判断模块84、第二查询模块85、转发模块86、第四查询模块87,其中:
存储模块81,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收模块82,用于从第一端口接收第一命名的请求数据包;
第一查询模块83,用于查询所述存储模块81的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
判断模块84,用于当所述第一查询模块83未在所述节点的待定请求表PIT表中查询到第一表项之后判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的。
第二查询模块85,用于当所述判断模块84的判断结果为是时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
转发模块86,用于当所述第二查询模块85查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口;以及,用于当所述第二查询模块85查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空;以及,用于当所述第二查询模块85查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
第四查询模块87,用于当所述第二查询模块85查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收模块82的第一端口为相同或不同的端口)收到第二命名(可与接收模块82的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收模块82接收的请求数据包的内容数据包已经被删除时,第一查询模块83不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则第一查询模块83同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,第一查询模块83未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当第一查询模块83未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,第二查询模块85可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
在一些可行的实施方式中,本发明实施例的路由节点还包括:
第二表项更新模块(未图示),用于当所述转发模块86按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
在一些可行的实施方式中,本发明实施例的路由节点还包括:
第四表项更新模块(未图示),用于当所述转发模块86按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
图9为本发明的基于缓存的路由节点的第五实施例的结构组成示意图。如图9所示,其可包括:存储器91、接收装置92、处理器93以及发送装置94,其中:
存储器91,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收装置92,用于从第一端口接收第一命名的请求数据包;
处理器93,用于查询所述存储器91的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;并当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
发送装置94,用于当所述处理器93查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收装置92的第一端口为相同或不同的端口)收到第二命名(可与接收装置92的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收装置92接收的请求数据包的内容数据包已经被删除时,处理器93不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则处理器93同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,处理器93未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当处理器93未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,处理器93可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
图10为本发明的基于缓存的路由节点的第六实施例的结构组成示意图。如图10所示,其可包括:存储器101、接收装置102、处理器103、发送装置104,其中:
存储器101,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收装置102,用于从第一端口接收第一命名的请求数据包;
处理器103,用于查询所述存储器101的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;并当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
发送装置104,用于当所述处理器103查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口;以及,用于当所述处理器103查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空;以及,用于当所述处理器103查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
在一些可行的实施方式中,本发明的路由节点的处理器103用于当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收装置102的第一端口为相同或不同的端口)收到第二命名(可与接收装置102的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收装置102接收的请求数据包的内容数据包已经被删除时,处理器103不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则处理器103同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,处理器103未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当处理器103未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的处理器103还用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,处理器104可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
在一些可行的实施方式中,本发明实施例的处理器103还用于当所述发送装置104按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
在一些可行的实施方式中,本发明实施例的路由节点的处理器103还用于当所述发送装置104按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;并删除所述NFT表中的所述第四表项。
图11为本发明的基于缓存的路由节点的第七实施例的结构组成示意图。如图11所示,其可包括:存储器111、接收装置112、处理器103、发送装置104;其中:
存储器111,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收装置112,用于从第一端口接收第一命名的请求数据包;
处理器113,用于查询所述存储器111的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;并当未在所述节点的待定请求表PIT表中查询到第一表项之后判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,并当所述判断结果为是时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
发送装置114,用于当所述处理器113查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收装置112的第一端口为相同或不同的端口)收到第二命名(可与接收装置112的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收装置112接收的请求数据包的内容数据包已经被删除时,处理器113不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则处理器113同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,处理器113未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当处理器113未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的处理器113还用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,处理器113可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
在一些可行的实施方式中,本发明实施例的处理器113还用于当所述发送装置114按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
在一些可行的实施方式中,本发明实施例的处理器113还用于当所述发送装置114按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
图12为本发明的基于缓存的路由节点的第八实施例的结构组成示意图。如图12所示,其可包括:存储器121、接收装置122、处理器123以及发送装置124,其中:
存储器121,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
接收装置122,用于从第一端口接收第一命名的请求数据包;
处理器123,用于查询所述存储器121的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;并当未在所述节点的待定请求表PIT表中查询到第一表项之后判断是否在所述PIT表中查询到第五表项,第五表项存在,判断所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,以及当所述判断第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的判断结果为是时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
发送装置124,用于当所述处理器123查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口;以及,用于当所述处理器123查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空;以及,用于当所述处理器123查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
所述处理器123还用于当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSUIT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
a、当节点的第三端口(可与接收装置122的第一端口为相同或不同的端口)收到第二命名(可与接收装置122的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
c、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:Downface)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口Upface为所述第二端口、发送内容数据包的端口Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
因此,在一些可行的实施方式中,当节点接收到的对应于接收装置122接收的请求数据包的内容数据包已经被删除时,处理器123不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则处理器123同样不能在节点的CS中查询到所述请求数据包所请求的内容。
具体实现中,处理器123未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
第一,PIT表中不存在名称为第一命名的表项;
第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
因此,在一些可行的实施方式中,当处理器123未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
具体实现中,处理器123可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
在一些可行的实施方式中,本发明实施例的处理器123还用于当所述发送装置124按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
在一些可行的实施方式中,本发明实施例的处理器123还用于当所述发送装置124按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,给程序执行时可包括本发明提供的基于缓存的路由方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘且本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (46)
1.一种基于缓存的路由方法,其特征在于,包括:
当节点从第一端口收到第一命名的请求数据包时,查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
2.如权利要求1所述的基于缓存的路由方法,其特征在于,当未在所述节点的待定请求表PIT表中查询到第一表项时,还包括:
在所述PIT表中生成所述第一表项。
3.如权利要求1或2所述的基于缓存的路由方法,其特征在于,当查询到所述NFT表中存在第三表项时,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
4.如权利要求3所述的基于缓存的路由方法,其特征在于,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
删除所述NFT表中的所述第三表项。
5.如权利要求3所述的基于缓存的路由方法,其特征在于,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;
删除所述NFT表中的所述第三表项。
6.如权利要求1或2所述的基于缓存的路由方法,其特征在于,当查询到所述NFT表中存在第四表项时,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
7.如权利要求6所述的基于缓存的路由方法,其特征在于,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;
删除所述NFT表中的所述第四表项。
8.如权利要求6所述的基于缓存的路由方法,其特征在于,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:
当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;
删除所述NFT表中的所述第四表项。
9.如权利要求1或2所述的基于缓存的路由方法,其特征在于,当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
10.如权利要求1或2所述的基于缓存的路由方法,其特征在于,当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
11.如权利要求3所述的基于缓存的路由方法,其特征在于,当未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,包括:
判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
12.如权利要求5所述的基于缓存的路由方法,其特征在于,当未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,包括:
判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
13.如权利要求6所述的基于缓存的路由方法,其特征在于,当未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,包括:
判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
14.如权利要求8所述的基于缓存的路由方法,其特征在于,当未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,包括:
判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
15.如权利要求10所述的基于缓存的路由方法,其特征在于,当未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,包括:
判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
16.一种路由节点,其特征在于,包括:
存储模块,用于存储内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT;
接收模块,用于从第一端口接收第一命名的请求数据包;
第一查询模块,用于查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;
第二查询模块,用于当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
转发模块,用于当所述第二查询模块查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
17.如权利要求16所述的路由节点,其特征在于,还包括:
第一生成模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项时,在所述PIT表中生成所述第一表项。
18.如权利要求16或17所述的路由节点,其特征在于,所述转发模块还用于当所述第二查询模块查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
19.如权利要求18所述的路由节点,其特征在于,还包括:
第一表项更新模块,用于当所述转发模块按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
20.如权利要求18所述的路由节点,其特征在于,还包括:
第二表项更新模块,用于当所述转发模块按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
21.如权利要求16或17所述的路由节点,其特征在于,所述转发模块还用于当所述第二查询模块查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
22.如权利要求21所述的路由节点,其特征在于,还包括:
第三表项更新模块,用于当所述转发模块按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;并删除所述NFT表中的所述第四表项。
23.如权利要求21所述的路由节点,其特征在于,还包括:
第四表项更新模块,用于当所述转发模块按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
24.如权利要求16或17所述的路由节点,其特征在于,还包括:
第三查询模块,用于当所述第二查询模块查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
25.如权利要求16或17所述的路由节点,其特征在于,还包括:
第四查询模块,用于当所述第二查询模块查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
26.如权利要求18中任一项所述的路由节点,其特征在于,还包括:
判断模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项之后,所述第二查询模块查询所述节点的下一端口表NFT表之前,判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
27.如权利要求20所述的路由节点,其特征在于,还包括:
判断模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项之后,所述第二查询模块查询所述节点的下一端口表NFT表之前,判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
28.如权利要求21所述的路由节点,其特征在于,还包括:
判断模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项之后,所述第二查询模块查询所述节点的下一端口表NFT表之前,判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
29.如权利要求23所述的路由节点,其特征在于,还包括:
判断模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项之后,所述第二查询模块查询所述节点的下一端口表NFT表之前,判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
30.如权利要求25所述的路由节点,其特征在于,还包括:
判断模块,用于当所述第一查询模块未在所述节点的待定请求表PIT表中查询到第一表项之后,所述第二查询模块查询所述节点的下一端口表NFT表之前,判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述第二查询模块查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
31.一种路由节点,其特征在于,包括存储器、接收装置、处理器以及发送装置,其中:
所述存储器,用于存储内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT;
所述接收装置,用于从第一端口接收第一命名的请求数据包;
所述处理器,用于查询所述节点的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT;并用于当未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
所述发送装置,用于当所述处理器查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
32.如权利要求31所述的路由节点,其特征在于,所述处理器还用于当未在所述节点的待定请求表PIT表中查询到第一表项时,在所述PIT表中生成所述第一表项。
33.如权利要求31或32所述的路由节点,其特征在于,所述发送装置还用于当所述处理器查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
34.如权利要求33所述的路由节点,其特征在于,所述处理器还用于当所述发送装置按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,删除所述NFT表中的所述第三表项。
35.如权利要求33所述的路由节点,其特征在于,所述处理器还用于当所述发送装置按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;并删除所述NFT表中的所述第三表项。
36.如权利要求32或31所述的路由节点,其特征在于,所述发送装置还用于当所述处理器查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
37.如权利要求36所述的路由节点,其特征在于,所述处理器还用于当所述发送装置按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口和发送内容数据包的端口中记录的端口;并删除所述NFT表中的所述第四表项。
38.如权利要求36所述的路由节点,其特征在于,所述处理器还用于当所述发送装置按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,且所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口;删除所述NFT表中的所述第四表项。
39.如权利要求31或32所述的路由节点,其特征在于,所述处理器还用于当查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
40.如权利要求31或32所述的路由节点,其特征在于,所述处理器还于当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
41.如权利要求33所述的路由节点,其特征在于,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述处理器查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
42.如权利要求35所述的路由节点,其特征在于,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述处理器查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
43.如权利要求36所述的路由节点,其特征在于,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述处理器查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
44.如权利要求38所述的路由节点,其特征在于,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述处理器查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
45.如权利要求40所述的路由节点,其特征在于,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述处理器查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
46.如权利要求37所述的路由节点,其特征在于,当所述处理器未在所述节点的待定请求表PIT表中查询到第一表项之后,查询所述节点的下一端口表NFT表之前,所述处理器还用于判断是否在所述PIT表中查询到第五表项,且所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,则所述处理器查询所述节点的下一端口表NFT表;所述第五表项中记录的名称为所述第一命名,所述第五表项中记录的接收请求数据包的端口不包括所述第一端口。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013071373 | 2013-02-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104737505A CN104737505A (zh) | 2015-06-24 |
CN104737505B true CN104737505B (zh) | 2017-07-14 |
Family
ID=53459273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380000205.3A Active CN104737505B (zh) | 2013-02-05 | 2013-02-05 | 基于缓存的路由方法及路由节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104737505B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105577537A (zh) * | 2015-12-25 | 2016-05-11 | 中国科学院信息工程研究所 | 一种基于历史记录的信息中心网络的多径转发方法及系统 |
US10122624B2 (en) * | 2016-07-25 | 2018-11-06 | Cisco Technology, Inc. | System and method for ephemeral entries in a forwarding information base in a content centric network |
CN107948073B (zh) * | 2017-11-21 | 2020-06-16 | 中南大学 | 基于ndn架构的无线数据传输方法、装置及系统 |
CN110391980B (zh) * | 2018-04-16 | 2021-11-09 | 中兴通讯股份有限公司 | 一种数据转发方法、路由设备及计算机存储介质 |
CN108650070A (zh) * | 2018-05-11 | 2018-10-12 | 全球能源互联网研究院有限公司 | 一种信息中心网络相量测量单元通信的系统与方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080037420A1 (en) * | 2003-10-08 | 2008-02-14 | Bob Tang | Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp (square waveform) TCP friendly san |
CN101043727A (zh) * | 2006-03-24 | 2007-09-26 | 华为技术有限公司 | 一种演进网络中目标优选三层快速切换的实现方法 |
US8204060B2 (en) * | 2009-01-30 | 2012-06-19 | Palo Alto Research Center Incorporated | Method and system for facilitating forwarding a packet in a content-centric network |
CN102045392A (zh) * | 2010-12-14 | 2011-05-04 | 武汉大学 | 一种无结构p2p网络的基于兴趣的自适应拓扑优化方法 |
US8667172B2 (en) * | 2011-06-07 | 2014-03-04 | Futurewei Technologies, Inc. | Method and apparatus for content identifier based radius constrained cache flooding to enable efficient content routing |
KR101715080B1 (ko) * | 2011-06-09 | 2017-03-13 | 삼성전자주식회사 | 네임 기반의 네트워크 시스템에서 펜딩 테이블의 오버플로우를 방지하는 노드 장치 및 방법 |
CN102647357B (zh) * | 2012-04-20 | 2016-04-13 | 中兴通讯股份有限公司 | 一种处理内容路由方法及装置 |
-
2013
- 2013-02-05 CN CN201380000205.3A patent/CN104737505B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104737505A (zh) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104737505B (zh) | 基于缓存的路由方法及路由节点 | |
CN104683485B (zh) | 一种基于c‑ran的互联网内容缓存预加载方法和系统 | |
CN102014043B (zh) | 名址映射系统、数据传输方法及名址映射维护方法 | |
EP2849410B1 (en) | Data processing method, router and ndn system | |
US20190014550A1 (en) | Tracking area and user plane mapping for control plane/user plane split | |
CN103888552B (zh) | 快速访问互联网的方法、系统与终端装置 | |
CN108390908A (zh) | 一种数据请求处理方法、装置及计算机可读存储介质 | |
CN104604269B (zh) | 一种联合位置更新处理方法、装置和系统 | |
CN109936633A (zh) | 内容中心网络中基于内容重要度的协作缓存策略 | |
CN104158763A (zh) | 一种基于软件定义的内容中心网络架构 | |
CN109982383A (zh) | 数据发送方法、装置及设备 | |
CN107872478A (zh) | 一种内容缓存方法、装置和系统 | |
CN104092612A (zh) | 更新快速转发表匹配顺序的方法及装置 | |
WO2014071718A1 (zh) | 拓扑分级方法、装置及洪泛的处理方法、装置 | |
US20160205545A1 (en) | Epc node selection using custom service types | |
CN108123783A (zh) | 数据传输方法、装置及系统 | |
CN105637910B (zh) | 下行数据处理方法及装置、系统 | |
CN105893458A (zh) | 媒体内容回放系统和方法 | |
CN106227679B (zh) | 一种数据缓存替换方法及装置 | |
CN113810511B (zh) | Arp表的更新方法及装置 | |
CN110324807A (zh) | 一种信息处理方法、功能和计算机可读存储介质 | |
CN105763607A (zh) | 一种订阅内容获取方法、设备及系统 | |
CN108040172A (zh) | 应用软件的信息更新方法、终端和计算机存储介质 | |
CN102088738B (zh) | 请求发送方法和系统、初始节点、中间节点和目的节点 | |
CN103891340B (zh) | 数据推送方法,装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |