当前位置:首页 >> >>

嵌入式防火墙中TCP/IP协议栈的实现_图文

维普资讯 http://www.cqvip.com

第2 0卷 第 4期 
20 0 6年 l   2月



















报 

Vo .0 No4 12   .   D e o6 e .2 o  

J 0URN     AL 0F H0HAI UNⅣ E ⅡY    RS CHANGZ H0U 

文 章 编 号 :0 9 1 3 (0 60 - 0 3 0   1 0 —   0 2 0 )4 0 3 - 4 1

嵌入 式 防火墙 中 T P/ P协议栈 的实现  C I
蒋俊 锋 
( 海 大学 计 算 机及 信 息 与工 程 学 院 ,江 苏 常 州 河 232 ) 1 0 2 

摘 要 :针 对 嵌 入 式 防 火 墙 , 计 适 合 在 嵌 入 式 防 火 墙 网 卡 中运 行 的 T P, P协 议 栈 .通 过 修 改 l 设 C I P协 议 字 段 解 决  T PI C / P协 议 栈 区 分 策 略数 据 包 和普 通 数 据 包 的 问题 , 传 统 的 B D 协 议 栈 进 行 裁 剪 。 到 了 基 于 S C 4 0 的大  对 S 得 3 4B X 小 为 l 2k 3  B的 T P/P协 议 栈 .测 试 结 果 表 明 : 进 的 T P, P协 议 栈 能 保 证 嵌 入式 防火 墙 的底 层 通 信 . C I 改 C I   关键 词 :嵌 入 式 系 统 ;分 布 式 防 火墙 ;T P,P C I  中图 分 类 号 :T 3 6 P 1  文 献 标 识 码 :A  

19 9 9年 See   t n M.B l vn针对 边界 防火墙 ( ei t   i w l) 法抵 制来 自内部 网络 攻击 的缺 点 . v eoi l P r e Fr a1无 me r e 提 

出 了分布 式 防火墙 的 概念 ….在分 布式 防 火墙 中 , 略 由 中心统 一 定 义 , 略 的执 行 由各 个 端结 点 完成 .分  策 策 布式 防火 墙 能 有 效 防止 网络 内部 攻击 , 具有 策 略统 一维 护 的特 点.2 0 0 2年 4月 2 2日,C m 公 司推 出 了嵌  3o

入式 防火 墙产 品 . 在 高端 领 域 内 获得 了广 泛 的 应 用 .目前 国内 尚无成 型 的分 布式 防火 墙产 品 . 文 中作  并 本
者在 完 成嵌 入式 防火 墙 网卡 硬 件设 计 的基础 上 . 计并 实 现 了适合 在嵌 入式 防火墙 网卡 中运行 的 - P,I 设 I ℃ I  ' 协议 栈 , 过 对传统 的 B D通 信协 议栈 的裁 剪 , 简 了代码 , 通 S 精 解决 了在 通 信协 议栈 中区分策 略 数据包 和普通 

数据包的问题 ; 通过对协议栈静态缓冲区 sbf的改进 , ku 提高了通信协议栈的执行效率.  

1 嵌 入 式 防火 墙 网卡 
T P,P协 议栈 的应 用 背景 是分 布式 防火墙 .目前 国内外 实现 分 布式 防火墙 的方法 有 软件 实 现 和硬件  C I 实 现.软件 防火 墙普 遍存 在操 作 系统 和防火 墙 “ 保护 谁 ” 谁 的问题 ; 于硬 件 的分 布式 防火 墙 , 基 即嵌 入式 防火  墙 , 以做 到 与操作 系统无 关 , 可 其安 全性 能 也优 于 软件 防火 墙 [ 2 现嵌 入式 防火 墙 的硬 件 是带有 防 火墙 功  ] .实 能 的嵌 入式 防火 墙 网 卡 E   N C( mb d e   i w l N t ok Itr c  ad .在 一 个 L N 内 . 现 嵌 入  I E e d d Fr a   e r nef e C r ) e l w a A 实 NC I .在 L N 内有终 端 、 A 应用 服务 器 和策 略 服务器 等 网络 设 
’  

式 防火墙 的 条件 是 , 台机器 都 必须安 装 E 每  
各个 设备 的 E W  I F N C发送 策略文 

备 .这些 网络设 备 都受 到 E W  I F N C的保 护 , 通 过 E W  C连 接 到 以太 网 内 , 中策略 服务 器 向 L N 内  并 F NI 其 A 件 . 备 启 动 时 E W  I 设 F N C开 始 工  作. 并根 据存 储 在硬 件 中 的策 略过  滤 接收 的数据 包 .   图 1为 嵌 入 式 防火 墙 网 卡 的 
结 构 图 , 中 S C 4 O 是 C U, 图 3 4B X P  

传输 

负 责 运行 软 件 模块 .T P, P协 议  C I
栈 程 序 、 滤 策 略和 包过 滤 等程 序  过

存 储 在 F A H 中 . 统 启 动 时 由  LS 系
S C 4 O 将 软 件 模 块 程 序 从  3 4BX FAS 中导 人 到 S R M 中运 行 . I H D A  
F g   H舢  i .1

图1 嵌入式防火墙网卡硬件结构图    
踟  a da e m  ̄ o   h   m l d d Ir wa i NI r ie t f t e e md e   le l   C 

收 稿 日期 :2 0 - 6 1   0 60- 5

作 者 简 介 :蒋 俊锋 (9 9 )男 , 苏 常 州 人 , 教 , 算 机 科 学 与 技 术 专 业 , 要 从事 嵌 入 式 设 备 和 网络 安 全 方 面 的研 究 . 17 一 , 江 助 计 主  

维普资讯 http://www.cqvip.com



















报 

2O O 6年 1 2月 

嵌 入 式 防火墙 网卡加 电启 动 时 , 通过 通信 协议 栈将 策 略文 件 从策 略服 务 器下 载到 网卡 的 F A H 中 , LS 然后 由 
包过 滤 程序 根 据策 略 对 网卡 接 收 的数 据包 进 行过 滤 , 因此 网卡 中 的 防火墙 与 主 机操 作 系 统无 关 , 就 克 服  这

了传 统软 件 防火 墙 的缺 点.网卡采 用 2片 R L 0 9 S 其 中 R L 0 9 S T 8 1A . T 8 1A 2负 责 处理 与 外 部 网络 有关 的数 据  包 , T 8 1AS 负 责处 理主 机一 侧的数 据 通信.由于 R L 0 9 S不支 持 P I R L 09 1 T 8 1A C 总线 [, 此采用 R L 0 9芯  3因 ] T S2
片与 P I C 总线 连接 .  

2 TC   协 议 栈 的 设 计 方 案    P/
21 T P, 协议 栈和 B D 协 议栈 的比较  .   C 口 S

T P,P协议 栈不 但必 须满 足嵌 入式 系统 的要 求 . C I 而且应 满 足实 时性强 和代码 精 短 的要 求 .通信 协议栈 
的参考模 型 是 B D T P,P S S   C I .B D协议 是 通用 协议 , 能 十分 齐全 且结 构 复杂 .因此 , 功 只有 对原 有 的 B D进  S 行 适 当的裁 剪 . 能 得到适 合嵌 入式 放火 墙背 景下 使用 的 T P/P协议栈 . 才 C I  

在 操作 系统 方面 ,S B D协议 栈 采用 B D系统 , S 由于 T P,P协议 栈 应用 在嵌 入 式 系统 中 , C I 因此采 用大 小 
只有 3 0k 0  B的实 时 操作 系统  C, S Ⅱ.在数 据 输入 方 面 , 入式 系 统对 实 时性 要求 较 高 , 以网 卡驱 动  O. 嵌 所 程序 在输 入 时不 采用 软件 查 询 , 采用 类 似 B D 的 中断 输 入 方式 .在 协 议栈 的缓 冲 区方 面 , S 而 S B D协 议栈 使  用 mb f u 的数 据结 构 , 它是 一个 动 态链 表 , 如果 在嵌 入式 防火 墙 中也 使用 这样 的数 据 结构 就会 增加 程 序 的复 

杂性 , 造成 不 必要 的系统 资源 的浪 费.为 此作 者设计 了一个简 单 的数组 , 以此 申请 足够 的静态 内存 用 于存  并
储 输入 、 出 队列.协 议 模块 只有 A P I MP、 U P 唧 输 R 、C I D 、 P、 同 时对每 个模 块 的功 能也都进 行 了简 化.  
22 设 计 中的关 键 问置  .
221 缓 冲 区 sb f 的 设 计  .. ku

等 5个 简 化 的模 块 , 量 比 B D系统少 得 多 , 数 S  

缓 冲 区用于存 放 通信 中 的数据 和通信 系统 中各协 议 模块 之 间 的交换 数 据 .传 统 的通 信 协议 栈 . B D 如 S 
使 用 的缓 冲区是 m u 双 向循 环链 表 [, bf 4 这种 结构 在处 理较 多的 数据 时效 率较 高 , ] 但结 构 复杂 , 因此 不适 合应  用 在嵌 入式 系统 中.嵌入 式 防火墙 网卡 中的通信 协议 栈 , 只负责 接 收策 略服 务器 的 策略 和发 送审 计信 息 , 数 

据 量 相对 较少 .因此为 了提 高 效 率 , 在设 计 缓 冲 池 时 没 有 采 用 类 似 m u bf的链 表 存 储 , 而是 采用 数 组存 储 .  
网络协 议栈 初 始化 后 . 统 为缓 冲池 分 配一 个类 型为 s_ u 的数 组 用 于 存 放协 议 栈 数 据.s_ u 的数 据  系 kbf kbf
结 构 如下 :  
sr c  k tu t s
_

b f{ u  

u s n d c a  a [ ]  n i e   hrp d 2 ; g n i d c a b fE H F AME L N]  u s e   h   u[ T _ R n g r _E ;
u sg e  n r e ie n i d ittu sz ; n u s e   h rdt   n i d c a * aa; n g
。 

| B fe  ie |   u r sz    , Daa h a   one  , .   t  e d p itr   | L n t  fa ta  aa |    ̄ gh o  cu ld t  

u s e  n  e n i d itln; n g

l   在 发送 I MP数据 时 , 先从 缓 冲池 中取 出一个 类 型为 s_ u 的缓 冲 区 , 后对 缓 冲区 首部 初始 化 , C 首 kb f 然 并 

在缓 冲 区首部 预 留空 间.若 为 I MP发 送 , 预 留 I MP I C 则 C 、 P以太 网的首 部 ; 留首部后 d t 针指 向 I MP  预 a a指 C . I MP首部 封装 完毕 后 , 用 I C 调 P发送 函数 进行 发送 , 发送 函数 调用 sb p s ( 使 d t 向 I 部 , 后封 装  k _ uh ) a a指 P首 然 相应 的 I 部.以此类 推 . 到将 所有 首部 封装 完毕 后再 发送 sb . P首 直 ku   f 222 普 通数 据 包和策略 数据 包的 区分方 法  .. 根据嵌 入 式 防火墙 的特殊 性 . 客户 机和 策略 服务 器都 至少需 要 2个通 信协 议 栈.一 个是 嵌在 E W 网卡  F 中 , 考 B D T P,P模型 设计 的通 信协 议栈 , 括 MA A P、 、C 、 D 、   等模块 , 些模 块 与嵌  参 S C I 包 C、 R I I MP U P 矸 P 这 入 式操 作 系统结 合 , 责客 户端 接 收策 略服 务 器 的策 略 和发 送审 计信 息 , 理 的数据 量很 少 ; 负 处 另一 个是 安装  在 主机操 作 系统 中的 协议 栈 , 包括 AR 、P I MP U P T P I MP等模块 , 些模块 与 主机操 作 系统结 合 负  PI、 C 、 D 、C 、 G 这 责 向客 户提供 如 F P和 WWW 等 应用 层服 务.为 了 区分 普通 数据 包 和策 略信 息 数据包 , 须在 I 的协议  r 必 P头 字 段里 输入不 同的值 , 果 I 如 P头 的 协 议 字 段 为 E   A toi , uh ry 因特 网分 配数 字 权威 ) t 的数 字分 配 原则 [, E 5将   ] R T 则 根 据 I N It tAs g e   u b r O O, A A(ne   s d N m e  me i n R T 的取 值为 1 8 2 2 本 系统 取 2 0以标  OO 3~5 , 0

维普资讯 http://www.cqvip.com

第2 o卷 第 4期 

蒋俊 锋

嵌 入 式 防 火 墙 中 T P,P协 议 栈 的 实 现  C I

识此 数据 包为 策略 数据 包.  

3 TC   协 议 栈 的 实 现    P/
T P,P协 议 栈需 要 底 层 网卡 驱 动 的支 持 . F 网卡 的驱 动 程 序包 括 1片 R L 0 9芯 片驱 动 和 2片  C I EW T 82 R L 0 9芯片驱动 . T 81 由于 E W 网卡中 R L 0 9的芯片电路和普通 网卡 中的相 同 。 F T 82 因此利用 主机 自带 的驱 动程  序就 可 以驱 动 R L 0 9芯 片 , T S2 需要 实 现 的 只是 2片 R L 0 9的驱 动 程 序. 驱动程 序包括 R L O 9的初 始  T 81 该 T ¥1 化、 输入 和输 出.设计 中断服务 函数时采 用 了  C/ S Ⅱ提供 的中断服 务 , 中断服务 函数 为 lit(. O. 其 enr )  
图 2反映 了接 口层 函数 之 间的调 用关 系 . 当防火墙 网卡检测 到一 帧数 据 时 . 系统调用中断处理函数 lit  e r n.

1 nr 先调 用 网卡驱 动程 序 中 的读 函数 sc 4 O eh rv 该 帧数 据从 硬 件 中读 出并 复制到 sbf中; e t首 i 34 b t c 将 ku 然后 
_
_

将数 据帧传 递 给函数 nthnl e ade做进 一 步 处   
理 .函数 nth n l e a de调用 数 据包 过 滤 函数进  _

行 过滤 , 过滤 后 的数 据 经 分用 后 交 给 上层 协 
议 栈 i_c  ak t 者 ap rv p c e 进行  p rvp c e 或 r_c a kt
_

处 理 .数据分 用 是指 根据 协 议首 部 中 的协议 
字 段 判 断 出 应 采 用 上 一 层 的哪 个 协 议 模 块  进 行 处 理 .当 网 络 层 发 送 数 据 时 . 先 调  首
用 e _ e d发 送 .t sn t sn h eh e d负 责 封 装 以太 网 
_

中断 

首部 ,然 后 调 用 网卡 驱 动 发 送 函数 发 送 该  帧 .接 口层设 计 函数 用于 判 断此数 据包 是 否 

圈 2 接 口屡 模块 函数 交互 圈 
r g   I t r c i n g a h f r t e f n t ms o   h i .2 n e a t   r p   o   h   u ck   f t eb/ rm:  a e   o e f e ly r

为策 略 数据 包 并 负责 调 用 包过 滤 程 序 . 通  在
信 协议 栈 中起着 十分 重要 的作 用.函数 n thnh 运 行后 首先 取 出 I e ad P首部 的协 议字 段 , 如果 值 为 2 0 则此  0,
_

数据 包为 策略 数据 包 , 并将 其交 给上层 嵌 入 式 通 信 协 议 栈 处 理 , 则 将 接 收 到 的 帧 进 行 包 过 滤 .过 滤 后  否
的 数 据 帧 调 用 网 卡驱 动 发 送 程 序 和 sc 4 0 eh sn 3 4 b t e d将 该数 据 帧 写 入 R L 0 9 S T 8 1A 1的发 送缓 冲 区 . 给  交
_

_

上层 操作 系统 的协 议栈 处理 .  

在嵌 入 式 系统 中要 求 通信 协 议 栈 的 代 码尽 量 精 简 . 每  个 模块 的设 计 都 必须 遵 循 这 一 原 则 .对 于 I 块 。 于防  P模 由 火墙 系 统应 用 于局域 网 内 , 以不需 要路 由功 能 。 且 该 协  所 况 议栈 只负责 接 收策 略文 件 和发送 审计 信 息 , 据量 小 , 数 无需 
分 片 , 以不 需要 分 片 和 重组 功能 .图 3是 I 块 函数 的  所 P模

交 互 图 , 中 函数 i_e d ) 图 p sn ( 负责 封 装 I P首部 , 并调 用 驱 动  程 序 中的发 送 函 数 sc4 0 e sn ( 发送 此 I .函数  34 b _ t e d ) h P包
_

i p
_

rv ) 责处 理 接 收到 的 I c(负 P包 , 在判 断 I 部协 议 字 段  P首

, 

圈 3 l 模 块 函 数 交 互 圈    i p

时 , 果协 议 字段 的数 值 为 1则 此数 据 包 为 IMP包 , 接 Fg 3 I tr t 掣_ h o P mol ' fmt ̄   如 , C 直 i   nem: ̄ . l p  fI   t s u k  ̄   交 给 I MP接收 函数处 理 : 果协议 字段 的数值 为 2 0。 为  C 如 0 则
策 略数据 包 , 直接 交给 U P接 收函数 处理 . D  
U P模块 有 2个 函数 : D D U P接 收处 理 函数 u p rcv pce ) U P发送 函数 u psn (. 中, d akt 和 D ( d _ed ) 其 函数 
_ _

u p d
_

rcv

_

p c e( 只负 责判 断端 口号 , 果 是 6 a k t) 如 9号端 口, 示上 层 协议 为 F P 交 给 Fr 表 Ir , I P的接 收 函数 进 行 

处理 , 否则 丢弃这 个 数据 包.参 照 R C 9 , P包 在发送 时 U P的校 验 和是 可选 的 , U P包 中的数据 是  F 7 3 UD D 但 D

安全 策略 , 对可 靠性 的要 求高 于效 率 , 因此在 接 收到 U P包 时必须 计算 U P的校 验 和. D D  
由于策 略文 件 较小 , 因此 策 略文 件 采用 唧 的策 略.在 唧 模 块 中只设 计 了 唧 协 议下 载 .在策 略服务 器 端有 专 用 的 唧 服务 器 。 策略 

文件 存放 在其 下载 目录 下 . 因此 嵌 入式 防 火 墙 的客 户 端 只需 要运 行 T T F P客户 端 程 序就 能 接 收策 略服 务器 
客 户 端 模块 . 唧 支持 5种 类 型 的包 : e d rq etR Q)  t R a  e us( R 、 e  

rqetWR 、 a ( A A)A ko ldm n( K)ErrE R R)包 的类 型 由 t_poe标 记 .唧 eus( Q)D t D T 、 cnweg etAC 、ro( R O , a h ocd
块传 输 数据 , 每块 数据 的大 小为 5 2k 块 编号 由 t  lc  识 . 1 B。 u bok标 _ 唧
s u t fp d { t c f h r  r t

按 

首部 的数 据结 构如 下 :

维普资讯 http://www.cqvip.com



















报 

20 0 6年 1 2月 

s ot hr  

t o cd   h p o e;
_ _

, }操作码 }   ,
, }块 编号 #}   , / }差错 码 }   /

u i u s n d sot t b o k; n n{ n i e  hr u l c   o g  
s ot h r  c a  hr
t u
_

cd   o e;
_

t u

sf1; t [] u  

, }请 求包 填充 域 }   ,

}h u } t_ ;   Ⅱ  传 输数 据 时 , Ⅱ  客 户 首 先 发送 一 个 读 请 求 并 说 明要 读 的文 件 名 和文 件 模 式 , 如果 此 文件 能被 

I1P 1 口 服务器 读取 ,1 口 服务器 就返 回一个块 编号 为 1的数据 分组 ;然 后 1 口 客 户发 回块编 号为 2的 A K  F  F P I1 I1P F C. Ⅱ1P服务 器重 复这个过程 就能判 别 出该 文件是 否发送 完毕 . = ' 除最 后一个 数据分 组可 含有不 足 5 2 B的数据  1  k 外 , 他 每个 数据 分组均 含有 5 2k 其 1 B的数据 , 因此 当 1 口 客 户 收到一 个不 足 5 2k I1P F 1 B的数据 分组 时 , 可断  就 定 收到 的是最 后 一个数 据分 组.  

4 结 束 语 
初 步实现 了一 个经过多 种简化 的嵌入式 T P/P协议栈 。 C I 通过设 计适合 嵌入式系 统的 内存 缓冲 区 , 一次 申   请 足够 大的空间 。 方便 了嵌 入式通 信协议 栈之 间 的数 据传递 , 并能 保证 只需 2次 数据拷 贝 , 数据拷 贝次数 降  将 到 了最 低 ; 过修 改 I 头 的协议字 段实 现 了普 通数 据包 和策 略数 据包 的 区分 , 通 P包 同时对 I、 M 、 PI P唧 C 等 协 
议模块 进行 精简 。 裁剪 了传统通 信协 议栈 . F N C中存放 T P,I协议 栈 的 F A H为 2MB, 中 T P,I E W  I C I ' LS 其 C I  ' 协议栈 的代码 量仅 为1 2 B. E W 的功能扩 展提供 了空间. 试结果 表 明 。 协议栈 可 以向 E W 中软件 的  3k 为 F 测 该 F

上层模 块提供下载 策略 的接 口. 布式 防火墙 的客户端可 以将策略文件从 策略服务器 下载到 E W 网卡 中. 分 F  

参考 文献 :  
[ ]B l v     Ds iue  rw l [ B, L .[0 5 1- ] t : w wrsa ha . r, m , aes ds w hm . 1 e oi S M. ir t fe a sE O ] 2 0 —  1 .h p / w . er .t o ~s b p pr, i . t1 l n tb d i l 1 1 t/ e c tcn f   [ ]P y eC Mak a   A c i c t  n  p l ain  rdsr ue  mb d e  rw lE / ] 20 - 2 2. t : w w 2 a n  , rh m rht ur ad api t s o  i i tde e ddf e al B OL.[0 5 14)] ht # w . e e c o f db i [ p  
a s c r 1 0 1 p p r / 3 d. ca  ̄ g 2 0 / a s 7 . f e p  

[]R at . 1 0 9 S D t he[ B, L .[06 0 - 1.h p / w . a e . r. . 3 el k R   1 A   a setE O ] 2 0 - 10 ] t :w wr h kcn t   e a t/ e o w

[ ]SeesW  . C /P详解卷 2 实现 [ .陆雪莹 , 4 t n  R T P I v : M] 蒋慧 , 谢希仁 , 译.北京 : 机械工业 出版社 ,OO:4 4 . 20 2 _ 8  
[ ]I N .Pooo nmbr n  si m n ev e [ B, L . 2 0 - 2 1 ] ht /w wi a r , u e . m . 5 A A rt l u e a das n e tsri sE O ][0 5 1- 0 . t / w .n . g nmbr h 1 c  s g c p: a o s t  

I lme t t n o   mp e n a i   f TCP/ o  

Pr t c l S a k i   o o o   t c  n Em b d e   r wal e d d Fie l  

J ANG  u I J n-f n   eg

( o ee o  o ue C f g  fC mp tr& If m t n E gn eig o a  nv,C agh u 2 3 2 ,C i ) i no ai   n ier ,H h iU i. h n zo   1 0 2 hn   r o n a

A sr c :T e T P,P a piai  n e b d e  ytm i dsu sd B sd o   F E b e   i w l , b ta t h   C I  p l t n i m e d d ss  S i se . ae   n E W( m  ̄d d Fr a )  c o   e   c e 1
a o  c mmu iain   tc  i e i e   ih is n h  E W   C.T e P poo o  e me t i  df d o nc t s sa k S o  d s n g d whc  f  i te F t NI h  I   rtc l s g n  S mo i e  t  i df r nit  e c mmo   a k t a d t e p l y p c es y c t n   e ta io a  D  rt os b s d o   i ee t e t   o a h n p c es n   h   oi   a k t.B   ut g t  rd t n lBS p o l , ae   n   c i h i oc te 3 4 B X c i w t 1 2 k te o h  S C 4 0 hp i h 3   B.  c mmu iain tc  i s l e  a  p sil a i a . h nc t  sa k s i i d s osbe s t n   o mp f i  C e et  ts  

s o  ta  e i l e   C ,I  p tc l i rb s. d te lw - e e c m u iain f E h ws h t t  smpi d T P h i f P r o o  s o u t a     o o n h lv l o nc t  0  F  C  b   o n a e
g aa te . u rne d 

Ke   r s mb d e   ytm ; dsr ue   rwal T P, P y wo d :e e d d s s e it b td f e l; C i i I