信息中心网络中的报文转发方法和系统与流程

文档序号:16973346发布日期:2019-02-26 18:45阅读:199来源:国知局
信息中心网络中的报文转发方法和系统与流程

本发明涉及网络通信领域,尤其涉及一种信息中心网络中的报文转发方法和系统。



背景技术:

资源访问和服务获取是互联网服务的重要核心功能。传统的域名系统(DNS:Domain Name System)完成的是域名与主机IP地址的映射,而非直接面向资源;如果存放某资源的主机地址发生了改变,则对应的资源需要进行重新登记。这种解析方式使网络对资源移动性支持不足,灵活性降低,并且缺乏对资源特征的描述,不利于用户获取资源。另外,DNS还存在反映速度过慢,纠错能力差,配置容易出错等问题。

在网络资源访问和数据获取过程中,用户实际上关注是资源本身,而不需要了解资源所在的物理主机位置。针对这一问题,学术界提出了信息中心网络(ICN:Information-Centric Networking)体系架构。信息中心网络为每个资源分配唯一的服务标识(SID:Service Identifier),当用户需要获取某个服务内容时,则向网络中发送服务请求包(GET Packet)。网络节点会利用服务请求包中携带的SID,将服务请求包(GET)转发给下一自治域。

资源的命名机制现有两种:层次化命名机制和扁平化命名机制。层次化命名结构可以体现不同数据块之间的关系,方便有效聚合,减少路由表条目,具有较好的可扩展性,适应于复杂的网络环境。但是,这种命名方式与服务提供者存在一定联系,如果服务提供者发生了变更,用户对命名实际内容的检索容易发生问题,不能很好地支持移动性。扁平化的命名机制在查表速度上远远优于层次化命名机制,而且存在永久性命名和安全性的优势。由于内容对应的是全局唯一的标识,用户通过某种解析机制获取服务时,不存在提供者变更导致服务无法获取的情况。同时,该命名机制存在自证明功能,验证方式不依赖于网络,保证了内容的可靠性。

在信息中心网络中,可以采用资源管理器(RM:Resource Manager)完成服务的注册和查找,以及对服务请求的响应及路由。RM采用分级设计,以树状结构相互连接。服务提供者首先向其所属RM注册,并逐级注册到最高级RM。用户请求服务时,发起查询请求,沿RM树状结构逐级向上查找,直到相应的RM查到为止。图1为现有技术中的一种信息中心网络的注册查找过程。服务请求包的解析与转发机制可以分为两种情况:域内服务解析和域间服务解析。

当用户请求的服务在本域中,通过查找本域RM中的服务注册表获取相关的转发信息,并将服务请求包(GET)发送到对应的出口边界路由器,进而转发给对应服务的服务提供者,由该服务提供者满足请求,从而实现域内服务解析。

当本域RM查询不到用户请求的服务时,则根据自治域自主选择的策略,将服务请求包发往其Provider或Peer的资源管理器进行查找,转发到直到最高层域的资源管理器为止。服务请求包通过添加域间路径标识(PID,Packet Identifier)实现域间路由,最终由其他自治域的服务提供者响应该服务请求,实现域间服务解析。

然而,RM的这种树状结构,意味着每个RM都需要维护其下属RM所有注册的服务标识信息。因此,服务内容的注册、更新、删除等操作将加重RM的负担,尤其是越靠近最高级的RM负担将会越重。故RM对GET包的解析、查找和转发性能将成为信息中心网络架构的瓶颈所在。



技术实现要素:

本发明的实施例提供了一种信息中心网络中的报文转发方法和系统,以实现数据包在信息中心网络中有效地转发。

为了实现上述目的,本发明采取了如下技术方案。

根据本发明的一个方面,提供了一种信息中心网络中的报文转发方法,包括:

资源管理器接收到信息中心网络中的服务请求者发送过来的服务请求包后,对所述服务请求包进行解析,根据所述服务请求包中携带的服务标识查询其管理的服务注册表;

当所述资源管理器在其管理的服务注册表中查询到所述服务标识,并且所述服务标识对应的服务提供者在本自治域内,则根据所述服务注册表中所述服务标识对应的服务提供者信息将所述服务请求包转发至相应出口;

当所述资源管理器通过查询其管理的服务注册表确定所述服务标识对应的服务提供者不在本自治域内,则查询其管理的域间路径标识通告表,获取去往所述服务提供者的下一自治域的域间路径标识及相关转发端口信息,根据所述域间路径标识及相关转发端口信息将所述服务请求包转发到去往所述服务提供者的下一自治域的资源管理器。

进一步地,所述的资源管理器接收到信息中心网络中的服务请求者发送过来的服务请求包后,对所述服务请求包进行解析,包括:

本自治域的入口边界路由器接收到信息中心网络中的服务请求者发送过来的数据包后,对所述数据包封装本域路由协议报头,将所述数据包发送给本自治域的资源管理器,所述资源管理器接收到数据包后,解析所述数据包的协议报头,获取协议报头中的Version和Type字段的内容,根据所述Version和Type字段的内容判断所述数据包的类型;

所述资源管理器判断所述数据包为服务注册包后,提取服务注册包中包含的服务标识信息,形成注册表项,将所述注册表项插入添加到其管理的服务注册表中;判断数据包为服务请求包后,则对所述服务请求包进行解析,提取服务请求包中包含的服务标识信息。

进一步地,所述的当所述资源管理器在其管理的服务注册表中查询到所述服务标识,并且所述服务标识对应的服务提供者在本自治域内,则根据所述服务注册表中所述服务标识对应的服务提供者信息将所述服务请求包转发至相应出口,包括:

所述资源管理器管理服务注册表,所述服务注册表中的每一个表项包含服务标识SID、标志位Flag、组件标识NID或自治域AS号、自治域信息、转发端口、对应自治域路由地址信息以及表项生存时间TTL;

所述资源管理器在其管理的服务注册表中查询到所述服务标识,根据与所述服务标识相对应的表项包含的标志位Flag,确定所述服务标识对应的服务提供者在本自治域内,则根据与所述服务标识相对应的表项中的组件标识NID信息对所述数据包进行路由,将所述数据包转发至所述组件标识NID信息对应的服务提供者。

进一步地,当所述资源管理器通过查询其管理的服务注册表确定所述服务标识对应的服务不在本自治域内,则查询其管理的域间路径标识通告表,获取去往所述服务提供者的下一自治域的域间路径标识及相关转发端口信息,根据所述域间路径标识及相关转发端口信息将所述服务请求包转发到去往所述服务提供者的下一自治域资源管理器,包括:

所述资源管理器管理域间路径标识通告表,所述域间路径标识通告表中包含自治域AS号、路径标识PID数量、路径标识PID、对应的自治域的协议转发信息以及转发端口;

所述资源管理器在其管理的服务注册表中查询到所述服务标识,根据与所述服务标识相对应的表项包含的标志位Flag,确定所述服务标识对应的服务提供者不在本自治域内,则在服务注册表中查找去往所述服务提供者的下一个自治域对应的AS号,通过该AS号查询所述域间路径标识通告表,获取去往所述服务提供者的下一个自治域的域间路径标识及相关转发端口信息;

所述资源管理器在所述服务请求包的末尾的路径标识信息中添加去往所述服务提供者的下一个自治域的域间路径标识PID,将所述服务请求包转发给本自治域的出口边界路由器,所述出口边界路由器解封装所述服务请求包的本域路由协议报头,通过所述相关转发端口信息将所述服务请求包转发给去往所述服务提供者的下一个自治域的入口边界路由器。

进一步地,所述的当所述资源管理器通过查询其管理的服务注册表确定所述服务标识对应的服务提供者不在本自治域内,则查询其管理的域间路径标识通告表,获取去往所述服务提供者的下一自治域的域间路径标识及相关转发端口信息,根据所述域间路径标识及相关转发端口信息将所述服务请求包转发到去往所述服务提供者的下一自治域的资源管理器,包括:

所述资源管理器管理域间路径标识通告表,所述域间路径标识通告表中包含自治域AS号、路径标识PID数量、路径标识PID、对应的自治域的协议转发信息以及转发端口;

所述资源管理器在其管理的服务注册表中查询不到所述服务标识,且所述资源管理器所在自治域是Tier-1自治域,则向所述服务请求者发送查找失败消息,并丢弃该服务请求包;若所述资源管理器所在自治域不是Tier-1自治域,则根据所述资源管理器所在自治域的策略,选取所述服务请求包的下一跳Provider自治域,通过查找所述域间路径标识通告表获取通往所述Provider自治域的PID及相关转发端口信息,在所述服务请求包的末尾封装去往所述Provider自治域的PID,将所述服务请求包转发给本自治域的出口边界路由器,所述出口边界路由器解封装本域路由协议报头,从所述服务请求包中的路径标识信息中获取去往所述Provider自治域的域间路径标识PID,根据所述路径标识查询域间路径标识通告表,获取去往所述Provider自治域的入口边界路由器的转发信息,并将所述服务请求包发送给所述Provider自治域的入口边界路由器,在所述Provider自治域中,所述服务请求包从入口边界路由器处发往其自治域内的资源管理器,该资源管理器查询其服务注册表,若查询不到该服务标识信息,则根据自治域策略,继续向其Provider自治域转发,一直到将所述服务请求包转发到所述服务提供者所在自治域或Tier-1自治域。

进一步地,所述的方法还包括:

在数据包并发的情况下,所述资源管理器采用高并发Cuckoo Hashing算法在所述服务注册表查询所述服务标识。

进一步地,所述的方法还包括:

所述服务标识所在自治域的入口边界路由器对所述服务请求包封装本域路由协议报头,将所述服务请求包发送给服务提供者所在自治域的资源管理器,所述服务提供者所在自治域的资源管理器接收到所述服务请求包后,提取出所述服务请求包中的服务标识SID,在其管理的服务注册表中查询到所述服务标识,根据服务注册表项中SID对应的组件标识NID信息对所述服务请求包进行路由,将所述服务请求包转发给服务提供者;

所述服务提供者接收到所述服务请求包后,提取出所述服务请求包中的服务标识SID及服务行为描述SBD信息,查找到对应的数据,生成服务数据包,提取出所述服务请求包末尾的路径标识信息,将路径标识信息封装到所述服务数据包的包头,对所述服务数据包封装本域路由协议报头,将所述服务数据包发往本域的出口边界路由器,所述本域的出口边界路由器剥去所述服务数据包中的本域路由协议报头,从所述服务数据包中的路径标识信息中获取去往服务请求者的下一个自治域的域间路径标识PID,根据所述路径标识查询域间路由表,获取所述下一个自治域的入口边界路由器,剥掉去往下一个自治域的域间路径标识PID,并将所述服务数据包发送给所述下一个自治域的入口边界路由器;

所述下一自治域的入口边界路由器接收到所述服务数据包后,对所述服务数据包封装本域路由协议报头,从所述服务数据包中的路径标识信息中获取去往下一个自治域的域间路径标识PID,根据所述路径标识查询域间路由表,并获取去往下一个自治域的本域出口边界路由器,将所述服务数据包发往本域的出口边界路由器;所述本域的出口边界路由器剥去所述服务数据包中的本域路由协议报头,从所述服务数据包中的路径标识信息中获取去往下一个自治域的域间路径标识PID,根据所述路径标识查询域间路由表,并获取所述下一个自治域的入口边界路由器,剥掉去往下一个自治域的域间路径标识PID,并将所述服务数据包发送给所述下一个自治域的入口边界路由器;

依次类推,直到所述服务数据包被发送到所述服务请求者所在的自治域的入口边界路由器,此时,所述入口边界路由器根据所述数据包中包含的NID信息,将所述分组发送给所述服务请求者的接入路由器,所述接入路由器再将所述数据包发送给所述服务请求者。

根据本发明的另一个方面,提供了一种信息中心网络中的报文转发装置,所述装置设置在一个自治域中,所述装置包括:入口边界路由器、资源管理器和出口边界路由器;

入口边界路由器,用于接收到信息中心网络中的服务请求者发送过来的数据包后,对所述数据包封装本域路由协议报头,将所述数据包发送给本自治域的资源管理器、本自治域的出口边界路由器、或者本自治域的其他网络节点;

资源管理器,用于接收到入口边界路由器发送过来的服务请求包后,对所述服务请求包进行解析,根据所述服务请求包中携带的服务标识查询其管理的服务注册表;

当在其管理的服务注册表中查询到所述服务标识,并且所述服务标识对应的服务提供者在本自治域内,则根据所述服务注册表中所述服务标识对应的服务提供者信息将所述服务请求包转发至相应出口;

当通过查询其管理的服务注册表确定所述服务标识对应的服务提供者不在本自治域内,则查询其管理的域间路径标识通告表,获取去往所述服务提供者的下一个自治域的域间路径标识及相关转发端口信息,根据所述域间路径标识及相关转发端口信息将所述服务请求包转发到所述出口边界路由器;

所述出口边界路由器,用于剥去所述服务数据包中的本域路由协议报头,从所述服务数据包中的路径标识信息中获取去往下一个自治域的域间路径标识PID,根据所述路径标识查询域间路由表,并获取所述下一个自治域的入口边界路由器,剥掉去往下一个自治域的域间路径标识PID,并将所述服务数据包发送给所述下一个自治域的入口边界路由器;或者从所述服务请求包中获取去往服务提供者的下一个自治域的域间路径标识,根据所述路径标识查询域间路由表,并获取所述下一个自治域的入口边界路由器,并将所述服务请求包发送给所述下一个自治域的入口边界路由器。

进一步地,所述的资源管理器包括:

自治域协议报头处理模块,用于对数据包的协议报头中的源、目的地址字段、路径标识字段、报文长度字段进行管理,所述数据包包括服务请求包和服务注册包;

域间路径标识协商与计算分发模块,用于域间路径信息的协商与计算,维护和更新域间路径标识通告表信息;

策略库模块,用于决定域间路径信息的协商与计算策略以及服务注册表的更新查找策略;

服务注册包处理模块,用于解析处理到达的服务注册包,提取服务注册包中的注册信息,根据提取的注册信息插入或更新其管理的服务注册表;

服务请求包处理模块,用于解析到达的服务请求包,先解封装本域的路由协议报头,提取服务请求包中的服务标识SID信息,在其管理的服务注册表中查询到所述服务标识,根据服务注册表的表项中包含的标志位Flag,确定所述服务标识对应的服务提供者在本自治域内,则根据服务注册表项中SID对应的组件标识NID信息对所述数据包进行路由,将所述数据包转发至所述组件标识NID信息对应的服务提供者;

在服务注册表中查询到所述服务标识,根据服务注册表的表项中包含的标志位Flag,确定所述服务标识对应的服务提供者不在本自治域内,则在服务注册表中查找到去往所述服务提供者的下一个自治域对应的AS号;通过该AS号查询所述域间路径标识通告表,获取通往所述服务提供者的下一个自治域的PID及相关转发端口信息;在所述服务请求包末尾的路径标识信息中添加所述域间路径标识PID,将所述服务请求包转发给本自治域的出口边界路由器;

在服务注册表中查询不到所述服务标识,通过查找所述域间路径标识通告表获取通往本自治域的Provider域的PID及相关转发端口信息,在所述数据包的末尾封装连接所述Provider域的PID,将所述数据包转发给本自治域的出口边界路由器,所述出口边界路由器解封装本域路由协议报头,通过所述相关转发端口信息将所述服务请求包转发给所述Provider域的入口边界路由器,该入口边界路由器对所述服务请求包封装本域路由协议报头,将所述服务请求包发送给所述Provider域的资源管理器,一直到将所述服务请求包转发给所述服务提供者所在自治域的入口边界路由器。

根据本发明的另一个方面,提供可一种信息中心网络中的报文转发系统,包括:多个自治域,每个自治域中都包括所述的报文转发装置。

由上述本发明的实施例提供的技术方案可以看出,本发明实施例实现了信息中心网络中服务请求包(GET)在资源管理器中的解析、查找与转发,每个RM只需要管理在其上面注册的服务标识等信息,大大减轻了RM的服务内容的注册、更新、删除等操作负担,该方法可以在保证信息中心网络中数据包的解析和转发高效率的同时,支持大规模网络环境下的可扩展性。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是现有技术中的一种信息中心网络的注册查找过程示意图;

图2是本发明实施例提供的一种服务请求包(GET包)的定义方式示意图;

图3是本发明实施例提供的一种域间服务解析过程中的服务请求包(GET包)的解析过程示意图;

图4为本发明实施例提供的一种域间路径标识通告表(PID Table)的组织方式示意图;

图5为本发明实施例提供的一种服务注册表(SID Table)的组织方式示意图;

图6为本发明实施例提供的一种域内服务解析与转发机制示意图;

图7为本发明实施例提供的一种域间服务解析与转发机制示意图;

图8为本发明实施例提供的一种高并发Cuckoo Hashing查找过程示意图;

图9为本发明实施例提供的一种高并发Cuckoo Hashing插入过程示意图;

图10为本发明实施例提供的一种信息中心网络中的报文转发装置的结构示意图;

图11为本发明实施例提供的一种资源管理器RM的功能模块示意图;

图12为本发明实施例提供的一种信息中心网络中的报文转发系统的结构示意图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

本发明实施例主要针对信息中心网络中,资源命名采用扁平化命名机制的情况,阐述了服务请求包(GET)在资源管理器RM中的解析、查找与转发方案。

服务请求包(GET)中包含了所需某项服务对应的服务标识SID等相关信息,图2为服务请求包(GET)的一种定义方式,包含以下等字段:

Version:数据包的版本号,4bit。服务请求包(GET)的Version值可设计为1010。

Type:数据包类型,4bit。服务请求包(GET)的Type值可设计为0000。

TTL:Time-to-live,生存时间,8bit,即指定服务请求包(GET)被丢弃之前允许通过的最大网段数量。

Total_Length:GET包总长度,16bit,最大为65535字节。

Port_Number:端口号,16bit,标识源、目的端应用进程。

Minimal PID Change Period:最小PID更新周期,16bit。

PIDs:GET包末尾包含的PID数量,8bit。

O:标志位,表示是否分片,1bit。该字段与32bit的Offset字段是为数据包的分片而设计的。O=0,Offset字段表示SID对应的整个内容块(即:Offset=0);O=1:表示请求从Offset字段的值开始,长度为Length字段的部分内容。

Reserved:保留字段,7bit。

Offset:片偏移,32bit,为可选字段。与O字段结合,若数据包要求分片,则该字段说明从原始数据包开始的偏移距离。

Length:片偏移开始数据包长度,32bit,为可选字段。与O字段结合,若数据包要求分片,则从Offset开始提取长度为Length的内容块。

Length of Content Characteristics:服务行为描述长度,16bit。

MTU:最大传输单元(Maximum Transmission Unit),16bit,表示所能通过的最大数据包大小,超过则需要对数据包进行分片。

Length of Public Key:公钥长度,16bit。

Checksum:表示GET包头部校验和,16bit。

NID Part of an SID:服务提供者对应的组件标识,128bit。

SID:服务标识,160bit。

NID:服务请求者对应的组件标识,128bit。

Content Characteristics:服务行为描述,可选字段,由Length of Content Characteristics字段决定长度。

Public Key:公钥,长度由Length of Public Key字段决定。

PID:域间路径标识,长度为32bit。每经过一个自治域,增加一个PID。

基于上述服务请求包的定义,本发明实施例提供了一种报文转发的方法、装置和系统,以实现服务请求包的高效解析、查找与转发。

用户需要获取某项服务,会向本域的资源管理器RM发送服务请求包(GET)进行服务查询。每个自治域的资源管理器RM将对到达的服务请求包进行解析,提取服务标识(SID)等相关信息,进行匹配查找,并执行相关动作。

数据包到达资源管理器时,资源管理器首先对数据包前所封装的自治域协议报头进行解封装,然后判断数据包的类型。若为服务注册包(Registration),则将其中包含的服务标识SID等信息注册到服务注册表(SID Table)中;若为服务请求包(GET),则先提取相应的服务标识SID等信息,然后查找服务注册表(SID Table)。查找过程中,若该服务请求需要进行跨域解析,则需要查询域间路径标识通告表(PID Table),获取域间路由所需的路径信息,并将路径标识PID封装在GET包末尾。最后,GET包完成解析与查找后将封装本自治域的协议报头,转发至下一节点。

资源管理器管理的服务注册表中维护本自治域的服务注册信息以及其客户域(Customer)或邻域(Peer)向其注册的信息。因此,对服务请求包(GET)的解析机制可以分为两种情况:域内服务解析和域间服务解析。域内服务解析过程主要针对服务在本自治域的情况。

域间服务解析过程主要针对服务在其他自治域或在本域查找不到的情况。具体过程如图3所示,解析步骤如下:

步骤一,获取网卡到达的数据包。

自治域协议报头处理模块解封装数据包中的自治域的协议报头,解析数据包Version和Type字段,判断是否为服务请求包(GET)。若为GET包,则执行步骤二;若为注册包,则根据注册包的定义,解析提取相应的服务标识信息,形成注册表项,将注册表项插入服务注册表(SID Table)。

步骤二,提取服务标识SID。通过GET包中对应字段进行解析,获取服务标识SID字段内容,用于查找匹配。

步骤三,查找服务注册表(SID Table),匹配SID信息。在服务注册表中进行SID信息的查找,服务注册表的表项中包含标志位Flag。若Flag值为1,表示该服务在本自治域内;若Flag值为0,表示该服务由其他自治域注册而来。根据SID匹配结果,若查找成功且Flag值为1,则执行步骤四;若查找成功且Flag值为0,则执行步骤五;若查找失败,则执行步骤六。

步骤四,SID匹配且该服务在本域内,根据服务注册表项中SID对应的NID信息进行路由,转发至相应出口。

步骤五,SID匹配且该服务不在本域,此时,需要封装域间路径标识PID来完成域间路由。域间路径标识(PID)的相关信息存储在域间路径标识通告表(PID Table)中,里面包含了自治域之间通信对应的路径标识及转发端口等信息。若SID匹配且不在本域,则先在服务注册表中查找到SID所在自治域对应的AS(Autonomous System,自治域)号。通过该AS号查询域间路径标识通告表(PID Table),获取通往该自治域的PID及相关转发端口信息。若该自治域为IPv4域,则修改IP报头中对应的源、目的IP地址信息。GET包中PIDs字段的值增加1,Total_Length字段的值根据包长度做相应修改,在GET包末尾封装相应PID,然后转发至对应端口。

步骤六,SID不匹配。此时,默认将该GET包发往其Provider域进行查找,需要封装域间路径标识PID来完成域间路由。同样地,通过查找域间路径标识通告表(PID Table),获取通往Provider域的路径标识相关信息。PIDs字段值增加1,修改Total Length长度,封装PID,然后向其Provider域转发GET包。若该自治域已经为Tier-1,且查询不到该服务所对应的相关信息,则返回查询失败消息。

考虑到大规模服务请求,海量注册信息查找的情况,资源管理器中查找服务注册表(SID Table)、匹配SID信息的处理过程可以采用经过优化的高并发Cuckoo Hashing算法,同时结合Intel数据平面开发套件(DPDK)的转发优势,如用户空间轮询、数据包零拷贝、多核CPU亲和等特性,对Cuckoo Hashing算法进行大页内存、预处理、批处理、SSE指令集操作等优化,实现高效查找与转发。

实施例一:域间路径标识通告表(PID Table)的组织方式

域间路径标识通告表(PID Table)由资源管理器之间相互协商计算而得到。本发明实施例提供的一种域间路径标识通告表(PID Table)的一种设计方式如图4所示,表项内容包含AS号、路径标识PID数量、路径标识PID、对应的自治域的协议转发信息(如IPv4域中包含源、目的IP地址)以及转发端口等。

实施例二:服务注册表(SID Table)的组织方式

本发明实施例提供的一种服务注册表(SID Table)的一种设计方式如图5中所示,表项内容包含服务标识SID、标志位Flag(用于区分服务为本域注册或是为其他域注册)、组件标识NID或自治域AS号、自治域信息、转发端口、对应自治域路由地址信息(如IPv4域中则包含源、目的IP地址)以及表项生存时间TTL等。

实施例三:

本实施例描述了域内服务解析与转发机制,如图6所示。

用户(Client)需要获取某项服务,首先会向本域的RM发送服务请求包(GET)进行服务查询,本实施例中,用户发送的GET包用于请求服务标识为SID1对应的服务。

用户发送的服务请求包(GET)首先到达入口边界路由器Switch 3。边界路由器Switch 3对到达的服务请求包(GET)进行判断识别。由于是服务请求包,根据信息中心网络的设计,用户发送的服务请求包不包含任何协议报头,因此资源管理器RM利用GET包解析模块进行身份与位置的分离映射处理,对服务请求包封装本域对应的自治域协议报头,然后转发给本域的资源管理器,如图6中RM1。

本域的资源管理器RM利用GET包解析模块,提取出服务请求包中的服务标识SID1等相关信息,在其存储维护的服务注册表中(SID Table)进行查询匹配。

资源管理器RM根据设计的查找算法对服务标识SID1进行查找。若查询到该服务标识SID1,且所对应表项的标志位Flag为1,则代表请求的服务在本域内。因此,根据对应的组件标识NID1以及RM中保存的转发信息(如IPv4域中包含源、目的IP地址信息及转发端口),修改自治域协议报头中的地址信息,将GET发送至对应的出口边界路由器。

出口边界路由器首先对到达的数据包进行判断,若为普通数据包,则根据域内路由协议转发;若为服务请求包,则查询出口边界路由器中身份与位置分离映射关系表,剥去自治域协议报头,转发到组件标识NID1对应的组件节点。

该组件节点收到服务请求包后,提取其中的服务标识SID1等信息,将服务标识SID1对应的服务数据封装进服务数据包(DATA),发送给用户。

实施例四:

本实施例描述了域间服务解析与转发机制,如图7所示。

若用户在本域的资源管理器RM中查询不到相应的服务信息,则根据自治域自主选择的策略,将服务请求包发往其提供者(Provider)域的资源管理器进行查找,直到最高层域为止。

用户发起服务请求,将包含服务标识SID1的GET包发往本域的资源管理器RM4进行查询。

由于RM4中的服务注册表(SID Table)并不包含SID1的相关信息,查询失败。提取D4域的Provider域对应的AS号,查询域间路径标识通告表(PID Table),获取转发至对应Provider域所对应的域间路径标识PID以及相关转发信息。该例中采用D4域的Provider域(D5)对应的AS号。

在GET包末尾封装D4域到Provider域(D5)对应的域间路径标识P2,PIDs字段的值增加1,对应的Total_Length的值做相应修改。将该服务请求包(GET)转发给本自治域的出口边界路由器,所述出口边界路由器解封装本域路由协议报头,从所述服务请求包中的路径标识信息中获取去往所述Provider自治域的域间路径标识PID,根据所述路径标识查询域间路由表,获取所述Provider自治域的入口边界路由器,并将所述服务请求包发送给所述Provider自治域的入口边界路由器,该入口边界路由器将服务请求包发送给Provider域的资源管理器RM5继续查询。一直到将所述服务请求包转发到所述服务标识所在自治域的入口边界路由器。

同样地,若查找失败则继续向其Provider域转发,直至转发到最高域中的资源管理器进行查询为止。

最高域的资源管理器RM6,提取出服务请求包中的服务标识SID1等相关信息,通过设计的查找算法,在其存储维护的服务注册表(SID Table)中进行查询匹配。若查询到该服务标识SID,检测其所在表项的标志位Flag,若Flag的值为0,则查询该服务对应的AS号,即由D3域的资源管理器RM3注册而来。因此根据域间路径标识通告表(PID Table)获取到D3域的资源管理器RM3的域间路由信息,封装对应的域间路径标识P3,GET包相应字段做出对应修改,然后发往RM3。若查询不到该服务,则返回查询失败消息。

RM3查询本地服务注册表(SID Table),根据注册信息再查询域间路径标识通告表(PID Table),获取域间路由信息,封装域间路径标识P4,转发至D1域的资源管理器RM1。

RM1进行域内服务解析,将服务请求根据组件标识NID1信息转发至服务提供方。

由于所请求的服务不在本域,因此服务请求包需要经过不同协议的自治域进行查询与转发。每经过一个自治域,都需要在服务请求包的末尾封装域间路由所需的路径标识。如图7中(i)-(vii)过程,服务请求包末尾会依次添加上域间路径标识,如图7中P2、P1、P3和P4。

服务提供方Server收到服务请求包后,将提取出其中的服务标识SID及服务行为描述SBD等信息,查找到对应的数据,生成服务数据包(DATA)。同时,提取服务请求包末尾的路径标识信息,将路径标识信息依次封装在服务数据包包头,如图7中的P4、P3、P1和P2。

Server先将服务数据包发往本域(D1)边界路由器,剥去本域IP协议报头后,通过路径标识P4进行域间路由。

数据包到达D3域的入口边界路由器时,剥去路径标识P4,封装上本域MPLS的LSP(即LSP1),发往本域(D3)出口边界路由器R3。同样地,剥去本域MPLS报头后,利用路径标识P3进行域间路由到下一自治域。

通过这种方法,数据包最终到达请求的用户,完成域间服务的解析与转发。

每经过一个自治域都会经历封装本域路由协议报头和剥去本域路由协议报头的过程。同时,每经过一个自治域都会删去对应的路径标识信息。这样做的好处在于,服务请求者无法溯源到服务提供方的具体位置,有效地提升了网络的安全性。

实施例五:

本实施例描述了一种自治域内节点路由协议报头的封装与解封装的实现方式。

以IPv4域为例,入口边界路由器接收到不包含任何路由协议报头的服务请求包(GET)后,根据Version和Type字段识别为服务请求包(GET),查询其域内路由表,获取去往资源管理器的IP地址等相关信息,为服务请求包封装IP报头,然后根据IP报头进行分组转发。

服务请求包(GET)到达资源管理器后,先解封装IP报头,从服务请求包(GET)中提取服务标识,查询服务注册表,并根据查询结果做相应操作。

1)若从服务注册表中查询到所述服务标识,且服务提供者在本自治域,则提取服务提供者的NID,以服务提供者的IP地址为目的地址,为服务请求包封装IP报头,并将服务请求包发送给服务提供者;

2)若从服务注册表中查询到所述服务标识,但服务提供者不在本自治域,则获取去往服务提供者的下一个自治域的AS号,根据所述AS号查询域间路径表,获取去往所述下一个自治域的域间路径,并将该路径附加在服务请求包的末尾;之后,根据所述域间路径的路径标识PID信息,查询该PID对应的出口路由器,并以所述出口路由器的IP地址为目的地址,为服务请求包封装IP报头,并将服务请求包发送给所述出口路由器;

3)若从服务注册表中查找不到所述服务标识且所述自治域为Tier-1自治域,向服务请求者发送查询失败消息,并丢弃该服务请求;若所述自治域不是Tier-1自治域,则根据所述自治域的策略,选择一个Provider自治域,查询去往该自治域的域间路径标识,根据该域间路径标识查询域间路径表,获取去往该Provider自治域的出口边界路由器,并以所述出口路由器的IP地址为目的地址,为服务请求包封装IP报头,并将服务请求包发送给所述出口路由器。

出口边界路由器识别到达的服务请求包(GET)后,先进行解封装操作,剥去IP报头,根据服务请求包(GET)末尾包的域间路径标识PID,并根据域间路径标识PID进行域间路由,将分组发往去往服务提供者的下一自治域的入口边界路由器。

实施例六:

本实施例主要针对大规模网络、海量注册信息情况,实现一种服务请求包(GET)的快速解析、查找与转发的解决方案。

Cuckoo Hashing算法满足并发访问、快速查找且占用内存空间小,不同于传统的“以空间换取时间”的哈希算法,Cuckoo Hashing算法不仅查找复杂度和插入复杂度均为o(1),而且该算法处理哈希碰撞的设计,使得哈希表空间利用率高。针对服务标识SID扁平化命名的特点,采用这种算法和数据结构是满足实现方案的查找性能需求的。由于本方案解决的是读取负担较大的情境,因此选用的是基于计数器的乐观锁来实现Cuckoo Hashing表的多线程高并发访问。

本实施例描述了优化之后的高并发Cuckoo Hashing算法的查找流程,如图8所示。

首先,传入待查找的Key值。

通过计算获得_index_hash和_alt_hash两个Bucket的值,并读取对应的计数器Version Counter值,记录v1、v2。

当计数器的值为偶数时,查找开始。

先检查是否匹配b1对应的Tag字段,如果是则继续,如果不是则返回。

在b1内查询比较,若不匹配,则检查是否匹配b2对应的Tag字段,是则进入b2内再进行匹配。如果匹配,则得到对应的端口值(Val)。

最后需要再重新读取一次计数器的值v1’和v2’,若相等,则查找成功,否则,重新返回查找。

本实施例描述了优化之后的高并发Cuckoo Hashing算法的插入过程,如图9所示。

寻找空节点,利用BFS(广度优先遍历算法)查找哈希桶中可插入的空节点。

查找到空节点后,所有的节点沿搜索路径倒序移动插入Key值。

在插入Key之前,首先就对b1或b2对应的计数器值增加1,此时计数器的值为奇数。若此时有读取操作,则返回等待,直到计数器的值变为偶数,再重新进行读取操作。

整个插入过程完成后,再对相应的计数器值增加1,使其重新变回偶数。

同时,结合DPDK用户空间轮询、数据包零拷贝、多核CPU亲和等特性,对Cuckoo Hashing算法进行大页内存、预处理、批处理、SSE指令集操作等优化,可以使得在大规模服务请求,海量注册信息的情况下,GET包的解析、查找与转发速度达到DPDK转发数据包的极限速度。

实施例七:

本发明实施例提供了一种信息中心网络中的报文转发装置,该装置的结构示意图如图10所示,设置在一个自治域中,所述装置包括:入口边界路由器、资源管理器和出口边界路由器;

入口边界路由器,用于接收到信息中心网络中的服务请求者发送过来的数据包后,对所述数据包封装本域路由协议报头,将所述数据包发送给本自治域的资源管理器、本自治域的出口边界路由器、或者本自治域的其他网络节点;

资源管理器,用于接收到入口边界路由器发送过来的服务请求包后,对所述服务请求包进行解析,根据所述服务请求包中携带的服务标识查询其管理的服务注册表;

当在其管理的服务注册表中查询到所述服务标识,并且所述服务标识对应的服务提供者在本自治域内,则根据所述服务注册表中所述服务标识对应的服务提供者信息将所述服务请求包转发至相应出口;

当通过查询其管理的服务注册表确定所述服务标识对应的服务提供者不在本自治域内,则查询其管理的域间路径标识通告表,获取去往所述服务提供者的下一个自治域的域间路径标识及相关转发端口信息,根据所述域间路径标识及相关转发端口信息将所述服务请求包转发到所述出口边界路由器;

所述出口边界路由器,用于剥去所述服务数据包中的本域路由协议报头,从所述服务数据包中的路径标识信息中获取去往下一个自治域的域间路径标识PID,根据所述路径标识查询域间路由表,并获取所述下一个自治域的入口边界路由器,剥掉去往下一个自治域的域间路径标识PID,并将所述服务数据包发送给所述下一个自治域的入口边界路由器;或者从所述服务请求包中获取去往服务提供者的下一个自治域的域间路径标识,根据所述路径标识查询域间路由表,并获取所述下一个自治域的入口边界路由器,并将所述服务请求包发送给所述下一个自治域的入口边界路由器。

以基于IntelDPDK(Data Plane Development Kit,数据平面开发套件)平台实现为例,本发明实施例提供了一种信息中心网络中的报文转发装置,该装置的结构示意图如图11所示,该装置设置在资源管理器中,具体包括:

自治域协议报头处理模块,用于对数据包的协议报头中的源、目的地址字段、路径标识字段、报文长度字段进行管理,所述数据包包括服务请求包和服务注册包;

域间路径标识协商与计算分发模块,用于域间路径信息的协商与计算,维护和更新域间路径标识通告表信息;

策略库模块,用于决定域间路径信息的协商与计算策略以及服务注册表的更新查找策略;

服务注册包处理模块,用于解析处理到达的服务注册包,提取服务注册包中的注册信息,根据提取的注册信息插入或更新其管理的服务注册表;

服务请求包处理模块,用于解析到达的服务请求包,先解封装本域的路由协议报头,提取服务请求包中的服务标识SID信息,在其管理的服务注册表中查询到所述服务标识,根据服务注册表的表项中包含的标志位Flag,确定所述服务标识对应的服务提供者在本自治域内,则根据服务注册表项中SID对应的组件标识NID信息对所述数据包进行路由,将所述数据包转发至所述组件标识NID信息对应的服务提供者;

在服务注册表中查询到所述服务标识,根据服务注册表的表项中包含的标志位Flag,确定所述服务标识对应的服务提供者不在本自治域内,则在服务注册表中查找到去往所述服务提供者的下一个自治域对应的AS号;通过该AS号查询所述域间路径标识通告表,获取通往所述服务提供者的下一个自治域的PID及相关转发端口信息;在所述服务请求包末尾的路径标识信息中添加所述域间路径标识PID,将所述服务请求包转发给本自治域的出口边界路由器;

在服务注册表中查询不到所述服务标识,通过查找所述域间路径标识通告表获取通往本自治域的Provider域的PID及相关转发端口信息,在所述数据包的末尾封装连接所述Provider域的PID,将所述数据包转发给本自治域的出口边界路由器,所述出口边界路由器解封装本域路由协议报头,通过所述相关转发端口信息将所述服务请求包转发给所述Provider域的入口边界路由器,该入口边界路由器对所述服务请求包封装本域路由协议报头,将所述服务请求包发送给所述Provider域的资源管理器,一直到将所述服务请求包转发给所述服务提供者所在自治域的入口边界路由器。

该实施例提供的一种信息中心网络中的报文转发系统的结构示意图如图12所示,包括:多个自治域,每个自治域中都包括上述图11所述的报文转发装置。

用本发明实施例的装置和系统进行信息中心网络中的报文转发的具体过程与前述方法实施例类似,此处不再赘述。

综上所述,本发明实施例实现了信息中心网络中服务请求包(GET)在资源管理器中的解析、查找与转发,每个RM只需要管理在其上面注册的服务标识等信息,大大减轻了RM的服务内容的注册、更新、删除等操作负担,该方法可以在保证信息中心网络中数据包的解析和转发高效率的同时,支持大规模网络环境下的可扩展性。

在本方法中,大规模服务请求、海量注册信息的情况,可以通过利用数据平面开发套件(DPDK)与高并发Cuckoo Hashing算法结合并优化的方式进行GET包的解析与查找转发。

在信息中心网络中,资源管理器RM在服务的查找过程中处于核心的地位,本发明提出了一种资源管理器RM的节点结构组织与服务标识查找转发方法,保证了信息中心网络中的服务解析效率以及可靠性,提出了大规模服务请求、海量注册信息的解析方案,支持了大规模网络情况下的可扩展性。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1