CN1536497A - 一种实现包过滤的防火墙及其实现包过滤的方法 - Google Patents

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

Info

Publication number
CN1536497A
CN1536497A CNA031161782A CN03116178A CN1536497A CN 1536497 A CN1536497 A CN 1536497A CN A031161782 A CNA031161782 A CN A031161782A CN 03116178 A CN03116178 A CN 03116178A CN 1536497 A CN1536497 A CN 1536497A
Authority
CN
China
Prior art keywords
message
rule
protocol
address
burst
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.)
Pending
Application number
CNA031161782A
Other languages
English (en)
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.)
SHANGHAI GUANGDIAN YINGQUEXIN CO Ltd
Original Assignee
SHANGHAI GUANGDIAN YINGQUEXIN CO Ltd
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 SHANGHAI GUANGDIAN YINGQUEXIN CO Ltd filed Critical SHANGHAI GUANGDIAN YINGQUEXIN CO Ltd
Priority to CNA031161782A priority Critical patent/CN1536497A/zh
Publication of CN1536497A publication Critical patent/CN1536497A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种实现包过滤的防火墙及其实现包过滤的方法,该防火墙包括同步动态随机存储器,网络处理器芯片,静态随机存储器,缓存器和引导只读存储器;该实现包过滤的方法使用所述防火墙包括以下步骤,由微引擎完成以下操作:a.接收处理,包括a1、接收报文;a2、报文头部信息处理;a3、报文尾部信息处理;b.规则处理,包括,b1、从规则的队列中取报文;b2、解析并处理报文;b3、对报文进行网络地址转换处理;b4、转发报文;c.发送处理;由strongarm核完成以下操作:d.控制处理,包括d1、控制信息处理;d2、数据信息处理;d3、进行互斥控制。

Description

一种实现包过滤的防火墙及其实现包过滤的方法
技术领域
本发明涉及一种实现包过滤的防火墙及其实现包过滤的方法,尤其涉及一种用网络处理器实现包过滤的防火墙和一种使用该防火墙来实现包过滤的方法。
背景技术
网络处理器(以下简称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机制来实现,分为以下几种:
队列的互斥,这里的队列包括数据队列和控制队列,每个队列都是独立的,所以互斥的时候用的地址根据每个队列实际地址进行互斥;
规则的互斥,所有对规则的操作都需要互斥,包括规则的查找,修改,删除,建立,另外传输控制协议状态检测的互斥也采用这种形式。这里只有一个互斥地址;
时钟的互斥,针对时钟的操作采用这个互斥量。
这三个互斥量之间应该不存在嵌套关系,另外考虑到规则的互斥可能太多,可以考虑采用全局寄存器控制微引擎的每一个线程使得只有一个线程访问规则。

Claims (12)

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、如果以太网媒体接入控制器地址解析成功,将规则的信息填写完毕,标记规则已准备好,将该规则的队列上的报文放到规则总队列上。
CNA031161782A 2003-04-04 2003-04-04 一种实现包过滤的防火墙及其实现包过滤的方法 Pending CN1536497A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA031161782A CN1536497A (zh) 2003-04-04 2003-04-04 一种实现包过滤的防火墙及其实现包过滤的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA031161782A CN1536497A (zh) 2003-04-04 2003-04-04 一种实现包过滤的防火墙及其实现包过滤的方法

Publications (1)

Publication Number Publication Date
CN1536497A true CN1536497A (zh) 2004-10-13

Family

ID=34320261

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA031161782A Pending CN1536497A (zh) 2003-04-04 2003-04-04 一种实现包过滤的防火墙及其实现包过滤的方法

Country Status (1)

Country Link
CN (1) CN1536497A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100380897C (zh) * 2004-11-16 2008-04-09 北京北方烽火科技有限公司 微引擎与StrongArm核的通信方法
CN1750538B (zh) * 2005-09-29 2010-12-01 西安交大捷普网络科技有限公司 基于p2p高速下载软件产生流量的发现及控制方法
CN102035821A (zh) * 2009-09-29 2011-04-27 凹凸电子(武汉)有限公司 防火墙/虚拟专用网集成系统以及电路
CN101060521B (zh) * 2006-04-18 2011-06-08 华为技术有限公司 信息包过滤方法及网络防火墙
CN102497372A (zh) * 2011-12-13 2012-06-13 曙光信息产业(北京)有限公司 一种基于ip报文目的端口过滤策略的系统和方法
CN102694815A (zh) * 2012-06-04 2012-09-26 浙江中控技术股份有限公司 一种安全防护方法、控制单元及工业控制系统
CN101911611B (zh) * 2007-11-29 2013-03-27 高通股份有限公司 经加密和经隧穿的包串流的流分类
CN108881328A (zh) * 2018-09-29 2018-11-23 北京东土军悦科技有限公司 数据包过滤方法、装置、网关设备及存储介质
CN110138809A (zh) * 2019-06-27 2019-08-16 西安微电子技术研究所 一种面向以太网控制器接收链路的tcp报文拼接系统和方法
CN110908798A (zh) * 2019-11-08 2020-03-24 丁剑明 多进程协同式网络流量解析方法及装置
CN111818099A (zh) * 2020-09-02 2020-10-23 南京云信达科技有限公司 一种tcp协议报文过滤方法及装置
CN114553789A (zh) * 2022-02-24 2022-05-27 昆高新芯微电子(江苏)有限公司 直通转发模式下TSN Qci流过滤功能的实现方法和系统
CN114710570A (zh) * 2022-03-16 2022-07-05 深圳市风云实业有限公司 一种基于内核态协议栈的udp数据零拷贝传输方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100380897C (zh) * 2004-11-16 2008-04-09 北京北方烽火科技有限公司 微引擎与StrongArm核的通信方法
CN1750538B (zh) * 2005-09-29 2010-12-01 西安交大捷普网络科技有限公司 基于p2p高速下载软件产生流量的发现及控制方法
CN101060521B (zh) * 2006-04-18 2011-06-08 华为技术有限公司 信息包过滤方法及网络防火墙
CN101911611B (zh) * 2007-11-29 2013-03-27 高通股份有限公司 经加密和经隧穿的包串流的流分类
CN102035821A (zh) * 2009-09-29 2011-04-27 凹凸电子(武汉)有限公司 防火墙/虚拟专用网集成系统以及电路
CN102497372A (zh) * 2011-12-13 2012-06-13 曙光信息产业(北京)有限公司 一种基于ip报文目的端口过滤策略的系统和方法
CN102694815A (zh) * 2012-06-04 2012-09-26 浙江中控技术股份有限公司 一种安全防护方法、控制单元及工业控制系统
CN102694815B (zh) * 2012-06-04 2016-05-11 浙江中控技术股份有限公司 一种安全防护方法、控制单元及工业控制系统
CN108881328A (zh) * 2018-09-29 2018-11-23 北京东土军悦科技有限公司 数据包过滤方法、装置、网关设备及存储介质
CN108881328B (zh) * 2018-09-29 2021-02-23 北京东土军悦科技有限公司 数据包过滤方法、装置、网关设备及存储介质
CN110138809A (zh) * 2019-06-27 2019-08-16 西安微电子技术研究所 一种面向以太网控制器接收链路的tcp报文拼接系统和方法
CN110908798A (zh) * 2019-11-08 2020-03-24 丁剑明 多进程协同式网络流量解析方法及装置
CN111818099A (zh) * 2020-09-02 2020-10-23 南京云信达科技有限公司 一种tcp协议报文过滤方法及装置
CN114553789A (zh) * 2022-02-24 2022-05-27 昆高新芯微电子(江苏)有限公司 直通转发模式下TSN Qci流过滤功能的实现方法和系统
CN114553789B (zh) * 2022-02-24 2023-12-12 昆高新芯微电子(江苏)有限公司 直通转发模式下TSN Qci流过滤功能的实现方法和系统
CN114710570A (zh) * 2022-03-16 2022-07-05 深圳市风云实业有限公司 一种基于内核态协议栈的udp数据零拷贝传输方法
CN114710570B (zh) * 2022-03-16 2023-08-25 深圳市风云实业有限公司 一种基于内核态协议栈的udp数据零拷贝传输方法

Similar Documents

Publication Publication Date Title
CN1279731C (zh) 一种通信流模板分组过滤的装置和方法
CN1536497A (zh) 一种实现包过滤的防火墙及其实现包过滤的方法
CN1249963C (zh) 使用分组摘要信息快速和自适应处理分组的设备和方法
CN1744573A (zh) 业务流的识别方法
CN1242593C (zh) 源地址选择系统、路由器装置、通信节点和源地址选择方法
CN1204504C (zh) 文件传送系统、中继设备、和文件传送方法
CN101047633A (zh) 一种实现多路径传输的方法、装置和系统
CN1437363A (zh) 网关装置及其控制方法
CN1467965A (zh) 分组处理装置
CN1863168A (zh) 发射和接收系统,发射器,发射发法,接收器,接收方法
CN1661990A (zh) 协议版本转换器
CN1914862A (zh) 集群系统、集群成员、故障恢复方法及程序
CN101068198A (zh) 楼宇系统中传输信息的方法、装置和系统
CN1732664A (zh) iSCSI的服务质量
CN1716943A (zh) 获取隧道网关环境中路径最大传输长度的方法及系统
CN1812344A (zh) 一种实现负载均衡的方法和系统
CN1620783A (zh) 用于在通信环上同时管理多个令牌的方法和系统
CN1870583A (zh) 实现移动IPv6节点与IPv4通信伙伴通信的方法
CN1214592C (zh) 多通道数据直接内存访问系统和方法
CN1119001C (zh) 数据发送装置及其方法
CN1780261A (zh) 使用封装和单播的区分服务组播系统和方法
CN1689282A (zh) 分组识别装置和分组识别方法
CN1821946A (zh) 一种存储系统以及存储数据的方法和读取数据的方法
CN1921442A (zh) 一种保障报文硬件转发的方法及装置
CN1283913A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication