CN1327674C - 核心路由器上支持访问控制列表功能的双栈兼容路由查找器 - Google Patents

核心路由器上支持访问控制列表功能的双栈兼容路由查找器 Download PDF

Info

Publication number
CN1327674C
CN1327674C CNB2005100113566A CN200510011356A CN1327674C CN 1327674 C CN1327674 C CN 1327674C CN B2005100113566 A CNB2005100113566 A CN B2005100113566A CN 200510011356 A CN200510011356 A CN 200510011356A CN 1327674 C CN1327674 C CN 1327674C
Authority
CN
China
Prior art keywords
register
mentioned
input
data
links
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.)
Expired - Fee Related
Application number
CNB2005100113566A
Other languages
English (en)
Other versions
CN1655534A (zh
Inventor
赵有健
关洪涛
吴建平
张小平
乐祖晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CNB2005100113566A priority Critical patent/CN1327674C/zh
Publication of CN1655534A publication Critical patent/CN1655534A/zh
Application granted granted Critical
Publication of CN1327674C publication Critical patent/CN1327674C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

核心路由器上支持访问控制列表功能的双栈兼容路由查找器属于因特网主干网核心路由器硬件技术领域。其特征在于它是由一片FPGA构成的包预处理电路组件和级联两片CAM和SRAM构成的,它通过利用TCAM系统来构造一个路由和ACL表项共存的查找表,支持表项条数的动态分配;包预处理电路组件接收数据包后对包类型进行处理,提取路由查找所需要信息及ACL过滤所需要信息,送交TCAM系统进行查找,再根据返回的查找结果决定处理包的方式,对于转发的数据包,则送交交换网络,同时他还负责TCAM系统的读写及维护功能。系统不仅保证线速度处理,而且在使用ACL的情况下几乎不影响转发性能。

Description

核心路由器上支持访问控制列表功能的双栈兼容路由查找器
技术领域
核心路由器中具有访问控制列表功能的双栈路由查找器属于因特网主干网核心路由器的技术领域。
背景技术
如今在市场上的高端路由器基本上都是使用网络处理芯片配合TCAM实现的路由查找器。各厂家的具体实现方式各不相同。有的使用专门定制的ASIC芯片,有的使用NP芯片,也有的使用的是FPGA。例如港湾公司的NetHammerG系列路由器使用NP结合TCAM技术处理实现,TCAM芯片提供9M容量。
FPGA(Field Programmable Gate Array)是上世纪80年代末开始使用的大规模可编程数字集成电路器件。它充分利用计算机辅助设计技术进行器件的开发与应用。用户借助于计算机不仅能自行设计专用集成电路芯片,还可在计算机上进行功能仿真和实时仿真,及时发现问题,调整电路,改进设计方案。这样,设计者不必动手搭接电路、调试验证,只须在计算机上操作很短的时间,即可设计出与实际系统相差无几的理想电路。而且,FPGA器件采用标准化结构,体积小、集成度高、功耗低、速度快,可无限次反复编程,因此,成为科研产品开发及其小型化的首选器件,其应用极为广泛。
CAM(Content Addressable Memory)是目前使用最多的用来硬件实现快速的路由查找的器件,CAM能够在一个硬件时钟周期内完成关键字的精确匹配查找。我们常用的随机存储器通过输入地址来返回该地址处所对应的数据信息,但是CAM的访问方式不同,它只需要输入关键字的内容,CAM就会将此关键字与CAM中所有的表项同时进行匹配比较,最后返回匹配表项在CAM中所对应的地址为了能够使用CAM来进行最长前缀路由的查找,我们可以为每一类可能的地址前缀长度使用一个CAM,每个CAM保存对应长度的所有前缀集合。对于IPv4来说,一共需要使用32个CAM。这种方法有一个明显的缺点,在对地址前缀长度具体分布没有准确的了解之前,为了能够保证能够存储N个前缀表项,每个CAM都需要有N个表项的空间,因此CAM存储空间的利用率大大降低了。
为了能够克服上述方法的缺点,又提出了一种CAM实现机制—ternary CAM(TCAM),TCAM的优点是它所保存的表项在长度要求上非常灵活,即可以在同一个TCAM芯片中保存任意长度的关键字表项。TCAM通过保存关键字掩码的方式使得它可以保存任意长度的关键字表项,因此使用TCAM非常适合进行最长前缀路由的查找,目前不少工业界的厂商都在进行对TCAM的设计研究。由于可能存在多个表项匹配的情况,因此TCAM需要在这些匹配的表项中选取一个表项作为最后的查找结果,TCAM规定在所有匹配的表项中选取地址最低的表项作为最后的结果。
发明内容
本发明目的在于提供一个核心路由器上支持访问控制列表功能的双栈兼容路由查找器。具体的实现依靠的是FPGA和TCAM的技术。通过将访问控制列表和路由表的有机结合使TCAM得到更充分和灵活的利用,并通过FPGA内部的流水线结构设计保证线速度的处理能力。
本发明的特征在于:
它含有:
■包预处理电路组件,简称PPM,它是在大规模可编程数字集成电路器件中实现的,它含有:
包输入接口电路,它通过IP包输入端口对IP包进行格式转化;
包输入队列存储器,它是一个先进先出队列存储器,它的输入端与上述包输入接口电路的IP包输出端相连,所述IP包的数据宽度为32位;
包头处理电路,它的输入端与上述包输入队列存储器的IP包输出端相连;
包缓存存储器,它是上述大规模可编程数字集成电路器件中的双端口静态RAM,它的输入端与上述包头处理电路的IP包内容输出端相连,它的写地址由上述包头处理电路维护;
查询队列存储器,它是一个先进先出队列存储器,它有一个查找信息写入端,该写入端与上述包头处理电路相应的输出端相应,当包头处理电路收到一个完整且正确的IP包后,在若干周期内向该写入端输入宽度为96位的查找信息;
发送信息队列存储器,它是一个先入先出队列存储器,它有一个与上述包头处理电路相应的输出端相连的上述IP包的信息输入端,上述包头处理电路在把查找信息写入上述查询队列存储器的同时向所述发送信息队列存储器发送数据宽度为62位的上述IP包的信息,其中包括:12位包属性信息、8位v4属性信息、6位v6属性信息、2位包尾有效字信息、17位包缓存开始地址、17位包缓存终止地址,v4、v6分别为IPv4、IPv6协议的简写;
CAM接口电路,它的查找信息输入端与上述查询队列存储器的输出端相连,该查询队列存储器的输出端输出具有下列数据结构的信息:位于第95位至72位的控制CAM接口电路的操作信息,位于第71位至第0位的要由所述CAM接口电路送交CAM数据总线查找的信息,其中包括位于第71位至第64位的这一条CAM字的表项类型信息以及第63位至第0位的上述IP包的数据内容信息;
CPU接口电路,它与上述CAM接口电路互连,该CAM接口电路通过CPU接口电路接收来自外部CPU的指令,并在查表间隙利用自己内部的流水线结构配合下述CAM的时序关系在收到所述CPU指令后对CAM中的数据进行维护;
查询结果队列存储器,它的查询结果信息输入端与上述CAM接口电路的相应输出端相连,并接收上述CAM接口电路数据结合上述查询队列存储器中读出数据的第95位至第72位的控制信息而得到的145位查询结果信息,该查询结果信息具有下列数据结构:4位数据处理方式信息、5位内部协议信息、8位发送接口卡号端口号以及128位下一跳IP地址;
包发送电路,它的发送信息输入端与上述发送信息队列存储器的相应输出端相连;它的查询结果信息输入端与上述查询结果队列存储器相应输出端相连;他的数据输入端在所述包发送电路收到上述发送信息和查询结果信息后从上述包缓存存储器的数据输出端读出数据;它的数据包输出端与外部的交换网络的IP包输入端相连;
上交包存储器,它的输入端与上述包发送电路的上述IP包输出端相连;它的上交IP包输出端与上述CPU接口电路上交包输入端相连;
在所述的包预处理电路组件中,所述的包头处理电路是一个电路组件,它包含:
输入IP包数据寄存器,它的输入端与上述包输入队列存储器的输出端相连;
32位目的IP地址寄存器v4、32位源IP地址寄存器v4、16位源协议端口寄存器v4、16位目的协议端口寄存器v4、8位协议域寄存器v4、以及4位数据包进入接口号寄存器v4,他们的数据输入端分别与上述输入IP包数据寄存器的输出端相连;
路由查询信息寄存器v4,它的数据输入端与上述目的IP地址寄存器v4的相应输出端相连;
访问控制列表即ACL的查询信息寄存器v4,它的各个数据输入端分别与上述目的IP地址寄存器v4、源IP地址寄存器v4、源协议端口寄存器v4、目的协议端口寄存器v4、协议域寄存器v4、数据包进入接口号寄存器v4的各相应输出端相连;
128位目的IP地址寄存器v6、128位源IP地址寄存器v6、20位流标号寄存器v6以及4位数据包进入接口号寄存器v6,他们的各数据输入端分别与上述输入IP包数据寄存器的各相应输出端相连;
路由查询信息寄存器v6,它的数据输入端与上述目的IP地址寄存器v6的输出端相连;
ACL查询信息寄存器v6,它的各输入端分别与上述源IP地址寄存器v6、流标号寄存器v6、数据包进入接口号寄存器v6的相应输出端相连;
查询信息寄存器,它的各数据输入端分别与上述路由查询信息寄存器v4、ACL查询信息寄存器v4、路由查询信息寄存器v6、ACL查询信息寄存器v6的各相应输出端相连;它的查询信息输出端与上述查询队列存储器的相应输入端相连;
包附加信息寄存器,它的数据输入端与上述输入IP包数据寄存器的相应输出端相连;
输出IP包数据寄存器,它的数据输入端与上述输入IP包数据寄存器的相应输出端相连;它的数据输出端与上述包缓存存储器的相应输入端相连;
包缓存寄存器写地址寄存器,它的写地址输入端与上述输出IP包数据寄存器的相应输出端相连;它的地址输出端与上述包缓存存储器的相应输入端相连;
包缓存起始、终止地址寄存器,它的起始、终止地址输入端与上述包缓存存储器的写地址寄存器的相应输出端相连;
内部控制状态机,它的控制信息输入端与上述输入IP包数据寄存器的相应输出端相连;它的各控制信号输出端分别与上述包附加信息寄存器、包缓存起始终止地址寄存器、目的IP地址寄存器v4、源IP地址寄存器v4、源协议端口寄存器v4、目的协议端口寄存器v4、协议域寄存器v4、数据包进入接口号寄存器v4、路由查询信息寄存器v4、ACL查询信息寄存器v4、目的IP地址寄存器v6、源IP地址寄存器v6、流标号寄存器v6、数据包进入接口号寄存器v6、路由查询信息寄存器v6、ACL查询信息寄存器v6、查询信息寄存器的相应输入端相连;
发送信息寄存器,它的各数据输入端分别与上述包附加信息寄存器、包缓存起始、终止地址寄存器的相应输出端相连;它的控制信号输入端与上述内部控制状态机的相应输出端相连;它的发送信息输出端与上述发送信息队列存储器相应输入端相连;
在所述的包预处理电路组件中,所述的包发送电路是一个电路组件,它包含:
包发送信息寄存器,它的输入端与上述发送信息队列寄存器的输出端相连;
包存储器起始地址寄存器,它的起始地址输入端与上述包发送信息寄存器的相应输出端相连;
包发送端口号寄存器,它的包发送端口号输入端与上述包发送信息寄存器的相应输出端相连;
包存储器终止地址寄存器,它的终止地址输入端与上述包发送信息寄存器的相应输出端相连;
附加数据寄存器,它的附加数据输入端与上述包发送端口号寄存器的相应输出端相连;
存储器下一地址寄存器;
比较器,它的两个输入端分别与上述存储器下一地址寄存器的下一地址输出端以及上述包存储器终止地址寄存器的终止地址输出端相连;
第一多路数据选择器,它的各个数据输入端分别与上述包存储器起始地址寄存器、存储器下一地址寄存器的各输出端相连;
包存储器读地址寄存器,它的读地址输入端与上述第一多路数据选择器的相应输出端相连;它的读地址输出端与上述包缓存存储器的相应输入端相连;
+1计数器,它的输入端与上述包存储器读地址寄存器的读地址输出端相连;它的计数输出端与上述存储器下一地址寄存器的输入端相连;
IP包数据寄存器,它的IP包数据输入端与上述包缓存存储器的相应输出端相连;
第二多路数据选择器,它的两个数据输入端分别与上述附加数据寄存器、IP包数据寄存器的相应输出端相连;它的两个数据输出端分别与上述上交包存储器、外部交换网络的IP包输入端相连;
查询结果信息寄存器,它的输入端与上述查询结果队列寄存器的查询结果信息输出端相连;
内部控制状态机,它的两个控制信息输入端分别与上述查询结果信息寄存器和比较器的相应输出端相连;它的三个控制信号输出端分别与上述包发送信息寄存器、第一多路数据选择器的相应输入端和第二多路数据选择器的相应输入端相连;
在所述的包预处理电路组件中,所述的CAM接口电路是一个电路组件,它包含:
查询信息寄存器、查询队列状态寄存器,它们各自的数据输入端分别与上述查询队列存储器的相应输出端相连;
维护信息寄存器、维护队列状态寄存器,它们的指令输入端分别与上述CPU接口电路输出端相连;
第一多路选择器,它的两个数据输入端分别与上述查询信息寄存器、维护信息寄存器的相应输出端相连;
CPU读出数据寄存器,它的数据输出端与上述CPU接口电路的相应输入端相连;
查询结果寄存器,它的查询结果信息输出端与上述查询结果队列存储器的相应输入端相连;
第二多路选择器,它的数据输出端与上述CPU读出数据寄存器的数据输入端相连;
内部控制状态机,它的两个数据输入端分别与上述查询队列状态寄存器、维护队列状态寄存器的相应输出端相连;它的各控制信号输出端分别与上述第一多路选择器、第二多路选择器的相应输入端相连;
CAM指令信息寄存器,它的CAM指令信息输入端与上述第一多路选择器的相应输出端相连;
CAM指令寄存器,它的指令输入端与上述CAM指令信息寄存器的相应输出端相连;
CAM写入数据寄存器,它的CAM写入数据输入端与上述CAM指令信息寄存器的相应输出端相连;
CAM读出数据寄存器,它的读出数据输出端与上述第二多路选择器相应输入端相连;
SRAM写入数据寄存器,它的数据输入端与上述CAM指令信息寄存器的相应输出端相连;
SRAM读出数据寄存器,它的读出数据输出端与上述第二多路选择器的相应输入端相连;它的另一个读出数据输出端与上述查询结果寄存器的相应输入端相连;
CAM数据总线三态调度逻辑单元,它的输入端与上述CAM写入数据寄存器的输出端相连;它的输出端与上述CAM读出数据寄存器的输入端相连;
SRAM数据总线三态调度逻辑单元,它的输入端与上述SRAM写入数据寄存器的输出端相连;它的输出端与上述SRAM读出数据寄存器的输入端相连;
上述CAM指令信息寄存器、CAM指令寄存器、CAM写入数据寄存器、CAM读出数据寄存器、SRAM写入数据寄存器、SRAM读出数据寄存器、CAM数据总线三态调度逻辑单元、SRAM数据总线三态调度逻辑单元的各控制信号输入端分别与上述内部控制状态机的相应输出端相连;同时,上述查询信息寄存器、维护信息寄存器、查询队列状态寄存器、维护队列状态寄存器、CPU读出数据寄存器、查询结果寄存器的各控制信号输入端分别与上述内部控制状态机的各相应输出端相连;
在所述的包预处理电路组件中,所述的CPU接口电路是一个电路组件,它包含:
CAM接口电路写寄存器,它的输出端与上述CAM接口电路的输入端相连;
CAM接口电路读寄存器,它的输入端与上述CAM接口电路的相应输出端相连;
上交包存储器缓存寄存器,它的输入端与上述上交包存储器输出端相连;
内部控制状态机,它的各控制信号输出端分别与上述CAM接口电路写寄存器、CAM接口电路读寄存器,、上交包存储器缓存寄存器的相应输入端相连;
CPU数据总线三态调度逻辑单元,它的两个数据输入端分别与上述CAM接口电路读寄存器、上交包存储器缓存寄存器的输出端相连;它的数据输出端与上述CAM接口电路写寄存器的输入端相连;它同时又与外部CPU互连;
CPU控制信号寄存器,它的两个CPU控制信号输出端分别与上述内部控制状态机、CPU数据总线三态调度逻辑单元的相应输入端相连;
CPU地址寄存器,它的CPU地址输出端与上述内部控制状态机的相应输入端相连;该CPU地址寄存器的输入端与外部CPU的输出端相连;
该双栈路由查找器还包括CAM即内容可寻址存储器和SRAM。其中CAM是一个三态内容可寻址存储器,即TCAM,它同时存储双栈路由表项和ACL表项,每一条表项都仅使用64位的整数倍来表示数据包的内容,剩下的位用于表示此表项的类型;它的一个输入端与上述CAM接口电路中的CAM指令寄存器的输出端相连,而另一个输入端与上述CAM接口电路中的CAM数据总线三态调度逻辑单元互连。SRAM的一个输入端与上述CAM的输出端相连,而另一个输入端与上述CAM接口电路中的SRAM数据总线三态调度逻辑单元互连。
所述包预处理电路组件是由一片FPGA构成的。
所述的CAM由两片IDT75k62100芯片构成,SRAM由两片IDT71t75602芯片构成。
实验效果
通过利用TCAM系统来构造一个路由和ACL表项并存的查找表,支持表项条数的动态分配。系统同时支持IP包的v4/v6双栈路由查找和IP包的v4/v6双栈ACL查找。系统不仅保证线速度处理,而且可以在配置使用ACL的情况下几乎不影响转发性能。
通过上述方法,使用一片EP1S25780(FPGA)和级联两片IDT75k62100(CAM)构建的路由查找器最大分别支持256k条v4路由表项,128k条v6路由表项,128k条v4ACL表项或64k条v6ACL表项。
该路由查找器使用于OC48线路接口卡上可以处理最小32字节最大32k字节数据包,达到线速度处理不丢包的性能。路由查找器中ACL查找功能可以被启动或是被屏蔽,当启动ACL时不会对路由查找的性能产生不良影响。
附图说明
图1 系统方框图
图2 CAM中v4路由表项的数据结构
图3 CAM中v6路由表项的数据结构
图4 CAM中v4的ACL表项的数据结构
图5 CAM中v6的ACL表项的数据结构
图6 PPM内部功能模块图
图7发送信息队列存储器中的数据结构
图8包头处理电路内部结构图
图9查询队列存储器中的数据结构
图10 CAM接口电路内部结构图
图11查询结果队列存储器中的数据结构
图12包发送电路内部结构图
图13 CPU接口电路内部结构图
具体实施方式
核心路由器中支持访问控制列表功能的双栈兼容路由查找器的实现主要在线路接口卡上完成的,这一部分功能是由一片命名为PPM的FPGA配合一组TCAM和一组SRAM芯片完成的。
(1)、PPM及周边芯片连接关系。
PPM是Packet Preprocessing Module的简写,意为“包预处理电路组件”。该电路组件主要功能是提取IP包头并进行分析和处理,PPM接收从高速网络接口收到的数据包,针对包类型进行处理,提取路由查找所需要的信息及ACL过滤所需要的信息送交TCAM系统进行查找。PPM收到TCAM系统(TCAM+SRAM)返回的查找结果,根据结果决定对IP包的处理方式(丢弃、转发或是上交CPU),对于转发的数据包,PPM完成将该数据包送交交换网络的功能。此外PPM还负责TCAM系统的配置及维护。
(2)、TCAM的配置。
系统上电后,必须先对TCAM进行初始化,才能使TCAM开始正常工作。由于TCAM本身可以工作在不同的查找宽度下,所以需要对TCAM进行相应的设置。这一点对于实现路由和ACL并存的表结构至关重要。TCAM芯片内由多个bank组成。每个bank的查找模式都是可配置的。比如:bank可配置成72位查找(IPv4路由查找),也可配置成144位查找(IPv6路由查找,或IPv4的ACL查找)或是288位查找(IPv6的ACL查找)。对于TCAM每个bank的设置可以在系统运行过程中动态调整。
(3)、添加TCAM表项
由于在一组TCAM内要同时存储双栈路由表项和ACL表项,而利用各种表项的表项长度不同来进行区分会带来极大的局限性,因为那样将要求不同类型的表项必须长度不同。所以设计中采用另外的机制来区分表项的类型。系统使用的TCAM支持的表项长度是72bit的整数倍,而在FPGA内部处理数据包的数据结构是以32bit作为一个数据字,因此系统对于每一条表项都仅使用64bit的整数倍来表示数据包的内容。剩下的位用于表示表项的类型。
(4)、PPM流水线处理机制
由于PPM的功能是配合TCAM系统来完成ACL查找和路由查找,并根据查找的结果来对收到的数据包进行转发、丢弃或是上交。因此PPM内部处理机制直接决定着系统的处理能力。在PPM设计中,巧妙利用流水线处理技术从而保证线速度的处理能力,并将加上ACL查找后对路由查找性能的影响尽量减小。
在核心路由器中具有访问控制列表功能的双栈路由查找器的实现中,PPM是最为关键的器件,它完成配合TCAM系统进行查找的功能。图1表示了PPM及其周边器件的连接关系。图6表示的是PPM内部的功能模块图。
从图中我们看到,一个IP包进入PPM,首先是由包输入接口电路进行处理。这一电路组件的功能是进行数据包格式的转化,由于PPM需要配合不同类型的高速网络接口,而各种接口的时序关系和数据结构略有区别,所以需要一个电路组件进行这方面的处理工作。这一部分功能与路由查找及ACL查找没有太大的关系。包输入接口电路完成对数据包的处理后将IP包写入数据宽度为32位的包输入队列存储器(先入先出队列存储器)中。
为了能够实现对IP包的快速处理,PPM内部采用流水线和整包缓存的处理机制,具体过程如下:包头处理电路从包输入队列存储器中接收数据包,将包的内容写入包缓存存储器中。包缓存存储器是一片FPGA内部的双端口静态RAM。包头处理电路在内部维护包缓存存储器的写地址。当包头处理电路收到一个完整并正确的数据包后,包头处理电路会在之后的若干时钟周期内将查找信息写入查询队列存储器(先入先出队列存储器)中,同时将该数据包的一些信息(包括该包存储在包缓存存储器中的起始地址、终止地址等)写入一个数据宽度为60位的发送信息队列存储器(先入先出队列存储器)中,具体数据结构如图7。
数据包进入包头处理电路后,包头处理电路将分析IP包头,提取IP包头中查找相关的信息。对于IPv4数据包,ACL查找相关的信息包括源IP地址(32bit),目的IP地址(32bit),协议号(8bit),源端口(16bit),目的端口(16bit),数据包进入接口卡的接口号(4bit),共108bit;路由查找关心的信息是下一跳IP(32bit)。对于IPv6数据包,ACL查找关心的信息包括源IP地址(128bit)和流标号(20bit),数据包进入接口卡的接口号(4bit),共计152bit;路由查找关心的信息是下一跳IP(128bit)。这就需要按照一定的方式来对TCAM的内容进行安排。系统中使用的TCAM芯片是IDT75k62100,它是IDT公司生产的TCAM芯片,支持72位,144位,288位和576位的查找。TCAM芯片内由多个bank组成。每个bank的查找模式都是可配置的。比如:bank可配置成72位查找(IPv4路由查找),也可配置成144位查找(IPv6路由查找、IPv4的ACL查找)或是288位查找(IPv6的ACL查找)。
包头处理电路除提取查找信息外,还要生成送交CAM接口电路的查找数据结构。包头处理电路与CAM接口电路之间通过宽度为96bit的查询队列存储器相连,包头处理电路将查找信息写入查询队列存储器中。查询队列存储器中的数据结构如图9所示。从数据结构中可以看出,它包含了两部分的内容:bit95-bit72表示的是控制CAM接口电路的操作信息,bit71-bit0表示的是由CAM接口电路送交CAM数据总线查找的内容。其中bit71-bit0又可以细分成两部分:bit71-bit64表示的是这一条CAM字的类型,bit63-bit0表示的是IP包的数据内容。这是与CAM内存储的数据结构相一致的。图2、图3、图4、图5分别表示了CAM中存储的v4路由表项、v6路由表项、v4的ACL表项、v6的ACL表项的数据结构。这里对查询队列存储器中的数据结构按位进行简单解释:
Bit94        给CAM数据总线输出有效
Bit89        给CAM的REQSTB
Bit88-bit85  给CAM的INST
Bit84-bit82  给CAM的LTIN
Bit81-bit78  给CAM的SEGSEL
Bit77-bit72  给CAM的GMASK
Bit91        查找的版本号
Bit92       ACL查找
Bit90       路由查找
Bit93       将结果写入查询结果队列存储器中
Bit71       CAM字有效(0表示无效,1表示有效)
Bit70       该表项的版本(0表示v4,1表示v6)
Bit69       该表项的类型(0表示路由表项,1表示ACL表项)
Bit63-bit0  IP包中的相关内容
数据结构中没有在上面列出来的位的功能保留。
从上面的数据结构中我们可以看出,包头处理电路已经针对CAM接口时序设计了数据结构,这就使CAM接口电路变得很简练。
在PPM中,CAM接口电路除了要读出查询队列存储器中的数据,完成查找功能外,还要能够接收来自CPU的指令对CAM中的数据进行维护。由于数据转发过程中写入查询队列存储器中的数据不足以造成CAM一直繁忙,因此可以利用查表的间隙来完成对CAM表项维护工作。CAM接口电路内部采用流水线结构,它会配合CAM的时序关系完成查表工作,并根据查询队列存储器中读出数据的bit95-bit72的控制信息来完成更新查找结果和将查找结果写入145bit的查询结果队列存储器中的工作,其数据结构见图11。
包发送电路是PPM中完成包发送的电路组件,它的功能是从发送信息队列存储器中读出包头处理电路发来的发送信息,同时从查询结果队列存储器中读出查CAM所得的结果信息,并根据这些信息来从包缓存存储器中读出数据,完成将数据包上交给软件的工作或是送交交换网络进行转发的工作。
CPU接口电路完成PPM内部其他电路组件与线路接口卡上的CPU通讯的功能。在PPM中,CPU接口电路除了要实现CPU与CAM接口电路的通讯功能外还要实现CPU读取PPM内部上交给CPU的数据包的数据通道。
为了能够保证流水线和整包缓存机制的正确性,必须对PPM内部的包缓存存储器的容量及各个队列存储器的深度进行限制。为了能够使PPM处理最小21字节,最大32k字节的数据包。包缓存存储器必须保证至少存储两个最大包的空间,也就是64k字节。此外,PPM内部对于21字节包的处理需要6(数据包以32bit宽度进行处理是6个32位字)+3(PPM内部处理开销)个时钟周期,对于32k包的处理需要8k+3个时钟周期。这样包发送电路在处理一个32k数据包的过程中,包头处理电路最多处理(8k+3)/(6+3)个数据包。所以发送信息队列存储器的深度取1k就可以满足需求。又因为CAM接口电路是采用流水线处理方式,所以查询结果队列存储器的深度也应该取1k以满足需求。

Claims (3)

1、核心路由器上支持访问控制列表功能的双栈兼容路由查找器,其特征在于,它含有:
包预处理电路组件,简称PPM,它是在大规模可编程数字集成电路器件中实现的,它含有:
◆包输入接口电路,它通过IP包输入端口对IP包进行格式转化;
◆包输入队列存储器,它是一个先进先出队列存储器,它的输入端与上述包输入接口电路的IP包输出端相连,所述IP包的数据宽度为32位;
◆包头处理电路,它的输入端与上述包输入队列存储器的IP包输出端相连;
◆包缓存存储器,它是上述大规模可编程数字集成电路器件中的双端口静态RAM,它的输入端与上述包头处理电路的IP包内容输出端相连,它的写地址由上述包头处理电路维护;
◆查询队列存储器,它是一个先进先出队列存储器,它有一个查找信息写入端,该写入端与上述包头处理电路相应的输出端相应,当包头处理电路收到一个完整且正确的IP包后,在若干周期内向该写入端输入宽度为96位的查找信息;
◆发送信息队列存储器,它是一个先入先出队列存储器,它有一个与上述包头处理电路相应的输出端相连的上述IP包的信息输入端,上述包头处理电路在把查找信息写入上述查询队列存储器的同时向所述发送信息队列存储器发送数据宽度为62位的上述IP包的信息,其中包括:12位包属性信息、8位v4属性信息、6位v6属性信息、2位包尾有效字信息、17位包缓存开始地址、17位包缓存终止地址,v4、v6分别为IPv4、IPv6协议的简写;
◆CAM接口电路,它的查找信息输入端与上述查询队列存储器的输出端相连,该查询队列存储器的输出端输出具有下列数据结构的信息:位于第95位至72位的控制CAM接口电路的操作信息,位于第71位至第0位的要由所述CAM接口电路送交CAM数据总线查找的信息,其中包括位于第71位至第64位的这一条CAM字的表项类型信息以及第63位至第0位的上述IP包的数据内容信息;
◆CPU接口电路,它与上述CAM接口电路互连,该CAM接口电路通过CPU接口电路接收来自外部CPU的指令,并在查表间隙利用自己内部的流水线结构配合下述CAM的时序关系在收到所述CPU指令后对CAM中的数据进行维护;
◆查询结果队列存储器,它的查询结果信息输入端与上述CAM接口电路的相应输出端相连,并接收上述CAM接口电路数据结合上述查询队列存储器中读出数据的第95位至第72位的控制信息而得到的145位查询结果信息,该查询结果信息具有下列数据结构:4位数据处理方式信息、5位内部协议信息、8位发送接口卡号端口号以及128位下一跳IP地址;
◆包发送电路,它的发送信息输入端与上述发送信息队列存储器的相应输出端相连;它的查询结果信息输入端与上述查询结果队列存储器相应输出端相连;他的数据输入端在所述包发送电路收到上述发送信息和查询结果信息后从上述包缓存存储器的数据输出端读出数据;它的数据包输出端与外部的交换网络的IP包输入端相连;
◆上交包存储器,它的输入端与上述包发送电路的IP包输出端相连;它的上交IP包输出端与上述CPU接口电路的上交包输入端相连;
◆在所述的包预处理电路组件中,所述的包头处理电路是一个电路组件,它包含:
●输入IP包数据寄存器,它的输入端与上述包输入队列存储器的输出端相连;
●32位目的IP地址寄存器v4、32位源IP地址寄存器v4、16位源协议端口寄存器v4、16位目的协议端口寄存器v4、8位协议域寄存器v4、以及4位数据包进入接口号寄存器v4,他们的数据输入端分别与上述输入IP包数据寄存器的输出端相连;
●路由查询信息寄存器v4,它的数据输入端与上述目的IP地址寄存器v4的相应输出端相连;
●访问控制列表即ACL的查询信息寄存器v4,它的各个数据输入端分别与上述目的IP地址寄存器v4、源IP地址寄存器v4、源协议端口寄存器v4、目的协议端口寄存器v4、协议域寄存器v4、数据包进入接口号寄存器v4的各相应输出端相连;
●128位目的IP地址寄存器v6、128位源IP地址寄存器v6、20位流标号寄存器v6以及4位数据包进入接口号寄存器v6,他们的各数据输入端分别与上述输入IP包数据寄存器的各相应输出端相连;
●路由查询信息寄存器v6,它的数据输入端与上述目的IP地址寄存器v6的输出端相连;
●ACL查询信息寄存器v6,它的各输入端分别与上述源IP地址寄存器v6、流标号寄存器v6、数据包进入接口号寄存器v6的相应输出端相连;
●查询信息寄存器,它的各数据输入端分别与上述路由查询信息寄存器v4、ACL的查询信息寄存器v4、路由查询信息寄存器v6、ACL查询信息寄存器v6的各相应输出端相连;它的查询信息输出端与上述查询队列存储器的相应输入端相连;
●包附加信息寄存器,它的数据输入端与上述输入IP包数据寄存器的相应输出端相连;
●输出IP包数据寄存器,它的数据输入端与上述输入IP包数据寄存器的相应输出端相连;它的数据输出端与上述包缓存存储器的相应输入端相连;
●包缓存寄存器写地址寄存器,它的写地址输入端与上述输出IP包数据寄存器的相应输出端相连;它的地址输出端与上述包缓存存储器的相应输入端相连;
●包缓存起始、终止地址寄存器,它的起始、终止地址输入端与上述包缓存存储器的写地址寄存器的相应输出端相连;
●内部控制状态机,它的控制信息输入端与上述输入IP包数据寄存器的相应输出端相连;它的各控制信号输出端分别与上述包附加信息寄存器、包缓存起始终止地址寄存器、目的IP地址寄存器v4、源IP地址寄存器v4、源协议端口寄存器v4、目的协议端口寄存器v4、协议域寄存器v4、数据包进入接口号寄存器v4、路由查询信息寄存器v4、ACL的查询信息寄存器v4、目的IP地址寄存器v6、源IP地址寄存器v6、流标号寄存器v6、数据包进入接口号寄存器v6、路由查询信息寄存器v6、ACL查询信息寄存器v6、查询信息寄存器的相应输入端相连;
●发送信息寄存器,它的各数据输入端分别与上述包附加信息寄存器、包缓存起始、终止地址寄存器的相应输出端相连;它的控制信号输入端与上述内部控制状态机的相应输出端相连;它的发送信息输出端与上述发送信息队列存储器相应输入端相连;
◆在所述的包预处理电路组件中,所述的包发送电路是一个电路组件,它包含:
●包发送信息寄存器,它的输入端与上述发送信息队列寄存器的输出端相连;
●包存储器起始地址寄存器,它的起始地址输入端与上述包发送信息寄存器的相应输出端相连;
●包发送端口号寄存器,它的包发送端口号输入端与上述包发送信息寄存器的相应输出端相连;
●包存储器终止地址寄存器,它的终止地址输入端与上述包发送信息寄存器的相应输出端相连;
●附加数据寄存器,它的附加数据输入端与上述包发送端口号寄存器的相应输出端相连;
●存储器下一地址寄存器;
●比较器,它的两个输入端分别与上述存储器下一地址寄存器的下一地址输出端以及上述包存储器终止地址寄存器的终止地址输出端相连;
●第一多路数据选择器,它的各个数据输入端分别与上述包存储器起始地址寄存器、存储器下一地址寄存器的各输出端相连;
●包存储器读地址寄存器,它的读地址输入端与上述第一多路数据选择器的相应输出端相连;它的读地址输出端与上述包缓存存储器的相应输入端相连;
●+1计数器,它的输入端与上述包存储器读地址寄存器的读地址输出端相连;它的计数输出端与上述存储器下一地址寄存器的输入端相连;
●IP包数据寄存器,它的IP包数据输入端与上述包缓存存储器的相应输出端相连;
●第二多路数据选择器,它的两个数据输入端分别与上述附加数据寄存器、IP包数据寄存器的相应输出端相连;它的两个数据输出端分别与上述上交包存储器、外部交换网络的IP包输入端相连;
●查询结果信息寄存器,它的输入端与上述查询结果队列寄存器的查询结果信息输出端相连;
●内部控制状态机,它的两个控制信息输入端分别与上述查询结果信息寄存器和比较器的相应输出端相连;它的三个控制信号输出端分别与上述包发送信息寄存器、第一多路数据选择器的相应输入端和第二多路数据选择器的相应输入端相连;
◆在所述的包预处理电路组件中,所述的CAM接口电路是一个电路组件,它包含:
●查询信息寄存器、查询队列状态寄存器,它们各自的数据输入端分别与上述查询队列存储器的相应输出端相连;
●维护信息寄存器、维护队列状态寄存器,它们的指令输入端分别与上述CPU接口电路输出端相连;
●第一多路选择器,它的两个数据输入端分别与上述查询信息寄存器、维护信息寄存器的相应输出端相连;
●CPU读出数据寄存器,它的数据输出端与上述CPU接口电路的相应输入端相连;
●查询结果寄存器,它的查询结果信息输出端与上述查询结果队列存储器的相应输入端相连;
●第二多路选择器,它的数据输出端与上述CPU读出数据寄存器的数据输入端相连;
●内部控制状态机,它的两个数据输入端分别与上述查询队列状态寄存器、维护队列状态寄存器的相应输出端相连;它的各控制信号输出端分别与上述第一多路选择器、第二多路选择器的相应输入端相连;
●CAM指令信息寄存器,它的CAM指令信息输入端与上述第一多路选择器的相应输出端相连;
●CAM指令寄存器,它的指令输入端与上述CAM指令信息寄存器的相应输出端相连;
●CAM写入数据寄存器,它的CAM写入数据输入端与上述CAM指令信息寄存器的相应输出端相连;
●CAM读出数据寄存器,它的读出数据输出端与上述第二多路选择器相应输入端相连;
●SRAM写入数据寄存器,它的数据输入端与上述CAM指令信息寄存器的相应输出端相连;
●SRAM读出数据寄存器,它的读出数据输出端与上述第二多路选择器的相应输入端相连;它的另一个读出数据输出端与上述查询结果寄存器的相应输入端相连;
●CAM数据总线三态调度逻辑单元,它的输入端与上述CAM写入数据寄存器的输出端相连;它的输出端与上述CAM读出数据寄存器的输入端相连;
●SRAM数据总线三态调度逻辑单元,它的输入端与上述SRAM写入数据寄存器的输出端相连;它的输出端与上述SRAM读出数据寄存器的输入端相连;
●上述CAM指令信息寄存器、CAM指令寄存器、CAM写入数据寄存器、CAM读出数据寄存器、SRAM写入数据寄存器、SRAM读出数据寄存器、CAM数据总线三态调度逻辑单元、SRAM数据总线三态调度逻辑单元的各控制信号输入端分别与上述内部控制状态机的相应输出端相连;同时,上述查询信息寄存器、维护信息寄存器、查询队列状态寄存器、维护队列状态寄存器、CPU读出数据寄存器、查询结果寄存器的各控制信号输入端分别与上述内部控制状态机的各相应输出端相连;
◆在所述的包预处理电路组件中,所述的CPU接口电路是一个电路组件,它包含:
●CAM接口电路写寄存器,它的输出端与上述CAM接口电路的输入端相连;
●CAM接口电路读寄存器,它的输入端与上述CAM接口电路的相应输出端相连;
●上交包存储器缓存寄存器,它的输入端与上述上交包存储器输出端相连;
●内部控制状态机,它的各控制信号输出端分别与上述CAM接口电路写寄存器、CAM接口电路读寄存器、上交包存储器缓存寄存器的相应输入端相连;
●CPU数据总线三态调度逻辑单元,它的两个数据输入端分别与上述CAM接口电路读寄存器、上交包存储器缓存寄存器的输出端相连;它的数据输出端与上述CAM接口电路写寄存器的输入端相连;它同时又与外部CPU互连;
●CPU控制信号寄存器,它的两个CPU控制信号输出端分别与上述内部控制状态机、CPU数据总线三态调度逻辑单元的相应输入端相连;
●CPU地址寄存器,它的CPU地址输出端与上述内部控制状态机的相应输入端相连;该CPU地址寄存器的输入端与外部CPU的输出端相连;
■该双栈兼容路由查找器还包括CAM即内容可寻址存储器和SRAM,其中CAM是一个三态内容可寻址存储器,即TCAM,它同时存储双栈路由表项和ACL表项,每一条表项都仅使用64位的整数倍来表示数据包的内容,剩下的位用于表示此表项的类型;它的一个输入端与上述CAM接口电路中的CAM指令寄存器的输出端相连,而另一个输入端与上述CAM接口电路中的CAM数据总线三态调度逻辑单元互连;SRAM的一个输入端与上述CAM的输出端相连,而另一个输入端与上述CAM接口电路中的SRAM数据总线三态调度逻辑单元互连。
2、根据权利要求1所述的核心路由器上支持访问控制列表功能的双栈兼容路由查找器,其特征在于,所述包预处理电路组件是由一片FPGA构成的。
3、根据权利要求1所述的核心路由器上支持访问控制列表功能的双栈兼容路由查找器,其特征在于,所述的CAM由两片IDT75k62100芯片构成,SRAM由两片IDT71t75602芯片构成。
CNB2005100113566A 2005-02-25 2005-02-25 核心路由器上支持访问控制列表功能的双栈兼容路由查找器 Expired - Fee Related CN1327674C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100113566A CN1327674C (zh) 2005-02-25 2005-02-25 核心路由器上支持访问控制列表功能的双栈兼容路由查找器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100113566A CN1327674C (zh) 2005-02-25 2005-02-25 核心路由器上支持访问控制列表功能的双栈兼容路由查找器

Publications (2)

Publication Number Publication Date
CN1655534A CN1655534A (zh) 2005-08-17
CN1327674C true CN1327674C (zh) 2007-07-18

Family

ID=34894178

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100113566A Expired - Fee Related CN1327674C (zh) 2005-02-25 2005-02-25 核心路由器上支持访问控制列表功能的双栈兼容路由查找器

Country Status (1)

Country Link
CN (1) CN1327674C (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101039253B (zh) * 2006-03-17 2010-12-29 中兴通讯股份有限公司 一种实现三重内容可寻址存储器范围匹配的前缀扩展方法
CN101272350B (zh) * 2008-05-06 2011-01-05 北京星网锐捷网络技术有限公司 输出访问控制方法与输出访问控制装置
CN101291546B (zh) * 2008-06-11 2011-09-14 清华大学 核心路由器交换结构协处理器
CN101656659B (zh) * 2008-08-19 2012-05-23 中兴通讯股份有限公司 一种混合业务流的缓存处理方法、存储转发方法及装置
CN101986271B (zh) * 2010-10-29 2014-11-05 中兴通讯股份有限公司 调度tcam查询和刷新消息的方法和装置
CN102299853B (zh) * 2011-09-05 2014-08-27 神州数码网络(北京)有限公司 一种实现交换机资源有效利用的方法
CN102307149B (zh) * 2011-09-23 2014-05-07 中国科学院计算技术研究所 Ip查找方法和装置以及路由更新方法和装置
CN103064901B (zh) * 2012-12-18 2017-02-22 中兴通讯股份有限公司 一种ram、网络处理系统和一种ram查表方法
CN103701776A (zh) * 2013-12-09 2014-04-02 无锡市同威科技有限公司 基于fpga的网络数据卡及数据传输方法
CN103984654B (zh) * 2014-05-12 2017-02-01 华为技术有限公司 访问控制列表处理装置及处理写入数据请求的方法
CN106302174A (zh) * 2015-06-12 2017-01-04 中兴通讯股份有限公司 一种实现路由查找的方法及装置
CN106301970A (zh) * 2016-10-27 2017-01-04 盛科网络(苏州)有限公司 一种使用转发表收敛以减少tcam表项消耗的芯片实现方法
CN111786723A (zh) * 2020-06-29 2020-10-16 安徽理工大学 矿工体征检测vlc系统用ppm编码产生装置
CN113132358A (zh) * 2021-03-29 2021-07-16 井芯微电子技术(天津)有限公司 策略分发器、拟态交换机及网络系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377577B1 (en) * 1998-06-30 2002-04-23 Cisco Technology, Inc. Access control list processing in hardware
CN1465014A (zh) * 2001-07-20 2003-12-31 诺基亚有限公司 使用tcam实现数据流的选择性路由
CN1561047A (zh) * 2004-02-20 2005-01-05 清华大学 基于tcam的分布式并行ip路由查找方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377577B1 (en) * 1998-06-30 2002-04-23 Cisco Technology, Inc. Access control list processing in hardware
CN1465014A (zh) * 2001-07-20 2003-12-31 诺基亚有限公司 使用tcam实现数据流的选择性路由
CN1561047A (zh) * 2004-02-20 2005-01-05 清华大学 基于tcam的分布式并行ip路由查找方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Scalable IP Lookup for Programmable Routers David E.Taylor ET AL,IEEE 2002 *
Scalable IP Lookup for Programmable Routers David E.Taylor ET AL,IEEE 2002;分段存储的CAM+SRAM高速IPv6路由查找方案 曹智等,计算机工程与应用,第2004年35期 2004 *
分段存储的CAM+SRAM高速IPv6路由查找方案 曹智等,计算机工程与应用,第2004年35期 2004 *

Also Published As

Publication number Publication date
CN1655534A (zh) 2005-08-17

Similar Documents

Publication Publication Date Title
CN1327674C (zh) 核心路由器上支持访问控制列表功能的双栈兼容路由查找器
US7237058B2 (en) Input data selection for content addressable memory
US7069372B1 (en) Processor having systolic array pipeline for processing data packets
Wang et al. Wire Speed Name Lookup: A {GPU-based} Approach
US7418536B2 (en) Processor having systolic array pipeline for processing data packets
US7539031B2 (en) Inexact pattern searching using bitmap contained in a bitcheck command
US7539032B2 (en) Regular expression searching of packet contents using dedicated search circuits
US5920886A (en) Accelerated hierarchical address filtering and translation using binary and ternary CAMs
US7644080B2 (en) Method and apparatus for managing multiple data flows in a content search system
US7529746B2 (en) Search circuit having individually selectable search engines
CN101692647B (zh) 路由器中采用IPv6头封装IPv4包的隧道转发系统
US20060136681A1 (en) Method and apparatus to support multiple memory banks with a memory block
US20080071757A1 (en) Search engine having multiple co-processors for performing inexact pattern search operations
US20050242976A1 (en) Lookup engine
US7937495B2 (en) System and method for modifying data transferred from a source to a destination
CN109474641A (zh) 一种可破坏硬件木马的可重构交换机转发引擎解析器
US20030163442A1 (en) FFS search and edit pipline separation
CN100387027C (zh) 高速网络分流设备用线路接口卡中的包预处理电路组件
CN108664518A (zh) 一种实现查表处理的方法及装置
Qu et al. High-performance pipelined architecture for tree-based IP lookup engine on FPGA
Zolfaghari et al. An explicitly parallel architecture for packet parsing in software defined networks
Saxena et al. Scalable, high-speed on-chip-based NDN name forwarding using FPGA
WO2004054186A1 (ja) データ中継装置、連想メモリデバイス、および連想メモリデバイス利用情報検索方法
US7739423B2 (en) Bulk transfer of information on network device
CN116886605B (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070718

Termination date: 20210225