Ccn中支持隧道传输的方法、装置和系统的制作方法_2

文档序号:9435957阅读:来源:国知局
容请求被映射到同一隧道出口路由器。可以对内容请求的内容名进行过滤,将过滤后的内容名作为上述映射算法的输入。例如,在CCN中,内容名为层次化的,且同一个内容被分成多个数据块,假设内容foo被分为N个数据块,每个数据块的命名分别为/example.com/foo/part-1, /example, com/foo/part-2,…,/example, com/foo/part~N.则可以对内容名进行过滤,只取内容名的前两个部分作为映射算法的输入,则所有N个数据块经过滤后的内容名均为/example, com/foo,从而保证内容foo的所有内容请求都被映射到同一个隧道出口路由器。
[0053]其中,所述封装内容请求形成封装后的内容请求,封装后的内容请求的内容名所遵循的命名规则与CCN的命名规则相同,具体地,封装后的内容请求的内容名为在被封装内容请求的内容名之前加上隧道出口路由器的标识作为前缀。例如,被封装的内容请求的内容名为foo,而该内容名经过映射得到的隧道出口路由器的标识为R,则封装后的内容请求的内容名为R/foo。
[0054]图2示出了依据本发明一实施方式的CCN中支持隧道传输的隧道出口路由器的请求处理方法,包括下述步骤;
[0055]201,隧道出口路由器接收封装后的内容请求;
[0056]202,隧道出口路由器解封封装后的内容请求,提取被封装的内容请求;
[0057]203,隧道出口路由器查询FIB表,转发被封装的内容请求。
[0058]图3示出了依据本发明一实施方式的CCN中支持隧道传输的内容请求转发过程示意图。其中,客户C发出的对内容名为foo的内容请求首先到达路由器R1。依据CCN转发引擎的处理逻辑,首先根据foo查询Content Store和PIT表,在这里,假设两者都未命中。此时CCN的转发引擎将查询FIB表。
[0059]隧道入口路由器的FIB表包括三类:第一类是所有以其它可能成为隧道终点的路由器标识为前缀的转发条目(如R3/*,2);第二类只有一项,是以自身标识为前缀的转发条目,其转发端口为隧道出口处理程序tunnel_0ut ;第三类也只有一项,即为默认匹配条目,其转发端口为隧道入口处理程序tunnel_in。
[0060]?当请求匹配第一类前缀时,表示该请求本身已经是一个经过封装的隧道报文,且隧道的终点不是本身,则该路由器的作用是作为隧道中间的一个正常转发节点,因此简单按照FIB表转发报文;
[0061]?当请求匹配第二类前缀时,表示该请求本身已经是一个经过封装的隧道报文,且隧道的终点是本身,则应该将请求报文交给隧道出口处理程序tunnel_0ut处理。如果该隧道入口路由器节点不可能成为另一个隧道的出口路由器,则FIB表将不会包括此类转发条目;
[0062]籲当请求匹配第三类前缀时(即默认转发表项),表示该请求为一个原始的内容请求,则将请求交给隧道入口处理程序tunnel_in处理。
[0063]根据描述,上述对于内容名为foo的请求将匹配第三类前缀,从而将被交给隧道入口处理程序tunnel_in处理,同时在PIT表项中增加一条记录,前缀为foo,请求到达端口为I。隧道入口处理程序tunnel_in将执行下述步骤:
[0064]I)根据内容的请求名确定隧道出口路由器标识(R3);
[0065]2)构造封装报文,封装报文的前缀为隧道出口路由器标识/内容标识(即R3/foo);
[0066]3)将封装的请求报文交给CCN的转发引擎处理。
[0067]当Rl的CCN转发引擎从隧道入口处理程序tunnel_in收到封装的请求报文后,按照正常的CCN转发引擎处理请求报文,当缓存不命中且PIT表也不命中时,查找FIB表。此时,将会命中以R3为前缀的转发表项,于是将封装的请求报文转发到相应的端口 2,同时在PIT表中建立一个表项,表项的前缀为R3/foo,请求到达的端口为隧道入口处理程序tunnel_in。
[0068]因此,当隧道入口路由器对原始的内容请求进行处理后,可能会建立两个PIT表项,如图3中Rl的PIT所示。
[0069]该封装的请求之后被转发到路由器R2。R2的FIB表中包括所有可能潜在地成为隧道出口路由器标识为前缀的转发条目。R2仅根据封装的内容请求的外层内容名(即R3/foo)来转发内容请求。假设Content Store和PIT均不命中,则R2将把该封装的请求通过端口 2转发给R3,同时在PIT表中增加一项转发记录,前缀为R3/foo,请求到达端口为I。
[0070]R3接收到该封装的内容请求后,也按照CCN的转发引擎的逻辑处理该请求报文,假设此处Content Store和PIT表均不命中,则将查找FIB表。
[0071]隧道出口路由器的FIB标也包括三类转发条目:第一类是所有以其它可能成为隧道终点的路由器标识为前缀的转发条目(如Rl/*),其作用与之前介绍隧道入口路由器时相同;第二类为前缀为自身表识的转发条目(如R3/*),其转发端口为隧道出口处理程序tunnel_out ;第三类为正常的CCN内容名构成的转发条目,如foo。
[0072]?当请求匹配第一类前缀时,表示该请求本身已经是一个经过封装的隧道报文,且隧道的终点不是本身,则该路由器的作用是作为隧道中间的一个正常转发节点,因此简单按照FIB表转发封装的报文;
[0073]?当请求匹配第二类前缀时,表示该请求本身已经是一个经过封装的隧道报文,且隧道的终点是本身,则应该将请求报文转发给隧道出口处理程序tunnel_0ut处理,同时需要PIT表中增加新的标项。
[0074]籲当请求匹配第三类前缀时,表示该请求为一个原始的内容请求,则按正常的处理逻辑进行转发。
[0075]根据描述,上述封装的内容请求将匹配第二类前缀,从而将被转发给隧道出口处理程序tunnel_out处理,同时在PIT表中增加前缀为R3/foo、请求到达端口为I的表项。隧道出口处理程序tunnel_out将执行下述步骤:
[0076]I)去掉封装头,取出真正的请求报文Req:foo ;
[0077]2)将请求报文再次交给正常的CCN转发引擎处理。
[0078]当R3的CCN转发引擎从隧道出口处理程序tunnel_out接收到去掉封装头的原始内容请求后,按照正常的CCN转发引擎处理请求报文。当缓存不命中且PIT表也不命中时,查找FIB表。此时,将会命中以foo为前缀的转发表项,于是请求报文转发到相应的端口2,同时在PIT表中建立一个表项,表项的前缀为foo,请求到达的端口为隧道出口处理程序tunnel_out。
[0079]因此,当隧道出口路由器对隧道终点为自身的封装请求报文进行处理后,也会建立两个PIT表项,如图3中R3的PIT所示。
[0080]图4示出了依据本发明一实施例的CCN中支持隧道传输的隧道出口路由器的数据报文处理方法,包括:
[0081]401,隧道出口路由器接收数据报文;
[0082]402,隧道出口路由器封装数据报文,形成封装后的数据报文;
[0083]所述封装数据报文形成封装后的数据报文,封装后的数据报文的内容名遵循CCN的内容名命名规范,具体地,封装后的数据报文的内容名为在被封装数据报文的内容名之前加上该隧道出口路由器自身的标识作为前缀。例如,假设隧道出口路由器接收到的数据报文的内容名为foo,而隧道出口路由器本身的标识为R3,则封装后的数据报文的内容名为 R3/foo0
[0084]403,根据封装后的数据报文内容名查询PIT表,转发封装后的数据报文。
[0085]图5示出了依据本发明一实施例CCN中支持隧道传输的隧道入口路由器的数据报文处理方法,包括:
[0086]501,隧道入口路由器接收封装后的数据报文;
[0087]502,隧道入口路由器解封封装后的数据报文,提取被封装的数据报文;
[0088]503,隧道入口路由器根据被封装的数据报文的内容名查询PIT表,转发被封装的数据报文。
[0089]图6示出了依据本发明一实施例的支持隧道传输的数据响应转发流程。该数据响应转发对应于图3所示的内容请求的转发。当隧道出口路由器R3收到数据报文时,首先按正常的CCN转发引擎的处理逻辑处理,即匹配PIT表项,若不命中,丢弃报文,否则选
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1