基于tcam序偶的tcp序列号检查硬件实现方法

文档序号:7684437阅读:200来源:国知局
专利名称:基于tcam序偶的tcp序列号检查硬件实现方法
技术领域
本发明涉及网络通信、网络安全和组网技术领域,特别涉及一种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的地址空间为iV, TCAM单个地址单元存 放的数据宽度是丄,上述五元组的总长度是丄,,则需要将TCAM从地址O 到地址7V-1按序进行单元块划分,每一个单元块包括「r"l个地址,门代表 上界取整。划分完毕后,统一对所有单元块进行整数编号,0,l...「w/「mH。 例如,单元块0包括TCAM的0到「ml-i地址空间,单元块l包括TCAM 的「i'/il到「L'/"2一地址空间,其余单元块依次类推。由于TCP连接是全双 工过程,则在单元块编号完毕后,需按照(0, 1), (2, 3)…(/, … 的方式将单元块组成序偶对,其中/为偶数,单元块/对应的TCAM地址 空间包括「丄'/丄,",「丄'/i"h+i,…,「i'/々("l)-1 ,共「z/"l个地址, 一对序偶表征一条TCP连接的正向、反向两个方向。对于任意序偶对(/, /+1), / 和&1互为序偶,即/为/+1的序偶,f+l为/的序偶。对于任意正整数, 若/为奇数时,其序偶为j'一l,若_/为偶数时,其序偶为/H。 步骤b:输入SYN包的检査及表项建立SYN数据包是TCP连接的起始数据包,硬件电路接收到TCP报文后, 根据TCP报文头部的SYN字段和ACK字段判断出一个TCP连接建立的 SYN请求包,首先对其进行常规包检查,具体包括包完整性检査和有效性 检査,检査通过后进行规则检査,否则丢弃该包。然后,硬件电路根据通 过规则检査的SYN请求包的五元组信息,假设为SIP1,SP1,DIP1,DP1,P组 成表项的关键字(SIP1,SP1,DIP1,DP1,P),存放在TCAM的空闲序偶对的 低编号单元块中,即编号是偶数的单元块中,假设为单元块/。该表项存储 在TCAM中某空闲序偶对的偶数单元块/后,则在SRAM中对应单元块/ 上存放该包携带的序列号信息(包括序列号s,,确认号a,,长度n,和窗口 长度w,信息)。接着,根据设备需要,对该包进行网络地址转换(NAT, Network Address Translation)或不进《亍。最后,根据数据包五元纟且《言息, 假设为SIP2,SP2,DIP2,DP2,P,组成一条反转条目(DIP2,DP2, SIP2,SP2,P), 添加到TCAM的单元块&1中,与上述单元块/的表项组成序偶对,其中, 若数据包经过NAT转换,则五元组信息改变,SIP2,SP2,DIP2,DP2, P为NAT 转换后新的五元组信息;若数据包未经过NAT转换,则五元组信息未改变, SIP2,SP2,DIP2,DP2,P即为数据包的原五元组信息SIP1,SP1,DIP1,DP1,P。对 应的,SRAM的单元块Z+1中,填写全零。步骤c:输入SYN+ACK包的检查TCP数据包输入后,硬件电路根据TCP报文头部的SYN字段和ACK 字段判断出SYN+ACK包,首先对其进行常规包检查,若检查未能通过, 则丢弃该包;若检查通过,则进行序列号检査首先从数据包中取出五原 组字段,组成査表关键字,输入至TCAM中进行査表,若査表未命中,则 丢弃该包,若査表命中,命中地址属于单元块/+1 (/是偶数),则需要从 SRAM对应的单元块/中读出序列号信息(序列号s2',确认号a2',长度 n2,),利用这些读出信息与SYN+ACK包中TCP头部的确认号32共同完成 ACK序列号检査參ACK序列号上界检査,判断&<= (s2,+ n2,)是否满足,若不满足, 则丢弃该数据包,若满足,则ACK序列号上界检査通过;參ACK序列号下界检查。由于&缺省大于0,因此该项检查可忽略。 因此,若ACK序号上界检査通过,则判定该包通过序列号检查,将该 SYN+ACK包携带的序列号信息(序列号S2,确认号&,长度n2,窗口长 度w2)填写到SRAM的/+1单元块的对应位置。步骤d:输入数据包/ACK包的检査及表项删除判断 除SYN包和SYN+ACK包之外,其它TCP数据包输入后,硬件电路 根据TCP报文头部的SYN字段和ACK字段判断出是数据包还是ACK包 (即确认包),对于这些包首先进行合法性检査,若检査未能通过,则丢弃 该包;若检查通过,则根据包类型进行相应的数据包序列号检查或ACK序 列号检査,其具体检査步骤如下參数据包序列号检査从输入TCP数据包中提取出五元组信息,组成査表关键字查找TCAM 表,若査表未命中TCAM表,则丢弃该包,若查表命中TCAM表,命中 地址属于某单元块乂 O'是整数,0=<y'<=「w「z'"]]),则从SRAM的单元块/ 的序偶单元块中读出其中的序列号检查信息,假设这些信息为序列号Sd", 确认号a,,长度nd",窗口Wd"。然后,取出该数据包TCP头部携带的序 列号Sd,确认号ad,长度nd和窗口 Wd等信息,与SRAM中单元块y的序 偶单元块中读出的序列号检查信息共同完成数据包序列号上界检查 sd+nd<=(ad"+wd");数据包序列号下界检查Sd〉二ad"。若二者检查都通过, 则将输入数据包的序列号sd、确认号ad、长度rid和窗口 Wd写入到SRAM 的单元块/中序列号、确认号、长度和窗口对应的位置(SRAM中对应序 列号信息更新)。若有任何边界检査未能通过,则丢弃数据包,不做其他处 理。參确认包ACK序列号检査确认包输入后,首先从该包中取出五元组信息组成査表关键字,查找 TCAM表,若査表未命中TCAM表,则丢包该包,若査表命中TCAM表, 命中地址属于某单元块A:a是整数,0=<k<=「w「z;/i]l),则首先从SRAM对 应的单元块A中读出其中的确认号,假设为a',然后读出该ACK包TCP 头部携带的确认号,假设为a,则首先进行ACK序列号下界检查 若检査未通过,则丢弃数据包,若检查通过,继续进行ACK序列号上界检 查从SRAM的单元块A的序偶单元块中读出其中的序列号检查信息,假设这些信息为序列号Sa",确认号aa",长度na",窗口Wa"。然后,将该 确认包TCP头部携带的序列号Sa,确认号、,长度Ila和窗口 Wa等信息取出,与SRAM的A:的序偶单元块中读出的信息共同完成确认包ACK序列号上界检查,即判断aa《""+na")是否满足,若不满足,则丢弃该数据包;若检查通过,则将该ACK包的序列号Sa、确认号a^、长度 和窗口Wa写 入到SRAM的单元块A:中序列号、确认号、长度和窗口对应的位置(SRAM 中原有的序列号信息更新)。最后,硬件电路对通过序列号检査的数据包进行表项删除判断,具体 实施时不区分数据包/ACK包。该数据包TCP头部携带的序列号s,确认号 a、长度n和FIN标志位f等信息,且TCAM查表命中地址属于某单元块 ta是整数,0=<k<=「w"/i]]),则读出SRAM的单元块A:中FIN标志位f 和删除标志位d'等信息,以及SRAM的A的序偶单元块中的序列号s"、确 认号a"、长度n"、 FIN标志位f,和删除标志位d"等信息,综合以上信息进 行如下判断和表项更新若f置位(f=l),则将f,置位(f = l);若数据包为ACK包,若f,已置位,且s二a", a二s"+l都满足,则将 d"置位;若d'和d"都置位,则删除TCAM和SRAM的单元块A:中内容及&的序 偶单元块中的内容,即置全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网络协议模型(也称为互联网分层模型)的传输 层协议,其报文格式如图l所示。序列号是TCP协议用于保证数据可靠性 的重要手段,序列号检查是目前网络安全设备必备的状态检测功能的一个 重要组成部分。本发明公开的序列号检查方法是面向硬件实现,具有高性 能,且易于实现。下面结合附图,以输入TCP包为例,介绍本发明的处理 流程。首先,介绍本发明的适用环境。TCAM和SRAM组合实现硬件查表是 目前常见的高速查表解决方案,图2是该方案的结构图,本发明所述的方 法是在图2所示结构的基础上实现的。
本发明所述方法的硬件表项配置如图3所示。
TCAM模块(100)和SRAM模块(200)串行连接。其中,IOO模块 中配置査表关键字表,每个TCP连接有正向、反向两个查表关键字表项, 这两个表项组成序偶对,例如,如图3所示,块0和块1组成序偶对,每 个査表关键字包括确定一个TCP连接的五元组信息,具体的表项配置包括 以下三个步骤-
步骤1:存储单元逻辑化分。设TCAM的地址空间是16384,数据宽 度是72,五元组取IPv4协议的定义,共104比特,如图4所示,则单元块 的大小是「104/721=2,表示TCAM内每两个地址单元组成一个单元块,那么 TCAM内部总共包括16384/2=8192个单元块,单元块的编号为0, 1,…z',z'+l…8191。编号完毕后,按照(O, 1), (2, 3)…(/, (8190,8191) 方式组成序偶对(z'是偶数单元块),如图3所示。其中每一个单元块包括 两个地址,例如,单元块/包括2z'和2z'+l两个TCAM地址空间。假设G, 空闲,则存放时,要求存放在单元块/中,具体存放在2/和两 个TCAM地址空间。
步骤2:表项建立。根据通过常规包检査、规则检查的SYN请求包的 五元组信息,假设为 SIP1,SP1,DIP1,DP1,P ,组成表项 (SIP1,SP1,DIP1,DP1,P),存放在TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设为单元块z'。根据经过NAT或未经过NAT 的该SYN数据包的五元组信息,假设为SIP2,SP2,DIP2,DP2,P,组成一条 反转条目(DIP2,DP2, SIP2,SP2,P),添加到TCAM的单元块/+1中,与上 述单元块/的表项组成序偶对。
步骤3:表项删除。若通过常规包检査、序列号检査的TCP包,若其 命中的SRAM单元块及其对应的序偶单元块中的删除标志位均置位,即设 置为1,则删除该数据包命中TCAM的单元块_/及_/的序偶单元块中的査 表关键字信息。
其中,200模块中配置序列号检查信息表,其结构如图5所示,包括 序列号、ACK序列号、数据包长度、窗口长度、FIN标志位和删除标志位 信息。SRAM单元块与TCAM单元块一一对应,如图3所示。每个序列号 检查信息表项配置包括以下三个步骤
步骤l:表项建立。经过常规包检査、规则检査的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,则为普通报文;
303: TCAM表查找。根据TCP包的五元组信息,组成査表关键字, 查找TCAM表,若匹配上五元组则查找命中,假设命中地址属于某单元块 A:U是整数,0=<k<=Pw「z;"]l);若未匹配上,则查找失败;
304: SRAM序列号检査信息读取。根据TCAM查表结果,读取SRAM 单元块&中的序列号检查信息,包括序列号s'、长度n'、 ACK序列号a'、 窗口 w'、 FIN标志位f'和删除标志位d',并读取SRAM的A:的序偶单元块 中的序列号检査信息,包括序列号s"、长度n"、 ACK序列号a"、窗口w"、 FIN标志位f,和删除标志位d"。
305: ACK报文判断。
根据TCP头部ACK标志位(见图l)判断是否ACK报文,若ACK标志位为1则为ACK报文;若ACK标志位未置,则为数据报文;
306:数据包序列号上界检査。若s+rK气a"+w")成立,则数据包序列号 上界检査通过,否则不通过;
307:数据包序列号下界检查。若s〉二a"成立,则数据包序列号下界检 査通过,否则不通过;
308:确认包ACK序列号上界检査。若a〈气Sa"+na")成立,则确认包 ACK序列号上界检査通过,否则不通过;
309:确认包ACK序列号下界检査。若^a,成立,则确认包ACK序 列号下界检査通过,否则不通过;
310:表项更新。依据数据包携带的序列号信息,对TCAM和SRAM 的单元块A和A:的序偶单元块中的序列号信息进行更新操作;
311: ACK报文判断。根据TCP头部ACK标志位(见图1)判断是否 ACK报文,若ACK标志位为1则为ACK报文;若ACK标志位未置,则 为数据报文;
312:数据包同方向的TCAM及SRAM表项建立。
依据数据包五元组信息组成表项(SIP1,SP1,DIP1,DP1,P),将其存放在 TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设 为单元块/,并在SRAM的单元块/上填写该数据包携带的序列号信息;
313: NAT。根据设备需要,对数据包进行NAT转换,例如,常见的, 接入设备,如防火墙需要进行NAT转换,骨干路由器则无需进行NAT转 换;假设经过NAT或未经过NAT的数据包的五元组信息为SIP2,SP2,DIP2,DP2,P,若经过NAT,贝!J 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的单元块z'+l中。
315:数据包丢弃。上述任一项检査未通过的数据包将被丢弃。
其中,310表项更新的具体流程(401 408),具体描述如下
401: SRAM该单元块的表项更新。依据数据包携带信息,序列号s,
长度n, ACK序列号a,窗口 w和FIN标志位f,更新SRAM的单元块A:
中对应的信息;
402: SRAM该单元块的序偶单元块的删除标志位(DEL)判断。判断d" 是否置位,若置位,则该TCP数据包反方向的传输已结束,否则,未结束;
403: SRAM该单元块的序偶单元块的FIN标志位判断。判断f'是否 置位,若置位,则该TCP数据包反方向已发出FIN请求报文,否则,未发 出;
404: FIN请求包的ACK报文判断。若数据包为ACK报文,判断s= a"和a=s"+l是否同时成立,若成立,则该数据包为FIN请求包的ACK 报文,否则该数据包为非FIN请求包的ACK报文;
405: SRAM该单元块的序偶单元块的删除标志位(DEL)置位。将SRAM 上的A的序偶单元块中的删除标志位d"置位;406: SRAM该单元块的删除标志位判断。判断d'是否置位,若置位, 则该TCP数据包方向的传输已结束,否则,未结束;
407: TCAM和SRAM表项删除。将TCAM和SRAM上的A:和A:的序 偶单元块中的表项信息删除,即设为全0;
408:表项更新完成。
权利要求
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按序进行单元块划分,每一个单元块包括 id="icf0001" file="A2008100229500002C1.tif" wi="8" he="4" top= "185" left = "103" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>个地址, id="icf0002" file="A2008100229500002C2.tif" wi="4" he="4" top= "185" left = "133" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>代表上界取整,划分完毕后,统一对所有单元块进行整数编号, id="icf0003" file="A2008100229500002C3.tif" wi="28" he="4" top= "196" left = "116" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>在单元块编号完毕后,按照(0,1),(2,3)…(i,i+1)…的方式将单元块组成序偶对,其中i为偶数,单元块i对应的TCAM地址空间包括 id="icf0004" file="A2008100229500002C4.tif" wi="42" he="4" top= "219" left = "139" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/> id="icf0005" file="A2008100229500002C5.tif" wi="24" he="4" top= "230" left = "23" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>共 id="icf0006" file="A2008100229500002C6.tif" wi="8" he="4" top= "229" left = "57" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>个地址,一对序偶表征一条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序列号检查硬 件实现方法,其特征在于所述序列号检查的处理流程G01 314)如下 301:硬件电路判断输入包为TCP包根据数据包的IP报头的协议字段判断是否TCP包,若是则进入以下 的302;302: SYN请求报文判断读取报文TCP头部SYN字段,若SYN标志位置位,即为l,则进入 以下的311,若SYN标志位未置,即为0,则进入以下的303; 303: TCAM表查找根据TCP包的五元组信息,组成查表关键字,查找TCAM表,若匹 配上五元组则查找命中,假设命中地址属于某单元块h A是整数, 0=<k<=Pv"""f],进入以下的304;若未匹配上,则丢弃该数据包(315);304: SRAM序列号检查信息读取根据TCAM査表结果,读取SRAM单元块A:中的序列号检査信息, 包括序列号s,、长度n'、 ACK序列号a'、窗口 w'、 FIN标志位f和删除标志位d',并读取SRAM的t的序偶单元块中的序列号检査信息,包括序列 号s"、长度n,'、 ACK序列号a"、窗口 w"、 FIN标志位f,和删除标志位d";305: ACK报文判断 根据TCP头部ACK标志位判断是否ACK报文,若ACK标志位为1则进 入以下的308;若ACK标志位未置,则进入以下的306;306:数据包序列号上界检査若s+rK-(a"+w")成立,则进入以下的307,否则不通过,丢弃该数据 包(315);307:数据包序列号下界检查若8>=3"成立,则进入以下的310,否则,丢弃该数据包(315); 308:确认包ACK序列号上界检査若a《(Sa"+na")成立,则进入以下的309,否则丢弃该数据包(315); 309:确认包ACK序列号下界检査若&a,成立,则进入以下的310,否则丢弃该数据包(315); 310:表项更新依据数据包携带的序列号信息,对TCAM和SRAM的单元块A:和A: 的序偶单元块中的序列号信息进行更新操作; 311: ACK报文判断根据TCP头部ACK标志位判断是否ACK报文,若ACK标志位为1 则进入前述的303,若ACK标志位未置,则进入以下的312; 312:数据包同方向的TCAM及SRAM表项建立依据数据包五元组信息组成表项(SIP1,SP1,DIP1,DP1,P),将其存放在 TCAM的空闲序偶对的低编号单元块中,即编号是偶数的单元块中,假设 为单元块/,并在SRAM的单元块/上填写该数据包携带的序列号信息, 进入以下的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的单元块&1中。 315:数据包丢弃。
3、根据权利要求2所述的一种基于TCAM序偶的TCP序列号检査硬 件实现方法,其特征在于所述表项更新(310)的具体流程(401 408) 描述如下401: SRAM该单元块的表项更新依据数据包携带信息,序列号s,长度n, ACK序列号a,窗口w和 FIN标志位f,更新SRAM的单元块A:中对应的信息,进入以下的402; 402: SRAM该单元块的序偶单元块的删除标志位(DEL)判断判断d"是否置位,若置位,则进入以下的406,否则,进入以下的403; 403: SRAM该单元块的序偶单元块的FIN标志位判断判断f'是否置位,若置位,则进入以下的404,否则,表项更新完成 (408);404: FIN请求包的ACK报文判断若数据包为ACK报文,判断s-a"和a=s"+l是否同时成立,若成立, 则进入以下的405,否则表项更新完成(408);405: SRAM该单元块的序偶单元块的删除标志位(DEL)置位将SRAM上的A:的序偶单元块中的删除标志位d"置位,进入以下的406;406: SRAM该单元块的删除标志位判断判断d'是否置位,若置位,则该TCP数据包方向的传输已结束,进入 以下的407,否则,表项更新完成(408); 407: TCAM和SRAM表项删除将TCAM和SRAM上的k和k的序偶单元块中的表项信息删除,即 设为全O。
全文摘要
本发明涉及一种基于TCAM序偶的TCP序列号检查硬件实现方法,其特征在于所述方法是利用TCAM来存储需要进行序列号检查的TCP连接的标识信息,又称查表关键字,每一个查表关键字可唯一标识一个TCP连接;利用SRAM存储每一个进行序列号检查的TCP连接的序列号检查信息,TCAM和SRAM串行连接,TCAM中配置查表关键字表,每个TCP连接有正向、反向两个查表关键字表项,这两个表项组成序偶对,每个查表关键字包括确定一个TCP连接的五元组信息,SRAM配置序列号检查信息表,包括序列号、ACK序列号、数据包长度、窗口长度、FIN标志位和删除标志位,每个SRAM表项与TCAM表项一一对应。本发明只需一次存取即可实现序列号检查,大大加快了处理速度,也降低了实现难度。
文档编号H04L9/36GK101321162SQ200810022950
公开日2008年12月10日 申请日期2008年7月3日 优先权日2008年7月3日
发明者丁贤根, 万成威, 冉宇晖, 然 孟, 李玉峰, 菡 邱, 钱菁华 申请人:江苏华丽网络工程有限公司;中国人民解放军信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1