CN104426774A - 一种同时支持IPv4和IPv6的高速路由查找方法及装置 - Google Patents
一种同时支持IPv4和IPv6的高速路由查找方法及装置 Download PDFInfo
- Publication number
- CN104426774A CN104426774A CN201310396381.5A CN201310396381A CN104426774A CN 104426774 A CN104426774 A CN 104426774A CN 201310396381 A CN201310396381 A CN 201310396381A CN 104426774 A CN104426774 A CN 104426774A
- Authority
- CN
- China
- Prior art keywords
- ipv6
- ipv4
- node
- route
- routing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/64—Hybrid switching systems
- H04L12/6418—Hybrid transport
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种同时支持IPv4和IPv6的高速路由查找方法及装置,涉及网络交换技术领域,其装置包括:包括路由查找算法软件模块、路由更新接口模块和路由查找硬件模块三部分。其中路由查找算法软件模块完成对路由条目的软件计算和更新条目指令下发;路由更新接口模块在接收了软件更新条目指令后,根据路由查找硬件模块的实际工作状态,控制路由查找硬件模块的数据流,并将更新条目写入路由查找硬件模块的存储器中;路由查找硬件模块为双路并行的流水线型架构,分别响应硬件系统的IPv4和IPv6路由查找请求,并返回最长前缀匹配的查找结果。
Description
技术领域
本发明涉及网络交换技术领域,尤其涉及一种基于B-Tree同时支持IPv4和IPv6的高速路由查找方法及装置。
背景技术
随着因特网Internet的迅猛发展,用于主干网络互联的核心路由器的接口速率达到100Gbps,该速率要求核心路由器在支持大容量路由表的情况下路由查找速率达到每秒几百万次。
IP查找需要得到最长匹配前缀,IPv6远大于IPv4的地址空间对于存储与查找速度要求更高,近年来研究人员提出了多种硬件查找方法以提高查找速率,其中以Trie树结构和TCAM最为流行。
Trie树结构是应用最为广泛的树结构,容易实现硬件上的流水操作,利于提升路由查找的吞吐率。但是Trie树结构的具有一定的局限性。一般Trie树结构的流水级数较多,会带来过大的查找延时。采用多比特Trie树结构的路由查找设计可以大大减少流水级数,但会带来大量额外内存的消耗,并且这种额外的内存消耗量与路由表的前缀分布相关,使得基于多比特Trie树的路由查找硬件设计的路由表容量存在较大起伏。特别是由于IPv4和IPv6的键值位宽相差4倍,同一个硬件架构很难同时支持IPv4和IPv6的路由查找,增加了硬件设计的复杂度和成本。
TCAM能够在同一芯片中实现IPv4和IPv6的路由查找,但要满足100Gbps的查找速率和核心路由器的路由表容量需求,需要多片TCAM级联查找,功耗与发热量将成为严重问题。
B-tree是一种被广泛应用于数据库文件管理的软件算法,它的特点是一个树节点拥有M-1个关键字和M个子节点,B-Tree的深度由阶数M和关键字的数目决定,与关键字的分布无关。这些特点使得B-Tree能够克服上述Trie树结构的缺点,实现流水级数少且对路由前缀分布不敏感的路由查找设计。
需要注意的是在应用B-Tree进行路由查找时,需要确保返回的结果为最长前缀匹配结果。由于查找回溯是无法在硬件流水操作中实现的,因此需要对B-Tree的路由查找算法进行特殊的处理。这类处理有很多种公开的操作方法,例如可以将父前缀复制成多份合并到其所有子前缀上,或者采用将父前缀与树结构最上层的子节点合并的方法。
目前我们已经提出一种基于B-Tree的高速路由查找方法和装置,它能够用硬件流水线结构实现高性能实现IPv4或者IPv6的路由查找,但它不能满足同时支持IPv4和IPv6路由查找的需求。
有鉴于此,本发明提出一种能够同时实现IPv4和IPv6路由查找的方法及装置。
发明内容
本发明的目的在于提供一种同时支持IPv4和IPv6的高速路由查找方法及装置,为了解决现有技术中能够实现IPv4或者IPv6的路由查找,但它不能满足在相同系统结构中同时支持IPv4和IPv6路由查找的需求的问题。
根据本发明的一个方面,提供了一种同时支持IPv4和IPv6的高速路由查找方法,其特征在于,包括以下步骤:
响应路由转发系统实时下发的路由条目更新指令,对IPv4和IPv6共用树节点保存的路由条目信息进行更新;
在路由查找期间,根据路由查找请求确定需要进行IPv4路由查找还是进行IPv6路由查找;
若确定需要进行IPv4路由查找,则从IPv4和IPv6共用树结构寻找用于IPv4路由查找的IPv4根节点,并从IPv4根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv4路由信息;
若确定需要进行IPv6路由查找,则从IPv4和IPv6共用树结构寻找用于IPv6路由查找的IPv6根节点,并从IPv6根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv6路由信息。
优选地,IPv4和IPv6路由表存放在相同位宽的B-Tree树节点中,IPv4路由表和IPv6路由表动态共享多层节点,其每层节点保存多条路由信息。
优选地,所述内存区存有:IPv4根节点地址、IPv6根节点地址、所述的多层节点以及结果表。
优选地,所述的获得IPv4路由信息的步骤包括:
IPv4查找逻辑从所述路由查找请求中获取IPv4键值,并从所述内存区获取IPv4根节点地址;
IPv4查找逻辑利用IPv4根节点地址从IPv4和IPv6共用树结构找到IPv4根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv4查找逻辑通过将所述IPv4键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv4路由信息。
优选地,从各匹配的路由条目数据中得到相应的IPv4路由信息的步骤包括:
将各匹配的路由条目中的结果表条目指针保存在查找模块的缓存中;
每级流水匹配的路由条目的结果表条目指针直接覆盖缓存中的内容;
在结束对所有节点路由查找之后,根据缓存中最终的结果表条目指针查找结果表,获得相应的IPv4路由信息。
优选地,所述的获得IPv6路由信息的步骤包括:
IPv6查找逻辑从所述路由查找请求中获取IPv6键值,并从所述内存区获取IPv6根节点地址;
IPv6查找逻辑利用IPv6根节点地址从IPv4和IPv6共用树结构找到IPv6根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv6查找逻辑通过将所述IPv6键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv6路由信息。
优选地,从各匹配的路由条目数据中得到相应的IPv6路由信息的步骤包括:
将各匹配的路由条目中的结果表条目指针保存在查找模块的缓存中;
每级流水匹配的路由条目的结果表条目指针直接覆盖缓存中的内容;
在结束对所有节点路由查找之后,根据缓存中最终的结果表条目指针查找结果表,获得相应的IPv6路由信息。
根据本发明的另一方面,提供了一种同时支持IPv4和IPv6的高速路由查找装置,其特征在于,包括:
路由条目信息更新模块,用于响应路由转发系统实时下发的路由条目更新指令,对IPv4和IPv6共用树节点保存的路由条目信息进行更新;
确定路由查找模块,用于在路由查找期间,根据路由查找请求确定需要进行IPv4路由查找还是进行IPv6路由查找;
IPv4路由查找模块,用于当确定需要进行IPv4路由查找,则从IPv4和IPv6共用树结构寻找用于IPv4路由查找的IPv4根节点,并从IPv4根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv4路由信息;
IPv4结果获取模块,用于IPv4路由查找中,根据IPv4路由查找模块获取的IPv4路由信息查找结果表,获得实际的IPv4路由查找结果。
IPv6路由查找模块,用于当确定需要进行IPv6路由查找,则从IPv4和IPv6共用树结构寻找用于IPv6路由查找的IPv6根节点,并从IPv6根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv6路由信息。
IPv6结果获取模块,用于IPv6路由查找中,根据IPv6路由查找模块获取的IPv6路由信息查找结果表,获得实际的IPv6路由查找结果。
优选地,所述IPv4路由查找模块包括:
IPv4获取单元,用于IPv4查找逻辑从所述路由查找请求中获取IPv4键值,并从所述内存区获取IPv4根节点地址;
IPv4查找单元,用于IPv4查找逻辑利用IPv4根节点地址从IPv4和IPv6共用树结构找到IPv4根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv4查找逻辑通过将所述IPv4键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv4路由信息。
优选地,所述IPv6路由查找模块包括:
IPv6获取单元,用于IPv6查找逻辑从所述路由查找请求中获取IPv6键值,并从所述内存区获取IPv6根节点地址;
IPv6查找单元,用于IPv6查找逻辑利用IPv6根节点地址从IPv4和IPv6共用树结构找到IPv6根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv6查找逻辑通过将所述IPv6键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv6路由信息。
与现有技术相比较,本发明的有益效果在于:
本发明能够支持大规模IPv4和IPv6路由表,表项容量不随路由前缀的分布波动,IPv4和IPv6树结构的融合大大降低了内存需求,提高了路由系统的灵活性,能够同时满足核心路由器中IPv4和IPv6的高速路由查找需求,给用户带来了方便,并提高了用户体验。
附图说明
图1是本发明提供的一种同时支持IPv4和IPv6的高速路由查找方法流程图;
图2是本发明提供的一种同时支持IPv4和IPv6的高速路由查找装置示意图;
图3是本发明实施例提供的同时实现IPv4和IPv6路由查找装置结构框图;
图4是本发明实施例提供的IPv4和IPv6树结构融合示意图;
图5是本发明实施例提供的路由查找算法软件模块的功能模块框图;
图6是本发明实施例提供的路由查找硬件模块功能模块框图;
图7是本发明实施例提供的路由查找硬件模块查找流程图;
图8是本发明实施例提供的前缀结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1显示了本发明提供的一种同时支持IPv4和IPv6的高速路由查找方法流程图,如图1所示,包括以下步骤:
步骤S101:响应路由转发系统实时下发的路由条目更新指令,对IPv4和IPv6共用树节点保存的路由条目信息进行更新;
步骤S102:在路由查找期间,根据路由查找请求确定需要进行IPv4路由查找还是进行IPv6路由查找;
步骤S103:若确定需要进行IPv4路由查找,则从IPv4和IPv6共用树结构寻找用于IPv4路由查找的IPv4根节点,并从IPv4根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv4路由信息;
步骤S104:若确定需要进行IPv6路由查找,则从IPv4和IPv6共用树结构寻找用于IPv6路由查找的IPv6根节点,并从IPv6根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv6路由信息。
本发明IPv4和IPv6路由表存放在相同位宽的B-Tree树节点中,IPv4路由表和IPv6路由表动态共享多层节点,其每层节点保存多条路由信息。
其中,所述内存区存有:IPv4根节点地址、IPv6根节点地址、所述的多层节点以及结果表。
本发明所述的获得IPv4路由信息的步骤包括:IPv4查找逻辑从所述路由查找请求中获取IPv4键值,并从所述内存区获取IPv4根节点地址;IPv4查找逻辑利用IPv4根节点地址从IPv4和IPv6共用树结构找到IPv4根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;其中,IPv4查找逻辑通过将所述IPv4键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv4路由信息。
其中,节点中的IPv4路由前缀包括VPN、IPv4前缀、IPv4前缀矢量(Vector)三个部分,其中IPv4前缀矢量的每个比特都表示一个本前缀的前缀长度,若其中某个比特为‘1’,则表示该前缀中存在该比特对应长度的前缀;采用这种方法,可以在同一个IPv4前缀中存放多条不同长度的、具有父子关系的IPv4路由前缀。
具体地说,从各匹配的路由条目数据中得到相应的IPv4路由信息的步骤包括:将各匹配的路由条目中的结果表条目指针保存在查找模块的缓存中;每级流水匹配的路由条目的结果表条目指针直接覆盖缓存中的内容;在结束对所有节点路由查找之后,根据缓存中最终的结果表条目指针查找结果表,获得相应的IPv4路由信息。
本发明所述的获得IPv6路由信息的步骤包括:IPv6查找逻辑从所述路由查找请求中获取IPv6键值,并从所述内存区获取IPv6根节点地址;IPv6查找逻辑利用IPv6根节点地址从IPv4和IPv6共用树结构找到IPv6根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;其中,IPv6查找逻辑通过将所述IPv6键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv6路由信息。
其中,节点中的IPv6路由前缀包括VPN、IPv6前缀、IPv6前缀矢量(Vector)三个部分,其中IPv6前缀矢量的每个比特都表示一个本前缀的前缀长度,若其中某个比特为‘1’,则表示该前缀中存在该比特对应长度的前缀;采用这种方法,可以在同一个IPv6前缀中存放多条不同长度的、具有父子关系的IPv6路由前缀。
具体地说,从各匹配的路由条目数据中得到相应的IPv6路由信息的步骤包括:将各匹配的路由条目中的结果表条目指针保存在查找模块的缓存中;每级流水匹配的路由条目的结果表条目指针直接覆盖缓存中的内容;在结束对所有节点路由查找之后,根据缓存中最终的结果表条目指针查找结果表,获得相应的IPv6路由信息。
本发明所述的IPv4和IPv6共用树结构具有多层节点保存在内存区中,并且IPv4和IPv6节点具有相同的数据位宽,每层节点能够存放多条IPv4路由信息和多条IPv6路由信息,动态地分配给IPv4或IPv6使用。
图2显示了本发明提供的一种同时支持IPv4和IPv6的高速路由查找装置示意图,如图2所示,包括:路由条目信息更新模块201,用于响应路由转发系统实时下发的路由条目更新指令,对IPv4和IPv6共用树节点保存的路由条目信息进行更新;确定路由查找模块202,用于在路由查找期间,根据路由查找请求确定需要进行IPv4路由查找还是进行IPv6路由查找;IPv4路由查找模块203,用于当确定需要进行IPv4路由查找,则从IPv4和IPv6共用树结构寻找用于IPv4路由查找的IPv4根节点,并从IPv4根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv4路由信息;IPv6路由查找模块204,用于当确定需要进行IPv6路由查找,则从IPv4和IPv6共用树结构寻找用于IPv6路由查找的IPv6根节点,并从IPv6根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv6路由信息。
本发明还包括:IPv4结果获取模块205,用于IPv4路由查找中,根据IPv4路由查找模块获取的IPv4路由信息查找结果表,获得实际的IPv4路由查找结果;IPv6结果获取模块206,用于IPv6路由查找中,根据IPv6路由查找模块获取的IPv6路由信息查找结果表,获得实际的IPv6路由查找结果。
所述IPv4路由查找模块203包括:IPv4获取单元,用于IPv4查找逻辑从所述路由查找请求中获取IPv4键值,并从所述内存区获取IPv4根节点地址;IPv4查找单元,用于IPv4查找逻辑利用IPv4根节点地址从IPv4和IPv6共用树结构找到IPv4根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;其中,IPv4查找逻辑通过将所述IPv4键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv4路由信息。
所述IPv6路由查找模块204包括:IPv6获取单元,用于IPv6查找逻辑从所述路由查找请求中获取IPv6键值,并从所述内存区获取IPv6根节点地址;
IPv6查找单元,用于IPv6查找逻辑利用IPv6根节点地址从IPv4和IPv6共用树结构找到IPv6根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;其中,IPv6查找逻辑通过将所述IPv6键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv6路由信息。
图3显示了本发明实施例提供的同时实现IPv4和IPv6路由查找装置结构框图,如图3所示,包括路由查找算法软件模块301、路由更新接口模块302和路由查找硬件模块303。其中,路由查找算法软件模块301完成对路由条目的软件计算和更新条目指令下发;路由更新接口模块302在接收了软件更新条目指令后,根据路由查找硬件模块303的实际工作状态,控制路由查找硬件模块303的数据流,并将更新条目写入路由查找硬件模块303的存储器中;路由查找硬件模块303是双路并行的流水线型架构,分别响应硬件系统的IPv4和IPv6路由查找请求,并返回最长前缀匹配的查找结果。
具体地说,路由查找算法软件模块301运行在主控CPU上,可以是高级算法语言(如C、C++语言)编写的B-Tree算法软件程序,计算和更新硬件路由表。路由更新接口模块302是一个硬件模块,包括缓存区和逻辑处理区两部分。缓存区用于存放路由查找算法软件模块301写入的更新节点信息;逻辑处理区用于根据路由查找硬件模块303的相关状态,按照一定的顺序,将更新节点数据写入路由查找硬件模块303的节点内存中。路由查找硬件模块303是硬件路由查找的主要模块,是流水线设计,主要由IPv4查找逻辑区、IPv6查找逻辑区和内存区构成。IPv4和IPv6查找逻辑分别处理相应的查找请求,并返回查找结果;内存区也是分层结构,用于存储IPv4和IPv6的节点数据。
本发明的具体实施方法主要分为树结构设计、软件模块设计和硬件模块设计三部分来描述。
图4显示了本发明实施例提供的IPv4和IPv6树结构融合示意图,如图4所示,本发明的树结构设计是实际需求确定IPv4和IPv6的节点位宽,树结构阶数M1和M2、树结构高度N1和N2、每层节点的数目和结果表条目数,从而确定硬件相应的流水级数、每层节点占用空间和结果表占用空间。结构设计需要综合考虑IPv4和IPv6的基本数据位宽,路由表最大需求、硬件内存读写代价、硬件布局布线等因素。
IPv4和IPv6两种路由查找分别通过两条流水线查找逻辑实现,但它们的树节点存储空间是共享的,相同流水级数的IPv4和IPv6节点存储在相同的内存地址空间。在IPv4和IPv6的树节点数据位宽保证相同的条件下,IPv4和IPv6生成的树结构可以如图401和402所示,由于IPv4的每个键值宽度是32-bit,而IPv6的每个键值宽度是128-bit,因此在相同位宽的节点数据结构下,IPv4的B-Tree的阶数M1大于IPv6的阶数M2(IPv4的树节点能够索引更多的子节点)。因此从树的形象上,IPv4的树形状矮而胖,IPv6的树形状高而瘦。如果将两个路由表简单相加,则内存需求是两棵树面积的简单相加,并且在硬件设计上,它们的内存将会相互独立。
本发明的设计方案是如图403所示,将两棵树融合,它们的树底部处于相同层级,每个层级的树节点由它们分别的最大需求确定,最大层级数由IPv6的树高度决定。这样处理的优点是:减少内存空间需求,同时满足IPv4和IPv6的大容量路由表需求;IPv4和IPv6节点空间共享,可以自动动态调整两种路由表的实际容量,提高查找设计对实际应用情况的适应性;简化硬件设计复杂度,降低硬件成本。
图5显示了本发明实施例提供的路由查找算法软件模块的功能模块框图,如图5所示,整个路由算法软件模块基于B-Tree算法实现,整体框架分是四大部分:IPv4算法模块501、IPv6算法模块502、内存管理模块503和更新硬件操作模块504。
所述的IPv4算法模块架构501包括插入操作模块、删除操作模块两部分。插入操作模块主要工作是响应路由转发系统的路由插入指令,并将下发的路由条目插入到B-Tree树结构中。删除操作模块主要工作是响应路由转发系统的路由删除指令,并将下发的路由条目从B-Tree树结构中删除。
所述的IPv4算法模块501和IPv6算法模块502采用相同的算法,皆是基于B-Tree的路由查找算法,区别仅是键值的位宽和B-Tree的阶数不同。
所述的内存管理模块503的功能是对路由查找算法中的节点数据内存和结果表数据内存进行管理,其中IPv4和IPv6的节点和结果表的空间由管理函数统一分配,即IPv4和IPv6的节点和结果表在同一个资源池中进行分配,使得它们能够相互共享资源,提高查找装置的适应性。
所述的更新硬件操作模块504的主要功能是更新硬件内存中的树节点和结果表条目。首先更新硬件操作模块504将所有需要更新的信息记录在缓存中;然后在插入操作模块或删除操作模块结束后,将树节点从软件数据格式转换成约定的硬件数据格式;最后将转换后的硬件数据和对应的硬件映射地址通过软硬件交互接口可以但不限于LocalBus或PCIe接口连续写入路由更新接口模块中。该更新硬件操作模块504的意义在于减少软硬件的接口交互操作,节省更新时间,并减少条目更新对硬件实际查找流水的影响。
图6显示了本发明实施例提供的路由查找硬件模块功能模块框图,如图6所示,包括路由更新接口模块601和路由查找硬件模块604。
所述的路由更新接口模块601包括缓存区602和逻辑处理区603两部分。缓存区602主要功能是接收存储软件通过软硬件交互接口写入的节点数据、结果表条目数据和它们对应的硬件地址,这些数据已经由软件转换成硬件数据格式。逻辑处理区603主要功能是在不影响正常查找的正确性条件下,对硬件内存中的树节点和结果表条目数据进行更新。
所述的路由查找硬件模块604主要功能是实现IPv4和IPv6的路由硬件查找功能,包括IPv4查找逻辑605、IPv6查找逻辑606、内存区607、指令分发609和结果聚合610五个部分。
所述的IPv4查找逻辑605主要功能是完成IPv4的路由查找,返回IPv4路由查找结果。IPv4查找流水共有N1+1级,其中LV_1至LV_N1是树节点查找逻辑层,LV_N1+1是结果表查找逻辑层。每一个查找逻辑层都对应了内存区中的一块独立内存空间,保证各层对内存区的访问不会相互冲突。
所述的IPv6查找逻辑606主要功能是完成IPv6的路由查找,返回IPv6路由查找结果。IPv6查找流水共有N2+1级,其中LV_1至LV_N2是树节点查找逻辑层,LV_N2+1是结果表查找逻辑层。每一个查找逻辑层都对应了内存区中的一块独立内存空间,保证各层对内存区的访问不会相互冲突。
所述的内存区607是路由查找硬件模块中的数据存储区域,内存区中的各内存区域相互独立,分是根节点地址区域、各层节点区域和结果表区域。其中根结点地址608包括IPv4根节点地址和IPv6根节点地址,用于分别存储IPv4和IPv6的B-Tree树结构的根节点的地址。树节点区域的每层之间都相互独立,不与其它层树节点区域交叠,避免查找流水同时访问的冲突。结果表区域也是一块独立区域,由查找流水的最后一级访问。
所述的IPv4查找逻辑605和IPv6查找逻辑606中,它们的查找流水底层处于相同层级,但上层由于IPv4树结构和IPv6树结构的特点,导致IPv4的流水级数可能与IPv6的流水级数不同分别是N1+1级流水和N2+1级流水,因此本发明的设计中不保证IPv4和IPv6的路由查找请求之间的顺序性,只保证IPv4请求与IPv4请求之间的顺序性,以及IPv6请求与IPv6请求之间的顺序性。
同时,由于查找流水的级数不同,存在IPv4查找逻辑605和IPv6查找逻辑606同时访问内存区同一层节点的情况。这种情况可以通过多种方法解决,例如在内存RAM选择上采用有2组读写端口的双端口RAM;也可以采用逻辑调度方式,对查找逻辑的读请求进行调度处理。
所述的指令分发模块609主要功能是根据外部输入指令的特征,区分是IPv4指令还是IPv6指令,然后将其分发给相应的查找逻辑进行处理。
所述的结果聚合模块610主要功能是将IPv4和IPv6的查找结果进行调度,分别返回。
图7显示了本发明实施例提供的路由查找硬件模块查找流程图,如图7所示,包括以下步骤:
步骤S701:路由查找硬件模块收到输入的查找请求;
步骤S702:对输入的查找请求查找键值进行分发,将IPv4请求发送给IPv4查找逻辑,将IPv6请求发送给IPv6查在逻辑;
步骤S703:将查找键值信息和内存区中的根节点地址信息同时发送至第一级查找流水中;
步骤S704:在流水的逻辑中首先对根节点地址是否是本级节点进行判断,如果是本级节点,则向内存发起读节点请求,等待内存返回节点数据;如果不是本级节点,则不向内存发起请求,保留当前节点信息不改变;
步骤S705:将获得的节点信息进行解析,并与键值进行比较;如果未访问本级节点,则不需要进行解析比较,打拍等待即可;
步骤S706:比较的结果如果存在命中,则将命中的路由条目对应的结果记录,覆盖之前命中的结果;如果未访问本级节点,则不需要进行记录,打拍等待;
步骤S707:如果进行了比较,则从比较结果中获取下一级应访问的节点地址记录在节点地址中;如果未访问本级节点,保留当前节点信息不改变;
步骤S708:查找流水携带键值信息、节点地址和命中结果进入下一级流水处理逻辑;
步骤S709:如果下一级流水不是最后一级,则过程与上述S704-S708流程相同,如果下一级流水是最后一级,则是访问结果表的处理逻辑S710;
步骤S710:在结果表流水级中,逻辑将根据命中结果表条目地址访问内存区的结果表,获得命中实际结果;如果未命中,则不访问结果表,输出未命中信息;
步骤S711:将查找结果送入结果聚合逻辑与另一条查找流水的结果进行调度;
步骤S712:将命中的实际结果通过硬件接口返回,如果未命中,返回未命中信息。
图8显示了本发明实施例提供的前缀结构示意图,如图8所示,包括IPv4前缀结构801、IPv6前缀结构802、IPv4节点指针20-bit803以及IPv6节点指针20-bit804。
每个IPv4的前缀结构801包括:32-bit前缀,16-bit的VPN,24-bit的结果支持超过16M路由表,26-bit Vector因是实际路由表中不会出现前缀长度1-7的IPv4前缀。所以IPv4前缀结构所需的位宽是98-bit。
每个IPv6的前缀结构802包括128-bit前缀,16-bit的VPN,24-bit的结果支持超过16M的路由表,114-bit Vector因是实际路由表中不会出现前缀长度1-15的IPv6前缀。所以所需IPv6前缀结构的位宽是282-bit。
IPv4和IPv6的节点指针都是20-bit,满足大规模的树结构。
那么每层节点数据位宽是A*M+B*M+1。其中A是前缀结构的位宽,M是前缀结构的数目,B是节点指针的位宽。
由于大部分树节点可能存储在DDR上,DDR的访问数据位宽是128-bit的整数倍,因此每层节点的数据位宽也最好是128的整数倍。
则要求A1*M1+20*M2+1≤128N,A2*M2+20*M2+1≤128N。其中A1是IPv4的前缀结构位宽,A2是IPv6前缀结构位宽,M1和M2分别是每层节点中的IPv4和IPv6的前缀数目。
可以选择的数值是:
M1=8,M2=3,N=8;此时IPv4节点需求位宽是964-bit,IPv6需求位宽是926-bit,实际分配的节点位宽是1024-bit。这种配置下在大容量需求下流水级数较少,对DDR性能要求一般,同时浪费的内存较少。可以预计这种配置下要满足4M容量IPv4路由表和1M容量IPv6路由表需求,需要11级流水,600Mb的节点内存空间。
也可以选择数值是:
M1=5,M2=2,N=5;此时IPv4节点需求位宽是610-bit,IPv6需求位宽是624-bit,实际分配的节点位宽是660-bit。这种配置下,对DDR性能要求较低,同时浪费的内存最少,但流水级数需求较多,特别是对于IPv6路由需要更多的流水级数才能满足较大规模路由表。可以预计这种配置下,要满足512k容量的IPv4路由和32k容量IPv6路由,需要11级流水,70Mb节点内存空间。
本发明的数据格式主要分是节点数据格式、结果表数据格式。节点数据中包括:键值、标记矢量、结果表地址、下一级指针四个部分。键值是路由表中的路由前缀;标记矢量是B-Tree算法中的标记同一前缀中不同前缀长度条目的标记矢量;结果表地址是本路由条目对应的查找结果在结果表的地址信息;下一级指针是经过本级查找后,下一级应访问的节点地址。其中IPv4的B-Tree节点和IPv6的节点具有相同的节点位宽,同一流水级的树节点存储在相同的内存地址空间中,通过IPv4和IPv6不同的节点解析逻辑来区分。
本发明设计的硬件查找结构是自底向上生长的B-Tree树结构。首先根据IPv4和IPv6路由表容量需求定义B-Tree的阶数M1&M2和树高度N1&N2,并根据它们分别的树高度设计设定相应的流水级数;然后根据算法填充情况定义出每层树结构最大的节点数目需求,按照最大节点数目设定相应的内存空间;最后根据路由表实际容量需求设定结果表的内存空间。
本发明从整体上设计了路由查找系统的软件算法模块、硬件数据结构、更新流程、查找流水结构和内存结构,能够同时满足IPv4和IPv6的路由查找,满足大容量路由表的高性能查找需求。
综上所述,本发明具有以下技术效果:
本发明能够支持大规模IPv4和IPv6路由表,能够同时满足核心路由器中IPv4和IPv6的高速路由查找需求,给用户带来了方便,并提高了用户体验。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解是落入本发明的保护范围。
Claims (10)
1.一种同时支持IPv4和IPv6的高速路由查找方法,其特征在于,包括以下步骤:
响应路由转发系统实时下发的路由条目更新指令,对IPv4和IPv6共用树节点保存的路由条目信息进行更新;
在路由查找期间,根据路由查找请求确定需要进行IPv4路由查找还是进行IPv6路由查找;
若确定需要进行IPv4路由查找,则从IPv4和IPv6共用树结构寻找用于IPv4路由查找的IPv4根节点,并从IPv4根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv4路由信息;
若确定需要进行IPv6路由查找,则从IPv4和IPv6共用树结构寻找用于IPv6路由查找的IPv6根节点,并从IPv6根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv6路由信息。
2.根据权利要求1所述的方法,其特征在于,IPv4和IPv6路由表存放在相同位宽的B-Tree树节点中,IPv4路由表和IPv6路由表动态共享多层节点,其每层节点保存多条路由信息。
3.根据权利要求2所述的方法,其特征在于,所述内存区存有:IPv4根节点地址、IPv6根节点地址、所述的多层节点以及结果表。
4.根据权利要求2所述的方法,其特征在于,所述的获得IPv4路由信息的步骤包括:
IPv4查找逻辑从所述路由查找请求中获取IPv4键值,并从所述内存区获取IPv4根节点地址;
IPv4查找逻辑利用IPv4根节点地址从IPv4和IPv6共用树结构找到IPv4根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv4查找逻辑通过将所述IPv4键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv4路由信息。
5.根据权利要求4所述的方法,其特征在于,从各匹配的路由条目数据中得到相应的IPv4路由信息的步骤包括:
将各匹配的路由条目中的结果表条目指针保存在查找模块的缓存中;
每级流水匹配的路由条目的结果表条目指针直接覆盖缓存中的内容;
在结束对所有节点路由查找之后,根据缓存中最终的结果表条目指针查找结果表,获得相应的IPv4路由信息。
6.根据权利要求2所述的方法,其特征在于,所述的获得IPv6路由信息的步骤包括:
IPv6查找逻辑从所述路由查找请求中获取IPv6键值,并从所述内存区获取IPv6根节点地址;
IPv6查找逻辑利用IPv6根节点地址从IPv4和IPv6共用树结构找到IPv6根节点,通过读取并解析该节点的路由数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv6查找逻辑通过将所述IPv6键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv6路由信息。
7.根据权利要求6所述的方法,其特征在于,从各匹配的路由条目数据中得到相应的IPv6路由信息的步骤包括:
将各匹配的路由条目中的结果表条目指针保存在查找模块的缓存中;
每级流水匹配的路由条目的结果表条目指针直接覆盖缓存中的内容;
在结束对所有节点路由查找之后,根据缓存中最终的结果表条目指针查找结果表,获得相应的IPv6路由信息。
8.一种同时支持IPv4和IPv6的高速路由查找装置,其特征在于,包括:
路由条目信息更新模块,用于响应路由转发系统实时下发的路由条目更新指令,对IPv4和IPv6共用树节点保存的路由条目信息进行更新;
确定路由查找模块,用于在路由查找期间,根据路由查找请求确定需要进行IPv4路由查找还是进行IPv6路由查找;
IPv4路由查找模块,用于当确定需要进行IPv4路由查找,则从IPv4和IPv6共用树结构寻找用于IPv4路由查找的IPv4根节点,并从IPv4根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv4路由信息;
IPv4结果获取模块,用于IPv4路由查找中,根据IPv4路由查找模块获取的IPv4路由信息查找结果表,获得实际的IPv4路由查找结果。
IPv6路由查找模块,用于当确定需要进行IPv6路由查找,则从IPv4和IPv6共用树结构寻找用于IPv6路由查找的IPv6根节点,并从IPv6根节点开始按照流水查找方式从所述共用树结构的各相应节点获得IPv6路由信息。
IPv6结果获取模块,用于IPv6路由查找中,根据IPv6路由查找模块获取的IPv6路由信息查找结果表,获得实际的IPv6路由查找结果。
9.根据权利要求8所述的装置,其特征在于,所述IPv4路由查找模块包括:
IPv4获取单元,用于IPv4查找逻辑从所述路由查找请求中获取IPv4键值,并从所述内存区获取IPv4根节点地址;
IPv4查找单元,用于IPv4查找逻辑利用IPv4根节点地址从IPv4和IPv6共用树结构找到IPv4根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv4查找逻辑通过将所述IPv4键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv4路由信息。
10.根据权利要求8所述的装置,其特征在于,所述IPv6路由查找模块包括:
IPv6获取单元,用于IPv6查找逻辑从所述路由查找请求中获取IPv6键值,并从所述内存区获取IPv6根节点地址;
IPv6查找单元,用于IPv6查找逻辑利用IPv6根节点地址从IPv4和IPv6共用树结构找到IPv6根节点,通过读取并解析该节点的节点数据,查找该节点路由信息,并按照流水查找方式查找下一级节点的路由信息,直至查找最后一级节点的路由信息;
其中,IPv6查找逻辑通过将所述IPv6键值与所解析的各节点的节点数据中的路由前缀分别进行比较,获得下一级节点指针,并从各匹配的路由条目数据中得到相应的IPv6路由信息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310396381.5A CN104426774A (zh) | 2013-09-03 | 2013-09-03 | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 |
PCT/CN2014/077912 WO2015032214A1 (zh) | 2013-09-03 | 2014-05-20 | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310396381.5A CN104426774A (zh) | 2013-09-03 | 2013-09-03 | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104426774A true CN104426774A (zh) | 2015-03-18 |
Family
ID=52627769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310396381.5A Pending CN104426774A (zh) | 2013-09-03 | 2013-09-03 | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104426774A (zh) |
WO (1) | WO2015032214A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302172A (zh) * | 2015-05-18 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 同时支持哈希查找和路由查找的存储、查找方法和装置 |
CN111131049A (zh) * | 2019-12-31 | 2020-05-08 | 盛科网络(苏州)有限公司 | 路由表项的处理方法及装置 |
CN112187743A (zh) * | 2020-09-14 | 2021-01-05 | 北京云杉世纪网络科技有限公司 | 一种基于ip地址最长前缀的网络策略匹配方法及系统 |
WO2022166854A1 (zh) * | 2021-02-07 | 2022-08-11 | 华为技术有限公司 | 一种数据查找方法、装置及集成电路 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115664807B (zh) * | 2022-10-25 | 2023-05-23 | 渔翁信息技术股份有限公司 | 一种ssl vpn转发方法、装置、系统及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004030305A2 (en) * | 2002-09-30 | 2004-04-08 | Mosaid Technologies Incorporated | Improved dense mode coding scheme |
CN101437016A (zh) * | 2007-11-16 | 2009-05-20 | 北京乾坤化物数字技术有限公司 | ip地址结构树的构建方法 |
CN101582851A (zh) * | 2009-06-12 | 2009-11-18 | 中兴通讯股份有限公司 | 一种实现双栈路由器上共享路由容量的方法和系统 |
CN102461092A (zh) * | 2009-04-24 | 2012-05-16 | 代尔夫特科技大学 | 用于地址查找的数据结构、方法和系统 |
-
2013
- 2013-09-03 CN CN201310396381.5A patent/CN104426774A/zh active Pending
-
2014
- 2014-05-20 WO PCT/CN2014/077912 patent/WO2015032214A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004030305A2 (en) * | 2002-09-30 | 2004-04-08 | Mosaid Technologies Incorporated | Improved dense mode coding scheme |
CN101437016A (zh) * | 2007-11-16 | 2009-05-20 | 北京乾坤化物数字技术有限公司 | ip地址结构树的构建方法 |
CN102461092A (zh) * | 2009-04-24 | 2012-05-16 | 代尔夫特科技大学 | 用于地址查找的数据结构、方法和系统 |
CN101582851A (zh) * | 2009-06-12 | 2009-11-18 | 中兴通讯股份有限公司 | 一种实现双栈路由器上共享路由容量的方法和系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302172A (zh) * | 2015-05-18 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 同时支持哈希查找和路由查找的存储、查找方法和装置 |
CN111131049A (zh) * | 2019-12-31 | 2020-05-08 | 盛科网络(苏州)有限公司 | 路由表项的处理方法及装置 |
CN111131049B (zh) * | 2019-12-31 | 2021-08-27 | 苏州盛科通信股份有限公司 | 路由表项的处理方法及装置 |
CN112187743A (zh) * | 2020-09-14 | 2021-01-05 | 北京云杉世纪网络科技有限公司 | 一种基于ip地址最长前缀的网络策略匹配方法及系统 |
CN112187743B (zh) * | 2020-09-14 | 2022-10-28 | 北京云杉世纪网络科技有限公司 | 一种基于ip地址最长前缀的网络策略匹配方法及系统 |
WO2022166854A1 (zh) * | 2021-02-07 | 2022-08-11 | 华为技术有限公司 | 一种数据查找方法、装置及集成电路 |
Also Published As
Publication number | Publication date |
---|---|
WO2015032214A1 (zh) | 2015-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104426770A (zh) | 路由查找方法及装置、B-Tree树结构的构建方法 | |
CN103345514B (zh) | 大数据环境下的流式数据处理方法 | |
CN104685498B (zh) | 聚合/分组操作的硬件实现方式:散列表方法 | |
CN102243660B (zh) | 一种数据访问方法及设备 | |
CN109690500A (zh) | 使用在以处理器为基础的系统中的空间服务质量(QoS)标记提供异质存储器系统的弹性管理 | |
CN104426774A (zh) | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 | |
CN102968503A (zh) | 数据库系统的数据处理方法以及数据库系统 | |
CN103218404B (zh) | 一种基于关联特性的多维元数据管理方法和系统 | |
JP2000112814A (ja) | メモリアロケ―ション方法及びメモリアロケ―ション装置 | |
CN103810244A (zh) | 一种基于数据分布的分布式数据存储系统的扩容方法 | |
US20130254240A1 (en) | Method of processing database, database processing apparatus, computer program product | |
CN106713250B (zh) | 基于分布式系统的数据访问方法和装置 | |
WO2021208147A1 (zh) | 一种有界增量图划分方法和系统 | |
CN104158744A (zh) | 用于网络处理器的建表和查找方法 | |
CN103294785A (zh) | 一种基于分组的元数据服务器集群管理方法 | |
CN106682184B (zh) | 一种基于日志合并树结构的轻量级合并方法 | |
CN102158533B (zh) | 基于QoS的分布式web服务选择方法 | |
CN103605728A (zh) | 一种数据分级存储方法及系统 | |
CN107426315B (zh) | 一种基于BP神经网络的分布式缓存系统Memcached的改进方法 | |
CN107315694A (zh) | 一种缓存一致性管理方法及节点控制器 | |
CN105718221A (zh) | 一种数据存储的方法、装置和系统 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
US9275091B2 (en) | Database management device and database management method | |
CN110008030A (zh) | 一种元数据访问的方法、系统及设备 | |
CN108173974A (zh) | 一种基于分布式缓存Memcached的HC Model内部缓存数据淘汰方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150318 |
|
RJ01 | Rejection of invention patent application after publication |