地址前缀查找方法和装置以及报文转发方法和系统

申请号 CN200610140691.0 申请日 2006-09-29 公开(公告)号 CN1929447A 公开(公告)日 2007-03-14
申请人 华为技术有限公司; 发明人 杜文华; 洪荣峰; 杨雄; 吕超; 李新慧; 阳东;
摘要 本 发明 公开了一种地址前缀查找装置,包括:前缀 存储器 ,包括至少两个存储区域,各个存储区域分别用于存储相应长度的地址前缀;匹配模 块 ,用于接收IP报文,提取所述IP报文中的地址信息,在所述前缀存储器中查找和所述地址信息相匹配的地址前缀。还提供一种地址前缀查找方法以及报文转发系统和方法,通过本发明,能够提高前缀存储器的存储效率。
权利要求

1、一种地址前缀查找装置,其特征在于,包括:
前缀存储器,包括至少两个存储区域,所述存储区域分别用于存储 相应长度的地址前缀;
匹配模,用于接收IP报文,提取所述IP报文中的地址信息,在所 述前缀存储器中查找和所述地址信息相匹配的地址前缀。
2、如权利要求1所述的地址前缀查找装置,其特征在于:所述地 址信息为目的IP地址的有效高位,匹配模块接收IP报文,提取所述IP 报文中的目的IP地址的有效高位,在所述前缀存储器中查找和所述有效 高位相匹配的地址前缀。
3、如权利要求2所述的地址前缀查找装置,其特征在于:还包括 判断模块,用于接收地址前缀,提取地址前缀的有效高位,分别将所述 地址前缀的有效高位发送到所述前缀存储器相应的存储区域。
4、如权利要求2所述的地址前缀查找装置,其特征在于,还包括 地址寄存器,用于存储所述前缀存储器的各个存储区域的起始地址;匹 配模块提取有效高位后,在地址寄存器中查找对应长度的存储区域的起 始地址,在对应存储区域中查找是否有和有效高位相匹配的地址前缀。
5、如权利要求1所述的地址前缀查找装置,其特征在于:所述地 址信息为虚拟专用网标识VPNID和目的IP地址,匹配模块接收IP报文, 根据IP报文的VPNID确定出该IP报文对应的存储区域,匹配模块在所 述对应的存储区域中查找与所述IP报文的VPNID和目的IP地址相匹配 的地址前缀。
6、如权利要求5所述的地址前缀查找装置,其特征在于:还包括 判断模块,用于接收地址前缀,根据地址前缀中VPNID的大小,将所 述地址前缀发送到所述前缀存储器相应的存储区域。
7、如权利要求1或2或3或4或5或6所述的地址前缀查找装置, 其特征在于,所述前缀存储器为内容寻址存储器CAM。
8、如权利要求7所述的地址前缀查找装置,其特征在于:
前缀存储器包括至少两个CAM、且不同CAM的存储单元位宽不相 同,多个CAM根据存储单元的位宽分属于不同位宽的存储区域;和/或
前缀存储器的一个CAM中的存储单元位宽相同,所述存储单元被 划分为两类,一类为存储一个地址前缀的存储单元,另一类为存储多个 地址前缀的存储单元,CAM中的存储单元根据存储地址前缀的个数分 属于不同位宽的存储区域;和/或
前缀存储器的一个CAM中包括不同位宽的存储单元,一个CAM中的 存储单元根据存储单元位宽的不同分属于不同位宽存储区域。
9、基于权利要求1至8的一种报文转发系统,包括转发信息存储 器和发送装置,其中转发信息存储器用于存储转发信息表,所述发送模 块用于根据转发信息表项发送报文,其特征在于,还包括:
前缀存储器,包括至少两个存储区域,各个存储区域分别用于存储 相应长度的地址前缀;
匹配模块,用于接收IP报文,提取所述IP报文中的地址信息,在所 述前缀存储器中查找和所述地址信息相匹配的地址前缀。
10、一种地址前缀查找方法,其特征在于:所述方法基于前缀存储 器实现,包括至少两个存储区域,各个存储区域分别用于存储对应长度 的地址前缀,所述方法包括以下步骤:
接收IP报文,提取所述IP报文中的地址信息;
在前缀存储器里查找和所述地址信息匹配的地址前缀。
11、如权利要求10所述的地址前缀查找方法,其特征在于:所述地 址前缀查找方法具体包括:
A’、接收IP报文,提取所述IP报文中的目的IP地址;
B’、在前缀存储器里查找和所述目的IP地址匹配的地址前缀,如有, 结束查找,如没有,执行步骤C’;
C’、提取所述目的IP地址的有效高位,在前缀存储器里查找和所述 有效高位匹配的地址前缀。
12、如权利要求11所述的地址前缀查找方法,其特征在于,该方 法还包括:接收地址前缀,提取地址前缀的有效高位,根据有效高位的 长度分别将所述有效高位发送到所述前缀存储器相应长度的存储区域。
13、如权利要求11所述的地址前缀查找方法,其特征在于:所述 步骤C’具体包括:
提取IP报文中的目的IP地址有效高位后,在地址寄存器中查找对 应长度的存储区域的起始地址,在对应存储区域中查找是否有和有效高 位相匹配的地址前缀。
14、如权利要求10所述的地址前缀查找方法,其特征在于,所述地 址信息为虚拟专用网标识VPNID和目的IP地址,所述方法具体包括:
接收IP报文,提取所述IP报文中的VPNID和目的IP地址;
根据所述提取的VPNID确定出该IP报文对应的存储区域,在所述 对应的存储区域中查找和所述VPNID和目的IP地址相匹配的地址前缀。
15、如权利要求14所述的地址前缀查找方法,其特征在于,所述方 法还包括:接收地址前缀,根据地址前缀中VPNID的大小,将所述地 址前缀发送到所述前缀存储器相应长度的存储区域。
16、一种报文转发方法,其特征在于,所述方法基于前缀存储器实 现,所述前缀存储器包括至少两个存储区域,各个存储区域分别用于存 储不同长度的地址前缀,所述方法包括以下步骤:
接收IP报文,提取所述IP报文中的地址信息;
在前缀存储器里查找和所述地址信息匹配的地址前缀表项;
读取与所述匹配表项关联的转发信息,根据所述转发信息发送所述 IP报文。

说明书全文

技术领域

发明涉及数据通信,尤其涉及一种地址前缀查找方法和装置,以 及报文转发方法和系统。

背景技术

在社会信息化高度发展的今天,互联网的网络流量特别是核心网络 的流量以指数级增长,同时用户数量和对服务的要求也迅速增加,这一 切都对作为互联网核心设备的主干路由器提出了更高性能和容量的要 求。需要对数据包IP(Internet Protocol,互联网协议)地址按最长匹配 域查找到达更快的速度,同时也要求IP路由表的容量不断扩大。
IP网络中的路由器负责为IP报文查找路由信息,这个功能称为“报 文转发”,简称“转发”。而路由器中用于存储报文转发所需的路由信息 的表格称为“路由转发表”。路由转发表通常包含两部分:转发前缀表 和转发信息表。转发前缀表中存储的是网络地址(也称为网络前缀)或 主机地址,我们统称为“地址前缀”。转发信息表中存储的是报文转发 所需的出端口和下一跳IP地址等信息。
路由器进行路由信息查找的过程是这样的:首先用IP报文中携带的 目的IP地址(DIP),到转发前缀表中去查找匹配的表项,然后去读取 与该表项关联的转发信息表项,从而获得报文转发所需的路由信息。
在转发前缀表中查找与报文目的IP地址相匹配的表项是一项复杂 的操作,这项操作完成的速度基本上就决定了一台路由器的转发性能。 在高性能路由器中,通常将IPv6转发前缀表存储在CAM(Content Address Memory,内容寻址存储器)中,利用CAM的快速匹配特点, 实现高性能的路由查找操作。
CAM的一个地址对应的数据一般是72比特的单元(其它比特单元 情况类似),IPV6的目的IP地址是128位,这样一个IPV6的路由转发 表要占用144比特的CAM单元,即两个CAM地址,但对于IPV6地址 前缀掩码长度小于144比特情况下,用CAM的一个144比特单元实现 地址匹配,浪费CAM的存储空间,就会降低CAM的存储效率。由于 目前CAM器件最大容量有限而且价格昂贵,CAM存储效率低就需要用 较多的CAM器件满足报文转发的需要,进而增加路由器的制造成本, 影响路由器的竞争

发明内容

本发明的实施例要解决的技术问题在于提出一种地址前缀查找装 置和方法,最大限度克服报文转发时存储器存储效率低的缺陷
为实现上述目的,本发明提供一种地址前缀查找装置,包括:
前缀存储器,包括至少两个存储区域,所述存储区域分别用于存储 相应长度的地址前缀;
匹配模,用于接收IP报文,提取所述IP报文中的地址信息,在所 述前缀存储器中查找和所述地址信息相匹配的地址前缀。
下述地址前缀查找装置的技术方案为可选技术方案。
所述地址信息为目的IP地址的有效高位,匹配模块接收IP报文, 提取所述IP报文中的目的IP地址的有效高位,在所述前缀存储器中查 找和所述有效高位相匹配的地址前缀。
所述地址前缀查找装置还包括判断模块,用于接收地址前缀,提取 地址前缀的有效高位,分别将所述地址前缀的有效高位发送到所述前缀 存储器相应的存储区域。
所述地址前缀查找装置还包括地址寄存器,用于存储所述前缀存储 器的各个存储区域的起始地址;匹配模块提取有效高位后,在地址寄存 器中查找对应长度的存储区域的起始地址,在对应存储区域中查找是否 有和有效高位相匹配的地址前缀。
所述地址信息为虚拟专用网标识VPNID和目的IP地址,匹配模块 接收IP报文,根据IP报文的VPNID确定出该IP报文对应的存储区域, 匹配模块在所述对应的存储区域中查找与所述IP报文的VPNID和目的 IP地址相匹配的地址前缀。
所述地址前缀查找装置还包括判断模块,用于接收地址前缀,根据 地址前缀中VPNID的大小,将所述地址前缀发送到所述前缀存储器相 应的存储区域。
所述前缀存储器为内容寻址存储器CAM。
前缀存储器包括至少两个CAM、且不同CAM的存储单元位宽不相 同,多个CAM根据存储单元的位宽分属于不同位宽的存储区域;和/或
前缀存储器的一个CAM中的存储单元位宽相同,所述存储单元被 划分为两类,一类为存储一个地址前缀的存储单元,另一类为存储多个 地址前缀的存储单元,CAM中的存储单元根据存储地址前缀的个数分 属于不同位宽的存储区域;和/或
前缀存储器的一个CAM中包括不同位宽的存储单元,一个CAM中的 存储单元根据存储单元位宽的不同分属于不同位宽存储区域。
本发明还提供一种报文转发系统,包括转发信息存储器和发送装 置,其中转发信息存储器用于存储转发信息表,所述发送模块用于根据 转发信息表项发送报文,报文转发系统还包括:
前缀存储器,包括至少两个存储区域,各个存储区域分别用于存储 相应长度的地址前缀;
匹配模块,用于接收IP报文,提取所述IP报文中的地址信息,在所 述前缀存储器中查找和所述地址信息相匹配的地址前缀。
本发明还提供一种地址前缀查找方法,所述方法基于前缀存储器实 现,包括至少两个存储区域,各个存储区域分别用于存储对应长度的地 址前缀,所述方法包括以下步骤:
接收IP报文,提取所述IP报文中的地址信息;
在前缀存储器里查找和所述地址信息匹配的地址前缀。
下述地址前缀查找方法的技术方案为可选技术方案。
所述地址前缀查找方法具体包括:
A’、接收IP报文,提取所述IP报文中的目的IP地址;
B’、在前缀存储器里查找和所述目的IP地址匹配的地址前缀,如有, 结束查找,如没有,执行步骤C’;
C’、提取所述目的IP地址的有效高位,在前缀存储器里查找和所述 有效高位匹配的地址前缀。
该方法还包括:接收地址前缀,提取地址前缀的有效高位,根据有 效高位的长度分别将所述有效高位发送到所述前缀存储器相应长度的 存储区域。
所述步骤C’具体包括:
提取IP报文中的目的IP地址有效高位后,在地址寄存器中查找对 应长度的存储区域的起始地址,在对应存储区域中查找是否有和有效高 位相匹配的地址前缀。
所述地址信息为虚拟专用网标识VPNID和目的IP地址,所述方法 具体包括:
接收IP报文,提取所述IP报文中的VPNID和目的IP地址;
根据所述提取的VPNID确定出该IP报文对应的存储区域,在所述 对应的存储区域中查找和所述VPNID和目的IP地址相匹配的地址前缀。
所述方法还包括:接收地址前缀,根据地址前缀中VPNID的大小, 将所述地址前缀发送到所述前缀存储器相应长度的存储区域。
本发明还提供一种报文转发方法,所述方法基于前缀存储器实现, 所述前缀存储器包括至少两个存储区域,各个存储区域分别用于存储不 同长度的地址前缀,所述方法包括以下步骤:
接收IP报文,提取所述IP报文中的地址信息;
在前缀存储器里查找和所述地址信息匹配的地址前缀表项;
读取与所述匹配表项关联的转发信息,根据所述转发信息发送所述 IP报文。
本发明实施例的有益效果如下:
通过将所述内容寻址存储器根据地址前缀掩码长度的大小划分为 至少两个存储区域,根据存储区域对应的宽度提取地址前缀的有效高位 进行存储,能在相同容量的内容寻址存储器里存储更多的地址前缀;所 述内容寻址存储器存储区域的划分是根据地址前缀的分布动态进行,及 时调整各个存储区域的大小,最大限度提高内容寻址存储器的存储容 量。
附图说明
图1为本发明实施例的地址前缀查找方法流程图
图2为本发明实施例的报文转发方法流程图一;
图3为本发明实施例的报文转发流程图二;
图4为本发明实施例的报文转发流程图三;
图5为本发明实施例的地址前缀查找装置结构框图

具体实施方式

本发明的实施例提供一种地址前缀查找装置和方法,基于前缀存储 器实现,将前缀存储器动态分为至少两个区域,本发明实施例的前缀存 储器与现有的前缀存储器的不同之处在于:现有前缀存储器的存储区域 没有进行不同位宽的区分;本发明最大限度的提高前缀存储器的存储效 率,在相同前缀存储器容量的情况下增加路由转发表的容量。
针对IPV6和IPV4本发明的实施例提供两种不同的地址前缀存储和 查找方法。下面将结合各个附图对本发明的实施例方案的主要实现原 理、具体实施过程及其对应的有益效果进行详细的阐述。
针对IPV6本发明的实施例提供的技术方案请参照图1,该图是本发 明实施例的地址前缀查找方法的流程图,该方法是基于前缀存储器实现 的,该存储器通常为CAM,被动态分为至少两个存储区域,每个存储 区域存储相应长度的地址前缀,其主要包括以下步骤:
步骤100:接收地址前缀,根据前缀存储器提取地址前缀的有效高 位分别存储在相应的存储区域,这个步骤实际上是该IPV6报文转发方 法的准备步骤,优选的实施方式是根据IPV6地址前缀的特性:用8组 16比特的整数来描述128位地址前缀,CAM的存储区域分别存储的是 8N比特长度的地址前缀,其中N为小于等于16的自然数;在本实施例 中有效高位是指相对应前缀存储器划分存储区域的规则,与存储区域相 应宽度的高位比特,可以是完整的地址前缀或DIP,也可以是地址前缀 或DIP的部分高位比特;
步骤101:接收IP报文,提取所述IP报文中携带的DIP,该DIP 通常为128比特长度;
步骤102:用DIP的有效高位去某一存储区域查找是否有匹配的地 址前缀,即是否有和DIP的有效高位相同的地址前缀,优选的实施方式 是,为提高效率,首先查找存储最长地址前缀的相应存储区域,如果查 找到相同的表项,执行步骤105,否则执行步骤103;
步骤103:根据前缀存储器划分存储区域的规则再次提取DIP的有 效高位,并根据该有效高位查找下一个存储区域是否有匹配的地址前 缀,如果查找到匹配的地址前缀,执行步骤105,否则执行步骤104;
步骤104:判断是否已查找到最后一个存储区域,如果是,说明在 前缀存储器中没有相应的匹配项,则结束查找,如果不是最后一个存储 区域,还需要再查找,执行步骤104;
步骤105:在前缀存储器中获得地址前缀。
针对IPV4,本发明实施例根据VPN的数量来进行地址前缀的存储 和查找。当VPN数量超过16个时,现有的前缀存储器为存储单元位宽 为72bit存储单元的CAM,或者为更宽比特位存储单元的CAM,这样, 前缀存储器是采用统一位宽区域的CAM来存储所有的地址前缀的;由 于本发明的前缀存储器对存储区域进行了位宽区域的区分,即本发明的 前缀存储器根据存储单元位宽的不同将整个存储空间划分为不同位宽 区域,如将CAM的存储空间划分为36bit位宽的存储区域和72bit位宽 的存储区域,这样,当VPN数量超过16个时,可以将VPNID小于16 的路由转发表项存储在36bit位宽的存储区域中,将VPNID不小于16 的路由转发表项存储在72bit位宽的存储区域中。
本发明的实施例对前缀存储器的存储区域进行位宽区域区分的方法 主要包括如下三种,下述方法以CAM为例进行说明。
方法1、前缀存储器包括至少两个CAM,而且,不同CAM的存储 单元位宽不相同。这里的不同CAM的存储单元位宽不相同可以为:每 两个CAM的存储单元位宽均不相同,也可以为:在所有CAM中,存 在两个CAM的存储单元位宽不相同即可。也就是说,如果前缀存储器 中包括有三个CAM,则这三个CAM可以为:36bit的CAM、72bit的 CAM和144bit的CAM;这三个CAM也可以为:36bit的CAM、36bit 的CAM和72bit的CAM。
方法2、前缀存储器包括一个CAM,该CAM中的所有存储单元被 划分为:存储一个地址前缀的存储单元和存储多个地址前缀的存储单 元,存储一个地址前缀的存储单元属于大位宽区域,存储多个地址前缀 的存储单元属于小位宽区域,大位宽区域中的存储单元对应存储大位宽 的地址前缀,小位宽区域中的存储单元对应存储小位宽的地址前缀;如 前缀存储器中仅设置一个CAM、且该CAM的存储单元位宽为72bit, 这样,该CAM中的一部分存储单元为大位宽区域,一部分存储单元为 小位宽区域,大位宽区域中的一个存储单元可以仅存储一个大位宽的地 址前缀,小位宽区域中的一个存储单元可以存储两个小位宽的地址前 缀。
方法3、前缀存储器包括一个CAM,该CAM中的存储单元具有不 同的位宽,具有大位宽的存储单元属于大位宽区域,具有小位宽的存储 单元属于小位宽区域。大位宽区域中的存储单元对应存储大位宽的地址 前缀,小位宽区域中的存储单元对应存储小位宽的地址前缀;如一个 CAM中包括两种类型的存储单元,一种类型为:位宽为36bit的存储单 元、另一种类型为:位宽为72bit的存储单元。在位宽为36bit的一个存 储单元中可以仅存储一个位宽小于36bit的地址前缀,在72bit的一个存 储单元中可以仅存储一个位宽大于36bit、小于72bit的地址前缀。
当然,本发明实施例中的前缀存储器在对存储区域进行位宽区域区 分时,也可以同时采用上述任意两种方法,也就是将上述任意两种方法 结合起来使用。也可以同时采用上述三种方法。
不论前缀存储器采用怎样的方法对其存储区域进行位宽区域区分, 在向前缀存储器中存储地址前缀时,应根据地址前缀中的预定位的数值 大小如VPNID的大小来确定该地址前缀应存储在前缀存储器的哪个位 宽区域中。也就是说,每个位宽区域均对应一个预定值区间,当地址前 缀中的预定位的数值大小如VPNID的大小属于某个位宽区域的预定值 区间时,该地址前缀表项应存储在该预定值区间对应的位宽区域中。
当前缀存储器采用方法1对其存储区域进行位宽区域区分时,前缀 存储器在存储地址前缀表项时,首先根据该地址前缀表项中VPNID值 的大小来确定该地址前缀表项应存储在哪个CAM中,然后,再进行该 地址前缀表项的存储处理。
当前缀存储器采用方法2对其存储区域进行位宽区域区分时,前缀 存储器在存储地址前缀表项时,首先根据该地址前缀表项中VPNID值 的大小来确定该地址前缀表项应存储在一个CAM的哪个位宽区域中, 如果存储在大位宽区域中,则该地址前缀表项应占用CAM的一个存储 单元,如果存储在小位宽区域中,则该地址前缀表项只能占用CAM一 个存储单元的部分内容。
前缀存储器在设置了地址前缀转发表项、且需要进行地址前缀查找 时,首先,匹配模块应确定其接收的IP报文的VPNID,然后,匹配模 块根据该数据报文的VPNID大小确定应该在CAM的哪个位宽区域中查 找该数据报文的地址前缀表项,最后,匹配模块在其确定的位宽区域中 查找与该数据报文的VPNID和网络地址对应的地址前缀表项。
当前缀存储器包括至少两个存储单元位宽不相同的CAM时,匹配 模块执行的地址前缀匹配的具体过程为:匹配模块根据数据报文的 VPNID确定出该数据报文的地址前缀表项应存储在哪个CAM中,然后, 匹配模块在这个确定的CAM中查找与该数据报文的VPNID和网络地址 匹配的地址前缀表项。
当前缀存储器为一个CAM,且该CAM中的存储单元划分为存储一 个地址前缀表项的存储单元和存储多个地址前缀表项的存储单元时,匹 配模块执行的地址前缀匹配的具体过程为:匹配模块根据数据报文的 VPNID确定出该数据报文的地址前缀表项是占用一个存储单元,还是占 用部分存储单元,如果占用一个存储单元,则匹配模块在大位宽区域中 查找与该数据报文的VPNID和网络地址匹配的地址前缀表项;如果占 用部分存储单元,则匹配模块在小位宽区域中、按照从高位表项到低位 表项的顺序查找与该数据报文的VPNID和网络地址匹配的地址前缀表 项。
当前缀存储器采用方法3时,前缀存储器在存储地址前缀表项时, 根据该地址前缀表项中VPNID值的大小来确定该地址前缀表项的位宽, 并将该地址前缀表项存储在对应位宽区域的存储单元中。如果位宽区域 有两种,一种为具有大位宽存储单元的大位宽区域,一种为具有小位宽 存储单元的小位宽区域,则前缀存储器根据路由转发表项中VPNID值 的大小来确定该地址前缀表项的位宽,如果该地址前缀表项为大位宽的 地址前缀表项,则前缀存储器将该大位宽的地址前缀表项存储在大位宽 区域的存储单元中,如果该地址前缀表项为小位宽的地址前缀表项,则 前缀存储器将该小位宽的地址前缀表项存储在小位宽区域的存储单元 中。
前缀存储器在设置了地址前缀表项、且需要进行数据报文的地址前 缀匹配时,首先,匹配模块应确定数据报文的VPNID,然后,匹配模块 根据该数据报文的VPNID大小确定应该在具有多大位宽的存储单元中 查找该数据报文的地址前缀表项,最后,匹配模块在具有相应位宽的存 储单元中查找与该数据报文的VPNID和网络地址对应的地址前缀表项。
不同厂家提供的CAM的最小存储单元的位宽可能有32位、64位、72 位等不同情况。对于位宽为32位的情况,可以根据地址前缀表项是否为 公网路由来实现公网地址前缀表项的存储方法,并且可以根据数据报文 的VPNID是否为0,来实现数据报文的地址前缀信息的查找。对于最小 位宽为64位的情况,一个公网地址前缀表项可以存储到CAM的一个存储 单元中,此时,同样可以根据地址前缀表项是否为公网地址前缀、数据 报文的VPNID是否为0来实现地址前缀表项存储及数据报文的地址前缀 查找。
本发明的实施例还提供一种报文转发方法,在所述地址前缀查找方 法步骤105后,根据查找到的地址前缀,去读取相关联的转发信息表项, 从而获得IP报文转发所需的路由信息,按照路由信息对IP报文进行转 发。
CAM的一个地址对应的单元一般存储72比特数据,根据这个特性, 为方便查找每个存储区域的起始地址,本发明提供一个较佳的实施例: 将CAM划分两个区域:144位区和72位区,分别存储掩码长度大于72 比特表和小于等于72比特的地址前缀表。请参照图2,该实施例的报文 转发方法具体包括以下步骤:
步骤201:接收路由前缀,判断该路由前缀掩码是否大于72比特, 如果大于72比特,执行步骤202,如果小于等于72比特,执行步骤203;
步骤202:将该路由前缀存储到144位区;
步骤203:提取该路由前缀的高72比特存储到72位区;
步骤204:接收IP报文,并提取该IP报文的128位DIP;
步骤205:用提取的128位DIP和144位区的每一个表项进行匹配, 如果能匹配,即能查找到相同的表项,执行步骤207;否则执行步骤206;
步骤206:提取DIP的高72比特,和72位区的每一个表项进行匹 配,如果能匹配,执行步骤207;否则,说明在CAM中存储的整个转 发前缀表中都不能匹配,结束查找过程;
步骤207:根据表项得到CAM单元匹配地址;
步骤208:读取与该匹配地址相关联的转发信息表项,从而获得路 由信息,根据该路由信息将IP报文转发。
下面结合两个具体的例子对IPV4系统中本发明实施例的地址前缀 的存储、匹配、数据报文转发的技术方案进行说明。
例1、前缀存储器包括两个CAM,其中,CAM1的存储单元宽度为 36bit,CAM2的存储单元宽度为72bit。前缀存储器根据VPNID值的大小, 将转发前缀表项区分为两种:一种是36bit的表项,另一种是72bit的表项。
对于地址前缀表项中0<VPNID<16的情况,前缀存储器使用36bit来 表示该转发前缀表项,并且,前缀存储器将该地址前缀表项存储在CAM1 中。
对于地址前缀表项中VPNID≥16的情况,前缀存储器使用72bit来表 示该地址前缀表项,并且,前缀存储器将该地址前缀表项存储在CAM2 中。
前缀存储器CAM1中存储的地址前缀表项如表1所示。
表1   CAM单元地址   CAM单元存储内容(36位单元)   100   VPNID=8,地址前缀=192.168.0.*/24   101   VPNID=0,地址前缀=100.200.*.*/16   102   VPNID=15,地址前缀=10.11.12.13/32   …   …
前缀存储器CAM2中存储的地址前缀表项如表2所示。
表2   CAM单元地址   CAM单元存储内容(72位单元)   200   VPNID=100,地址前缀=192.168.0.1/32   201   VPNID=16,地址前缀=10.11.*.*/16   …   …
前缀存储器在设置了表1和表2所示的地址前缀表项后,本发明实施 例的进行地址前缀匹配、数据报文转发的过程如附图3所示。
图3中,在步骤300、路由设备接收到数据报文,路由设备开始进行 数据报文的转发处理。
到步骤310,路由设备判断数据报文对应的VPNID值是否小于16, 如果小于16,则到步骤320,路由设备使用数据报文的VPNID和DIP查询 存储单元宽度为72bit的CAM2。到步骤330。
在步骤310,如果路由设备判断数据报文对应的VPNID值不小于16, 则到步骤321,路由设备使用数据报文的VPNID和DIP查询存储单元宽度 为36bit的CAM1。到步骤330。
在步骤330,路由设备从CAM1或CAM2的查找过程中获得匹配的地 址前缀表项。
到步骤340,路由设备根据该匹配的地址前缀表项从关联的转发信息 表项中获得路由信息,并对该数据报文进行转发。到步骤350,本次数 据报文的转发过程结束。
例2、路由设备中设置有一个CAM,且该CAM的存储单元宽度为 72bit。路由设备根据VPNID值的大小,将地址前缀表项区分为两种:一 种是36bit的表项,另一种是72bit的表项。
对于地址前缀表项中0<VPNID<16的情况,路由设备将两个这样的 地址前缀表项存储在CAM的一个存储单元中。
对于地址前缀表项中VPNID≥16的情况,路由设备将一个这样的地 址前缀表项存储在CAM的一个存储单元中。
路由设备在设置了CAM中的地址前缀表项后,CAM中的存储单元 可以划分为大位宽区域和小位宽区域,大位宽区域即一个存储单元存储 一个地址前缀表项,小位宽区域即一个存储单元存储两个地址前缀表 项。路由设备进行数据报文转发的过程如附图4所示。
图4中,在步骤400、路由设备接收到数据报文,路由设备开始进行 数据报文的转发处理。
到步骤410,路由设备判断数据报文对应的VPNID值是否小于16, 如果小于16,则到步骤420,路由设备使用数据报文的VPNID和DIP查询 大位宽区域。到步骤430。
在步骤410,如果路由设备判断数据报文对应的VPNID值不小于16, 则到步骤421,路由设备使用数据报文的VPNID和DIP根据从低位表项到 高位表项的顺序查询小位宽区域,并从匹配结果中选择一个最佳匹配表 项,即选择一个最长匹配表项。到步骤430。
在步骤430,路由设备从大位宽区域或小位宽区域的查找过程中获得 匹配的地址前缀表项。
到步骤440,路由设备根据该匹配的地址前缀表项从关联的转发信息 表项中获得路由信息,并对该数据报文进行转发。到步骤450,本次数 据报文的转发过程结束。
在上述描述中,是以VPNID是否小于16为界线来进行位宽区域划分 及地址前缀表项匹配的,在实际应用中也可以采用其他数值,如以 VPNID是否小于1~16中的任意值为依据进行位宽区域划分及地址前缀 表项匹配。
在上述描述中,如果CAM存储空间中还存储有其它类型的转发表 项,如流分类表等,即有多种表项共用CAM存储空间时,则CAM中需 要存储用于区分表项类型的标识,该表项类型标识占用的位宽需要计算 在VPNID占用的位宽中。
通过上述描述可以看出,本发明有效提高了前缀存储器如CAM的利 用率,在VPN业务相对公网业务的比例不是很大的情况下,其效果尤为 明显,如在某运营商的路由设备中,如果公网路由数量占了90%以上, 则采用本发明提供的技术方案,相对于现有技术一而言,可以节省45% 以上的CAM存储空间。
为实现上述方法,本发明实施例还提供一种地址前缀查找装置,请 参照图5,该图是该装置的结构框图,其主要包括前缀存储器301、判 断模块302、地址寄存器303和匹配模块304,其中各个组成部分的主 要功能如下:
前缀存储器301,通常为CAM,包括至少两个存储区域,各个存储 区域分别存储相应长度的地址前缀,在本实施例中,包括144位区3011 和72位区3012,分别存储掩码长度大于72比特和小于等于72比特的 地址前缀;
CAM的存储空间还可以划分为32bit位宽的存储区域和72bit位宽 的存储区域,这样,当路由设备支持的VPN数量超过16个时,VPNID 不大于16的地址前缀表项可以存储在32bit位宽的存储区域中,VPNID 大于16的地址前缀表项可以存储在72bit位宽的存储区域中。前缀存储 器存储区域的位宽区域区分可以采用上述实施例中描述的三种方法,在 此不再详细描述。
判断模块302,用于接收地址前缀,根据存储器分区规则提取地址 前缀的有效高位,分别发送到相应的存储区域,在本实施例中,判断模 块302可以判断掩码长度是否大于72比特,如果大于将地址前缀发送 到144位区3011保存,如果小于等于72比特,提取地址前缀的高位72 比特发送到72位区3012保存。判断模块302也可以根据地址前缀中 VPNID的大小将接收的地址前缀发送到相应的存储区域,在本实施例 中,判断模块302可以判断VPNID是否大于16,如果大于16,将地址 前缀发送到72bit位宽的存储区域中,如果不大于16,将地址前缀发送 到36bit位宽的存储区域中。
地址寄存器303,用于接收前缀存储器301发送的各个存储区域的 起始地址并保存;为最大限度的提高存储效率,前缀存储器301内部各 个存储区域是动态分布的,即随着存储的地址前缀长度的分布改变各个 存储区域的大小,为方便匹配模块304快速匹配,前缀存储器301将各 个存储区域的起始地址发送给地址寄存器303进行保存,以供匹配模块 304读取;
在IPV6系统中,匹配模块304,用于接收IP报文,提取所述IP报 文中的DIP,在前缀存储器301中的一存储区域里查找是否有和所述DIP 匹配的表项,如有匹配表项,读取与该表项关联的转发信息表项,如没 有匹配表项,根据所述CAM分区的规则提取目的IP地址的有效高位, 查找下一个存储区域。查找下一个存储区域,可以直接查找紧接的下一 个存储区域,也可以为减少查找次数,先根据分区规则提取有效高位, 并去地址寄存器查找对应存储区域的起始地址,在对应存储区域中查找 是否有和有效高位匹配的地址前缀。在本实施例中,先用128位DIP和 144位区3011的每一个表项进行匹配,如果匹配,将匹配得到的表项作 为地址前缀;如果不匹配,提取128位DIP的高72比特,和72位区的 每一个表项进行匹配,如果匹配,将匹配得到的表项作为地址前缀,否 则发出结束指令。
在IPV4系统中,匹配模块304,用于接收IP报文,提取所述IP报 文中的VPNID,并根据该VPNID的大小,判断该IP报文对应的存储区 域,然后,在相应的存储区域中查找与该IP报文的VPNID和DIP匹配 的地址前缀表项。当前缀存储器中包括两个或多个CAM、或者一个CAM 的一个存储单元存储有一个或多个地址前缀表项时,匹配模块304执行 的匹配操作的具体过程如上述实施例方法中的描述。
本发明实施例还提供一种报文转发系统,包括所述的地址前缀查找 装置,转发信息存储器和发送装置,所述转发信息存储器用于存储转发 信息表,所述发送装置用于根据转发信息发送报文,匹配模块查找得到 地址前缀后,读取转发信息存储器中与地址前缀相关联的转发信息表 项,发送给发送装置,发送装置根据该转发信息表项中的路由信息发送 报文。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱 离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发 明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和 变型在内。
QQ群二维码
意见反馈