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

文档序号:8417875阅读:来源:国知局
的节点为以内容为中心的网络(CCN、NDD、PERSnT,Net Inf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,在步骤S310本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
[0159]在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
[0160]a、当节点的第三端口(可与步骤S310中的第一端口为相同或不同的端口)收到第二命名(可与步骤S310中的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
[0161]b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
[0162]C、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
[0163]具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
[0164]d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:D0wnfaCe)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口 Upface为所述第二端口、发送内容数据包的端口 Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
[0165]除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
[0166]除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
[0167]因此,在一些可行的实施方式中,当节点接收到的对应于步骤S310的请求数据包的内容数据包已经被删除时,在步骤S310则不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,步骤S310中的节点之前并未接收过内容数据,则在步骤S310同样不能在节点的CS中查询到所述请求数据包所请求的内容。
[0168]步骤S311,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表pit。
[0169]步骤S312,当未在所述节点的待定请求表PIT表中查询到第一表项时,判断是否在所述PIT表中查询到第五表项,第五表项存在,判断所述第一命名的请求数据包是否按照所述节点的上一跳节点的NFT表中的接收内容数据包的端口中记录的端口转发来的,如果判断为是,执行步骤S313 ;如果判断为否,在所述节点的PIT中生成所述第一表项,丢弃所述第一命名的请求数据包。当第五表项不存在,(即PIT表中不存在名称为第一命名的表项),执行步骤S313。
[0170]步骤S313,查询所述节点的下一端口表NFT表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口 ;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间。
[0171]具体实现中,在步骤S312,未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
[0172]第一,PIT表中不存在名称为第一命名的表项;
[0173]第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
[0174]因此,在一些可行的实施方式中,当未在所述节点的待定请求表PIT表中查询到第一表项时还可在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
[0175]步骤S314,当查询到所述NFT表中存在第二表项时,所述节点按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
[0176]具体实现中,在步骤S314可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口 Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
[0177]步骤S315,当查询到所述NFT表中不存在所述第二表项,但查询到所述NFT表中存在第三表项时,所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空。
[0178]在一些可行的实施方式中,在步骤S315,当所述节点按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第三表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第三表项中接收内容数据包的端口中记录的端口;
[0179]删除所述NFT表中的所述第三表项。
[0180]步骤S316,当查询到所述NFT表中不存在所述第二表项,但查询到所述NFT表中存在第四表项时,所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
[0181]在一些可行的实施方式中,在步骤S316,当所述节点按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包之后,还包括:当所述节点的PIT表的第一表项中的接收请求数据包的端口包括所述NFT表中的第四表项中接收内容数据包的端口中记录的端口,则在所述PIT表的第一表项中的接收请求数据包的端口中删除所述第四表项中接收内容数据包的端口中记录的端口 ;删除所述NFT表中的所述第四表项。
[0182]步骤S317,当查询到所述NFT表中不存在名称为所述第一命名的表项时,查询所述节点的FIB表项。
[0183]具体实现中,步骤S315-S317可没有先后顺序之分。
[0184]相应的,本发明实施还提供了可用于实施上述各方法实施例的装置实施例。下面结合附图对本发明实施例的路由节点的结构组成进行举例说明。
[0185]图5为本发明的基于缓存的路由节点的第一实施例的结构组成示意图。如图5所示,其可包括:存储模块51、接收模块52、第一查询模块53、第二查询模块54以及转发模块55,其中:
[0186]存储模块51,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
[0187]接收模块52,用于从第一端口接收第一命名的请求数据包;
[0188]第一查询模块53,用于查询所述存储模块51的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT ;
[0189]第二查询模块54,用于当所述第一查询模块53未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NF T表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口 ;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
[0190]转发模块55,用于当所述第二查询模块54查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口。
[0191]本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSnT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
[0192]在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
[0193]a、当节点的第三端口(可与接收模块52的第一端口为相同或不同的端口)收到第二命名(可与接收模块52的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
[0194]b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
[0195]C、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
[0196]具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
[0197]d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:D0wnfaCe)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口 Upface为所述第二端口、发送内容数据包的端口 Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
[0198]除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
[0199]除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
[0200]因此,在一些可行的实施方式中,当节点接收到的对应于接收模块52接收的请求数据包的内容数据包已经被删除时,第一查询模块53不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则第一查询模块53同样不能在节点的CS中查询到所述请求数据包所请求的内容。
[0201]具体实现中,第一查询模块53未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
[0202]第一,PIT表中不存在名称为第一命名的表项;
[0203]第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
[0204]因此,在一些可行的实施方式中,当第一查询模块53未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
[0205]第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
[0206]具体实现中,第二查询模块54可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口 Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端口记录的是节点向其他节点发送内容数据报的端口,因此与Downface相连的其他节点相对所述节点会更远离服务器中心,因此,本发明实施例给出了一种优先向远离服务器的方向路由请求的技术方案,其可增加中途命中内容的概率,并缩短响应请求的时间,并且,由于本发明实施例优先向远离服务器的方向路由请求,其可降低作为内容源的服务器的负担。
[0207]图6为本发明的基于缓存的路由节点的第二实施例的结构组成示意图。如图6所示,其可包括:存储模块61、接收模块62、第一查询模块63、第二查询模块64、转发模块65、第三查询模块66,其中:
[0208]存储模块61,用于存储所述节点的内容存储器CS、待定请求表PIT、前向转发表FIB以及下一端口表NFT。
[0209]接收模块62,用于从第一端口接收第一命名的请求数据包;
[0210]第一查询模块63,用于查询所述存储模块61的内容存储器CS,当未在所述节点的CS中查询到所述请求数据包所请求的内容时,查询所述节点的待定请求表PIT ;
[0211]第二查询模块64,用于当所述第一查询模块63未在所述节点的待定请求表PIT表中查询到第一表项时,查询所述节点的下一端口表NF T表;所述第一表项中记录的名称为所述第一命名,所述第一表项中记录的接收请求数据包的端口包括所述第一端口 ;所述NFT表中记录的属性包括名称、接收内容数据包的端口、发送内容数据包的端口以及接收内容数据包的时间;
[0212]转发模块65,用于当所述第二查询模块64查询到所述NFT表中存在第二表项时,按照所述第二表项中的发送内容数据包的端口中记录的端口转发所述请求数据包;所述第二表项中记录的名称为所述第一命名,所述第二表项中记录的发送内容数据包的端口不为空,且所述发送内容数据包的端口不是所述第一端口 ;以及,用于当所述第二查询模块64查询到所述NFT表中存在第三表项时,按照所述第三表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第三表项中记录的名称为所述第一命名,所述第三表项中记录的发送内容数据包的端口为空;以及,用于当所述第二查询模块64查询到所述NFT表中存在第四表项时,按照所述第四表项中的接收内容数据包的端口中记录的端口转发所述请求数据包;所述第四表项中记录的名称为所述第一命名,所述第四表项中记录的发送内容数据包的端口为所述第一端口。
[0213]在一些可行的实施方式中,本发明的路由节点还可包括:
[0214]第三查询模块66,用于当所述第二查询模块64查询到所述NFT表中不存在名称为所述第一命名的表项时,且所述节点的PIT表中名称为所述第一命名的表项是为新建表项,查询所述节点的FIB表项;当查询到所述NFT表中不存在名称为所述第一命名的表项时,但所述节点的PIT表中名称为所述第一命名的表项是并非为新建表项,丢弃所述第一命名的请求数据包。
[0215]本发明实施例的节点为以内容为中心的网络(CCN、NDD、PERSnT,NetInf等)中的节点,因此,本发明实施例的节点当有内容数据包经过时,会缓存经过的内容数据包,因此,本发明实施例的节点可通过发起请求数据包以请求内容的方式来获取内容数据。
[0216]在一些可行的实施方式中,本发明实施例的节点缓存内容数据包的流程可包括:
[0217]a、当节点的第三端口(可与接收模块62的第一端口为相同或不同的端口)收到第二命名(可与接收模块62的第一命名的数据包的名称相同或者不同)的内容数据包时,将该数据包存储在当前节点,并将数据包的第二命名写入CS表中,并记录下该第三端口的信息。
[0218]b、按照所述节点的PIT中记录的接收请求数据包的端口中记录的端口转发上述内容数据包;其中,PIT中接收请求数据包的端口中记录的端口可是一个或多个,因此,节点需要向一个或多个端口转发所述内容数据包。
[0219]C、在所述PIT中接收请求数据包的端口中记录的端口中选择一个第二端口。
[0220]具体的选择方法可以包括:随机选择,或者按照端口序号的升降序选择,或者根据连接端口的链路的状态进行选择(例如:选择连接链路状态好的端口),还可以根据其他方法进行选择。
[0221]d、查看所述节点的NFT表,如果NFT表中存在名称与所述第二命名对应的表项,则更新所述对应的表项中接收内容数据包的端口(表中记为:Upface)的内容为所述第三端口和更新所述对应的表项中发送内容数据包的端口(表中记为:D0wnfaCe)的内容为所述第二端口以及接收内容数据包的时间(表中记为:Time)的内容为所述内容数据包到达第三端口的时间;如果NFT表中不存在名称与所述第二命名对应的表项,则在所述NFT表中生成第六表项,所述第六表项的名称为所述第二命名,接收内容数据包的端口 Upface为所述第二端口、发送内容数据包的端口 Downface为所述节点的PIT表中选中的第二端口,以及接收内容数据包的时间Time为所述第二端口接收到所述内容数据报的时间。
[0222]除此之外,在c之后,还可删除节点的PIT表中关于第二命名的PIT表项。该删除动作可以发生在步骤d之前或之后,或与d同时执行。
[0223]除此之外,在节点接收到内容数据包的一段时间后,节点中的所述第二命名的内容数据包可能会被删除,同时CS表中对应第二命名的条目也会被删除。删除原因不作限定,可能是超时,可能是被替换,以及其他等等。也即,本发明实施例的节点对内容的缓存是有一定的时间限制的。
[0224]因此,在一些可行的实施方式中,当节点接收到的对应于接收模块62接收的请求数据包的内容数据包已经被删除时,第一查询模块63不能在节点的CS中查询到所述请求数据包所请求的内容。或者,在另一些可行的实施方式中,节点之前并未接收过内容数据,则第一查询模块63同样不能在节点的CS中查询到所述请求数据包所请求的内容。
[0225]具体实现中,第一查询模块63未在所述节点的待定请求表PIT表中查询到第一表项的情况可能有以下几种:
[0226]第一,PIT表中不存在名称为第一命名的表项;
[0227]第二,PIT表中不存在名称为第一命名的表项,但是存在第五表项,所述第五表项名称为第一命名,所述第五表项中接收请求数据包的端口中不包括所述第一端口。
[0228]因此,在一些可行的实施方式中,当第一查询模块63未在所述节点的待定请求表PIT表中查询到第一表项时,本发明实施例的路由节点还可包括:
[0229]第一生成模块(未图示),用于在节点中生成所述第一表项,对于上述的第一种情况,生成第一表项是一个全新建立第一表项的过程,对于上述的第二种情况,则只需要将所述第一端口增加到所述PIT表中名称为第一命名的表项中的接收请求数据包的端口中即可。
[0230]具体实现中,第二查询模块64可首先查询所述NFT表中是否存在名称为第一命名的表项,如果存在,则进一步查询所述名称为第一命名的表项的发送内容数据包的端口Downface是否不为空,且不是所述第一端口,如果是,则认为查询到所述第二表项。并进一步按照所述第二表项的发送内容数据包的端口 Downface中记录的端口转发所述请求数据包。由于本发明实施例的NFT表中的Downface中记录的端
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1