硬件转发表刷新方法和装置以及路由设备的制作方法

文档序号:7711215阅读:181来源:国知局
专利名称:硬件转发表刷新方法和装置以及路由设备的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种硬件转发表刷新方法、 一种硬 件转发表刷新装置以及一种路由设备。
背景技术
随着网络技术的发展,主流的网络设备,如中、高端交换机和大部分路
由器,都能够支持大规格的转发表;如中国专利CN02100458.7就提供了一 种基于内容可寻址存储器的高速路由查找系统通过专门设置的路由査找协 处理器通过中央处理器(CPU)接口接收路由协议发来的路由刷新命令,控 制SRAM (静态存储器)和CAM (Content Addressable Memory,内容可寻 址存储器)进行路由转发表项的硬件刷新和存储,从而支持大容量的路由转 发表。
但是,现有硬件转发表的刷新技术基本上都是CPU根据上层协议的 运行情况,直接下发微指令进行硬件转发表的刷新,或者,通过专门设 置的模块(如路由査找协处理器)将CPU命令分割成可以直接执行的微 指令进行硬件转发表的刷新;由于上述的微指令基本上是针对单条表项 的读、写,因此效率非常低下;
特别是在需要进行表项搬移时,需要进行两个步骤的处理才能完成 (先对源表项内容进行硬件读,然后在目的表项位置进行读取内容的硬 件写操作),也就是说,硬件转发表中的数据首先要被拷贝上传给CPU 实现硬件读,再由CPU下发到硬件转发表实现硬件写,才能完成硬件转 发表中一个或几个表项的搬移;显然,这一过程不但涉及数据在硬件之 问的拷贝和传输操作,而且很多情况下数据传输并不是直接在CPU和硬 件转发表间直接进行,中间需要第三方器件(转发装置或者单独设置的 芯片)的中转,传输效率很低;事实上,表项搬移是硬件转发表刷新过 程中无法回避的操作,同时也是最耗时的操作,每秒钟仅能够完成4k左右;
对于一些存在优先级关系的表项而言,上述硬件转发表刷新技术的 缺陷表现的尤为明显
(1) 对于IPv4/v6 FTN (VPN Routing & Forwarding, VPN路由和转
发实例)表(俗称为路由表)来说,其表项的路由前缀之间存在优先级 关系(如前缀位数越多优先级越高,这样具有25bit前缀的路由相对于具 有20bit前缀的路由,其具有更高的优先级),在进行硬件存储时需要将 高优先级的表项放置在低优先级表项之前;
举例来说,路由表项IP1、 IP2和IP3都具有24bit前缀,现在要插入 一条具有32bit前缀的路由IP4,则需要先将IP1表项搬移到IP3后面的 位置,然后在原IP1表项位置刷新写入IP4表项,如图1A所示;
再例如,现在删除图1A中的表项IP3,则需要将IP1表项搬移到IP3 表项的位置,然后将原IP表项位置置为无效,如图1B所示;
上述图1A和图1B仅为说明IPv4/v6 FTN表项刷新的原理,本领域 技术人员可以了解,FTN表容量非常大,在一般核心层的设备中可达到 M级,因此其刷新过程中往往涉及到大量的表项搬移;
(2) 对于IPv4/v6ACL (Access Control List,访问控制列表)表来 说,其表项仅仅从下发对象(大类)的角度,就分为全局(Global)、 VLAN和端口 (Port)三类优先级,而且在每一个大类内部,又细化为很 多的小类,比如ACL、 MQC (Modular QoS Command-line,模块化的QoS 命令行)、PBR (Policy Based Routing,策略路由)等,各小类之间又设 置有相应的优先级;因此,每次下发指定类型的表项时,需要先找到相 应的优先级位置,将低优先级的表项向后搬移,再将下发表项写入空出 来的位置;
举例来说,如果想在VLAN块和Port块之间插入一条Port类型规则 (Port Rule),则需要将原Port块向后搬移,在空出来的位置上写入该 Port类型规则,如图2所示;
在实际应用中,IPv4/v6 ACL表不但规格较大,而且动态生成的ACL 表与实际上网用户相关,静态配置的ACL表需要经常性调整,其同样涉及到大量的表项搬移;
上面以IPv4/v6 FTN表和IPv4/v6 ACL表为例,对现有的硬件转发表 刷新技术进行了简单的描述,本领域技术人员可以了解,硬件转发表当 然不限于上述两种类型。但从上述对IPv4/v6 FTN表和IPv4/v6 ACL表的 描述可以看出,现有的硬件转发表刷新技术都是对硬件(如SRAM和 CAM)中存储的硬件转发表直接进行操作,涉及了大量的转发表项搬移 问题,导致表项刷新进度十分缓慢;
上述刷新效率低又导致了以下问题虽然CPU的软件转发表已经更 新,但硬件中(如SRAM和CAM)存储的、进行实际转发所依据的硬件 转发表并没有获得及时的同步,因此该转发表项并未生效,造成安全黑 洞;要想通过软件设计来克服这一安全黑洞问题十分困难。

发明内容
木发明的实施例旨在克服上述现有技术的缺陷,提供能够快速刷新硬件 转发表的技术方案,实现软件、硬件转发表的快速同步。
为实现上述目的,本发明的实施例提供了一种硬件转发表刷新方法,在 路由设备内存中为硬件转发表设置软件副本,并通过以下步骤实现对硬件转 发表的一次刷新操作
歩骤S1:CPU首先访问内存,对所述软件副本进行刷新并将变化表 项的索引通知给硬件刷新单元;
歩骤S2:所述硬件刷新单元通过直接内存访问DMA方式访问内存 中所述软件副本,根据所述索引将变化表项逐条写入所述硬件转发表。
相应的,本发明的实施例还提供了一种硬件转发表刷新装置,包括 分别与路由设备的CPU和硬件转发表连接的硬件刷新单元,且所述
硬件刷新单元通过直接内存访问DMA方式访问内存中的、硬件转发表的
软件副本;
所述硬件刷新单元接收路由设备CPU在先访问内存时刷新所述软件副本获得的变化表项的索引,并根据所述索引将变化表项逐条写入所述 硬件转发表,实现对所述硬件转发表的一次刷新操作。
相应的,本发明的实施例还提供了一种设有上述硬件转发表刷新装
置的路由设备。
由上述技术方案可知,相比于现有的、直接操作硬件转发表进行读/写的 刷新技术,木发明的实施例为硬件转发表设置软件副本,以刷新并读取软件
副本中数据的方式取代CPU操作硬件转发表进行数据读取的方式,能够实 现硬件转发表的快速刷新,从而有效提高CPU所维护软件转发表和路由设
备中硬件转发表之间的同步性,降低安全黑洞产生的可能。
通过以下参照附图对优选实施例的说明,本发明的上述以及其它目的、
特征和优点将更加明显。


图1A、 1B为现有技术中对于IPv4/v6 FTN表进行表项添加、删除的硬
件刷新示意图2为现有技术中对于IPv4/v6 ACL表进行表项添加的硬件刷新示意
图3A、 3B分别为本发明提供的硬件转发表刷新方法实施例的流程图4为本发明提供的硬件转发表刷新装置一实施例的框图5A、 5B分别为硬件转发表刷新装置设于路由设备转发器件或者单独
设置的可编程器件的应用示意图6A、 6B分别为图4所示硬件转发表刷新装置中,硬件刷新单元实施
例的框图。
具体实施例方式
下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只 甩于举例说明,并不用于限制本发明。本发明首先提供了一种硬件转发表刷新方法,包括以下步骤-步骤SO:在路由设备内存中为硬件转发表设置软件副本,该软件副 本的结构和内容与路由设备的硬件转发表一致,其表项索引也同硬件转
发表柑同,因此也可称为硬件转发表的Shadow表;
例如,路由设备的硬件转发表可能包括IPv4/v6 FTN表、IPv4/v6 ACL 表等等,每一类型的硬件转发表单独保存;那么,内存中也相应于上述 每一类型的硬件转发表分别保存其软件副本;
再例如,不同类型,甚至于同一类型的硬件转发表由于规格原因, 可能被分别保存在不同的硬件中,举例来说,可能被保存于不同的CAM 芯片上;这种情况下,不但要相应保存不同硬件中的硬件转发表的软件 副本,而且要相应记录存储该硬件转发表的硬件标识,比如CAM芯片ID;
总之,软件副本相当于硬件转发表的忠实拷贝,这样后续硬件转发 表才能根据软件副本的变化迅速定位和进行调整。
在完成上述软件副本的准备后,每当根据上层协议的执行结果需要 进行硬件转发表的刷新时,执行以下步骤-
步骤S1: CPU首先访问内存,对软件副本进行刷新并将变化表项的 索引通知给硬件刷新单元;
具体的,CPU对软件副本的刷新可以包括新转发表项的添加和删除
操作当有新的转发表项生成时,CPU操作软件副本,将新生成的表项
插入到合适的位置;当有转发表项需要删除时,CPU将该表项从软件副 本中删除;
可以看出,上述转发表项的刷新操作是通过软件方式实现的;同时, 本领域技术人员能够了解,对于软件副本的操作一般通过指针等方式进 行,不必涉及数据的拷贝动作,因此刷新效率非常高;这样,即使被操 作的表项存在优先级的要求,需要某一类型文件副本中部分或者全部相 关表项进行调整,也能够在很短的时间内完成;
在上述文件副本刷新完成后,CPU将变化表项的索引通知给硬件刷 新单元;
8作为一个可行的实施例,CPU可以仅将变化表项的索引告知硬件刷 新单元;这适用于表项调整范围相对较小的硬件转发表类型,例如 IPv4/v6FTN表,当有一条表项添加或删除时, 一般仅涉及两条表项的操 作
作为另一个可行的实施例,CPU需要识别软件副本中发生变化表项
的范围,并将该范围的起始索引和结束索引通知给硬件刷新单元,但不
排除该范围内存在未变化表项的情况;这适用于表项调整范围相对较大 的硬件转发表类型,例如IPv4/v6ACL表,当有一条表项添加或删除时, 往往涉及到表项块的整体搬移;
上述变化表项索引的具体告知方式可以由网络管理人员预先针对不 同类型的硬件转发表分别设置,以最大程度的降低CPU需要通知的索弓I,
加快后续的硬件操作进程。
在完成上述歩骤S1的操作后,硬件刷新单元能够获知变化的表项索 引或者表项索引范围,因此能够进行实际硬件转发表与更新后软件副本 的同步,即执行歩骤S2:硬件刷新单元通过DMA(Direct Memory Access, 直接内存访问)方式访问内存中所述软件副本,根据所述索引将变化表 项逐条写入所述硬件转发表;
其中,具体的硬件转发表写入方式视其存储情况有所不同;例如, 如果CAM中保存硬件转发表的关键字Key(源IP地址、目的IP地址等), SRAM中保存硬件转发表的结果Result (转发参数、信道情况等),则 可以先根据索引完成SRAM中Result区的写入更新,再根据索引完成 CAM中Key区的写入更新;当然,如果硬件转发表每条表项的信息未被 分开保存,那么根据索引执行写入操作就能够完成硬件转发表的更新操 作;
可以看出,本步骤S2仅对步骤SI中软件副本发生变化的数据进行 硬件转发表的写入操作即可实现硬件转发表的刷新,这无疑有效提高了 硬件转发表的刷新效率
举例来说,如图1A所示的路由表项IP1、 IP2和IP3都具有24bit前 缀,现在要插入一条具有32bit前缀的路由IP4,那么软件副本首先进行与CPU软件转发表的快速同步,即获得按照IP4、 IP2、 IP3、 IP1次序排 列盼转发表副本,然后由硬件刷新单元将其变化的表项(IP4和IP1,或 音IP4 IP1)表项写入硬件转发表即可,这与现有技术中先等待硬件读取 1P1的数据完成,再等待硬件写入IP1的数据(在最后的位置)完成,最 后再硬件写入IP4的数据(在原IP1的位置)相比,无疑精简了刷新处理 环节,縮短了刷新处理流程;
尤其是,图1A所示仅是为了便于说明而进行的示意性例举,实际上 一次硬件转发表的刷新不可能仅涉及到两个表项的操作,而操作的表项 越多,本发明的优势体现得就越为明显;
此外,进行内存访问的带宽往往较高,因此相对于现有技术中由CPU 访问硬件转发表进行硬件数据读取,本发明通过内存访问进行数据读取 的效率更高,有利于进一步提高硬件转发表的刷新效率。
上述歩骤S1 S2示出了硬件转发表的一次刷新操作;由上述对于步 骤Sl和歩骤S2的分析可以看出,本发明相比于现有技术,能够有效的 提高硬件转发表的刷新效率, 一般在ms级的时间内就能够完成同步刷新 过程。
进一歩的,CPU中的软件转发表是根据上层协议的运行情况不断进
tf刷新的,其每一次刷新(包括对某一类型硬件转发表的局部或者整体
刷新)都对应着一次软件副本和硬件转发表的同步;在本发明中,虽然 软件副本基本上能够实现实时的同步,但硬件写入操作毕竟还是要受限
于硬件,因此在极短的时间内,仍有可能出现时序问题,比如CPU要求
在极短的时间内对同一转发表项进行两次刷新,如果硬件刷新单元无法
及时响应和处理,就可能造成两次刷新指令的冲突或者遗漏;为了克服
这一问题,本发明提供了较佳的解决方案;
如图3A所示,硬件转发表刷新方法还包括步骤S3:所述硬件刷新
单元完成硬件转发表写入后,通过中断方式通知所述CPU进行硬件转发 表的下一次刷新;
或者,如图3B所示,硬件转发表刷新方法还包括步骤S3':所述硬 件刷新单元完成硬件转发表写入后,置位指定寄存器来标识硬件转发表刷新结束;且,CPU在步骤S1之后保持周期性轮询,当轮询到所述指定 寄存器置位后进行硬件转发表的下一次刷新;
无论是按照上述哪一种方式,都能够保证CPU在前一次的硬件转发 表同歩后,再进行下一次的软件副本同步,从而避免硬件指令的冲突, 优化硬件转发表的同步效果;
有必要指出,由于硬件写入本身需要一定的时间,因此硬件转发表 和CPU所维护的软件转发表之间不可能实现绝对的同步,硬件转发表的 内容会存在一定的滞后;但本发明中硬件转发表能够高效刷新,因此相 对于现有技术而言,同步性获得很大程度的优化,降低了安全黑洞产生 的可能性。
相应于上述硬件转发表刷新方法,本发明还提供了硬件转发表刷新 装置,请参考图4提供的实施例,该硬件转发表刷新装置400包括
硬件转发表的软件副本410;该软件副本410设置在路由设备内存 中,其结构和内容与路由设备的硬件转发表一致,其表项索引也同硬件 转发表相同,因此也可称为硬件转发表的Shadow表;
分别与路由设备的CPU和硬件转发表连接的硬件刷新单元420,且 所述硬件刷新单元420通过DMA方式访问内存中所述软件副本410;
其屮,所述硬件刷新单元420接收路由设备CPU在先访问内存时刷 新所述软件副本410获得的变化表项的索引,该索引可以是变化表项的 逐条索引,也可以是变化表项的范围索引,即起始索引和结束索引;
该硬件刷新单元420根据所述索引将变化表项逐条写入所述硬件转 发表,实现对所述硬件转发表的一次刷新操作;
通过上述硬件转发表刷新装置400可以看出,硬件刷新单元420仅 保留对于硬件转发表的硬件写入操作即可实现硬件转发表的刷新,因此 有效提高了硬件转发表刷新效率, 一般在ms级的时间内就能够完成同步 刷新过程,相应提高了软硬件转发表之间的同步性。
其中,所述硬件刷新单元可以设置在路由设备的转发装置中,或者, 通过单独设置的可编程器件(如FPGA芯片)实现;图5A示出了硬件刷新单元设于路由设备转发器件的一个应用示意 图,其中,硬件转发表的Key和Result分别保存在不同的硬件芯片上(虽 然图5A末示,但本领域技术人员可以了解,不同类型硬件转发表的Key 还可以进一步区分保存在不同的芯片上,不同类型硬件转发表的Result 也可以进一歩区分保存在不同的芯片上);图5B示出了将硬件刷新单元 设于FPGA的一个应用示意图,其中,不同类型的硬件转发表分别保存 在不同的TCAM (Ternary Content Addressable Memory ,三重内容可寻址 存储器)芯片和SRAM芯片上;
从图5A和图5B可以看出,内存中的软件副本与硬件转发表的结构 一致,硬件刷新单元通过软件读(DMA方式读)、硬件写来完成硬件转 发表的刷新。
请进一步结合图6A和图6B,作为具体的实施例,所述硬件刷新单 元620可以包括
CPU指令识别模块621,提供到所述路由设备的CPU的接口,用于 识别路由设备CPU在先访问内存时刷新软件副本获得的变化表项的索
内存访问模块622,提供到路由设备内存的接口并与所述CPU指令 识别模块621连接,用于通过DMA方式访问内存中软件副本,读取所述 索引相应的变化表项;
硬件写入模块623,提供到硬件转发表的接口并分别与所述CPU指 令识别模块621和内存访问模块622连接,用于根据索引将读取到的变 化表项逐条写入所述硬件转发表。
进一步的,为了避免硬件刷新指令的冲突,本发明的较佳实施例为 在前一次硬件同步完成后,再进行下一次的软件副本的刷新;作为具体 的实现方案,可以在硬件刷新单元620中增设
中断处理模块624,提供到路由设备CPU的接口并与所述硬件写入 模块523连接,用于在所述硬件写入模块523完成硬件转发表写入后, 通过中断方式通知所述CPU进行硬件转发表的下一次刷新,其中,每一 次刷新包括对某一类型硬件转发表的局部或者整体刷新;如图6A所示;
12或者,在硬件刷新单元620中增设
指定寄存器625,提供到路由设备CPU的接口并与所述硬件写入模 块623连接,用于在所述硬件写入模块623完成硬件转发表写入后置位, 以标识硬件转发表刷新结束;
同时,所述CPU需要保持周期性轮询,当轮询到所述指定寄存器625 置位后进行硬件转发表的下一次刷新,其中,每一次刷新包括对某一类 型硬件转发表的局部或者整体刷新;如图6B所示。
相应于卜j述硬件转发表刷新方法和硬件转发表刷新装置,本发明还 提供了设有所述硬件转发表刷新装置的路由设备,该硬件转发表刷新装 置可以.宵接设置在路由设备的转发器件中,也可以设置在专门的可编程 器件如FPGA芯片中。
虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是 说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而 不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细 节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利 要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。
权利要求
1.一种硬件转发表刷新方法,其特征在于,在路由设备内存中为硬件转发表设置软件副本,并通过以下步骤实现对硬件转发表的一次刷新操作步骤S1CPU首先访问内存,对所述软件副本进行刷新并将变化表项的索引通知给硬件刷新单元;步骤S2所述硬件刷新单元通过直接内存访问DMA方式访问内存中所述软件副本,根据所述索引将变化表项逐条写入所述硬件转发表。
2. 根据权利要求1所述的硬件转发表刷新方法,其特征在于,所述 歩骤Sl中CPU将变化表项的索引通知硬件刷新单元的步骤包括CPU 识别软件副本中发生变化表项的范围,并将该范围的起始索引和结束索 引通知给硬件刷新单元。
3. 根据权利要求1或2所述的硬件转发表刷新方法,其特征在于, 还包括歩骤S3:所述硬件刷新单元完成硬件转发表写入后,通过中断方 式通知所述CPU进行硬件转发表的下一次刷新;其中,每一次刷新包括 对某一类型硬件转发表的局部或者整体刷新。
4. 根据权利要求1或2所述的硬件转发表刷新方法,其特征在于, 还包括歩骤S3':所述硬件刷新单元完成硬件转发表写入后,置位指定寄 存器来标识硬件转发表刷新结束;以及,所述CPU保持周期性轮询,当 轮询到所述指定寄存器置位后进行硬件转发表的下一次刷新;其中,每 一次刷新包括对某一类型硬件转发表的局部或者整体刷新。
5. —种硬件转发表刷新装置,其特征在于,包括 分别与路由设备的CPU和硬件转发表连接的硬件刷新单元,且所述硬件刷新单元通过直接内存访问DMA方式访问内存中的、硬件转发表的 软件副本;所述硬件刷新单元接收路由设备CPU在先访问内存时刷新所 述软件副本获得的变化表项的索引,并根据所述索引将变化表项逐条写 入所述硬件转发表,实现对所述硬件转发表的一次刷新操作。
6. 根据权利要求5所述的硬件转发表刷新装置,其特征在于,所述硬件刷新单元包括CPU指令识别模块,提供到所述路由设备的CPU的接口,用于识别 路由设备CPU在先访问内存时刷新所述软件副本获得的变化表项的索 引内存访问模块,提供到路由设备内存的接口并与所述C P u指令识别 模块连接,用于通过DMA方式访问内存中所述软件副本,读取所述索引 相应的变化表项;硬件写入模块,提供到硬件转发表的接口并分别与所述CPU指令识 别模块和内存访问模块连接,用于根据索引将读取到的变化表项逐条写 入所述硬件转发表。
7. 根据权利要求6所述的硬件转发表刷新装置,其特征在于,所述 硬件刷新单元还包括中断处理模块,提供到路由设备CPU的接口并与所述硬件写入模块 连接,用于在所述硬件写入模块完成硬件转发表写入后,通过中断方式 通知所述CPU进行硬件转发表的下一次刷新;其中,每一次刷新包括对 某 一类型硬件转发表的局部或者整体刷新。
8. 根据权利要求6所述的硬件转发表刷新装置,其特征在于,所述硬件刷新单元还包括指定寄存器,提供到路由设备CPU的接口并与所述硬件写入模块连接,用于在所述硬件写入模块完成硬件转发表写入后置位,以标识硬件转发表刷新结束;则所述CPU保持周期性轮询,当轮询到所述指定寄存器置位后进行 硬件转发表的下一次刷新;其中,每一次刷新包括对某一类型硬件转发 表的局部或者整体刷新。
9. 根据权利要求5-8任一所述的硬件转发表刷新装置,其特征在于, 所述硬件刷新单元设置在路由设备的转发装置中,或者,通过单独设置 的可编程芯片实现。
10. —种设有权利要求5-9任一所述硬件转发表刷新装置的路由设备。
全文摘要
本发明公开了一种硬件转发表刷新方法、硬件转发表刷新装置以及一种路由设备。在路由设备内存中为硬件转发表设置软件副本,并通过以下步骤实现对硬件转发表的一次刷新操作CPU首先访问内存,对软件副本进行刷新并将变化表项的索引通知给硬件刷新单元;硬件刷新单元通过DMA方式访问内存中的软件副本,根据索引将变化表项逐条写入硬件转发表。本发明能够实现硬件转发表的快速刷新。
文档编号H04L12/56GK101616099SQ20091016255
公开日2009年12月30日 申请日期2009年8月3日 优先权日2009年8月3日
发明者杨燕军 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1