一种实现包过滤的防火墙及其实现包过滤的方法

文档序号:6448056阅读:335来源:国知局
专利名称:一种实现包过滤的防火墙及其实现包过滤的方法
技术领域
本发明涉及一种实现包过滤的防火墙及其实现包过滤的方法,尤其涉及一种用网络处理器实现包过滤的防火墙和一种使用该防火墙来实现包过滤的方法。
背景技术
网络处理器(以下简称NP)是一种可编程的新型的并行处理器,具有集成电路的速度和CPU的灵活性,现在并没有使用NP的防火墙以及应用这种防火墙实现数据包过滤的技术。
目前的防火墙基本是采用基于通用CPU开发的用软件实现的防火墙,这样设计的防火墙有转发效率低的缺点。

发明内容
本发明的目的是提供一种实现包过滤的防火墙及其实现包过滤的方法。利用NP具有可编程、研发周期短、投入小、易修改、易升级的特点,将非常耗时的IP数据包处理用NP实现,解决了系统性能低下的问题。
为了达到上述目的,本发明采用如下技术方案一种实现包过滤的防火墙,包括,同步动态随机存储器;网络处理器芯片,与所述同步动态随机存储器相连;静态随机存储器,与所述网络处理器芯片相连;缓存器,与所述网络处理器芯片和所述静态随机存储器相连;引导只读存储器,与所述缓存器相连。
一种实现包过滤的方法,使用所述实现包过滤的防火墙,由Ixp1200芯片的6个微引擎完成以下操作a、接收处理,由Ixp1200芯片的1个微引擎完成处理,包括以下步骤,a1、接收报文;
a2、报文头部信息处理;a3、报文尾部信息处理;b、规则处理,由Ixp1200的4个微引擎并行完成处理,包括以下步骤,b1、从规则的队列中取报文;b2、解析并处理报文;b3、对报文进行网络地址转换处理;b4、转发报文,将报文放到对应端口的发送队列上;c、发送处理,由Ixp1200的1个微引擎完成处理;由Ixp1200的strongarm核完成以下操作,d、控制处理,由Ixp1200的strongarm核完成处理,包括以下步骤,d1、控制信息处理;d2、数据信息处理;d3、进行互斥控制。
所述步骤a1、接收报文包括如下步骤,a11、为报文分配接收缓存,包括存放控制信息的静态随机存储器内存和存放报文内容的同步动态随机存储器内存;a12、通过检查接收有效寄存器的状态确定从哪个端口收取报文;a13、向IX总线接口发送接收请求;a14、将报文分成若干长度固定的分片,每次接收一个分片,接收完成后,通过检查接收控制寄存器确定该分片的接收状态;a15、该分片的接收状态为错误则回到步骤a11;a16、如果该分片的内容不是报文头部信息,则将该分片的内容复制到同步动态随机存储器内存中自第65个字节起的空间中,同步动态随机存储器内存的前64个字节用来存放报文头部信息,转到步骤a31,如果所述分片是报文头部信息,转到步骤a21。
所述步骤a2、报文头部信息处理包括如下步骤,a21、如果当前端口的状态为关闭,记录该报文需要丢弃,转到步骤a31;a22、分析分片的前16个字节,得到以太网协议字段、以太网媒体接入控制器地址和IP版本字段,如果以太网协议字段为地址解析协议或协议字段不是802.3协议,或,如果目的以太网媒体接入控制器地址为广播或组播,或,如果不是不带选项的IP4版本则转到上层处理并转到步骤a31;a23、解析分片的17至48共32个字节,得到IP协议、目的IP地址、校验和、报文的总长度和报文的源地址;a24、如果IP协议为INTERNET网关控制协议或INTERNET控制报文协议的出错报告,则转到上层处理并转到步骤a31;a25、分析目的IP地址,过滤保留的地址;a26、检验校验和,如果校验和出错则丢弃该报文,转到步骤a31;a27、计算报文的索引值,按此索引值来寻找相应的规则,如果IP协议为传输控制协议、用户数据报协议则根据IP的源和目的地址、协议号和源目的端口得到哈希索引值,如果IP协议为INTERNET控制报文协议则根据根据IP的源和目的地址、协议号和INTERNET控制报文协议的类型、代码、标示符得到哈希索引值,其余情况根据IP的源和目的地址、协议号计算索引值;a28、如果是第一个分片,根据的源和目的IP地址、源和目的端口号,协议号来匹配规则的哈希表,分片的ID匹配分片的哈希表,如果没有匹配的规则就建立新的规则项,如果不是第一个分片,根据IP的源和目的地址,分片的ID匹配分片的哈希表,没有匹配的规则就丢弃;a29、查找该索引值下的各个规则,如果没有匹配的规则则创建一个空的规则项,在这个规则项里填上所述计算索引值用的相关数据,规则的引用次数为1,将所述规则项里的信息以及规则的地址交给上层处理,记录该规则的地址,转到步骤a31,如果有匹配的规则,则该规则的引用次数加1,记录该规则的地址,将该规则的地址放入所述报文的静态随机存储器内存中,将报文内容放入同步动态随机存储器内存中。
所述步骤a3、报文尾部信息处理,包括如下步骤a31、如果分片不是报文尾部信息,转到步骤a11;a32、如果该报文需要丢弃,转到步骤a39;a33、如果如步骤a23解析得到的报文长度值与报文实际长度不符,转到步骤a39;a34、开始队列处理,读取规则的状态字段,如果需要丢弃该条流则转到步骤a39;a35、如果该报文所对应的规则尚不完整,则将所述报文放到该规则的等待队列上;a36、如果需要将该报文放到上层,则将所述报文放到上层的等待队列上;a37、将报文放到规则的总队列上,如果总队列已满则转到步骤a39,总队列不满则插入对应该报文的队列;a38、清除标志位和所述缓存的偏移量,将所述缓存设置为未分配,转到步骤a11;a39、清除标志位和所述缓存的偏移量,如果所述报文找到了对应的规则则将规则的引用次数减1,转到初始处理a11。
所述步骤b11、从规则的队列中取报文,包括如下步骤b11、锁定规则队列并读取规则队列信息;b12、如果该规则队列的长度为0,将该队列解除锁定状态,转到步骤b11;b13、从该规则队列中读取报文,队列长度减1,将该队列解除锁定状态;b14、如果报文的报文转发次数值为1,释放该报文的缓存,将规则引用次数减1,转到步骤b11,如果报文的报文转发次数值不为1,修改报文的报文转发次数值,重新计算校验和,但不写回同步动态随机存储器内存。
所述步骤b2、解析并处理报文,包括如下步骤b21、解析报文的缓存,对于分片报文只解析第一个分片,如果是INTERNET控制报文协议报文,转到步骤b22,如果是传输控制协议报文,转到步骤b23,如果是用户数据报协议报文,转到步骤b29,其他类型的报文,只刷新超时时间;b22、修改规则的计数器的值;b23、锁定规则队列,读取TCP报文的状态标志;b24、解析报文的状态;b25、根据报文的方向、原来的状态、当前报文查找TCP状态表得到新的状态;b26、根据报文的状态作相应的处理并解除队列的锁定状态;b27、如果报文的状态标志为特定字段,则将该报文对应的规则的状态标志中的“ESTABLISHED”设为1;b28、根据当前的状态刷新该规则的TCP超时时间;b29、如果收到过回复报文,则将当前的状态标志中的“ESTABLISHED”设为1;b210、根据是否回复刷新该规则的超时时间。
所述步骤b3、对报文进行网络地址变换处理,包括如下步骤b31、判断是否需要进行网络地址变换处理,不需要则转到步骤b41;b32、读取规则的同步动态随机存储器内存中的网络地址变换信息,如果是源类型,修改源地址和端口,如果是回复和目的类型,修改目的地址和端口;b33、如果是传输控制协议报文且为文件传输协议的“pasv”和“port”命令或者用户数据报协议报文且端口为53都送到上层处理;b34、如果是传输控制协议报文/用户数据报协议报文,根据步骤b32的结果修改传输控制协议报文或用户数据报协议的源或目的端口,重新计算IP的校验和;b35、如果是INTERNET控制报文协议报文,修改INTERNET控制报文协议ID并重新计算INTERNET控制报文协议的校验和;b36、根据步骤b32的结果修改源或目的端口,重新计算IP的校验和,重新写入IP的校验和、传输控制协议校验和或INTERNET控制报文协议校验和。
所述步骤b4、转发报文,包括如下步骤b41、读取规则中的路由信息;b42、修改源和目的以太网媒体接入控制器地址;b43、将报文放到对应端口的发送队列上。
所述步骤d1、控制信息处理,包括如下步骤d11、读取控制信息;d12、目的地址为本地规则则将该锁定该规则,将该规则标记为未完成初始化;d13、查找该规则的信息,如果失败,删除该规则上的报文并从哈希表里删除该规则,如果成功,根据路由发送地址解析协议报文,解析下一条的以太网媒体接入控制器地址并返回;
d14、如果以太网媒体接入控制器地址解析成功,将规则的信息填写完毕,标记规则已准备好,将该规则的队列上的报文放到规则总队列上。


图1是本发明的采用网络处理器的防火墙的系统框图;图2是本发明采用的网络处理器芯片Intel Ixp1200的内部结构框图;图3a、图3b、图3c、图3d是本发明的实现包过滤的方法中的微引擎部分的处理流程图;图4是本发明的实现包过滤的方法中的strongarm核部分控制信息处理的处理流程图。
具体实施例方式
下面结合附图进一步说明本发明的技术方案,图1是本发明的采用网络处理器的防火墙的系统框图,如图1所示,包括,同步动态随机存储器11,与网络处理器芯片12相连,用来存放报文内容;网络处理器芯片12,与静态随机存储器13以及缓存器14相连,用来处理报文;静态随机存储器13,与缓存器14相连,用来存放报文控制信息;缓存器14,与引导只读存储器15相连;引导只读存储器15,用来存放引导信息。
本实施例中,网络处理器芯片12采用的是Intel公司的Ixp1200网络处理器,该网络处理器包括6个微引擎以及一个StrongArm核。
图2是Ixp1200网络处理器芯片的内部结构框图,从图中可见位于由下方的6个微引擎和位于左上方的StrongArm核。
图3a、图3b、图3c、图3d是本发明的实现包过滤的方法中的微引擎部分的处理流程图,包括由Ixp1200芯片的6个微引擎完成以下操作a、接收处理,由Ixp1200芯片的1个微引擎完成处理,该微引擎工作包括从读取数据到同步动态随机存储器内存中,分析以太网媒体接入控制器地址和IP地址判断是否需要送到上层;判断报文头部的正确性,根据头部参数生成哈希值,根据哈希值查找是否有相匹配的规则;如果没有匹配的规则就建立一个空的规则挂在哈希表中,将报文放在该规则的队列上,并将控制信息送到上层,如果有则记录报文头部信息和规则的信息到静态随机存储器内存中并将该报文挂到规则总队列上;如果是INTERNET控制报文协议的差错报文要先按照INTERNET控制报文协议的差错报文内部的报文头部信息匹配规则,如果没有则按照外层的报文头部匹配规则;该微引擎每个线程对于一个端口的接收;包括以下步骤,a1、接收报文;a2、报文头部信息处理;a3、报文尾部信息处理。
其中,步骤a1、接收报文包括如下步骤,a11、为报文分配接收缓存,包括存放控制信息的静态随机存储器内存和存放报文内容的同步动态随机存储器内存;a12、通过检查接收有效寄存器的状态确定从哪个端口收取报文;a13、向IX总线接口发送接收请求;a14、将报文分成若干长度固定的分片,例如将报文分成每一片长度为64字节的分片,每次接收一个分片,接收完成后,通过检查接收控制寄存器确定该分片的接收状态;a15、该分片的接收状态为错误则回到步骤a11;a16、如果该分片的内容不是报文头部信息,则将该分片的内容复制到同步动态随机存储器内存中自第65个字节起的空间中,同步动态随机存储器内存的前64个字节用来存放报文头部信息,转到步骤a31,如果所述分片是报文头部信息,转到步骤a21。
步骤a2、报文头部信息处理包括如下步骤,a21、如果当前端口的状态为关闭,记录该报文需要丢弃,转到步骤a31;a22、分析分片的前16个字节,得到以太网协议字段、以太网媒体接入控制器地址和IP版本字段,如果以太网协议字段为地址解析协议或协议字段不是802.3协议(协议字段小于1500),或,如果目的以太网媒体接入控制器地址为广播或组播,或,如果不是不带选项的IP4版本(IP版本字段不为0x45)则转到上层处理并转到步骤a31;a23、解析分片的17至48共32个字节,得到IP协议、目的IP地址、校验和、报文的总长度和报文的源地址;a24、如果IP协议为INTERNET网关控制协议或INTERNET控制报文协议的出错报告,则转到上层处理并转到步骤a31;a25、分析目的IP地址,过滤保留的地址(224.X.X.X,127.X.X.X,240.X.X.X);a26、检验校验和,如果校验和出错则丢弃该报文,转到步骤a31;a27、计算报文的索引值,按此索引值来寻找相应的规则,如果IP协议为传输控制协议、用户数据报协议则根据IP的源和目的地址、协议号和源目的端口得到哈希索引值,如果IP协议为INTERNET控制报文协议则根据根据IP的源和目的地址、协议号和INTERNET控制报文协议的类型、代码、标示符得到哈希索引值,其余情况根据IP的源和目的地址、协议号计算索引值;a28、如果是第一个分片,根据的源和目的IP地址、源和目的端口号,协议号来匹配规则的哈希表,分片的ID匹配分片的哈希表,如果没有匹配的规则就建立新的规则项,如果不是第一个分片,根据IP的源和目的地址,分片的ID匹配分片的哈希表,没有匹配的规则就丢弃;a29、查找该索引值下的各个规则,如果没有匹配的规则则创建一个空的规则项,在这个规则项里填上所述计算索引值用的相关数据,规则的引用次数为1,将所述规则项里的信息以及规则的地址交给上层处理,记录该规则的地址,转到步骤a31,如果有匹配的规则,则该规则的引用次数加1,记录该规则的地址,将该规则的地址放入所述报文的静态随机存储器内存中,将报文内容放入同步动态随机存储器内存中。
步骤a3、报文尾部信息处理,包括如下步骤a31、如果分片不是报文尾部信息,转到步骤a11;a32、如果该报文需要丢弃,转到步骤a39;a33、如果如步骤a23解析得到的报文长度值与报文实际长度不符,转到步骤a39;
a34、开始队列处理,读取规则的状态字段,如果需要丢弃该条流则转到步骤a39;a35、如果该报文所对应的规则尚不完整,则将所述报文放到该规则的等待队列上;a36、如果需要将该报文放到上层,则将所述报文放到上层的等待队列上;a37、将报文放到规则的总队列上,如果总队列已满则转到步骤a39,总队列不满则插入对应该报文的队列;a38、清除标志位和所述缓存的偏移量,将所述缓存设置为未分配,转到步骤a11;a39、清除标志位和所述缓存的偏移量,如果所述报文找到了对应的规则则将规则的引用次数减1,转到初始处理a11。
b、规则处理,由Ixp1200的4个微引擎并行完成处理,根据IP协议号执行相关的状态验证,主要是传输控制协议的状态验证;其中对于需要删除规则的报文比如说传输控制协议的复位报文都送到上层,其余的主要是刷新超时时间和更新状态;执行规则的对应操作;首先判断是否丢,如果不丢弃判断是否需要网络地址转换,如果要则根据网络地址转换连接的方向和属性(源或目的)修改IP地址和端口号,对于文件传输协议的某些命令以及DNS等特殊的报文送到上层;将放该报文挂到发送的队列上。包括以下步骤,b1、从规则的队列中取报文;b2、解析并处理报文;b3、对报文进行网络地址转换处理;b4、转发报文,将报文放到对应端口的发送队列上;其中,步骤b11、从规则的队列中取报文,包括如下步骤b11、锁定规则队列并读取规则队列信息;b12、如果该规则队列的长度为0,将该队列解除锁定状态,转到步骤b11;b13、从该规则队列中读取报文,队列长度减1,将该队列解除锁定状态;b14、如果报文的报文转发次数值为1,释放该报文的缓存,将规则引用次数减1,转到步骤b11,如果报文的报文转发次数值不为1,修改报文的报文转发次数值,重新计算校验和,但不写回同步动态随机存储器内存。
步骤b2、解析并处理报文,包括如下步骤b21、解析报文的缓存,对于分片报文只解析第一个分片,如果是INTERNET控制报文协议报文,转到步骤b22,如果是传输控制协议报文,转到步骤b23,如果是用户数据报协议报文,转到步骤b29,其他类型的报文,只刷新超时时间;b22、修改规则的计数器的值;b23、锁定规则队列,读取传输控制协议报文的状态标志,包括从报文的缓存中读取当前传输控制协议报文的状态标志th_flags和seq从规则中读取传输控制协议的状态oldstate;b24、解析报文的状态,包括current,RST,SYN,FIN,ACK或者none;b25、根据报文的方向、原来的状态、当前报文查找TCP状态表得到新的状态newstate;b26、根据报文的状态作相应的处理如果状态为rlIV,规则的引用次数减一,解除规则的锁定状态,释放缓存,转到步骤b11否则修改当前状态;如果oldstate为rlSS,且当前报文为回复报文的SYN&ACK,将该规则的传输控制协议状态中的handshake_ack值改为seq+1;如果规则的status没有RL_CONN_SEEN_REPLY位且当前报文为复位,则标记该规则需要删除,解除规则的锁定状态,转到步骤b28;对于其他情况,则解除报文的锁定状态;b27、如果报文的状态标志oldstate为rlSR,且dir为ORIG,th_flag的ACK位为1,SYN位为0,并且seq等于规则的传输控制协议状态中的handshake_ack,则将该报文对应的规则的状态标志中的“ESTABLISHED”设为1;b28、根据当前的状态刷新该规则的TCP超时时间;b29、如果当前的状态置了SEEN_REPLY位就表示收到过回复报文,则将当前的状态标志中的“ESTABLISHED”设为1;b210、根据是否回复刷新该规则的超时时间。
步骤b3、对报文进行网络地址变换处理,包括如下步骤b31、判断是否需要进行网络地址变换处理,不需要则转到步骤b41;
b32、读取规则的同步动态随机存储器内存中的网络地址变换信息,如果是源类型,修改源地址和端口,如果是回复和目的类型,修改目的地址和端口;b33、如果是传输控制协议报文且为文件传输协议的“pasv”和“port”命令或者用户数据报协议报文且端口为53(DNS)都送到上层处理;b34、如果是传输控制协议报文/用户数据报协议报文,根据步骤b32的结果修改传输控制协议报文或用户数据报协议的源或目的端口,重新计算IP的校验和;b35、如果是INTERNET控制报文协议报文,修改INTERNET控制报文协议ID并重新计算INTERNET控制报文协议的校验和;b36、根据步骤b32的结果修改源或目的端口,重新计算IP的校验和,重新写入IP的校验和、传输控制协议校验和或INTERNET控制报文协议校验和。
步骤b4、转发报文,包括如下步骤b41、读取规则中的路由信息,包括输出端口和目的以太网媒体接入控制器地址;b42、修改源和目的以太网媒体接入控制器地址;b43、将报文放到对应端口的发送队列上。
c、发送处理,由Ixp1200的1个微引擎完成处理,基本功能就是发送同步动态随机存储器内存中的数据;由Ixp1200的strongarm核主要是配合微引擎的处理,负责指导下层的微引擎如何转发报文,当收到微引擎的建立新的规则的控制信息后,首先判断是否需要转发,如果是到本地的报文,在规则中做送到本地的标记;否则查找策略信息,填补必要的规则的剩余信息,如果需要进行地址解析协议解析的话同时发其地址解析协议的请求,如果成功响应在规则中填入必要的地址解析协议信息并通知下层规则建立好,如果规则的信息创建失败,就删除这个规则,并清除该规则队列上的数据包,包括以下步骤d、控制处理,d1、控制信息处理;d2、数据信息处理;d3、进行互斥控制。
图4是本发明的实现包过滤的方法中的strongarm核部分控制信息处理的处理流程图。
步骤d1、控制信息处理,控制信息的处理主要是规则的建立,包括如下步骤d11、读取控制信息;d12、目的地址为本地规则则将该锁定该规则,将该规则标记为未完成初始化(清除NOINIT标志位),将该规则上的报文挂到本地队列上,解除规则的锁定状态;d13、查找该规则的信息,如果失败,删除该规则上的报文、清除NOINIT标志位并从哈希表里删除该规则;如果成功,根据路由发送地址解析协议报文,解析下一条的以太网媒体接入控制器地址并返回;d14、如果以太网媒体接入控制器地址解析成功,将规则的信息填写完毕,标记规则已准备好,将该规则的队列上的报文放到规则总队列上。
步骤d2、数据信息处理,这里收到的数据信息主要是到本地的报文,有些特殊的报文如文件传输协议报文网络地址转换中的pasv和port命令以及DNS报文的网络地址转换直接在strongarm核中处理。
步骤d3、进行互斥控制,目前互斥都采用静态随机存储器内存的Lock机制来实现,分为以下几种队列的互斥,这里的队列包括数据队列和控制队列,每个队列都是独立的,所以互斥的时候用的地址根据每个队列实际地址进行互斥;规则的互斥,所有对规则的操作都需要互斥,包括规则的查找,修改,删除,建立,另外传输控制协议状态检测的互斥也采用这种形式。这里只有一个互斥地址;时钟的互斥,针对时钟的操作采用这个互斥量。
这三个互斥量之间应该不存在嵌套关系,另外考虑到规则的互斥可能太多,可以考虑采用全局寄存器控制微引擎的每一个线程使得只有一个线程访问规则。
权利要求
1.一种实现包过滤的防火墙,其特征在于,包括同步动态随机存储器;网络处理器芯片,与所述同步动态随机存储器相连;静态随机存储器,与所述网络处理器芯片相连;缓存器,与所述网络处理器芯片和所述静态随机存储器相连;引导只读存储器,与所述缓存器相连。
2.如权利要求1所述的采用网络处理器的防火墙,其特征在于,所述网络处理器芯片是Intel Ixp1200芯片。
3.一种实现包过滤的方法,其特征在于,使用所述实现包过滤的防火墙,由Ixp1200芯片的6个微引擎完成以下操作a、接收处理,由Ixp1200芯片的1个微引擎完成处理,包括以下步骤,a1、接收报文;a2、报文头部信息处理;a3、报文尾部信息处理;b、规则处理,由Ixp1200的4个微引擎并行完成处理,包括以下步骤,b1、从规则的队列中取报文;b2、解析并处理报文;b3、对报文进行网络地址转换处理;b4、转发报文,将报文放到对应端口的发送队列上;c、发送处理,由Ixp1200的1个微引擎完成处理;由Ixp1200的strongarm核完成以下操作,d、控制处理,由Ixp1200的strongarm核完成处理,包括以下步骤,d1、控制信息处理;d2、数据信息处理;d3、进行互斥控制。
4.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤a1、接收报文包括如下步骤,a11、为报文分配接收缓存,包括存放控制信息的静态随机存储器内存和存放报文内容的同步动态随机存储器内存;a12、通过检查接收有效寄存器的状态确定从哪个端口收取报文;a13、向IX总线接口发送接收请求;a14、将报文分成若干长度固定的分片,每次接收一个分片,接收完成后,通过检查接收控制寄存器确定该分片的接收状态;a15、该分片的接收状态为错误则回到步骤a11;a16、如果该分片的内容不是报文头部信息,则将该分片的内容复制到同步动态随机存储器内存中自第65个字节起的空间中,同步动态随机存储器内存的前64个字节用来存放报文头部信息,转到步骤a31,如果所述分片是报文头部信息,转到步骤a21。
5.如权利要求4所述的一种实现包过滤的方法,其特征在于,所述分片的长度为64字节。
6.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤a2、报文头部信息处理包括如下步骤,a21、如果当前端口的状态为关闭,记录该报文需要丢弃,转到步骤a31;a22、分析分片的前16个字节,得到以太网协议字段、以太网媒体接入控制器地址和IP版本字段,如果以太网协议字段为地址解析协议或协议字段不是802.3协议,或,如果目的以太网媒体接入控制器地址为广播或组播,或,如果不是不带选项的IP4版本则转到上层处理并转到步骤a31;a23、解析分片的17至48共32个字节,得到IP协议、目的IP地址、校验和、报文的总长度和报文的源地址;a24、如果IP协议为INTERNET网关控制协议或INTERNET控制报文协议的出错报告,则转到上层处理并转到步骤a31;a25、分析目的IP地址,过滤保留的地址;a26、检验校验和,如果校验和出错则丢弃该报文,转到步骤a31;a27、计算报文的索引值,按此索引值来寻找相应的规则,如果IP协议为传输控制协议、用户数据报协议则根据IP的源和目的地址、协议号和源目的端口得到哈希索引值,如果IP协议为INTERNET控制报文协议则根据根据IP的源和目的地址、协议号和INTERNET控制报文协议的类型、代码、标示符得到哈希索引值,其余情况根据IP的源和目的地址、协议号计算索引值;a28、如果是第一个分片,根据的源和目的IP地址、源和目的端口号,协议号来匹配规则的哈希表,分片的ID匹配分片的哈希表,如果没有匹配的规则就建立新的规则项,如果不是第一个分片,根据IP的源和目的地址,分片的ID匹配分片的哈希表,没有匹配的规则就丢弃;a29、查找该索引值下的各个规则,如果没有匹配的规则则创建一个空的规则项,在这个规则项里填上所述计算索引值用的相关数据,规则的引用次数为1,将所述规则项里的信息以及规则的地址交给上层处理,记录该规则的地址,转到步骤a31,如果有匹配的规则,则该规则的引用次数加1,记录该规则的地址,将该规则的地址放入所述报文的静态随机存储器内存中,将报文内容放入同步动态随机存储器内存中。
7.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤a3、报文尾部信息处理,包括如下步骤a31、如果分片不是报文尾部信息,转到步骤a11;a32、如果该报文需要丢弃,转到步骤a39;a33、如果如步骤a23解析得到的报文长度值与报文实际长度不符,转到步骤a39;a34、开始队列处理,读取规则的状态字段,如果需要丢弃该条流则转到步骤a39;a35、如果该报文所对应的规则尚不完整,则将所述报文放到该规则的等待队列上;a36、如果需要将该报文放到上层,则将所述报文放到上层的等待队列上;a37、将报文放到规则的总队列上,如果总队列已满则转到步骤a39,总队列不满则插入对应该报文的队列;a38、清除标志位和所述缓存的偏移量,将所述缓存设置为未分配,转到步骤a11;a39、清除标志位和所述缓存的偏移量,如果所述报文找到了对应的规则则将规则的引用次数减1,转到初始处理a11。
8.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤b11、从规则的队列中取报文,包括如下步骤b11、锁定规则队列并读取规则队列信息;b12、如果该规则队列的长度为0,将该队列解除锁定状态,转到步骤b11;b13、从该规则队列中读取报文,队列长度减1,将该队列解除锁定状态;b14、如果报文的报文转发次数值为1,释放该报文的缓存,将规则引用次数减1,转到步骤b11,如果报文的报文转发次数值不为1,修改报文的报文转发次数值,重新计算校验和,但不写回同步动态随机存储器内存。
9.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤b2、解析并处理报文,包括如下步骤b21、解析报文的缓存,对于分片报文只解析第一个分片,如果是INTERNET控制报文协议报文,转到步骤b22,如果是传输控制协议报文,转到步骤b23,如果是用户数据报协议报文,转到步骤b29,其他类型的报文,只刷新超时时间;b22、修改规则的计数器的值;b23、锁定规则队列,读取TCP报文的状态标志;b24、解析报文的状态;b25、根据报文的方向、原来的状态、当前报文查找TCP状态表得到新的状态;b26、根据报文的状态作相应的处理并解除队列的锁定状态;b27、如果报文的状态标志为特定字段,则将该报文对应的规则的状态标志中的“ESTABLISHED”设为1;b28、根据当前的状态刷新该规则的TCP超时时间;b29、如果收到过回复报文,则将当前的状态标志中的“ESTABLISHED”设为1;b210、根据是否回复刷新该规则的超时时间。
10.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤b3、对报文进行网络地址变换处理,包括如下步骤b31、判断是否需要进行网络地址变换处理,不需要则转到步骤b41;b32、读取规则的同步动态随机存储器内存中的网络地址变换信息,如果是源类型,修改源地址和端口,如果是回复和目的类型,修改目的地址和端口;b33、如果是传输控制协议报文且为文件传输协议的“pasv”和“port”命令或者用户数据报协议报文且端口为53都送到上层处理;b34、如果是传输控制协议报文/用户数据报协议报文,根据步骤b32的结果修改传输控制协议报文或用户数据报协议的源或目的端口,重新计算IP的校验和;b35、如果是INTERNET控制报文协议报文,修改INTERNET控制报文协议ID并重新计算INTERNET控制报文协议的校验和;b36、根据步骤b32的结果修改源或目的端口,重新计算IP的校验和,重新写入IP的校验和、传输控制协议校验和或INTERNET控制报文协议校验和。
11.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤b4、转发报文,包括如下步骤b41、读取规则中的路由信息;b42、修改源和目的以太网媒体接入控制器地址;b43、将报文放到对应端口的发送队列上。
12.如权利要求3所述的一种实现包过滤的方法,其特征在于,所述步骤d1、控制信息处理,包括如下步骤d11、读取控制信息;d12、目的地址为本地规则则将该锁定该规则,将该规则标记为未完成初始化;d13、查找该规则的信息,如果失败,删除该规则上的报文并从哈希表里删除该规则,如果成功,根据路由发送地址解析协议报文,解析下一条的以太网媒体接入控制器地址并返回;d14、如果以太网媒体接入控制器地址解析成功,将规则的信息填写完毕,标记规则已准备好,将该规则的队列上的报文放到规则总队列上。
全文摘要
一种实现包过滤的防火墙及其实现包过滤的方法,该防火墙包括同步动态随机存储器,网络处理器芯片,静态随机存储器,缓存器和引导只读存储器;该实现包过滤的方法使用所述防火墙包括以下步骤,由微引擎完成以下操作a.接收处理,包括a1、接收报文;a2、报文头部信息处理;a3、报文尾部信息处理;b.规则处理,包括,b1、从规则的队列中取报文;b2、解析并处理报文;b3、对报文进行网络地址转换处理;b4、转发报文;c.发送处理;由strongarm核完成以下操作d.控制处理,包括d1、控制信息处理;d2、数据信息处理;d3、进行互斥控制。
文档编号G06F12/14GK1536497SQ03116178
公开日2004年10月13日 申请日期2003年4月4日 优先权日2003年4月4日
发明者周耀华, 黄 焕, 彭锴, 姚能长 申请人:上海广电应确信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1