CN101321162A - 基于tcam序偶的tcp序列号检查硬件实现方法 - Google Patents
基于tcam序偶的tcp序列号检查硬件实现方法 Download PDFInfo
- Publication number
- CN101321162A CN101321162A CNA2008100229509A CN200810022950A CN101321162A CN 101321162 A CN101321162 A CN 101321162A CN A2008100229509 A CNA2008100229509 A CN A2008100229509A CN 200810022950 A CN200810022950 A CN 200810022950A CN 101321162 A CN101321162 A CN 101321162A
- Authority
- CN
- China
- Prior art keywords
- tcam
- sequence number
- cell block
- sram
- tcp
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于TCAM序偶的TCP序列号检查硬件实现方法,其特征在于所述方法是利用TCAM来存储需要进行序列号检查的TCP连接的标识信息,又称查表关键字,每一个查表关键字可唯一标识一个TCP连接;利用SRAM存储每一个进行序列号检查的TCP连接的序列号检查信息,TCAM和SRAM串行连接,TCAM中配置查表关键字表,每个TCP连接有正向、反向两个查表关键字表项,这两个表项组成序偶对,每个查表关键字包括确定一个TCP连接的五元组信息,SRAM配置序列号检查信息表,包括序列号、ACK序列号、数据包长度、窗口长度、FIN标志位和删除标志位,每个SRAM表项与TCAM表项一一对应。本发明只需一次存取即可实现序列号检查,大大加快了处理速度,也降低了实现难度。
Description
技术领域
本发明涉及网络通信、网络安全和组网技术领域,特别涉及一种TCP序列号检查的硬件实现方法
背景技术
随着Internet的高速发展,越来越多的个人和企业加入其中,随之而来的网络安全问题也越来越受重视。TCP/IP协议是互联网事实上的标准网络协议,TCP/IP协议的安全问题是保障互联网络安全的关键环节。
序列号是TCP协议用于保证数据可靠性的重要手段,序列号检查是目前网络安全设备必备的状态检测功能的一个重要组成部分。序列号检查包括数据包序列号边界检查和确认包ACK序列号边界检查,其中数据包序列号边界检查包括数据包序列号上界检查和数据包序列号下界检查,确认包ACK序列号边界检查包括确认包ACK序列号上界检查和确认包ACK序列号下界检查。无论进行数据包序列号边界检查还是确认包ACK序列号边界检查,都需要结合当前数据包携带的序列号、ACK序列号等信息和本TCP连接的上一数据包携带的序列号、ACK序列号等信息进行检查,硬件实现比较困难。
另外,随着各种多媒体应用的开发和普及,网络带宽越来越高,以前只有2兆的出口带宽,而现在已经千兆入户,需要网络安全设备提供吉比特级速率支持,对序列号检查提出了高速率的要求,需要硬件实现。
目前,序列号检查通常有以下两种实现方式:
a、软件实现序列号检查
这是目前网络安全系统最常用的实现方式,主要是为每一个TCP连接创建状态跟踪表,用该表来记录输入包的状态信息,依据表中的状态信息对接收到TCP数据包进行序列号检查来实现其状态过滤。这种方式实现简单,灵活性好,但数据处理速度慢,无法适应吉比特网络环境。
b、硬件实现序列号检查
目前已提出的硬件实现序列号检查的方法是基于动态随机存储器(DRAM)实现的,为每一个TCP连接创建状态表,通过hash算法实现一个TCP连接所必需的五元组信息(源IP地址、目的IP地址、源端口号、目的端口号及协议号)向存储该TCP连接状态信息表项地址的映射,通过访问状态表中存储的信息实现对接收到TCP数据包的序列号检查。这种方式实现难度较大,一次检查需要多次访存,且性能依赖于hash算法,很难达到线速检查,无法充分发挥硬件高速的特点。
发明内容
本发明的目的是针对现有序列号检查实现方法难以满足网络高速环境需求的问题,提供一种基于三态地址关联存储器(TCAM)序偶的硬件实现方法,能够支持吉比特速率序列号检查,且易于工程实现。
TCAM基于内容实现并行查找,无论表项的条目数有多大,都可以一次查表命中,是一种适合吉比特速率下的查表解决方案。本发明所述序列号硬件检查方法基于TCAM和静态随机存取存储器(SRAM)实现,具体的说,利用TCAM来存储需要进行序列号检查的TCP连接的标识信息(即源IP,目的IP,源端口,目的端口和协议),又称查表关键字,每一个查表关键字可唯一标识一个TCP连接;利用SRAM存储每一个进行序列号检查的TCP连接的序列号检查信息。TCAM和SRAM组成常见的硬件查表结构,在本发明所述方法的支持下,共同实现高速序列号检查。
本发明所述方法具体包括四个步骤:
步骤a:在TCAM上实现基于查表关键字序偶对的存储单元逻辑化分
每个TCP连接由源IP,目的IP,源端口,目的端口和协议等五元组信息唯一确定,进行TCP序列号检查时需以五元组信息作为查表关键字。本方法要求,表项初始配置时应按照以下步骤对TCAM内查表关键字的存储区域进行逻辑化分:假设TCAM的地址空间为N,TCAM单个地址单元存放的数据宽度是L,上述五元组的总长度是L’,则需要将TCAM从地址0到地址N-1按序进行单元块划分,每一个单元块包括个地址,代表上界取整。划分完毕后,统一对所有单元块进行整数编号,0,1...例如,单元块0包括TCAM的0到地址空间,单元块1包括TCAM的到地址空间,其余单元块依次类推。由于TCP连接是全双工过程,则在单元块编号完毕后,需按照(0,1),(2,3)…(i,i+1)…的方式将单元块组成序偶对,其中i为偶数,单元块i对应的TCAM地址空间包括:...,共个地址,一对序偶表征一条TCP连接的正向、反向两个方向。对于任意序偶对(i,i+1),i和i+1互为序偶,即i为i+1的序偶,i+1为i的序偶。对于任意正整数j,若j为奇数时,其序偶为j-1,若j为偶数时,其序偶为j+1。
步骤b:输入SYN包的检查及表项建立
SYN数据包是TCP连接的起始数据包,硬件电路接收到TCP报文后,根据TCP报文头部的SYN字段和ACK字段判断出一个TCP连接建立的SYN请求包,首先对其进行常规包检查,具体包括包完整性检查和有效性检查,检查通过后进行规则检查,否则丢弃该包。然后,硬件电路根据通过规则检查的SYN请求包的五元组信息,假设为SIP1,SP1,DIP1,DP1,P组成表项的关键字(SIP1,SP1,DIP1,DP1,P),存放在TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设为单元块i。该表项存储在TCAM中某空闲序偶对的偶数单元块i后,则在SRAM中对应单元块i上存放该包携带的序列号信息(包括序列号s1,确认号a1,长度n1和窗口长度w1信息)。接着,根据设备需要,对该包进行网络地址转换(NAT,Network Address Translation)或不进行。最后,根据数据包五元组信息,假设为SIP2,SP2,DIP2,DP2,P,组成一条反转条目(DIP2,DP2,SIP2,SP2,P),添加到TCAM的单元块i+1中,与上述单元块i的表项组成序偶对,其中,若数据包经过NAT转换,则五元组信息改变,SIP2,SP2,DIP2,DP2,P为NAT转换后新的五元组信息;若数据包未经过NAT转换,则五元组信息未改变,SIP2,SP2,DIP2,DP2,P即为数据包的原五元组信息SIP1,SP1,DIP1,DP1,P。对应的,SRAM的单元块i+1中,填写全零。
步骤c:输入SYN+ACK包的检查
TCP数据包输入后,硬件电路根据TCP报文头部的SYN字段和ACK字段判断出SYN+ACK包,首先对其进行常规包检查,若检查未能通过,则丢弃该包;若检查通过,则进行序列号检查:首先从数据包中取出五原组字段,组成查表关键字,输入至TCAM中进行查表,若查表未命中,则丢弃该包,若查表命中,命中地址属于单元块i+1(i是偶数),则需要从SRAM对应的单元块i中读出序列号信息(序列号s2’,确认号a2’,长度n2’),利用这些读出信息与SYN+ACK包中TCP头部的确认号a2共同完成ACK序列号检查:
●ACK序列号上界检查,判断a2<=(s2’+n2’)是否满足,若不满足,则丢弃该数据包,若满足,则ACK序列号上界检查通过;
●ACK序列号下界检查。由于a2缺省大于0,因此该项检查可忽略。
因此,若ACK序号上界检查通过,则判定该包通过序列号检查,将该SYN+ACK包携带的序列号信息(序列号s2,确认号a2,长度n2,窗口长度w2)填写到SRAM的i+1单元块的对应位置。
步骤d:输入数据包/ACK包的检查及表项删除判断
除SYN包和SYN+ACK包之外,其它TCP数据包输入后,硬件电路根据TCP报文头部的SYN字段和ACK字段判断出是数据包还是ACK包(即确认包),对于这些包首先进行合法性检查,若检查未能通过,则丢弃该包;若检查通过,则根据包类型进行相应的数据包序列号检查或ACK序列号检查,其具体检查步骤如下:
●数据包序列号检查
从输入TCP数据包中提取出五元组信息,组成查表关键字查找TCAM表,若查表未命中TCAM表,则丢弃该包,若查表命中TCAM表,命中地址属于某单元块j(j是整数,),则从SRAM的单元块j的序偶单元块中读出其中的序列号检查信息,假设这些信息为:序列号sd”,确认号ad”,长度nd”,窗口wd”。然后,取出该数据包TCP头部携带的序列号sd,确认号ad,长度nd和窗口wd等信息,与SRAM中单元块j的序偶单元块中读出的序列号检查信息共同完成数据包序列号上界检查:sd+nd<=(ad”+wd”);数据包序列号下界检查:sd>=ad”。若二者检查都通过,则将输入数据包的序列号sd、确认号ad、长度nd和窗口wd写入到SRAM的单元块j中序列号、确认号、长度和窗口对应的位置(SRAM中对应序列号信息更新)。若有任何边界检查未能通过,则丢弃数据包,不做其他处理。
●确认包ACK序列号检查
确认包输入后,首先从该包中取出五元组信息组成查表关键字,查找TCAM表,若查表未命中TCAM表,则丢包该包,若查表命中TCAM表,命中地址属于某单元块k(k是整数,),则首先从SRAM对应的单元块k中读出其中的确认号,假设为a’,然后读出该ACK包TCP头部携带的确认号,假设为a,则首先进行ACK序列号下界检查:aa>=a”。若检查未通过,则丢弃数据包,若检查通过,继续进行ACK序列号上界检查:从SRAM的单元块k的序偶单元块中读出其中的序列号检查信息,假设这些信息为:序列号sa”,确认号aa”,长度na”,窗口wa”。然后,将该确认包TCP头部携带的序列号sa,确认号aa,长度na和窗口wa等信息取出,与SRAM的k的序偶单元块中读出的信息共同完成确认包ACK序列号上界检查,即判断aa<=(sa”+na”)是否满足,若不满足,则丢弃该数据包;若检查通过,则将该ACK包的序列号sa、确认号aa、长度na和窗口wa写入到SRAM的单元块k中序列号、确认号、长度和窗口对应的位置(SRAM中原有的序列号信息更新)。
最后,硬件电路对通过序列号检查的数据包进行表项删除判断,具体实施时不区分数据包/ACK包。该数据包TCP头部携带的序列号s,确认号a、长度n和FIN标志位f等信息,且TCAM查表命中地址属于某单元块k(k是整数,),则读出SRAM的单元块k中FIN标志位f’和删除标志位d’等信息,以及SRAM的k的序偶单元块中的序列号s”、确认号a”、长度n”、FIN标志位f”和删除标志位d”等信息,综合以上信息进行如下判断和表项更新:
若f置位(f=1),则将f’置位(f’=1);
若数据包为ACK包,若f”已置位,且s=a”,a=s”+1都满足,则将d”置位;
若d’和d”都置位,则删除TCAM和SRAM的单元块k中内容及k的序偶单元块中的内容,即置全0。
否则,无需对TCAM和SRAM中表项进行操作。
本发明的有益效果:
提供了一种基于TCAM序偶的高速序列号检查的硬件实现方法,能够实现吉比特速率的序列号检查,从而能够更好地应对网络威胁的迅猛发展。采用TCAM序偶和SRAM序偶对应,只需一次存取即可实现序列号检查,大大加快了处理速度,也降低了实现难度。
附图说明
图1为TCP数据包结构图。
图2本发明的TCAM和SRAM组合实现的硬件查表结构图。
图3为本发明的TCAM和SRAM表项配置示意图。
图4为本发明的TCAM表项内容。
图5为本发明的SRAM表项内容。
图6为本发明的序列号检查流程图。
图7为本发明的表项更新流程图。
图2是转发引擎中普遍使用的一种基于TCAM实现的硬件查表方案,本发明所述的方法是在图2所示的硬件查表方案的基础上实现的。
具体实施方式
TCP协议是TCP/IP网络协议模型(也称为互联网分层模型)的传输层协议,其报文格式如图1所示。序列号是TCP协议用于保证数据可靠性的重要手段,序列号检查是目前网络安全设备必备的状态检测功能的一个重要组成部分。本发明公开的序列号检查方法是面向硬件实现,具有高性能,且易于实现。下面结合附图,以输入TCP包为例,介绍本发明的处理流程。
首先,介绍本发明的适用环境。TCAM和SRAM组合实现硬件查表是目前常见的高速查表解决方案,图2是该方案的结构图,本发明所述的方法是在图2所示结构的基础上实现的。
本发明所述方法的硬件表项配置如图3所示。
TCAM模块(100)和SRAM模块(200)串行连接。其中,100模块中配置查表关键字表,每个TCP连接有正向、反向两个查表关键字表项,这两个表项组成序偶对,例如,如图3所示,块0和块1组成序偶对,每个查表关键字包括确定一个TCP连接的五元组信息,具体的表项配置包括以下三个步骤:
步骤1:存储单元逻辑化分。设TCAM的地址空间是16384,数据宽度是72,五元组取IPv4协议的定义,共104比特,如图4所示,则单元块的大小是[104/72]=2,表示TCAM内每两个地址单元组成一个单元块,那么TCAM内部总共包括16384/2=8192个单元块,单元块的编号为0,1,...i,i+1...8191。编号完毕后,按照(0,1),(2,3)...(i,i+1)...(8190,8191)方式组成序偶对(i是偶数单元块),如图3所示。其中每一个单元块包括两个地址,例如,单元块i包括2i和2i+1两个TCAM地址空间。假设(i,i+1)空闲,则存放时,要求存放在单元块i中,具体存放在2i和2i+1两个TCAM地址空间。
步骤2:表项建立。根据通过常规包检查、规则检查的SYN请求包的五元组信息,假设为SIP1,SP1,DIP1,DP1,P,组成表项(SIP1,SP1,DIP1,DP1,P),存放在TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设为单元块i。根据经过NAT或未经过NAT的该SYN数据包的五元组信息,假设为SIP2,SP2,DIP2,DP2,P,组成一条反转条目(DIP2,DP2,SIP2,SP2,P),添加到TCAM的单元块i+1中,与上述单元块i的表项组成序偶对。
步骤3:表项删除。若通过常规包检查、序列号检查的TCP包,若其命中的SRAM单元块及其对应的序偶单元块中的删除标志位均置位,即设置为1,则删除该数据包命中TCAM的单元块j及j的序偶单元块中的查表关键字信息。
其中,200模块中配置序列号检查信息表,其结构如图5所示,包括序列号、ACK序列号、数据包长度、窗口长度、FIN标志位和删除标志位信息。SRAM单元块与TCAM单元块一一对应,如图3所示。每个序列号检查信息表项配置包括以下三个步骤:
步骤1:表项建立。经过常规包检查、规则检查的SYN包,在TCAM上建立该TCP连接的查表关键字单元块后,在对应的SRAM单元块上填写该SYN包的序列号信息;依据经过常规包检查、序列号检查的SYN+ACK数据包携带信息,在TCAM查表命中单元块所对应的SRAM单元块上填写该SYN+ACK包的序列号信息;
步骤2:表项维护、更新。依据经过常规包检查,序列号检查的TCP包携带的信息,在TCAM查表命中单元块对应的SRAM单元块上,写入该TCP包携带的新的序列号信息,具体实现见下面的表项更新流程详述。
步骤3:表项拆除。通过常规包检查、序列号检查的TCP包,若TCAM查表命中某单元块,则从SRAM中读出对应的单元块及其序偶单元块的删除标志位(DEL),若二者均为1,则删除该SRAM单元块及其序偶单元块中的序列号信息,即设置为全0。
下面结合图6和图7,以收到的TCP包为例(假设其五元组信息分别为SIP1,SP1,DIP1,DP1,P,序列号s,长度n,ACK序列号a,窗口w和FIN标志位f),详述序列号检查的处理流程(301~314)。
301:硬件电路判断输入包为TCP包。根据数据包的IP报头的协议字段判断是否TCP包;
302:SYN请求报文判断。按照图1所示TCP报文结构,读取报文TCP头部SYN字段。若SYN标志位置位,即为1,则为SYN报文或者SYN+ACK报文;若SYN标志位未置,即为0,则为普通报文;
304:SRAM序列号检查信息读取。根据TCAM查表结果,读取SRAM单元块k中的序列号检查信息,包括序列号s’、长度n’、ACK序列号a’、窗口w’、FIN标志位f’和删除标志位d’,并读取SRAM的k的序偶单元块中的序列号检查信息,包括序列号s”、长度n”、ACK序列号a”、窗口w”、FIN标志位f”和删除标志位d”。
305:ACK报文判断。
根据TCP头部ACK标志位(见图1)判断是否ACK报文,若ACK标志位为1则为ACK报文;若ACK标志位未置,则为数据报文;
306:数据包序列号上界检查。若s+n<=(a”+w”)成立,则数据包序列号上界检查通过,否则不通过;
307:数据包序列号下界检查。若s>=a”成立,则数据包序列号下界检查通过,否则不通过;
308:确认包ACK序列号上界检查。若a<=(sa”+na”)成立,则确认包ACK序列号上界检查通过,否则不通过;
309:确认包ACK序列号下界检查。若a>a’成立,则确认包ACK序列号下界检查通过,否则不通过;
310:表项更新。依据数据包携带的序列号信息,对TCAM和SRAM的单元块k和k的序偶单元块中的序列号信息进行更新操作;
311:ACK报文判断。根据TCP头部ACK标志位(见图1)判断是否ACK报文,若ACK标志位为1则为ACK报文;若ACK标志位未置,则为数据报文;
312:数据包同方向的TCAM及SRAM表项建立。
依据数据包五元组信息组成表项(SIP1,SP1,DIP1,DP1,P),将其存放在TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设为单元块i,并在SRAM的单元块i上填写该数据包携带的序列号信息;
313:NAT。根据设备需要,对数据包进行NAT转换,例如,常见的,接入设备,如防火墙需要进行NAT转换,骨干路由器则无需进行NAT转换;假设经过NAT或未经过NAT的数据包的五元组信息为SIP2,SP2,DIP2,DP2,P,若经过NAT,则SIP2,SP2,DIP2,DP2,P为新的五元组信息,若未经过NAT,则SIP2,SP2,DIP2,DP2,P仍为原数据包的五元组信息,即SIP1,SP1,DIP1,DP1,P;
314:数据包反方向的TCAM表项建立。依据数据包五元组信息SIP2,SP2,DIP2,DP2,P,组成一条反转条目(DIP2,DP2,SIP2,SP2,P),添加到TCAM的单元块i+1中。
315:数据包丢弃。上述任一项检查未通过的数据包将被丢弃。
其中,310表项更新的具体流程(401~408),具体描述如下:
401:SRAM该单元块的表项更新。依据数据包携带信息,序列号s,长度n,ACK序列号a,窗口w和FIN标志位f,更新SRAM的单元块k中对应的信息;
402:SRAM该单元块的序偶单元块的删除标志位(DEL)判断。判断d”是否置位,若置位,则该TCP数据包反方向的传输已结束,否则,未结束;
403:SRAM该单元块的序偶单元块的FIN标志位判断。判断f”是否置位,若置位,则该TCP数据包反方向已发出FIN请求报文,否则,未发出;
404:FIN请求包的ACK报文判断。若数据包为ACK报文,判断s=a”和a=s”+1是否同时成立,若成立,则该数据包为FIN请求包的ACK报文,否则该数据包为非FIN请求包的ACK报文;
405:SRAM该单元块的序偶单元块的删除标志位(DEL)置位。将SRAM上的k的序偶单元块中的删除标志位d”置位;
406:SRAM该单元块的删除标志位判断。判断d’是否置位,若置位,则该TCP数据包方向的传输已结束,否则,未结束;
407:TCAM和SRAM表项删除。将TCAM和SRAM上的k和k的序偶单元块中的表项信息删除,即设为全0;
408:表项更新完成。
Claims (3)
1、一种基于TCAM序偶的TCP序列号检查硬件实现方法,其特征在于所述方法是利用TCAM来存储需要进行序列号检查的TCP连接的标识信息,又称查表关键字,每一个查表关键字可唯一标识一个TCP连接;利用SRAM存储每一个进行序列号检查的TCP连接的序列号检查信息,所述方法的硬件表项配置是:TCAM和SRAM串行连接,TCAM中配置查表关键字表,每个TCP连接有正向、反向两个查表关键字表项,这两个表项组成序偶对,每个查表关键字包括确定一个TCP连接的五元组信息,所述五元组信息是指源IP,目的IP,源端口,目的端口和协议,SRAM配置序列号检查信息表,包括序列号、ACK序列号、数据包长度、窗口长度、FIN标志位和删除标志位,每个SRAM表项与TCAM表项一一对应,其中,
TCAM具体的表项配置包括以下三个步骤:
步骤1:存储单元逻辑化分
假设TCAM的地址空间为N,TCAM单个地址单元存放的数据宽度是L,所述五元组的总长度是L’,则需要将TCAM从地址0到地址N-1按序进行单元块划分,每一个单元块包括个地址,代表上界取整,划分完毕后,统一对所有单元块进行整数编号,在单元块编号完毕后,按照(0,1),(2,3)…(i,i+1)…的方式将单元块组成序偶对,其中i为偶数,单元块i对应的TCAM地址空间包括: 共个地址,一对序偶表征一条TCP连接的正向、反向两个方向,对于任意序偶对(i,i+1),i和i+1互为序偶,
步骤2:表项建立
根据通过常规包检查、规则检查的SYN请求包的五元组信息,组成表项,存放在TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设为单元块i,根据经过NAT或未经过NAT的该SYN数据包的五元组信息,组成一条反转条目,添加到TCAM的单元块i+1中,与上述单元块i的表项组成序偶对,
步骤3:表项删除
若通过常规包检查、序列号检查的TCP包,若其命中的SRAM单元块及其对应的序偶单元块中的删除标志位均置位,即设置为1,则删除该数据包命中TCAM的单元块i及i的序偶单元块中的查表关键字信息;
SRAM每个序列号检查信息表项配置包括以下三个步骤:
步骤1:表项建立
经过常规包检查、规则检查的SYN包,在TCAM上建立该TCP连接的查表关键字单元块后,在对应的SRAM单元块上填写该SYN包的序列号信息;依据经过常规包检查、序列号检查的SYN+ACK数据包携带信息,在TCAM查表命中单元块所对应的SRAM单元块上填写该SYN+ACK包的序列号信息;
步骤2:表项维护、更新
依据经过常规包检查,序列号检查的TCP包携带的信息,在TCAM查表命中单元块对应的SRAM单元块上,写入该TCP包携带的新的序列号信息,
步骤3:表项拆除
通过常规包检查、序列号检查的TCP包,若TCAM查表命中某单元块,则从SRAM中读出对应的单元块及其序偶单元块的删除标志位,若二者均为1,则删除该SRAM单元块及其序偶单元块中的序列号信息,即设置为全0。
2、根据权利要求1所述的一种基于TCAM序偶的TCP序列号检查硬件实现方法,其特征在于:所述序列号检查的处理流程(301~314)如下:
301:硬件电路判断输入包为TCP包
根据数据包的IP报头的协议字段判断是否TCP包,若是则进入以下的302;
302:SYN请求报文判断
读取报文TCP头部SYN字段,若SYN标志位置位,即为1,则进入以下的311,若SYN标志位未置,即为0,则进入以下的303;
303:TCAM表查找
根据TCP包的五元组信息,组成查表关键字,查找TCAM表,若匹配上五元组则查找命中,假设命中地址属于某单元块k,k是整数,进入以下的304;若未匹配上,则丢弃该数据包(315);
304:SRAM序列号检查信息读取
根据TCAM查表结果,读取SRAM单元块k中的序列号检查信息,包括序列号s’、长度n’、ACK序列号a’、窗口w’、FIN标志位f’和删除标志位d’,并读取SRAM的k的序偶单元块中的序列号检查信息,包括序列号s”、长度n”、ACK序列号a”、窗口w”、FIN标志位f”和删除标志位d”;
305:ACK报文判断
根据TCP头部ACK标志位判断是否ACK报文,若ACK标志位为1则进入以下的308;若ACK标志位未置,则进入以下的306;
306:数据包序列号上界检查
若s+n<=(a”+w”)成立,则进入以下的307,否则不通过,丢弃该数据包(315);
307:数据包序列号下界检查
若s>=a”成立,则进入以下的310,否则,丢弃该数据包(315);
308:确认包ACK序列号上界检查
若a<=(sa”+na”)成立,则进入以下的309,否则丢弃该数据包(315);
309:确认包ACK序列号下界检查
若a>a’成立,则进入以下的310,否则丢弃该数据包(315);
310:表项更新
依据数据包携带的序列号信息,对TCAM和SRAM的单元块k和k的序偶单元块中的序列号信息进行更新操作;
311:ACK报文判断
根据TCP头部ACK标志位判断是否ACK报文,若ACK标志位为1则进入前述的303,若ACK标志位未置,则进入以下的312;
312:数据包同方向的TCAM及SRAM表项建立
依据数据包五元组信息组成表项(SIP1,SP1,DIP1,DP1,P),将其存放在TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设为单元块i,并在SRAM的单元块i上填写该数据包携带的序列号信息,进入以下的313;
313:NAT
根据设备需要,对数据包进行NAT转换,假设经过NAT或未经过NAT的数据包的五元组信息为SIP2,SP2,DIP2,DP2,P,若经过NAT,则SIP2,SP2,DIP2,DP2,P为新的五元组信息,进入以下的314,若未经过NAT,则SIP2,SP2,DIP2,DP2,P仍为原数据包的五元组信息,即SIP1,SP1,DIP1,DP1,P,进入以下的314;
314:数据包反方向的TCAM表项建立
依据数据包五元组信息SIP2,SP2,DIP2,DP2,P,组成一条反转条目(DIP2,DP2,SIP2,SP2,P),添加到TCAM的单元块i+1中。
315:数据包丢弃。
3、根据权利要求2所述的一种基于TCAM序偶的TCP序列号检查硬件实现方法,其特征在于:所述表项更新(310)的具体流程(401~408)描述如下:
401:SRAM该单元块的表项更新
依据数据包携带信息,序列号s,长度n,ACK序列号a,窗口w和FIN标志位f,更新SRAM的单元块k中对应的信息,进入以下的402;
402:SRAM该单元块的序偶单元块的删除标志位(DEL)判断
判断d”是否置位,若置位,则进入以下的406,否则,进入以下的403;403:SRAM该单元块的序偶单元块的FIN标志位判断
判断f”是否置位,若置位,则进入以下的404,否则,表项更新完成(408);
404:FIN请求包的ACK报文判断
若数据包为ACK报文,判断s=a”和a=s”+1是否同时成立,若成立,则进入以下的405,否则表项更新完成(408);
405:SRAM该单元块的序偶单元块的删除标志位(DEL)置位
将SRAM上的k的序偶单元块中的删除标志位d”置位,进入以下的406;
406:SRAM该单元块的删除标志位判断
判断d’是否置位,若置位,则该TCP数据包方向的传输已结束,进入以下的407,否则,表项更新完成(408);
407:TCAM和SRAM表项删除
将TCAM和SRAM上的k和k的序偶单元块中的表项信息删除,即设为全0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100229509A CN101321162B (zh) | 2008-07-03 | 2008-07-03 | 基于tcam序偶的tcp序列号检查硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100229509A CN101321162B (zh) | 2008-07-03 | 2008-07-03 | 基于tcam序偶的tcp序列号检查硬件实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101321162A true CN101321162A (zh) | 2008-12-10 |
CN101321162B CN101321162B (zh) | 2010-12-29 |
Family
ID=40180986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100229509A Expired - Fee Related CN101321162B (zh) | 2008-07-03 | 2008-07-03 | 基于tcam序偶的tcp序列号检查硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101321162B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681201A (zh) * | 2015-12-28 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 报文的规则匹配方法和装置 |
WO2016090848A1 (zh) * | 2014-12-11 | 2016-06-16 | 中兴通讯股份有限公司 | 管理三态内容寻址存储器tcam表空间的方法及装置 |
CN106375139A (zh) * | 2015-07-23 | 2017-02-01 | 腾讯科技(北京)有限公司 | 复制请求的方法、装置和系统 |
CN106603494A (zh) * | 2016-11-14 | 2017-04-26 | 上海华为技术有限公司 | 一种数据处理方法及基站 |
CN108769045A (zh) * | 2018-06-07 | 2018-11-06 | 深圳市风云实业有限公司 | Acl规则配置方法、装置及网络设备 |
CN109951425A (zh) * | 2017-12-21 | 2019-06-28 | 张家界航空工业职业技术学院 | 基于fpga的tcp流状态完整性检测方法 |
CN109995645A (zh) * | 2019-03-07 | 2019-07-09 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100387028C (zh) * | 2005-04-01 | 2008-05-07 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
CN101035060A (zh) * | 2006-03-08 | 2007-09-12 | 中兴通讯股份有限公司 | 一种三重内容可寻址存储器报文分类的统一处理方法 |
-
2008
- 2008-07-03 CN CN2008100229509A patent/CN101321162B/zh not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016090848A1 (zh) * | 2014-12-11 | 2016-06-16 | 中兴通讯股份有限公司 | 管理三态内容寻址存储器tcam表空间的方法及装置 |
CN106375139A (zh) * | 2015-07-23 | 2017-02-01 | 腾讯科技(北京)有限公司 | 复制请求的方法、装置和系统 |
CN105681201A (zh) * | 2015-12-28 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 报文的规则匹配方法和装置 |
CN106603494A (zh) * | 2016-11-14 | 2017-04-26 | 上海华为技术有限公司 | 一种数据处理方法及基站 |
CN109951425A (zh) * | 2017-12-21 | 2019-06-28 | 张家界航空工业职业技术学院 | 基于fpga的tcp流状态完整性检测方法 |
CN109951425B (zh) * | 2017-12-21 | 2021-03-23 | 张家界航空工业职业技术学院 | 基于fpga的tcp流状态完整性检测方法 |
CN108769045A (zh) * | 2018-06-07 | 2018-11-06 | 深圳市风云实业有限公司 | Acl规则配置方法、装置及网络设备 |
CN108769045B (zh) * | 2018-06-07 | 2020-09-29 | 深圳市风云实业有限公司 | Acl规则配置方法、装置及网络设备 |
CN109995645A (zh) * | 2019-03-07 | 2019-07-09 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
CN109995645B (zh) * | 2019-03-07 | 2021-03-16 | 盛科网络(苏州)有限公司 | 一种灵活查找fdb表项的芯片实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101321162B (zh) | 2010-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101321162B (zh) | 基于tcam序偶的tcp序列号检查硬件实现方法 | |
CN104901997B (zh) | 用于内容中心网络中的直接存储装置存取的系统和方法 | |
US11102120B2 (en) | Storing keys with variable sizes in a multi-bank database | |
US7813342B2 (en) | Method and apparatus for writing network packets into computer memory | |
US6266705B1 (en) | Look up mechanism and associated hash table for a network switch | |
TWI477106B (zh) | 用於在交換器asic中整合線路速率應用識別的系統和方法 | |
CN103428093B (zh) | 一种基于名字路由前缀存储、匹配及更新方法与装置 | |
US20090232139A1 (en) | Multiple virtual local area network databases in a switch with a relational lookup engine | |
US20050190694A1 (en) | Method and apparatus for wire-speed application layer classification of upstream and downstream data packets | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
US5881242A (en) | Method and system of parsing frame headers for routing data frames within a computer network | |
US20020046291A1 (en) | Network unit with address cache for frequently occurring network conversations | |
US8397025B2 (en) | Apparatus and method for determining a cache line in an N-way set associative cache using hash functions | |
CN108306835B (zh) | 一种以太网交换机的输入缓存及数据转发方法 | |
JP2006313949A (ja) | パケット転送装置 | |
CN102970150A (zh) | 用于数据中心的可扩展组播转发方法和设备 | |
CN106789730B (zh) | 分片报文的处理方法及装置 | |
CN104796354A (zh) | 一种乱序数据包字符串匹配方法及系统 | |
Sanchez et al. | Hardware support for a hash-based IP traceback | |
CN106416151A (zh) | 用于分组处理的基于多表哈希查找 | |
CN100426791C (zh) | 一种路由转发表地址查找引擎装置 | |
US9985885B1 (en) | Aggregating common portions of forwarding routes | |
CN111611348A (zh) | 一种基于学习布隆过滤器的icn网络信息名字查找方法 | |
CN110096458B (zh) | 基于神经网络的命名数据网内容存储池数据检索方法 | |
US8331368B2 (en) | Method of processing information packets and telecommunication apparatus using the same |
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 |
Granted publication date: 20101229 Termination date: 20140703 |
|
EXPY | Termination of patent right or utility model |