掌桥专利:专业的专利平台
掌桥专利
首页

一种基于NDN和SDN的数据检索与推送方法

文献发布时间:2023-06-19 13:43:30


一种基于NDN和SDN的数据检索与推送方法

技术领域

本发明涉及一种基于命名数据网络(Named Data Networking,NDN)和软件定义网络(Software-Defined Networking,SDN)的数据检索与推送方法,属于计算机网络技术领域。

背景技术

命名数据网络(Named Data Networking,NDN)以数据内容为中心,不同于现有的TCP/IP网络基于IP地址的寻址方式,NDN设置内容名称为寻址方式,基于内容名称建立路由表进行通信,解耦了数据内容与位置的关系。相比以服务器为中心的通信模式,NDN架构中,数据内容与位置无关,因此非常适合被用作数据检索。

NDN网络的传输机制是通过用户发送兴趣包驱动内容生产者回复数据包的方式进行数据通信,且兴趣包和数据包中都含有一个内容名称来标识用户需要获取的数据内容。NDN的路由器需要维护3个表:内容存储CS(Content Store)、待定兴趣表PIT(PendingInterest Table)和转发信息表FIB(Forwarding Information Base)。当路由器转发来自用户的兴趣包时,首先在CS中查找是否有与当前兴趣包携带的数据名称相匹配的内容,如果有,则直接将匹配的数据包返回给发起请求的节点;如果没有,路由器会在PIT中记录下本次请求数据名称对应的兴趣包的流入接口(下游接口),同时路由器在FIB表中查找与当前名称匹配的记录,以确定转发接口(上游接口)。当某个节点拥有与名称匹配的数据包时,会根据PIT记录的流入接口(下游接口)信息将这个数据包原路返回。

目前NDN架构在数据检索方面存在以下不足之处:

(1)在路由转发方面,由于NDN网络是以内容名称为唯一寻址方式,而内容名称在名称空间中是唯一且分层的,内容名称比IP地址复杂的多,可能由成十上百甚至成百上千个字符组成,比IPv4/IPv6地址长的多;另外NDN名称表可能比当今的IP转发表大好几个数量级。这就要求路由器在FIB中的查找匹配需要占用大量资源,从而使得处理时延大幅上升;

(2)在现有NDN路由协议命名数据链路状态路由协议NLSR(Named Data LinkState Routing Protocol)作用下,路由器仅会发送本地生产者静态配置或动态注册的名称前缀。这意味着当一个内容被路由器CS缓存存储时,并不会发送通告更新FIB,这会导致消费者请求该内容时,因缺少这个被缓存内容的路由信息而仍然路由到生产者处去取,导致传输开销增大;

上述不足的根源是目前NDN的网络架构是分布式的,通常路由器的计算能力较为低下,处理查找FIB如此复杂的计算任务时效率较低,速度慢;整个网络缺乏全局视角,在节点CS内容更新时,并不会通告其他节点,使得整个网络僵硬、呆板、不够灵活。

发明内容

本发明的目的是针对传统NDN架构存在“在FIB中匹配查找处理时延过长”、“内容通告无法灵活、有效的分发”的技术缺陷,提出了一种基于NDN-SDN融合架构的灵活数据检索方法,用于信息检索领域,解决传统NDN架构存在的上述问题。

为了达到上述目的,本发明的技术方案如下:

所述灵活数据检索方法依托的网络架构包含若干节点;其中,节点包括用户、路由器以及中心控制器。该方法将原分布式的NDN架构与SDN架构融合,引入了中心控制器。由于传统NDN架构中,处理查找FIB的路由器性能较低且缺乏全局视角,将具有高计算性能的中心控制器架构的SDN引入传统NDN架构后,将控制平面与转发平面分离,转发平面将兴趣包直接发送给中心控制器,由处理性能强劲的中心控制器进行兴趣包解析、处理、计算并下发路由,让NDN路由器只需要负责转发,彻底解放转发路由器,充分提高转发速度,降低处理时延;在节点CS内容发生更新时,将变化告知中心控制器,使得中心控制器在计算路由时可以选择距离消费者代价最低的节点,极大程度提高了网络的灵活性;控制平面利用源路由(SR)为转发路由器下达路由指令,取缔了传统NDN架构中FIB匹配的过程并去除了转发路由器中的PIT、FIB表,从而实现了转发平面中基于推的数据流模式。

一种基于NDN和SDN的数据检索与推送方法的具体实施步骤如下:

步骤1、设置网络中心控制器并通告全网;

步骤1.1在网络中心区域放置并选定中心控制器;

其中,中心控制器的作用是汇总网络全局拓扑,并在数据通信过程中负责名称解析、计算路由、下达指令等,作为控制者使用,发挥控制平面的功能;

步骤1.2中心控制器向全网广播“认证兴趣包”,所有收到“认证兴趣包”的节点将收到认证兴趣包的接口作为收到“认证兴趣包”后的转发接口,以保证网络中所有除中心控制器以外的节点对中心控制器是可达的;

其中,接口是指硬件接口,即主机或路由器的对外接口,通过接口接入其他硬件设备;所述其他硬件设备是相对于当前节点主机的硬件设备,即除当前节点主机以外的硬件设备;

需要注意的是,如果不同接口接收到多个认证兴趣包,选择第一个接收到“认证兴趣包”的接口作为默认转发接口,后面除非中心控制器下发指令更改,否则不与改变;

步骤2、各路由器建立本地链路状态数据库以及CS内容库,并告知中心控制器,即向中心服务器发送“状态更新包”;

步骤2.1网络中每两个相邻路由器互相向对方发送一次“问候兴趣包”;

其中,相邻路由器的含义是“如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的”;

其中,所述问候兴趣包中的内容是“本路由器的名称以及向本路由器发送数据的路由代价”;

所述步骤2.1用来确定网络中相邻路由器的名称及链路状态;

步骤2.2各路由器根据收到的所有“问候兴趣包”,记录本路由器的所有相邻路由器的名称以及对应链路的路由代价,形成本路由器的链路状态数据库;

其中,链路状态是指“本路由器的相邻路由器以及对应链路的路由代价”,链路状态数据库的内容包括:本路由器的所有相邻路由器的名称以及对应链路的路由代价;

步骤2.3各路由器根据CS里存储的内容,形成本路由器的CS内容库;

其中,CS内容库的内容包括:本路由器CS内存储所有内容的内容名称;

步骤2.4网络中除中心控制器以外的所有路由器向中心控制器发送“状态更新包”;

其中,“状态更新包”的内容包括:本路由器名称、本路由器的所有相邻路由器名称、对应链路的路由代价以及本路由器CS内存储的内容目录,即本地路由器的链路状态数据库以及CS内容库的所有信息;

步骤3、中心控制器建立全网拓扑结构以及内容分布图;

其中,全网拓扑结构以及内容分布图的内容包括:网络中所有路由器的名称、对应路由器CS内存储中的内容名称、路由器之间的连接关系以及对应链路的路由代价;

步骤4、用户将“数据请求兴趣包”发送给邻接边缘路由器;

其中,“邻接边缘路由器”,是指和发出“数据请求兴趣包”的用户直接相连的路由器;“数据请求兴趣包”的内容包括:请求内容的数据名称;

步骤5、路由器将“数据请求兴趣包”处理后发送给中心控制器;

步骤5.1路由器判断接收到的“数据请求兴趣包”中是否包含“接入路由器名称”,如果不包含,则此兴趣包是从用户直接发来的,执行步骤5.2;否则,此兴趣包是由其他路由器转发而来,执行步骤5.3;

其中,“接入路由器”指的是与用户直接相连的路由器。

步骤5.2路由器将自身的路由器名称以及接收到“数据请求兴趣包”的接口写入“数据请求兴趣包”中,执行步骤5.3;

其中,步骤5.2的作用是让中心控制器接收到“数据请求兴趣包”后知道发出请求的路由器名称以及最后数据包要送达的接口,用以计算路由,由于中心控制器只有网络中路由器的拓扑结构图,因此接收到“数据请求兴趣包”的路由器名称以及接收到“数据请求兴趣包”的接口都是必要的信息;

步骤5.3路由器将此兴趣包转发给中心控制器;

其中,步骤5.3中,对于网络中除了中心控制器的所有路由器,在接收到包含路由器名称的“数据请求兴趣包”时,都默认通过收到“认证兴趣包”的接口发送给中心控制器;

步骤6、中心控制器根据全网拓扑结构以及内容分布图计算路由;

步骤6.1中心控制器对接收到的“数据请求兴趣包”做名称解析,提取出所需的内容名称、路由器名称以及接口信息;

其中,所需的名称内容即为“数据请求兴趣包”中的内容名称,路由器名称即为在“数据请求兴趣包”中添加名称的路由器,也是第一个接收到用户发出兴趣包的路由器,接口信息即为“数据请求兴趣包”中的接口信息,是第一个收到“数据请求兴趣包”的路由器的下游接口;

步骤6.2中心控制器对内容名称在内容分布图中进行匹配查找,得到候选节点;

其中,匹配查找的过程类似于查找FIB的过程,只要节点的CS中存储所需的内容名称,该节点即为候选节点;

步骤6.3中心控制器对候选节点根据全网拓扑结构图中节点连接情况和链路路由代价,使用Dijkstra最优路径算法计算得到路由代价,选择路由代价最小的候选节点以及路径作为目标路由;

其中,中心控制器需要Dijkstra最优路径算法利用分别对候选节点计算路由代价,将候选路由作为起点,将兴趣包中的路由名称作为终点,进行计算,之后选定路由代价最小的候选节点,以及从此候选节点到兴趣包中的路由名称的下游接口的最小代价路径作为路由;

步骤7、中心控制器将计算好的路由,以源路由的形式下发指令给内容拥有者路由器;

步骤7.1中心控制器将计算好的路由,转化为按照接口转发、逐跳形式的源路由指令;

其中,“按照接口转发、逐跳形式的源路由指令”是指每一跳路由以转发的接口作为标识,中心控制器指定数据转发路径上的每一跳路由器的转发接口,指导沿途的路由器转发数据;所述源路由指令指定从起始路由器开始,每一跳路由器的转发接口,即指定了下一跳路由器,根据每一跳路由器的转发接口可以将数据到用户;

步骤7.2中心控制器将数据指令包转发给起点路由器;

其中,“数据指令包”的内容包括:已经转化好的源路由指令以及在收到的兴趣包里的用户需要的内容名称;起点路由器指通过Dijkstra最优路径算法计算出的路由代价最低的候选节点;

其中“数据指令包”通过中心控制器下发给起点路由器;

步骤8、路由器根据接收到的源路由指令,将对应名称的数据包逐跳发送给用户;

步骤8.1路由器中心控制器下发的指令,封装成“推送数据包”并转发;

其中,“推送数据包”的内容包括:经过中心控制器计算,发送到用户的源路由指令以及用户所请求的数据内容;

步骤8.2路由器接收到发来的“推送数据包”,将“推送数据包”中的数据内容存储在CS中,再查看“推送数据包”中针对本路由器的源路由指令,从指定接口转发“推送数据包”,直到转发到达给用户;

步骤9、途径的路由器将内容缓存在CS中,并将内容库的变化通知中心控制器;

步骤9.1途径的路由器将内容缓存在CS中;

步骤9.2路由器将CS的变化内容整理成“状态更新包”;

其中,“状态更新包”内容包括:发生变化的内容名称目录,具体为CS中新增的内容名称以及在CS中被删去的内容名称;

步骤9.3路由器将“状态更新包”发送给中心控制器;

其中,路由器通过收到认证兴趣包的接口,将状态更新包发送给中心控制器;

步骤9.4中心控制器根据“状态更新包”更新内容分布图;

至此,从步骤1到步骤9,完成了一种基于NDN和SDN的数据检索与推送方法。

有益效果

1.相对于目前每一步转发都需要利用低算力的路由器进行大量基于名称前缀的FIB查找匹配的传统NDN网络,本发明公开的一种基于NDN和SDN的数据检索与推送方法,通过中心控制器及源路由技术,以全局视角实现了基于推的数据包发送,去除了PIT、FIB表,彻底解放了路由器的性能,降低了网络中的流量,大幅缩小了路由器的处理时延;

2.相对于目前传统NDN网络中内容通告只发送本地注册过的内容,本发明公开的一种基于NDN和SDN的数据检索与推送方法,路由器及时将CS变化的内容通告到中心控制器,灵活、有效的分发内容通告,让CS得到最大程度的利用,降低数据获取时延。

附图说明

图1为本发明一种基于NDN和SDN的数据检索与推送方法中,步骤一的网络拓扑及中心控制器设置实例图;

图2为本发明一种基于NDN和SDN的数据检索与推送方法中,步骤四至步骤八“数据请求兴趣包”、“数据指令包”以及“推送数据包”传输路线实例图;

图3为本发明基于NDN的边缘计算路由表建立与使用方法中步骤六使用的Dijkstra最优路径算法的计算流程图;

具体实施方式

下面将结合附图和实施例对本发明加以详细说明,同时论述本发明的技术方案解决的技术问题及有益效果。需要指出的是,所描述的实施例旨在便于对本发明的理解,对本发明不起任何限定作用。

本实施例论述的是一种基于NDN和SDN的数据检索与推送方法在数据检索方面的应用。

本实施例基于NDN-SDN网络,用户发送兴趣包请求数据内容名称为/want的内容,路由器转发兴趣包到中心控制器,中心控制器完成名称解析、计算路由并且利用源路由下发指令到转发平面,最后转发平面根据源指令将数据推送给用户。本实施例中网络拓扑及节点设置如图1所示;用户发送兴趣包、路由器转发兴趣包、中心控制器计算并下发路由指令到转发平面、转发平面根据指令转发数据到用户的整个过程如图2所示。本实施例中,网络各节点命名为“nodex(x=0,1,2,3……)”,其中node0为用户,node5为中心控制器。应用本发明所述一种基于NDN和SDN的数据检索与推送方法实施例如下:

步骤1、设置网络中心控制器并通告全网,具体包括如下子步骤:

步骤1.1在网络中心区域放置并选定中心控制器,本实施例中节点node5被设置为中心控制器,网络拓扑及中心服务器的设置如图1所示;

步骤1.2中心控制器向全网广播名称为“/Server”的“认证兴趣包”,所有收到“认证兴趣包”的节点将收到认证兴趣包的接口作为收到兴趣包后的转发接口;

步骤2、各路由器建立本地链路状态数据库以及CS内容库,并告知中心控制器,具体包括如下子步骤:

步骤2.1网络中每两个相邻路由器互相向对方发送一次“问候兴趣包”,“问候兴趣包”的名称为“/Hello/nodex”(nodex是本路由器名称,x=1,2,3……);“问候兴趣包”的内容包括:本路由器名称信息以及向本路由器发送数据的路由代价;

步骤2.2各个路由器根据收到的所有“问候兴趣包”,记录本路由器的所有相邻路由器名称以及对应链路的路由代价,形成本路由器的链路状态数据库;本实施例中路由器node7收到来自路由器node4、node8的问候兴趣包,路由器node4的链路状态数据库列表如表1所示;

表1路由器node7的链路状态数据库列表

步骤2.3各路由器根据CS里存储的内容,形成本路由器的CS内容库;本实施例中路由器node6的CS内容库如表2所示;

表2路由器node6的CS内容库

步骤2.4网络中除中心控制器以外的所有路由器向中心控制器发送“状态更新包”;“状态更新包”的名称为“/Server/nodex”(nodex是本路由器名称,x=1,2,3……),“状态更新包”的内容包括:本路由器名称、本路由器的所有相邻路由器名称、对应链路的路由代价以及本路由器CS内存储的内容目录,即本地路由器的链路状态数据库以及CS内容库的所有信息;路由器通过收到“认证兴趣包”的接口转发,“状态更新包”会被转发至中心服务器;

步骤3、中心控制器建立全网拓扑结构以及内容分布图;

中心控制器汇总收到的所有状态更新包建立全网拓扑结构以及内容分布图;本实施例中全网拓扑结构以及内容分布图的数据信息如表3所示;

表3全网拓扑结构以及内容分布图数据信息表

步骤4、用户将“数据请求兴趣包”发送给邻接边缘路由器;

本实施例中用户node0向邻接边缘路由器node1发送“数据请求兴趣包”,此时“数据请求兴趣包”的格式如表4;

表4用户node0向node1发送的“数据请求兴趣包”内容

步骤5、路由器将“数据请求兴趣包”处理后发送给中心控制器,具体包括如下子步骤:

步骤5.1、路由器判断接收到的“数据请求兴趣包”是否包含路由器名称,本实施例中,node1收到兴趣包后,判断为无路由器名称,证明此兴趣包是从用户直接发来的;

步骤5.2、路由器将自身的路由器名称以及接收到“数据请求兴趣包”的接口写入“数据请求兴趣包”中,本实施例中,node1将自己的路由器名称写入“数据请求兴趣包”中,此时“数据请求兴趣包”内容如表5所示;

表5经node1处理后的“数据请求兴趣包”内容

步骤5.3、路由器将此兴趣包转发给中心控制器,本实施例后续转发过程中,node1已将路由器名称写入“数据请求兴趣包”,其他路由器均只按默认接口转发“数据请求兴趣包”,不做处理,直至发送到中心控制器;转发到中心控制器node5的路由如图2所示;

步骤6、中心控制器根据全网拓扑结构以及内容分布图计算路由,具体包括如下子步骤:

步骤6.1中心控制器对接收到的“数据请求兴趣包”做名称解析,提取出所需的内容名称、路由器名称以及接口信息;本实施例中,中心控制器node5将如表5所示的“数据请求兴趣包”内容全部提取出来;

步骤6.2中心控制器对内容名称在内容分布图中进行匹配查找,得到候选节点;在实施例中,如表3所示,可以找到两个具有所需/want内容的节点,即为node6和node9,选为候选节点;

步骤6.3中心控制器对候选节点根据全网拓扑结构图中节点连接情况和链路路由代价,使用Dijkstra最优路径算法计算得到路由代价,选择路由代价最小的候选节点以及路径作为目标路由;

具体为:以候选节点node6为目标,根据全网拓扑结构图提供的节点间链路状态信息,利用Dijkstra算法计算得到从node6到node0的最小路由代价是45,对应的路径是node6→node5→node4→node1→node0,转发接口分别为:1→1→0→0;

以候选节点node9为目标,根据全网拓扑结构图提供的节点间链路状态信息,利用Dijkstra算法计算得到从node6到node1的最小路由代价是40,对应的路径是node9→node8→node7→node4→node1→node0,转发接口分别为:1→1→0→0→0;

因此,本实施例中,目标路由为node9→node8→node7→node4→node1→node0,转发接口为:1→1→0→0→0。

步骤7、中心控制器将计算好的路由,以源路由的形式下发指令给内容拥有者路由器,具体包括如下子步骤:

步骤7.1中心控制器将计算好的路由,转化为按照接口转发、逐跳形式的源路由指令;本实施例中,中心控制器将计算好的路由转化为转发接口指令:1→1→0→0→0,准备下发给node9;

步骤7.2中心控制器将“数据指令包”转发给起点路由器;本实施例中,中心控制器将“数据指令包”下发给node9,路线如图2所示;

步骤8、路由器根据接收到的源路由指令,将对应名称的数据包逐跳发送给用户,具体包括如下子步骤:

步骤8.1路由器根据中心控制器下发的指令,封装成“推送数据包”并转发;在本实施例中,“推送数据包”由node9封装后如表6所示;

表6经node9处理后的“推送数据包”内容

步骤8.2路由器接收到发来的“推送数据包”,将“推送数据包”中的数据内容存储在CS中,再查看“推送数据包”中针对本路由器的源路由指令,从指定接口转发“推送数据包”,直到转发到达给用户;本实施例中,“推送数据包”返回用户的路径如图2所示;

步骤9、途径的路由器将内容缓存在CS中,并将内容库的变化通知中心控制器,具体包括如下子步骤:

步骤9.1途径的路由器将内容缓存在CS中,本实施例中即node8、node7、node4、node1将/want存储进CS;

步骤9.2路由器将CS的变化内容整理成状态更新包,本实例中即node8、node7、node4、node1将/want存储进CS后,整理成“状态更新包”,如表7所示;

表7node8、node7、node4、node1发送的“状态更新包”内容

步骤9.3路由器将“状态更新包”发送给中心控制器;

步骤9.4中心控制器根据“状态更新包”更新内容分布图;本实例中,更新后的全网拓扑结构以及内容分布图如表8所示;

表8更新后的全网拓扑结构以及内容分布图数据信息表

通过本实施例结果可以看出,在传统NDN数据检索中,耗时最多的名称解析本来需要多次,而在应用本发明后,名称解析只需在具备高算力的中心路由器(Node5)完成了一次,大幅降低了处理时延;另外,可以看到,相比传统数据检索方式,本发明在中心路由器中建立了节点与名称的索引以及全网拓扑,可以有效地进行路由规划,避免陷入局部最优陷阱,有效提高了网络的灵活性。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120113788868