Netfilter_Iptables框架下基于TCP滑动窗口的串行流量控制算法

更新时间:2023-05-05 04:51:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CN 43 1258/ T P ISSN 1007 130X -
计算机工程与科学COM P U T ER EN GIN EERIN G & SCIEN CE
2009 年第 31 卷第 10 期 Vo l 31, N o 10, 2009 1 1
文章编号: 1007 130X ( 2009) 10 0008 04 -
N et filt er/ Iptables 框架下 基于 T CP 滑动窗口的串行流量控制算法 A Serial Traffic Control Algorithm Based on the T CP Sliding Window in the Netfilter/ Iptables Framew ork*
杨 虎 1 , 张大 方1 , 谢 鲲 2 , 雷渊明 1 , 何施茗 2 YANG Hu , ZHANG Da fang1 , XIE Kun2 , LEI Yuan ming1 , HE Sh- ming2 i1
( 1. 湖南大学软 件学院, 湖南 长沙 410082; 2. 湖南大学计算机 与通信学院, 湖南 长沙 410082) ( 1. School of Sof tware, Hunan University, Changsha 410082; 2. School of Computer and Communications, Hunan University, Changsha 410082, China) 摘 要: 传统 的基于流量整形的流 量控制算法通常需 要建立对应的队列 模型, 实施 起来极为复杂, 而且所有数据 包都 要进入整形队列, 加大了网络延时。本文从 T CP 协议拥塞控制和数据包组包 机制出发, 提出了基于 T CP 滑动窗口的 串行 流量控制算法, 通过改变 T CP 发送端窗口的大小来达到流 量控制的目 的。本文在 L inux 内 核 N etfilter/ iptables 框架 中实 现了该流量控制方法, 在部署的网络环境中, 比较了不同参数设置下的算法效果。与 CBQ 算法相比, 该方法降低了数 据包 在队列中排队整形的延时。 Abstract: T he tr adit ional t raffic contro l alg or ithms based on tr affic shaping, usually requir e a co rr espo nding queueing model, w hich leads to the co mplexity of implementatio n. F ur thermo re, all datag ram hav e to w ait in the shaping queues, which increases t he delay time. T his article star ts from the T CP cong estion co nt rol proto col and t he datagr am gr ouping mechanism, puts fo rth a ser ial tr affic co ntr ol algo rithm based on the T CP sliding window , w hich chang es the sender. s win dow size fo r the purpose of co nt ro lling the tr affic as w ell as reducing t he sha ping and queueing delay time. T he implementa t ion and ex per iment at ion of t his alg or ithm in the N et filt er/ I ptables f ramewo rk, via comparing differ ent sets of par ameters for t he perfo rmance and co mpar ing w ith the CBQ alg or ithm, show the effect iveness and efficiency. 关键词: N etfilter/ Iptable; T CP 滑动窗口; 流量控制 Key words: Netiflter / Iptables; T CP sliding w indow ; tr affic contro l doi: 10. 3969/ j. issn. 1007 130X. 2009. 10. 003 中图分类号: T P393 文献标 识码: A 流量控制在这种环境下应运而 生。它旨 在根据各种业
1
引言
务的流量特征与性能需求, 通过动态分配网络资源, 满足关 键业务性能, 保证网络高效、 可靠、 稳定地运行, 为局域网应 用提供性能保证和 Qo S 服务。 根据网络结构的不同, 流量控制系统可分为两种方式: 旁路( 并联) 方式和网关( 串行) 方式。 旁路(

并联) 方式通过交换机的端口镜像 或光纤上的分 光获取复制包, 通过包 伪造技术 实现对 流量的 控制。这 种
随着互联网高速发展, 许多诸 如远程教 育、 oI P、 OD V V 以及电子商务等 Q oS( Q uality of Ser vice, 简称 Qo S) 敏感的 应用 大 量 出 现。 建 立 在 尽 力 而 为 ( Best Effo rt ) 服 务 的 [ 1] T CP/ IP 协议簇上 的互 联网 络, 已 经不 能满 足网 络 区分 服务的需求, 它们需要网络提供比尽力而为更 完善的服务。
*
收稿日期: 2008 -02; 修订日期: 2008 -31 -08 -10 基金项目: 国家自然科学基金资助项目( 60673155, 60703097) ; 国家 自然科学基金重 大研究计划资助 项目( 90718008) ; 国家 973 计 划资助项目( 2007CB310702) ; 湖南省科技计划资助项目( 2006G K 3101) 作者简介: 杨虎( 1984 , 男, 湖南望城人, 硕士生, 研究方向为网络测试; 张大方, 教授, 博士生导师, 研究方向 为可信系统与 网络、 -) 容 错计算; 谢鲲, 博士, 研究方向为可信系统与网络、 网络测试; 雷渊明, 硕士生, 研究方向为网络 测试; 何施茗, 博士生, 研究方向 为网 络测试。 通讯地址: 410082 湖南省长沙市湖南大学软件学院; T el : 138********; E -mail: yanghu157@ 163. com Address: School of Soft w are, H unan U niversit y, Changsha, H unan 410082, P. R. C hina
8
方式不会影响网络的原 有架构, 并且 基本不 会降低网 络性 能。但是, 由于网络流量不直接经过系统, 现有技术很难从 根本上解决流量的整形和控制问题, 更常用于 网络监测。 网关( 串行) 方式下, 流量控 制系统 置于局 域网的 出口 处, 所有局域网的流 量都通过 该系统 与外网 连通。串 行流 量控制机制通常通过为网络设备的输出队列配置不同的队 列算法来实现, 队列 算法又实 现以下 功能 [ 2] : 整形、 度和 调 丢弃。网关方式可以直接 对原包进 行操作, 其 实现对 流量 带宽控制的一般方法是 捕获到原 包后对 原包过 滤和标 记, 再依据不同的标记让原包进入不同的队列进行调度。代表 性的队列调 度算法 包括 HT B[ 3] 、 CBQ [ 4] 、 RED[ 5] 和 SFQ [ 6] 等。这种方式具有很强的 可管理性 和控制 性, 但它仅 采取 被动反应的模式, 即只/ 防0 不/ 攻0 : 从源头发生的各种流量 实际上并没有减少, 而 是通过 流量整 形和队 列调度达 到限 制的目的, 极易造成性能瓶颈。 本文从/ 攻0 的角度出 发, 利用 T CP 协 议内在 机制, 提 出基于 T CP 滑 动 窗口 的 串 行 流量 控 制 算 法。通 过 改 变 T CP 发送端窗口 值, 抑 制 发送 端发 送速 率, 减小 网络 的实 际流量, 从而降低队列调度的压力和资源消耗, 达到提高流 量控制效率的目的。
2. 2 算法基本原理本算法的原理是: 通过 流量控 制器制定 相应 的流量 控 制规则

, 捕获网络中的数据包, 修改部分接收 方的通知窗口 大小, 然后借助采样技术与反馈机制, 将修改 后的流量信息 重新注入算法, 不断修正接收方通知窗口大小值及改包率, 以达到精确限流的目的, 如图 2 所示。
图2
算法结构图
T CP 协议的 一 些内 在 机制 本 身 是 支持 流 量 控 制的。 在持 续流 量控制 方面, T CP 中 实现 它的机 制是 T CP 滑 动 窗口机制 [ 8] : T CP 通过调整窗口的大小 来控制 数据包 的流 量。一个值为 0 的窗口 意味着 通告发 送方: 如果 没有进 一 步的通知, 接收方缓存已满, 不能再 接收更多的数据。最大 的窗口可确保在 任何给 定的 时间传 输多 达 65 536 个未 经 确认的字节, 但当重发定 时系统 超时且 又没有得 到接收 确 认时, 窗口将减 小至 原来 的一 半, 从而 有效 地降 低 传输 速 率。 滑动窗口值( W ) 是在 发送 方收 到接收 方返 回的确 认 信息之前发送方能 够发送的 数据分 组的大 小, 它 是由拥 塞 窗口( CW N D) 、 发送方缓存( Sender buffer ) 、 收方通 知窗 接 口( A dver tised W indo w) 三者中最小值决定的, 即: W = M IN ( CW N D , Sender buf f er , A dver tised Window ) 其中, 拥塞窗口指发送方 认为链 路能够 容纳的数 据分组 的 数量。接收方通知窗口存在于接收方返回的 确认数据分组 之中, 它指明接收方能够接收的数据分组的大小, 是由操作 系统为每个 套接字 ( So cket) 分 配的。 一般 来说, 滑 动窗 口 的大小由拥塞窗口 的大小决 定, 但接收 方可以通 过分配 较 小的接收方通知窗口的方法来限制 滑动窗口的大小。基于 此, 本文通过主动调用 T CP 的 流量控 制机制, 来修 改 T CP 滑动窗口大小, 调节发送端流量发送速率, 完 成端到端的流 量控制。 设 T 1 、 2 、 3 时刻 的拥塞 窗口大 小分别 为 a0 、 1 、 2 , T T a a 发送方 缓存分 别为 b0 、 1 、 2 , 接 收方通 知窗口大 小分别 为 b b y 0 、 1 、 2 , 则通 常情 况 下滑 动 窗 口值 W 分别 为 x 0 = M in y y ( a0 , b0 , y 0 ) , x 1 = M in( a1 , b1 , y 1 ) , x 2 = M in( a 2 , b2 , y 2 ) , 如图 3 所示。
22. 1
基于 TCP 滑动窗口的流量控制原理TCP 包首部结构
T CP 是目前 Int er net 中使用最广泛的传输协议。根据 M CI ( M icr o Communicat ion I nc, 简称 M CI) 的统计, Inter net 上总字节数的 95% 和总报文数的 90% 使用 T CP 传输 [ 7] 。 诸如 Web 浏览、 P 下载、 ELN ET 和各种 P2P 程序这样 FT T 的基于 T CP 的 应用 占据 了当 今 I nter net 数 据流 量的 绝大 部分。 T CP 首部的各 个字段 如图 1 所 示。T CP 段 的各 个域 紧跟在 IP 首部信息之后, 最开 始的 两个 16 位 的源端 口和 目的端口标明一个连接的两个端点; 紧接着的 两个 32 位的 序列号和确认号域 完成

它 们的 常规 功能; 4 位首 部长 度指 明 T CP 头部包含多少个 32 位的 字; 然后 是 6 位 域和 6 个 标志位。 T CP 的流控制 是通 过一 个可 变大 小的 滑动 窗口 来完 成的。如图 1 中所 示的 16 位 的窗 口大 小( Window Size) , 是本 文 需 要 修 改 的 T CP 字 段。 16 位 的 校 验 码 区 域 ( Checksum) 提供额外 的可靠 性, 保 证数 据的 完整 性, 校验 的范围包括 T CP 头部、 数据和概念性的伪头部。 因为本文 修改了窗口大小, 所 以需 要重 新计 算校 验 和, 并填 充 此字 段。16 位源端口 32 位序列号 32 位确认序号 U AP P S F 4 位 保留 RC S S Y I 首部 ( 6 位) GK H T N N 16 位校验和 , 图1 TCP 包结构 16 位窗口大小 16 位紧急指针 16 位目的端口
图3
滑动窗口大小
9
而基于 T CP 滑动窗口的 流量控 制算 法在 接收方 数据 包的传输过程中将包截 获, 然 后直接 修改接 收方通知 窗口 的大小, 发送方根据较 小的接 收方通 知窗口 来限制滑 动窗 口的大小, 从而达到流量控制的目的, 如图 4 所示。
本文主要关注包修 改的内 部流程, 其流 程图 如图 6 所 示, 修改步骤如下所示: ( 1) 捕获数据包: 在数据 包的行 走流程 中, 调用 Netf il ter 的钩子, 在 F OR WA RD 链上获取流 经的数据包。 ( 2) 匹配规则: 根据 用户定 制的规 则, 匹 配捕 获到的 数 据包。如匹配转( 3) , 否则转( 1) 。 ( 3) 是否改包: 依据设定的改包率, 检查是否需要改包。 如符合采样条件转( 4) , 否转( 1) 。 ( 4) 修改数据包: 将接收方窗口大小设置 为用户定义的 一个定值或当前窗口大小 的 1/ 2 或 1/ 4。 ( 5) 重新计算数据包 校验和: 重 新计算 IP 首 部校验 和 T CP 首部校验, 使得新的诱骗数据包成 为能在 网络中 传输 的有效数据包。 ( 6) 发送修改后的数据包: 通过网络协议 实现的内在机 制发送该 诱 骗 数据 包, 抑制 端 到 端 的速 度。 然后 返 回 到 ( 1) , 继续捕包。
图4
基于 TCP 谓动窗口的流量控制
33. 1
算法实现Netfilter/ iptables 框架简介Linux 2. 4. x 的内核相 对于 L inux 2. 2. x 在 I P 协议栈
部分有比 较 大 的 改 动, N etfilter/ iptables[ 9] 更 是其 一 大 特 色, 由于它功能强大, 易于扩充, 并且与内核完美结合, 迅速 成为 L inux 平台下进行网络应用扩展的主要利 器。它引入 了模块化的架构方式, 可以依据用户的要求, 自定义扩展对 包进行处理。可 供扩 充的 N etfilter 构 件 主要 包括 T able、 M atch、 ar get 和 Co nnect ion T rack P ro tocol H elper 四 类, T 分别对应四套扩展函数。 所有扩展 都包括 核内、 核外 两个 部分, 核内 的部 分 位于 < ker ne- ro ot > / net/ ipv 4/ netf ilter / l 目录下, 模块名字 为 ipt_cname o; 核 外的 部分 位于 < ipt c. ables r oot> / ext ensio

ns/ 目录下, 动 态 链 接 库名 为 libipt _ c name so 。基于 N etfilter/ ipt ables 框架的 串行 流量控 制算 c. 法主要应用对 T ar get 的扩展, 实现对匹配包的修改操作。图6 包修改的内部流程图
其中, 对 T CP 接收方通知窗口大小的修改是以 Netf il ter 的 tar get 补丁方式实现的。
3. 3 校验和的重新计算直接修改数据包需 要计算 或重新 计算校 验和, 一旦 校 验和出错, 数据 包直 接被 丢弃, 所做 的工 作 全都 徒劳 。在 RF C 1071[ 10] 中有关于 如何 计算 Internet 校验 和的 实现 技 术。由于路由系统经常只修 改 T T L 字段( 减 1) , 因此 当路 由系统转发一份报 文时可以 增加它 的检验 和, 而 不需要 对 IP 整个首部进行重新计算。R FC 1141 [ 11] 为此 给出一 个很 有效的方法, 该方法非常适用于接收方窗口大小的修改。 IP 首部的校验和计算使用 ip _f as t_csum( ) 函 数, 其参 数分别为 IP 首部指针、 首部的 ihl 字段( iph y ihl) ( 即 I P IP 首部的长度除以 4) :iph y check = i p _ fast _ csu m ( ( un signed char * ) i ph, i ph y ihl ) ;
3. 2
流量控制算法的设计与流程
对于网络中的数据包, 根据 用户设定 的规 则匹配 到不 同的分类, 每个分类对应不同的改包率和接收方窗口大 小。 流量控制算法的整体框架如图 5 所示。
而 T CP 首部, 由于只修改一个字节, 可用下 面的方法, 而不需要对 IP 整个首部进行 重新计算:u_int 16_t diff s[ 2] ; u_int 16_t check= 0; dif fs [ 0] = ( ( ht ons( t h y urg) < < 5) + ( ht ons( t h y ack) < < 4) + ( ht ons( t h y ps h) < < 3) + ( ht ons ( t h y rst ) < < 2) + ( ht ons ( th y syn) < < 1) + h t on s( t h y fin ) ) ^ 0xFFFF; dif fs [ 1] = ( ht ons( t h y urg) < < 5) + ( ht on s( th y ack ) < < 4) + ( ht ons( t h y ps h) < < 3) + ( ht ons ( t h y rst ) < < 2) + ( ht ons ( th y syn) < < 1) + h t on s( t h y fin ) ; t h check = csum _f ol d( cs um_ part ial ( ( char * ) diff s, s izeof -> ( dif fs ) , t h y check^0xFFFF) ) ;
图5
流量控制算法的整体框架
10
44. 1
实验结果与分析实验环境
本实验环境是在湖南大学软件学院可信网络实验室的 内部网络中搭建的。实验环境如图 7 所示。实验室内部构 建 192. 168. 1. 0 网段的 局域网, 局域 网的 机器 通过流 量控 制器接入湖南大学软件 学院网络, 然 后经过 湖南大学 校园 网络接入 Internet。 实验将基于 T CP 滑动窗口的流量控制器( Intel Cor e 2 Duo E6400、 RA M 、 2G 双千兆网卡) 以 串联的 方式部 署于局 域网出口处, 局域网中的机器通过流量控制器与外界联 网。 在局域网出口路由器通过端口镜像的方式并联一个数据包 采集探针, 监测局域网的出入境流量, 获取实验结果。实验 所采用的探针使用基于 网络处理 器的采 集板, 保证了 采集 数据的精度, 且以并联

本文来源:https://www.bwwdw.com/article/pv1e.html

Top