一种快速两次流分类查找方法

文档序号:7629570阅读:213来源:国知局
专利名称:一种快速两次流分类查找方法
技术领域
本发明涉及一种数据处理技术,更确切地说是涉及一种对数据流进行分类、识别的流分类技术,应用于数据通信领域的高速分组转发设备,如高速路由器等中。
流分类技术是分组通讯网络设备中的一项关键技术,用于实现服务质量(QoS)、虚拟专网(VPN)、包过滤等业务,高速网络设备要求有快速的流分类技术,特别是能够快速进行连续两次查找操作的流分类查找技术,该流分类查找技术在每个数据包要求做两次流分类查找的情况下也应能满足高速网络设备上的OC-48端口速率的要求。
实现流分类技术现有多种方法,大致可分为两类一类是基于普通存储器如SDRAM的实现方法,另一类是采用CAM器件(主要是新一代的三值CAM器件)再附加SRAM的实现方法。
基于普通存储器的流分类方法的算法复杂度一般较高,对存储器的需求量很大,性能比较低,难以满足高速路由器上的OC-48端口的要求;另外,在每个分组需要查找两个以上流分类表,如QoS策略表、包过滤策略表等的情况下,不能提供优化算法,而在不增加并行查找模块的情况下,分组处理速度又将成倍减小。
现有的采用CAM器件的流分类技术,其实现结构如附

图1中所示,цp是微处理器,ASIC是控制芯片,CAM器件中存储有用于查找各种表的关键字,SRAM中存储有关键字的附带内容。ASIC与CAM间连接有数据总线(CBUS)及命令(或指令)总线(IBUS)。在进行流分类查找时,由CAM给出地址,再从SRAM的相应地址单元中读出数据。该方式可以实现高度的并行流水线查表,性能可以达到很高,但由于该技术方案需要增加额外的SRAM,不仅增加了成本,还使实现复杂度增加。
IPCAM是Netlogic公司推出的一种高性能CAM器件,可将查找的关键字和欲查找的内容都存储在IPCAM中,利用该IPCAM实现流分类,可无需额外的存储器,其实现结构如图2中所示。
Netlogic公司给出的对IPCAM器件进行操作的方法是首先对IPCAM发出比较(查找)指令,然后等待1个时钟周期,再对IPCAM发出读匹配内容指令,随后又等待一个时钟周期,最后从IPCAM的数据总线(CBUS)上读出欲查找的内容。这种方式实现最简单,在相同规格的CAM中能够容纳流分类表的关键字与内容的情况下,这种方式的成本也能比较低,但这种方式基本不能实现并行流水线查表,性能难以达到很高。
图3示出可利用该IPCAM器件进行连续两次查找的流分类操作时序。在第一个时钟周期(CLK),通过IBUS向IPCAM器件发出WCR命令,即命令将数据总线CBUS上的查找关键字的低64位数据D0-0写入IPCAM中的比较寄存器中;在第二个时钟周期(CLK),通过IBUS向IPCAM器件发出WCRCMP命令,即命令将数据总线CBUS上的查找关键字的高64位数据D0-1写入IPCAM中的比较寄存器中,并且使IPCAM开始比较(查找)操作;第三个时钟周期(CLK)等待(NOP);第四个时钟周期(CLK),通过IBUS向IPCAM器件发出MEM RD命令,即用MEM RD指令读出所查找的匹配地址处的内容;在第五到第六个时钟周期(CLK)期间,可在CBUS上读出所查找的匹配地址处的内容;最后一个时钟周期即第七个时钟周期(CLK)是为了避免CBUS从读状态转换到写状态而插入的一个等待周期,是一个操作开销周期。图中所示的/WEN用于控制将CBUS(64位)上的高、低32位数据写入比较寄存器的,/WEN
为‘0’则允许CBUS上的低32位数据写入寄存器的低32位,/WEN[1]为‘0’则允许CBUS上的高32位数据写入寄存器的高32位,/WEN=00表示允许CBUS上的64位数据全部写入寄存器;ULEN用于控制写入查找关键字的高、低64位数据D0-0与D0-1;/SMF用于表示查找操作的匹配状况。
对于需要连续两次查找的情况,就需要重复上述的操作过程,则共需要14个时钟周期(CLK)才能完成,因此整个操作过程所需的时间较长,影响了处理吞吐率,无法满足高速网络设备上的0C-48端口速率的要求。
在高速路由器上需要有高性能的流分类查表技术,下表列出了几种端口速率和几种每报文查表次数情况下所需要达到或接近的查表性能,单位为M(百万)次/秒
本发明的目的是设计一种快速两次流分类查找方法,能快速处理连续两次流分类查找,且复杂度低、成本低。
实现本发明目的的技术方案是这样的一种快速两次流分类查找方法,采用如下处理步骤A.采用IPCAM器件,IPCAM器件中存储有关键字及其附带内容,并让IPCAM器件通过数据总线(CBUS)及命令总线(IBUS)与控制芯片连接;B.控制芯片通过命令总线(IBUS)向IPCAM器件连续发出两个查找关键字指令;C.控制芯片紧接着再通过命令总线(IBUS)向IPCAM器件连续发出两个读匹配内容指令;D.控制芯片连续两次从数据总线(CBUS)上读出两次查找结果。
所述的步骤B、C、D进一步包括
a.在第一个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第一个查找关键字的低64位数据(D0-0)写入IPCAM中的比较寄存器中;b.在第二个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第一个查找关键字的高64位数据(D0-1)写入IPCAM中的比较寄存器中,并且使IPCAM开始第一个查找关键字的比较(查找)操作;c.在第三个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第二个查找关键字的低64位数据(D1-0)写入IPCAM中的比较寄存器中;d.在第四个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第二个查找关键字的高64位数据(D1-1)写入IPCAM中的比较寄存器中,并且使IPCAM开始第二个查找关键字的比较(查找)操作;e.在第五个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出读出所查找的第一个关键字匹配地址处内容的指令;f.在第六个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出读出所查找的第二个关键字匹配地址处内容的指令;g.在第七到第九个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出等待指令,同时在第七到第八个时钟周期(CLK),在数据总线(CBUS)上先后读出所查找的第一、第二个关键字匹配地址处的内容。
所述第九个时钟周期(CLK)是一操作开销周期,用于禁止数据总线(CBUS)从读出状态转换到写入状态。
在采用IPCAM实现流分类,并且将流分类表的关键字和内容都存储在IPCAM中的情况下,对于每个报文需要作多次流分类查表的情况,本发明的方法在一定程度上实现了并行流水线查表,在性能上相对于非并行流水线查表方法有很大的提高。
本发明利用由IPCAM提供的比较(Compare Valid Entries)指令和读匹配内容(Read CAM word at HPM Address)指令,再经过特殊的流水线处理,可实现连续两次查找。对于IPCAM的这种应用方式不仅省去了额外的存储器本身,而且省去了与存储器相关的仲裁、控制等逻辑电路。
本发明的快速两次流分类查找方法,针对需要连续作两次查找的情况,采用了并行流水线的方法,在对IPCAM发出第一个查找指令后,紧接着就发出第二个查找指令,然后连续发出两个读匹配内容指令,最后连续获得两次查找的结果,整个查找操作过程仅需9个时钟周期,比图3所示的连续两次查找操作省5个时钟周期,有效地减少了连续两次查找操作的时间,此时时钟只需为50MHz,即能满足OC-48速率端口的分组吞吐率要求。
在每个报文需要查两次流分类表的情况下,假设查表控制芯片的时钟频率为50MHz,则采用一般的非并行流水线查表方式(图3),每次查表需7个时钟周期,查表性能为7.1M次/秒,不能满足OC-48端口的要求;而采用本发明的两次并行流水线查表方式,平均每次查表只需4.5个时钟周期,查表性能为11.1M次/秒,能够满足OC-48端口的要求。
采用本发明的方法,能够实现多个(>6个)域的高速流分类查找(>4M/s),可支持大规模的流分类表(>8k条规则),并且针对每个分组需要查两次表的情况做了特殊的优化处理,保持了高速性能,能够满足OC-48速率端口的应用要求。该流分类方法在Radium8750v2上的应用达到了2个千兆以太网接口或者2个OC-12 POS接口的线速处理(包长任意)的水平。
下面结合实施例及附图进一步说明本发明的技术方案。
图1是现有的采用CAM器件实现流分类的原理性结构框图。
图2是现有的采用IPCAM器件实现流分类的原理性结构框图。
图3是采用图2所示结构进行流分类查找操作的时序示意图。
图4是采用图2所示结构及本发明的方法进行快速连续两次流分类查找操作的时序示意图。
图1至图3的说明前已述及,不再赘述。
参见图4,CLK是时钟,IBUS是指令总线,CBUS是数据总线,图中所示的/WEN用于控制将CBUS(64位)上的高、低32位数据写入寄存器的,/WEN
为‘0’则允许CBUS上的低32位数据写入寄存器的低32位,/WEN[1]为‘0’则允许CBUS上的高32位数据写入寄存器的高32位,/WEN=00表示允许CBUS上的64位数据全部写入寄存器;ULEN用于控制写入查找关键字的高、低64位数据D0-0与D0-1、D1-0与D1-1;/SMF用于表示查找操作的匹配状况,WCR命令将数据总线(CBUS)上的查找关键字的低64位数据D0-0、D1-0写入IPCAM的比较寄存器,WCRCMP命令将CBUS上的查找关键字的高64位数据D0-1、D1-1也写入IPCAM的比较寄存器,并且使IPCAM开始比较(查找)操作,MEM RD指令用于从CBUS上读查找匹配地址处内容。
快速两次流分类查找方法,包括采用IPCAM器件,在IPCAM器件中存储关键字及其附带内容,并让IPCAM器件通过数据总线(CBUS)及命令总线(IBUS)与控制芯片连接。首先,控制芯片通过命令总线(IBUS)向IPCAM器件连续发出两个查找关键字指令;控制芯片紧接着再通过命令总线(IBUS)向IPCAM器件连续发出两个读匹配内容指令;最后,控制芯片连续两次从数据总线(CBUS)上读出两次查找结果。
快速连续两次流分类查找操作时序,在第一、第二时钟周期(CLK),由控制芯片通过IBUS向IPCAM发出第一次比较(查找)命令WCR、WCRCMP,数据总线CBUS上相应的所查找关键字的低64位、高64位数据D0-0、D0-1先后写入IPCAM的比较寄存器中,并使IPCAM开始第一个关键字的比较(查找);紧接着在第三、第四时钟周期又由控制芯片通过IBUS向IPCAM发出第二次比较(查找)命令WCR、WCRCMP,数据总线(CBUS)上相应的所查找关键字的低64位、高64位数据D1-0、D1-1也先后写入IPCAM的比较寄存器中,并使IPCAM开始第二个关键字的比较(查找);然后在第五、第六时钟周期,由控制芯片通过IBUS向IPCAM连续发出两个读匹配地址(关键字的低64位、高64位数据)处内容的命令MEM RD、MEM RD;然后在第七至第八时钟周期,由控制芯片连续两次从数据总线(CBUS)上读取两次查找结果(RESULT0、RESULT1),即两个匹配地址处的内容;最后的第九个时钟周期是一操作开销周期,是为了避免数据总线(CBUS)从读出状态转换到写入状态而插入的一个等待周期。
本发明的方法,试用于MPLS及DiffServ骨干网边缘路由器中,以实现复杂的多域流分类操作。
MPLS及DiffServ骨干网边缘路由器需要完成数据报文的分类识别操作,以实现QoS、包过滤等功能。由于这种分类识别操作需要根据IP报文中的源IP地址、目的IP地址、源TCP/UDP端口、目的TCP/UDP端口、传输层协议类型等多个信息数据域来进行,即多域流分类操作,其硬件实现技术难度相当高。
采用本发明的方法,将多域流分类操作所需的信息数据及所要得到的内容全部存储在IPCAM芯片中,由于IPCAM芯片的每个单元为128位宽,是足够存储这些数据的。
应用本发明的方法,对每个IP报文作两次多域的流分类操作,包括对源IP地址、目的IP地址、源TCP/UDP端口、目的TCP/UDP端口、传输层协议、路由器接口号等的流分类操作,分别实现QoS和包过滤功能,性能达到了OC-48端口线速处理的水平,且大大降低了所实现的多域流分类技术的难度。
权利要求
1.一种快速两次流分类查找方法,包括采用IPCAM器件,在IPCAM器件中存储关键字及其附带内容,并让IPCAM器件通过数据总线(CBUS)及命令总线(IBUS)与控制芯片连接;其特征在于还包括如下处理步骤A.控制芯片通过命令总线(IBUS)向IPCAM器件连续发出两个查找关键字指令;B.控制芯片紧接着再通过命令总线(IBUS)向IPCAM器件连续发出两个读匹配内容指令;C.控制芯片连续两次从数据总线(CBUS)上读出两次查找结果。
2.根据权利要求1所述的一种快速两次流分类查找方法,其特征在于所述的步骤A进一步包括a.在第一个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第一个查找关键字的低64位数据(D0-0)写入IPCAM中的比较寄存器中;b.在第二个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第一个查找关键字的高64位数据(D0-1)写入IPCAM中的比较寄存器中,并且使IPCAM开始第一个查找关键字的比较(查找)操作;c.在第三个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第二个查找关键字的低64位数据(D1-0)写入IPCAM中的比较寄存器中;d.在第四个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出将数据总线(CBUS)上的第二个查找关键字的高64位数据(D1-1)写入IPCAM中的比较寄存器中,并且使IPCAM开始第二个查找关键字的比较(查找)操作。
3.根据权利要求1所述的一种快速两次流分类查找方法,其特征在于所述的步骤B进一步包括e.在第五个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出读出所查找的第一个关键字匹配地址处内容的指令;f.在第六个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出读出所查找的第二个关键字匹配地址处内容的指令。
4.根据权利要求1所述的一种快速两次流分类查找方法,其特征在于所述的步骤C进一步包括在第七到第九个时钟周期(CLK),通过命令总线(IBUS)向IPCAM器件发出等待指令,同时在第七到第八个时钟周期(CLK),在数据总线(CBUS)上先后读出所查找的第一、第二个关键字匹配地址处的内容。
5.根据权利要求4所述的一种快速两次流分类查找方法,其特征在于所述第九个时钟周期(CLK)是一操作开销周期,用于禁止数据总线(CBUS)从读出状态转换到写入状态。
6.根据权利要求2至5所述的一种快速两次流分类查找方法,其特征在于所述的第五至第六个时钟周期是紧接着所述的第四个时钟周期连续发出的;所述的第七至第九个时钟周期是紧接着所述的第六个时钟周期连续发出的;所述的第一至第四个时钟周期是紧接着所述第九个时钟周期连续发出的。
全文摘要
本发明涉及一种快速两次流分类查找技术,用于分组通讯网络设备中,实现QoS、VPN、包过滤等业务,是利用IPCAM器件实现的一种低成本、低复杂度的方法,在每个数据包要求做两次流分类查找时能满足高速网络设备0C-48端口速率的要求。包括:在IPCAM器件中存储关键字及其附带内容,并通过数据及命令总线与控制芯片连接;控制芯片通过命令总线向IPCAM器件连续发出两个查找关键字指令;紧接着向IPCAM器件连续发出两个读匹配内容指令;再连续两次从数据总线上读出两次查找结果。
文档编号H04L12/56GK1390018SQ0111855
公开日2003年1月8日 申请日期2001年6月1日 优先权日2001年6月1日
发明者刘毓, 王青松, 杨雄 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1