CN104539540A - 一种基于图形处理单元gpu的路由方法和设备 - Google Patents
一种基于图形处理单元gpu的路由方法和设备 Download PDFInfo
- Publication number
- CN104539540A CN104539540A CN201510020579.2A CN201510020579A CN104539540A CN 104539540 A CN104539540 A CN 104539540A CN 201510020579 A CN201510020579 A CN 201510020579A CN 104539540 A CN104539540 A CN 104539540A
- Authority
- CN
- China
- Prior art keywords
- routing
- address
- long
- routing table
- gpu
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提出的一种基于图形处理单元GPU的路由方法,在主机显卡的所述GPU中保存路由表Table_24,在主机的中央处理单元CPU中保存路由表Table_long,当查询的IP地址的前缀长度小于或等于24时,从所述路由表Table_24中获得下一跳路由地址,否则进一步访问路由表Table_long,从中获得下一跳路由地址。提出的方法利用GPU加速完成了高性能的路由查找转发引擎的设计和实现,避免了软件路由器的CPU瓶颈,弥补了其性能上的不足,实现了高吞吐量。
Description
技术领域
本发明涉及网络通信技术领域,具体设计一种基于图形处理单元GPU的路由方法和设备。
背景技术
随着信息技术的飞速发展,计算机网络的规模迅速膨胀,如何提高核心路由器的转发性能成为提高网络整体性能的需要,这为高性能路由设备的设计带来巨大挑战。CIDR要求路由表中每个基本项目至少由两部分组成:“网络前缀”和“下一跳地址”。同时带来的问题是,在查找路由表时可能会得到不止一个匹配结果。这样,由于要寻找最长前缀匹配,使路由表的查找过程变得更加复杂。
为了满足路由表高速搜索的需求,现行路由查找的解决方案主要有两个思路,分别是硬件方法和软件方法:
在高端路由器中往往采用硬件方法,通过设计特殊的存储器,如按内容访存的存储器CAM,实现电路级的匹配,并取出其下一跳路由器,其查找效率是理想的,但是这种方法最大的缺点在于CAM高昂的价格,随着路由表规模的继续扩大,此方法难度将越来越大。同时,硬件的解决方法具有编程性差、灵活性差的缺点,很难适应网络协议的快速变化,也很难配置和管理。为了解决硬件方法的问题,越来越多的路由器使用网络处理器实现路由查找等应用。然而由于缺乏成熟的编程模型和软件开发环境,网络处理器的编程也很困难。
相比之下,软件路由器具有易于编程、高度灵活和成本低廉的优点,现在人们更倾向于使用现成的通用计算机来实现查表功能,但是此方法天生具有效率低、吞吐量小的缺点,难以作为高端路由器使用。
通过以上分析可发现,现有的路由表搜索方法均存在着不足。然而,近年来GPU硬件性能和可编程性的提高,以及其在通用计算领域的广泛应用,为改进软件实现核心路由器的体系结构和性能带来了契机。
发明内容
本发明在普通的个人计算机和服务器上设计出了高性能的路由查找转发方法和设备,避免了软件路由器的CPU瓶颈,实现了高吞吐量。与传统的基于硬件的核心路由器相比,本发明提出的技术方案在保证了网络转发性能的同时,使得核心网络路由器的成本方面大大降低,对网络协议的适应性大大增强。
本发明提出的一种基于图形处理单元GPU的路由方法,在主机显卡的所述GPU中保存路由表Table_24,在主机的中央处理单元CPU中保存路由表Table_long,其特征在于,所述方法包括:
S1:以IP地址的前24位作为查找索引,在所述路由表Table_24中执行路由查找,若所述IP地址的前缀长度小于或等于24,则从所述路由表Table_24中获得下一跳路由地址,流程结束;否则从所述路由表Table_24中获得访问路由表Table_long的索引信息,执行步骤S2;
S2:
根据所述索引信息访问所述路由表Table_long,从中获得下一条路由地址。
特别地:
所述索引信息为路由表Table_long的一级索引编号;
所述步骤S2具体为:
根据所述一级索引编号在所述路由表Table_long的一级索引表中获得二级索引表的位置,再通过所述IP地址的最后8位得到所述路由表Table_long的二级索引编号,并在Table_long中通过二级索引编号得到所述下一跳路由地址。
特别地:
在更新所述路由表Table_24时,判断所述更新是否导致某一IP地址的前缀长度由小于等于24变为大于24;若是,则分配对应于该IP地址的所述路由表Table_long中的一级索引编号,将所述一级索引编号对应的二级索引表中的256个表项的内容全部更新为该IP地址对应的所述路由表Table_24中的内容;更新所述IP地址所覆盖部分的路由信息,其范围为填入表项,到所述路由表Table_24的末尾。
特别地:
所述分配对应于该IP地址的所述路由表Table_long中的一级索引编号具体为:如果有被回收的索引编号,则分配这个索引编号,如果没有,则顺序分配新的索引编号。
本发明的有益效果是:本发明中面向GPU计算特点充分挖掘每个路由查找操作之间的并行性,使得每个路由查找操作完全独立,如此可将简单重复的查找操作置于GPU内部,利用大量的GPU核心进行并行处理,大大提高了整体的查找转发性能。同时,利用GPU的异步并发机制,完成了GPU计算和数据传输的重叠,进一步提高的系统的吞吐。这种基于GPU加速的路由转发引擎构建方法所具有的上述优点,以及本发明设计时基于用户普通的个人计算机和服务器,利用GPU加速完成了高性能的路由查找转发引擎的设计和实现,避免了软件路由器的CPU瓶颈,弥补了其性能上的不足,实现了高吞吐量。与传统的基于硬件的核心路由器相比,本发明在保证了网络转发性能的同时,使得核心网络路由器的成本方面大大降低,以及提高了对多种网络协议的适应能力。故本发明在实际应用中具有很高的技术价值和实用价值。
附图说明
图1是本发明提出的路由表结构示意图;
图2是本发明提出的路由查找方法流程图。
具体实施方式
路由查找的效率依赖于计算机的性能和查找算法的效率,而对路由表项组织的效率和其中数据结构的选取往往也是关键。传统上的查找算法可由二叉线索来组织。同时,也可以通过hash函数来进行查找,而理论上最快的查找就是线性函数的查找,即线性函数H(key)=key。当然,对于Ipv4地址需要232=4G个条目的存储空间。本发明中利用hash函数查找,重点针对IP地址的前24位进行操作,以优化存储空间。每个路由查找操作的是完全无关的,这样就给并行处理提供了可能性。
发明中对利用Hash线性函数方法查找算法进行改进,并按照CUDA编程模型进行映射,并完成针对GPU体系结构的优化,最后,基于NvidiaGTX480对系统的设计进行了验证。
本发明的结构设计主要涵盖以下几点:
(1)GPU路由表的组织方法:
最长前缀匹配的的原理在于,在几个匹配的地址中选择更具体的一个。由于GPU中存储的是一个完全的映射表,所有的地址都应该有内容能够查到,而且查表时不需要前缀,这样就应当把最长前缀匹配的思想体现到路由表表项的内容之中。
在建立路由表时,应当在表项的填写方面详细考虑:在填入一个表项时,这个表项的子网内的地址如果没有更具体的地址,则应当自顶向下将这个表项的信息拷贝到这个表项的子网内的每一个条目中。因为没有更具体的信息时应当与其高层网络号保持一致。如果子网内的表目有更具体的信息,则不需要修改。
对于路由表数据结构的组织。在显存中组织路由表既要考虑查找更新的效率,又要考虑显存空间利用的有效性。本发明中将把IP地址前24位的整个地址空间放到显存中,在GPU端进行并行处理;而核心问题是对长于24为前缀的匹配,本设计中采用了二级表的方法,将该部分地址的计算放在主机端进行,并与GPU完成协作。
在进行地址映射时,32位的IP地址如果完全映射到内存空间中,需要4G个条目,这对于目前GPU的显存来讲开销还是比较大的,在部分GPU平台上实现起来比较困难,影响该发明的通用性。本发明中,将对IP地址的前24位进行完全映射,即利用H(key)=key,这样GPU中空间的主要开销可以降低到224=16M个条目。对于少量的前缀大于24位的表项将放在主机端进行单独处理。相关研究中指出,前缀长度大于24的表项很少,只占总表项的0.05%左右,也就是说,对于40万条的路由表,只有大约200条长度大于24的表项,该部分表项的处理将置于主机端的CPU和内存中处理。
(2)路由表与二叉线索的映射
Table_24以IP地址前24位为索引,逻辑上是一个线性的数组,如图1所示。Table_24中的地址可以与二叉线索数据结构进行对应。数组中一个表项之后的,一片长度为224连续的地址空间,可与二叉线索中一个节点为根的子树对应,有区别的是在Table_24和Table_long中应当看做满二叉树。同时,二叉线索的增、删、更新操作也可对应于Table_24与Table_long的相应操作。通过该分析可得知,本发明中的路由表的组织与传统的二叉线索的方式是等价的,故本发明在理论上是完备的。
(3)基于GPU架构的优化和面向体系结构的改进
NVIDIA的Fermi架构和Kepler架构提供了很多特性和优化方法,给提高程序的性能提供了很大的空间,本发明中对基于Fermi架构和Kepler架构进行了优化设计。多核的处理器以及支持异步并发的显卡提供了更粗粒度的并行方法。发明中针对“CPU多线程+GPU并发”方面进行了优化,使多个主机线程控制多个GPU流,实现GPU计算和数据传输的重叠。
下面参照附图,对本发明的内容的实施方式进行详述,正如发明内容涉及:(1)基于GPU计算的路由表构建,(2)路由表的查找、更新、删除算法,(3)面向GPU体系结构的优化方法。
(1)路由表的组织:
路由表分为两个部分,Table_24和Table_long,分别用来进行前缀长度小于等于24位的查找和前缀长度大于24位的查找,Table_24的长度是定长224=16M,而Table_long的长度是变长的,为256*n,其中n为前缀长度大于24表目的数量。
进行路由匹配时,将前缀长度小于等于24位的表项,即Table_24中tag为0的部分送入显卡图形处理单元GPU的显存当中进行匹配;将前缀长度大于24位的表项,即将Table_24中tag为1部分与Tabel_long进行拼接,留在主机端的内存当中进行匹配。
Table_24以IP地址前24位为索引,下表为Table_24的表项:
Table_long为二级索引结构,以IP地址后8位为索引,下表为Table_long一级索引的表项:
字段名称 | number | location |
字段意义 | 表项编号 | 二级索引表位置 |
数据类型 | unsigned int | unsigned int |
下表为Table_long二级索引的表项:
字段名称 | length | content |
字段意义 | 前缀长度 | 为下一跳地址 |
数据类型 | int | unsigned int |
(2)路由表的查找、更新、删除算法
查找算法:查找算法分为两个部分,分别是对前缀长度24位以内表项的查找和对前缀长度大于24位表项的查找。
参见图2,其示出了查找方法流程图。对于前缀长度24位以内的查询操作,将批量传入GPU进行匹配,根据前述可知,长度24位以内的表项tag为0,content字段内存储下一跳地址,此处为对24位前缀的完全匹配,最后返回查询结果。
在进行前缀长度大于24位的查找时,在主机端执行,要进行多次访存,可知此时tag为1,Table_24的content字段内保存了访问Table_long的一级索引编号,可通过这个索引编号到Table_long一级索引中查询到二级索引的位置,然后通过IP的最后8位得到Table_long二级索引的索引值,并在Table_long中通过二级索引得到下一跳地址。
查找算法伪代码如下所示:
更新算法:更新算法的基本原则是符合网络的拓扑结构。在进行前缀长度小于等于24的更新操作时,每次更新一个连续的区域,对应在二叉线索中则是,自顶向下以这个节点为根的一棵子树(完全二叉树)中的全部节点中,满足前缀长度小于更新长度的节点。在网络拓扑中是网络地址逐步细化的过程。
在进行前缀长度小于24的更新操作时,更新填入表项所覆盖部分的路由信息,其范围为填入表项,到Table_24的末尾。
在进行前缀长度大于24的更新操作时,要考虑两种情况:第一,tag从0转变为1,即本身长度小于等于24的表项,更新为长度大于24的表项,此时要对上层网络的tag和content字段进行修改。tag字段变为1,content填入需要分配的编号(在更新Table_long后才填入,否则原来的信息会丢失),此编号的确定根据分配算法:如果有被回收(即删除时)的编号,则分配这个编号,如果没有,则顺序分配。首先将Table_long一级索引中编号对应的256个表项全部改为原来在Table_24的contain中对应的信息,然后类似于小于24位前缀的更新算法,处理相应的表项,将小于指定长度地址的表项全部更新;第二,tag已经是1,即操作完全在Table_long中进行,则可以直接更新Table_long,而不需要做数据拷贝操作。
更新算法伪代码如下所示:
删除算法:根据网络的拓扑结构,删除节点时,不能直接将相应的表项清空,而应该填入其父节点的信息,来保持网络拓扑的完整性。同时,还要保证被删节点子网内更详细的信息不被修改。在处理前缀长度小于24的表项时,直接填入父节点的信息。在处理前缀长度大于24位的表项时,要在删除操作完成之后进行检查,如果在Table_long二级索引中对应的256个表项的信息一致,则要删除掉Table_long二级索引中整个256个表项,并且回收编号。
更新算法伪代码如下所示:
(3)面向GPU体系结构的优化方法
通过CPU与GPU的配合,并利用CUDA C对上述算法进行实现。在本发明的设计中,大部分操作是访存操作,并且查找操作的内核运算量比较小,进行查找时有两种思路,其一是对大数据量一次处理,其二是将数据分割之后进行异步并发。由于考虑到在路由器中的现实情况以及CPU的处理能力,本发明采用第二种异步并发的思路。
CPU/GPU计算是跨越主机和设备的并行计算,因此可看作四部分:主机上的计算、设备上的计算、主机到设备的数据传输、设备到主机的数据传输。异步并发指的是这四种操作在时间轴上相互重叠。并且,面向Nvidia的Fermi架构和Kepler架构,其GPU计算能力均已达到2.1,支持内核的并发、数据传输的并发和数据传输与内核的并发。
在本设计中采用了多线程和GPU的混合编程模型,利用多个主机线程控制多个GPU的流,实现GPU计算,数据传输的重叠,又通过优化GPU的计算和数据传输来掩盖访存和通信延迟。CUTIL库中实现的主机多线程功能在操作系统的多线程API上构建了一个简单的与平台无关的多线程接口,该接口能够自动检测操作系统的多线程实现,并且将他们的差异封装起来,同时提供了简单的接口。本发明利用该接口进一步提高了系统的性能。
最后,本发明在实验平台上完成了验证,并达到了良好的实验效果。实验平台的具体配置是2.50GHz Intel Core 2Quad CPU(4核),4GB DDR3RAM,NVIDIA GeForce GTX480显卡,拥有2G显存和480个流处理器。操作系统使用Centos6.0,内核版本2.6,CUDA Toolkit版本4.0。
Claims (4)
1.一种基于图形处理单元GPU的路由方法,在主机显卡的所述GPU中保存路由表Table_24,在主机的中央处理单元CPU中保存路由表Table_long,其特征在于,所述方法包括:
S1:以IP地址的前24位作为查找索引,在所述路由表Table_24中执行路由查找,若所述IP地址的前缀长度小于或等于24,则从所述路由表Table_24中获得下一跳路由地址,流程结束;否则从所述路由表Table_24中获得访问路由表Table_long的索引信息,执行步骤S2;
S2:根据所述索引信息访问所述路由表Table_long,从中获得下一跳路由地址。
2.如权利要求1所述的方法,其特征在于:
所述索引信息为路由表Table_long的一级索引编号;
所述步骤S2具体为:
根据所述一级索引编号在所述路由表Table_long的一级索引表中获得二级索引表的位置,再通过所述IP地址的最后8位得到所述路由表Table_long的二级索引编号,并在Table_long中通过二级索引编号得到所述下一跳路由地址。
3.如权利要求2所述的方法,其特征在于:
在更新所述路由表Table_24时,判断所述更新是否导致某一IP地址的前缀长度由小于等于24变为大于24;若是,则分配对应于该IP地址的所述路由表Table_long中的一级索引编号,将所述一级索引编号对应的二级索引表中的256个表项的内容全部更新为该IP地址对应的所述路由表Table_24中的内容;更新所述IP地址所覆盖部分的路由信息,其范围为填入表项,到所述路由表Table_24的末尾。
4.如权利要求3所述的方法,其特征在于:
所述分配对应于该IP地址的所述路由表Table_long中的一级索引编号具体为:如果有被回收的索引编号,则分配这个索引编号,如果没有,则顺序分配新的索引编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510020579.2A CN104539540A (zh) | 2015-01-15 | 2015-01-15 | 一种基于图形处理单元gpu的路由方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510020579.2A CN104539540A (zh) | 2015-01-15 | 2015-01-15 | 一种基于图形处理单元gpu的路由方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104539540A true CN104539540A (zh) | 2015-04-22 |
Family
ID=52855009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510020579.2A Pending CN104539540A (zh) | 2015-01-15 | 2015-01-15 | 一种基于图形处理单元gpu的路由方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104539540A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585358A (zh) * | 2003-08-19 | 2005-02-23 | 华为技术有限公司 | 路由查找方法及其系统 |
CN101005461A (zh) * | 2007-01-16 | 2007-07-25 | 中兴通讯股份有限公司 | 一种IPv6路由表查找、转发的方法 |
US20100045682A1 (en) * | 2008-08-22 | 2010-02-25 | Arm Limited | Apparatus and method for communicating between a central processing unit and a graphics processing unit |
CN102984071A (zh) * | 2012-12-31 | 2013-03-20 | 武汉烽火网络有限责任公司 | 分段地址路由的路由表组织方法及查找路由的方法 |
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
-
2015
- 2015-01-15 CN CN201510020579.2A patent/CN104539540A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585358A (zh) * | 2003-08-19 | 2005-02-23 | 华为技术有限公司 | 路由查找方法及其系统 |
CN101005461A (zh) * | 2007-01-16 | 2007-07-25 | 中兴通讯股份有限公司 | 一种IPv6路由表查找、转发的方法 |
US20100045682A1 (en) * | 2008-08-22 | 2010-02-25 | Arm Limited | Apparatus and method for communicating between a central processing unit and a graphics processing unit |
CN102984071A (zh) * | 2012-12-31 | 2013-03-20 | 武汉烽火网络有限责任公司 | 分段地址路由的路由表组织方法及查找路由的方法 |
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8542686B2 (en) | Ethernet forwarding database method | |
US9667754B2 (en) | Data structure and associated management routines for TCP control block (TCB) table in network stacks | |
US8750144B1 (en) | System and method for reducing required memory updates | |
US11762826B2 (en) | Search apparatus, search method, program and recording medium | |
CN101594319A (zh) | 表项查找方法和装置 | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
WO2024093064A1 (zh) | 一种大规模多模态网络中标识管理及优化转发方法和装置 | |
WO2011124030A1 (zh) | 路由表项的存储方法和装置 | |
WO2014047863A1 (en) | Generating a shape graph for a routing table | |
Han et al. | A novel routing algorithm for IoT cloud based on hash offset tree | |
US10084613B2 (en) | Self adapting driver for controlling datapath hardware elements | |
US10601711B1 (en) | Lens table | |
US12019606B1 (en) | Hash operation manipulations | |
CN105227468B (zh) | 一种查找装置、查找方法和配置方法 | |
JP2023534123A (ja) | パケットマッチング方法、装置、ネットワークデバイスおよび媒体 | |
CN104702508A (zh) | 表项动态更新方法及系统 | |
CN112269784A (zh) | 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 | |
CN103842990B (zh) | 基于索引的虚拟寻址的方法和设备 | |
CN105721627B (zh) | 一种ip网络流数据在线匿名化方法 | |
US20200348933A1 (en) | Method for generic vectorized d-heaps | |
CN104301227B (zh) | 基于tcam的高速低功耗ip路由表查找方法 | |
WO2017035813A1 (zh) | 一种数据访问方法、装置及系统 | |
CN104539540A (zh) | 一种基于图形处理单元gpu的路由方法和设备 | |
CN113328947B (zh) | 基于应用可控前缀扩展布隆过滤器的可变长路由查找方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150422 |
|
WD01 | Invention patent application deemed withdrawn after publication |