一种命名数据网络中的订阅和发布系统及其方法与流程

文档序号:13075662阅读:98来源:国知局
本发明属于命名数据网络
技术领域
:,特别涉及了一种命名数据网络中的订阅和发布系统及其方法。
背景技术
::现有的发布订阅/系统建立在tcp/ip网络架构上,只能利用端到端的重复通信传输相同的数据,网络资源利用率低。为解决这个问题,研究人员提出了基于命名数据网络ndn(nameddatanetworking,ndn)架构的发布/订阅系统。ndn以内容/信息为中心,其内容路由机制能够有效适应发布/订阅系统的需求。但是,由于ndn的内容名是可变长的,其转发效率远远低于ip报文转发。为解决这—缺陷,现有研究提出了基于布隆过滤器(bloomfilter,bf)构建订阅表(subscribetable,st),加快数据报文的转发速度。但是,现有的订阅表构建方案,在系统进一步扩展时,不能完全满足用户需求。当用户希望取消某个内容的订阅或者用户希望对st表中的内容描述符(contentdescrption,cd)进行聚合以减少st的表项时,由于bf不支持删除操作的固有特性,导致系统无法正确工作。为此,有必要在ndn中提出一种支持取消内容订阅和st表项汇聚的发布/订阅方法。技术实现要素:为了解决上述
背景技术
:提出的技术问题,本发明旨在提供一种命名数据网络中的订阅和发布系统及其方法,能在实现数据报文快速转发的同时,支持用户取消某个内容的订阅和对订阅表中的内容描述符进行聚合以减少订阅表项的功能。为了实现上述技术目的,本发明的技术方案为:一种命名数据网络中的订阅和发布系统,其特征在于,包括:内容订阅节点:根据用户的需求生成订阅报文和订阅删除报文,接收数据报文;内容发布节点:根据发布者的需求生成内容发布报文;内容汇聚节点:处理内容订阅节点生成的订阅报文和删除报文,构建或更新订阅表后,抑止报文的转发;处理内容发布节点生成的内容发布报文,生成数据报文;查询订阅表向内容订阅节点下发数据报文;内容路由节点:处理内容订阅节点生成的订阅报文和删除报文,构建或更新订阅表后,决定是否向内容汇聚节点转发;处理内容发布节点生成的内容发布报文,并向内容汇聚节点转发;处理内容汇聚节点生成的数据报文,并向内容订阅节点转发。本发明还包括基于上述系统的订阅表构建方法,包括以下步骤:s11,内容路由节点接收订阅报文;s12,内容路由节点生成该订阅报文中内容描述符的前缀集;s13,内容路由节点根据根据到达端口和其他端口的内容前缀列表和前缀集处理该订阅报文;该步骤的具体过程如下:s131,内容路由器根据到达端口的内容前缀列表查看是否存在前缀集中的某—项内容描述符,若存在,转入步骤s131-1,否则转s131-2;s131-1,抑止该订阅报文的转发;s131-2,在到达端口的内容前缀列表中记录下该内容描述符,计算该内容描述符在计数布隆过滤器中对应的位序列,将计数布隆过滤器中对应的位序列加1;s132,在到达端口的内容前缀列表中查看是否存在该内容描述符的子条目,若存在,记录下这些待删除的子条目,然后删除这些子条目,并计算这些子条目的位序列,将计数布隆过滤器对应的位序列减1;s133,在内容路由节点查看其他端口中是否存在前缀集中的某—项内容描述符,若存在,转入步骤s133-1,否则转入步骤s133-2;s133-1,抑止该订阅报文的转发,结束步骤s13;s133-2,在内容路由节点查看其他端口的内容前缀列表中是否存在该内容描述符的子条目,若存在,则记录下这些待删除的子条目;s134,查询fib表,向内容汇聚节点转发该订阅报文;s135,对于步骤s132和s133-2中记录的待删除的内容描述符的子条目,若该内容描述符对应的内容汇聚节点与订阅消息中内容描述符对应的内容汇聚节点不同,则构造该内容描述符的删除消息,并向内容汇聚节点转发。本发明还包括基于上述系统的订阅表删除方法,包括以下步骤:s21,内容路由节点接收订阅表删除报文;s22,内容路由节点获取删除报文中的内容描述符;s23,内容路由节点在删除报文的到达端口中查看内容前缀列表中是否有该删除报文中包含的内容描述符或内容描述符的子条目,若无,则转入步骤s231,否则转入步骤s232;s231,抑止该删除报文的转发,结束步骤s23;s232,记录这些待删除的内容描述符或内容描述符的子条目,然后删除这些内容描述符或内容描述符的子条目,并计算该内容描述符或内容描述符的子条目的位序列,将计数布隆过滤器中对应的位序列减1;s24,内容路由节点在其他端口中查看是否有订阅该内容描述符或该内容描述符的子条目或该内容描述符的超条目,若有,转入步骤s241,否则转入步骤s242;s241,抑止该删除报文的转发,结束步骤s24,s242,抑止接收到的删除报文的转发,为步骤s232记录的待删除的内容描述符构造删除报文,并向内容汇聚节点转发。本发明还包括基于上述系统的发布数据报文转发方法,包括以下步骤:s31,内容路由节点接收发布的数据报文;s32,内容路由节点生成数据报文中内容描述符的前缀集;s33,对于订阅表中给出的每个端口i的前缀集中的每一项内容描述符,内容路由节点判断该内容描述符是否属于端口i对应的计数布隆过滤器所代表的元素集合cbfi,若属于,则将数据报文向端口i转发,否则不向端口i转发。在步骤s33中,判断内容描述符是否属于端口i对应的计数布隆过滤器所代表的元素集合cbfi的方法如下:基于计数布隆过滤器cbfi相关联的k个映射函数h1,h2,...,hk对内容描述符进行映射,得到对应的位序列h1(cd),h2(cd),...,hk(cd);若所有位序列的计数布隆过滤器值cbfi[hj(cd)]>0,j=1,2,...,k,则该内容描述符属于cbfi,否则,该内容描述符不属于cbfi。采用上述技术方案带来的有益效果:本发明在ndn中每个内容路由节点和汇聚节点引入了计数布隆过滤器,能在ndn中支持高效的发布/订阅系统,特别是在实现数据报文快速转发的同时,能支持用户取消某个内容的订阅或者对st表中的内容描述符进行聚合,从而减少st的表项。附图说明图1是本发明的系统拓扑图;图2是本发明的订阅表构建方法流程图;图3是普通布隆过滤器与计数布隆过滤器的比较示意图;图4是本发明的订阅表表项示意图;图5是本发明的订阅表删除方法流程图;图6是本发明的发布数据报文转发方法流程图;图7(a)-7(d)分别为本发明的4种示例图。具体实施方式以下将结合附图,对本发明的技术方案进行详细说明。如图1所示本发明的系统拓扑,一种命名数据网络中的订阅和发布系统,包括:内容订阅节点:根据用户的需求生成订阅报文和订阅删除报文,接收数据报文;内容发布节点:根据发布者的需求生成内容发布报文;内容汇聚节点(如图1中的r):处理内容订阅节点生成的订阅报文和删除报文,构建或更新订阅表后,抑止报文的转发;处理内容发布节点生成的内容发布报文,生成数据报文;查询订阅表向内容订阅节点下发数据报文;内容路由节点(如图1中的r1,r2和r3):处理内容订阅节点生成的订阅报文和删除报文,构建或更新订阅表后,决定是否向内容汇聚节点转发;处理内容发布节点生成的内容发布报文,并向内容汇聚节点转发;处理内容汇聚节点生成的数据报文,并向内容订阅节点转发。系统中通过汇聚节点实现发布者和订阅者之间的解耦,发布者将数据报文转发到汇聚节点后,汇聚节点再将数据报文下发给订阅者。其中,发布者将数据报文转发到汇聚节点的过程可以通过内容路由节点的fib表实现,每个内容路由节点存储了到达汇聚节点的路由条目,用于将数据报文路由到汇聚节点。而汇聚节点将数据报文下发给订阅者通过订阅表st实现。订阅表的引入使得系统中每个节点无需维护具体的发布者/订阅者列表和对应关系,而仅需维护面向内容的订阅关系。因此订阅表的构建是ndn中实现订阅和发布功能的核心点。为了加速数据报文的转发和订阅条目的删除,每个内容路由节点和汇聚节点引入了计数布隆过滤器的概念。图2示出了本发明基于计数布隆过滤器的订阅表构建方法流程图,其具体步骤如下:s11,内容路由节点接收订阅报文;s12,内容路由节点生成该订阅报文中内容描述符的前缀集;s13,内容路由节点根据根据到达端口和其他端口的内容前缀列表和前缀集处理该订阅报文;该步骤的具体过程如下:s131,内容路由器根据到达端口的内容前缀列表查看是否存在前缀集中的某—项内容描述符,若存在,转入步骤s131-1,否则转s131-2;s131-1,抑止该订阅报文的转发;s131-2,在到达端口的内容前缀列表中记录下该内容描述符,计算该内容描述符在计数布隆过滤器中对应的位序列,将计数布隆过滤器中对应的位序列加1;s132,在到达端口的内容前缀列表中查看是否存在该内容描述符的子条目,若存在,记录下这些待删除的子条目,然后删除这些子条目,并计算这些子条目的位序列,将计数布隆过滤器对应的位序列减1;s133,在内容路由节点查看其他端口中是否存在前缀集中的某—项内容描述符,若存在,转入步骤s133-1,否则转入步骤s133-2;s133-1,抑止该订阅报文的转发,结束步骤s13;s133-2,在内容路由节点查看其他端口的内容前缀列表中是否存在该内容描述符的子条目,若存在,则记录下这些待删除的子条目;s134,查询fib表,向内容汇聚节点转发该订阅报文;s135,对于步骤s132和s133-2中记录的待删除的内容描述符的子条目,若该内容描述符对应的内容汇聚节点与订阅消息中内容描述符对应的内容汇聚节点不同,则构造该内容描述符的删除消息,并向内容汇聚节点转发。反之,若相同,该链路st表的汇聚可以依靠订阅报文完成,节点不增加额外的处理逻辑。以图1所示的拓扑为例,内容路由节点r1有三个端口(0,1,2),依次收到以下订阅报文,0号端口/sports,1号端口/sports/football和/sports/basketball。计数布隆过滤器的向量长度为8,3个哈希函数的计算的位序列结果为/sports={0,5,6}、/sports/football={1,3,4}、/sports/basketball={3,4,5}。r1收到/sports时,更新cdlist和cbf,由于端口0和其他端口中都不存在/sports的前缀集,所以r1向汇聚节点r转发该订阅报文,而当r1收到/sports/football和/sports/basketball,由于1号端口中不存在这两个cd的前缀集,所以更新cdlist和cbf,但是由于0号端口,存在它们的前缀集/sports,所以r1抑止该订阅报文的转发。图3给出了普通布隆过滤器与计数布隆过滤器的比较示意图。bf由布隆(burtonhowardbloom)在1970年提出的。它由—个长度为m的二进制向量和k个值域为[0,m)的随机映射函数组成,可以用于检索—个元素是否在—个集合中。其基本原理是:用k个值域为[0,m)的哈希函数对数据集合s中的每个数据计算—个位序列(g1,g2,……,gk),然后设二进制向量对应位序列的位置值为1。计数布隆过滤器cbf由bf扩展而来,主要解决bf无法进行删除操作的问题。cbf将bf二进制向量的每一位扩展为一个计数器。图4分别示出了长度为16布隆过滤器和计数布隆过滤器。假设集合s={x,y,z},3个函数对集合s中的元素x,y,z计算出的位序列为x={2,7,15},y={4,7,11},z={0,1,7},则bf对应的位0,1,2,4,7,11,15置1(最右边的位序列号为0,最左边的位序列号为15),而对于cbf,由于位序列7在三个元素的映射结果中都出现了,因此对应位序列的计数器为3。图4为本发明的订阅表表项示意图。该订阅表表项的数据结构由内容路由节点的端口号、该端口订阅的内容描述符集合(cdlist)和该端口的计数布隆过滤器(cbf)三部分组成。由于布隆过滤器falsepositive的特点,即将不属于某个集合的元素误判为属于这个集合,所以,系统在每个接口中维护订阅内容描述符集合主要用来处理订阅消息和删除消息,实现订阅消息和删除消息的抑止,以及st表的聚合功能。计数布隆过滤器数组则用于处理数据报文,当数据报文到达时,如该cd的子条目中某一项对应cbf中的每一位均不为零,则说明这个端口订阅了这个cd,因为数据报文应该向这个端口转发。图5示出了本发明基于计数布隆过滤器的订阅表删除方法流程图,其具体步骤如下:s21,内容路由节点接收订阅表删除报文;s22,内容路由节点获取删除报文中的内容描述符;s23,内容路由节点在删除报文的到达端口中查看内容前缀列表中是否有该删除报文中包含的内容描述符或内容描述符的子条目,若无,则转入步骤s231,否则转入步骤s232;s231,抑止该删除报文的转发,结束步骤s23;s232,记录这些待删除的内容描述符或内容描述符的子条目,然后删除这些内容描述符或内容描述符的子条目,并计算该内容描述符或内容描述符的子条目的位序列,将计数布隆过滤器中对应的位序列减1;s24,内容路由节点在其他端口中查看是否有订阅该内容描述符或该内容描述符的子条目或该内容描述符的超条目,若有,转入步骤s241,否则转入步骤s242;s241,抑止该删除报文的转发,结束步骤s24,s242,抑止接收到的删除报文的转发,为步骤s232记录的待删除的内容描述符构造删除报文,并向内容汇聚节点转发。以图1中的内容路由节点r1为例,若r1的1号端口收到/sports的删除报文,则首先在1号端口的cdlist查找/sports极其子条目,发现/sports/basketball和/sports/football均为它的子条目,因此在1号端口的cdlist中删除这两项,并将对应位序列的计数器减1。然后查看路由节点r1的其他接口,发现0号端口订阅了/sports,因此抑止该删除报文,不再向汇聚节点转发。图6示出了本发明基于计数布隆过滤器的发布数据报文转发方法流程图,其具体步骤如下:s31,内容路由节点接收发布的数据报文;s32,内容路由节点生成数据报文中内容描述符的前缀集;s33,对于订阅表中给出的每个端口i的前缀集中的每一项内容描述符,内容路由节点判断该内容描述符是否属于端口i对应的计数布隆过滤器所代表的元素集合cbfi,若属于,则将数据报文向端口i转发,否则不向端口i转发。在步骤s33中,判断内容描述符是否属于端口i对应的计数布隆过滤器所代表的元素集合cbfi的方法如下:基于计数布隆过滤器cbfi相关联的k个映射函数h1,h2,...,hk对内容描述符进行映射,得到对应的位序列h1(cd),h2(cd),...,hk(cd);对于任意j,j=1,2,...,k,均有cbfi[hj(cd)]>0,则该内容描述符属于cbfi,否则,该内容描述符不属于cbfi。以图1中的路由节点r1为例,若路由节点r1收到汇聚节点r发送的cd为/sports/football的数据报文,则生成其前缀集合{/sports,/sports/football}。将这个集合映射到端口0的cbf中时,发现/sports计算出的位序列均大于0,所以向0号端口转发;将这个集合映射到端口1的cbf中时,发现/sports/football计算出的位序列均大于0,所以向该端口转发;将这个集合映射到端口2的cbf中时,发现/sports/football和/sports计算出的位序列均存在0,所以不向该端口转发。图7(a)-7(d)给出了本发明4种示例图。如图7(a)所示,假设系统有两个订阅者sub1、sub2和两个发布者pub1、pub2。sub1先订阅了/sports的内容,sub2接着订阅了/sports/football和/sports/basketball的内容。cbf计数数组的长度为8,对应三个哈希函数,/sports对应的位序列为{1,3,5},/sports/football对应的位序列为{0,1,2},/sports/basketball对应的位序列为{2,3,4}。/sports的订阅消息到达r1和r3后,在r1和r3创建订阅表项,记录到达端口1订阅了内容/sports,更新端口1的cbf,并向汇聚节点r4转发该订阅消息。r4按同样的方式更新订阅表。/sports/football和/sports/basketball的订阅消息到达r2和r3后,更新订阅表。由于/sports/football和/sports/basketball订阅消息可以和/sports订阅消息聚合,因此r3仅记录下端口2订阅了内容/sports/football和/sports/basketball,而不再向r4转发该订阅消息。从而,r4的订阅表中仅有一项,即端口1订阅了/sports消息。如图7(b)所示,假设sub2取消订阅/sports/basketball。r2删除端口1中的/sports/basketball并将对应的序列位减1后向r3转发,r3删除端口2中的/sports/basketball并将对应的序列位减1后,由于1号端口中存在/sports/basketball的超条目/sports,因此不向r4转发该删除消息。如图7(c)所示,当pub1发布了/sports/football时,其前缀集为{/sports,/sports/football}。在r4匹配订阅表项/sports,从而发送给r3。在r3,同时1号接口的/sports和2号接口的/sports/football,因此,同时向端口1和2转发。如图7(d)所示,当pub2发布/sports/basketball时,其前缀集为{/sports,/sports/basketball}。在r4中匹配订阅表项/sports,从而发送给r3。在r3,由于仅匹配1号端口的/sports,因此仅向端口1转发。实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1