基于网络公平性对广西水利厅网络的优化

2011-04-30 01:56郑晓明
水利信息化 2011年3期
关键词:公平性队列路由器

李 赟,严 苑, 邹 刚,郑晓明

(广西壮族自治区水利厅,广西 南宁 530023)

0 引言

响应(Responsive)和非响应(Unresponsive)流在网络中的共存,使得网络的公平性出现了危机,如果对网络中的流不加限制会使得以 UDP 为代表的非响应流占据整个带宽,使网络出现拥塞,而以 TCP 为代表的响应流,以及 TCP 友好流如 DCCP,SCTP 等,由于其对拥塞的检测并对发送端发送速率的控制,使其传输不能在拥塞状态下正常进行。

网络公平的取得既可通过端到端的拥塞控制机制,也可以通过路由器采用的拥塞控制机制(AQM),以及采用分布式算法的方式。为了提高广域网的性能,不少针对网络公平性的精典算法已经被实现在网络产品中。如果能将其用于局域网的配置中,网络的稳定性将会得到提升。

广西水利厅的网络包括大楼内的局域网及租用的专线上接水利部,下接各地市,并且有 30 M 的带宽接到 Internet。对于广域网的这部分线路平时运行于其上的应用不多,出现故障的机率比较小,而且故障一般由服务供应商解决。目前出现问题比较频繁的主要是从用户到 Internet 的网络,这段网络关系到用户从内网访问外网、从外网访问内网服务器的流畅性,如果遇到病毒或者是恶意干扰(大量产生向网络出口的非响应流),以及其它一些应用程序的大量上传下载行为,轻则网络不通畅,重则出现网络断断续续,甚至无法通过 Telnet 登录交换机设备排查问题,该问题的造成跟网络的设备和拓扑结构有一定的关系。高性能的设备及合理的拓扑结构能够增强网络的稳定性,但是在目前网络设备及结构不能变更的情况下,通过交换机本身自带的公平性算法,可以增强网络的稳定性以保障防汛抗旱业务更好地开展。

1 网络公平的定义

对网络公平的定义,现今广泛使用的是最大最小化公平法则(Max-Min fairness),它定义了在竞争的流之间如何来分配资源[1]。定义描述如下,假设有网络 G = (N, A),存在若干会话 P,有Fa=rp是分配给会话 p 的带宽,如果有带宽分配向量 r = { rp| p∈Ρ } 满足条件 rp≥0,p∈Ρ 且 Fa≤ Ca,a∈A,其中 N 表示总结点数,A是总链路数,Fa是分配给所有会话的带宽, Ca是链路 a 的总带宽, 向量 r 在带宽分配中则是可行的;在保证 r 可行性的同时,对于每 1 个 p∈Ρ,rp已经达到最大值,且 rp再增加会导致 rp′ 的减少,其中 rp′<rp,p′∈Ρ。则由向量 r 所表示的带宽分配被称为最大最小化公平。简单的说就是先满足需求小于平均份额的客户,对于剩下的客户平分剩余带宽,但每个客户所得带宽不大于自己所需。

以上的公平性定义是理想的状态,在现有的设备中很难针对每个用户达到这种状态,在这里,将网络分成几个部分,如果每个部分在访问某一节点时在拥塞状态下能至少获得一定的最小带宽,在非拥塞状态下能够充分利用带宽,则认为这部分网络是公平的。

2 拥塞控制机制

2.1 端点对端点的拥塞控制机

TCP 协议是通过对端点的滑动窗口的控制来实现的[2],即加性增加乘性减少(AIMD)。当然,不同的 TCP 种类中,控制的方式也不一样。在 TCP reno 中,端点一旦收到 3 次重复的 ACKs,即将其滑动窗口的 ssthresh 减半,进入快速恢复过程,如果出现 ACK 超时则进入慢速启动过程。慢速启动过程是将窗口值 Cwnd 从 1 或是 2 开始每个 RTT 倍增其Cwnd 值,一直到 ssthresh 这个值为止,而后 Cwnd 伴随着每个 RTT 进入线性增加状态。而 TCP tahoe 则无论收到重复的 ACKs 或是 ACK 超时都会进入慢速启动过程。TCP vegas 是通过 RTT 的延时来控指其滑动窗口,因此它对网络拥塞非常敏感。

TCP 友好协议大多用于传输多媒体流,例如SCTP。TCP 友好流可用 S.floyd 提出的式 (1) 区分[3]。假设 B 为分组的字节大小,R 为 1 个较稳定的往返时间,P 为丢包率,如果某一流到达路由器的速率不满足公式约束,则

该流为非响应流,但是如果分组字节的大小或是往返的最大时限不确定,就无法用该公式计算。

端点所使用的协议不可能被统一的人为限制,在面向非连接,数据传输对可靠性要求不高的网络应用中,例如声音的实时传播,UDP 类的非响应流在网络中占有很大比重。所以端到端的拥塞控制机制很难解决公平性问题。即使是不同种类的 TCP 之间,由于其对拥塞的反应灵敏度不同,采取的流量控制策略不一样,在带宽竞争当中,如使用 TCP reno 的端点就会比使用 TCP vegas 的端点获得更高的带宽。

2.2 路由器的拥塞控制机制

2.2.1 单队列的管理算法

RED (random early detectoin),作为单队列管理算法的典型代表,是由 S. Floyd and V. 提出的[4]。它是通过预测拥塞的到来,提前丢弃数据包,将队列保持在一定长度范围内的方法来达到拥塞避免。拥塞时简单的 tail-drop 会导致锁定 (lock-out),全局同步 (global sychronization) 和很高的延时。根据Hashems 的研究,RED 考虑到整个队列中流量的分布,它的性能比简单的尾部或是随机丢弃要好。

RED 算法规定了 1 个固定的最小阀值, 1 个最大阀值,最大丢包概率 Pmax,权重 Wq,它以下列公式计算平均队列长度:q =(1-Wq) q +Wqq,q为当前的队列长度。 当 q 超过了最小阀值且小于最大阀值,它就以概率 Ρ 标记或丢弃数据包,Ρ 为 q 与最小阀值和最大阀值的差值的比值。当 q 增长到大于最大阀值,所有的包将被丢弃或标记。

单队列的管理算法在严重的拥塞状态下,效果不佳。好处是由于其算法简单,对设备的性能要求不高,易于实现。

2.2.2 多队列的调度算法

多队列的调度算法在于如何调度让不同的会话进入有限的队列,以及如何将其调出队列共享出口带宽,这里简单介绍一下基于轮循的算法。

比较典型的轮循算法有 SFQ,DRR 和 WRR 等,SFQ 是由 McKinney 在 1991 年提出来的[5],它将各个竞争的流通过队列进行分离。因为内存是有限的,所以在内存中所能建的队列也有限,SFQ 通过对源、目的地址的散列函数入队,队列以 FCFS 的方式进出,最后再以轮循的方式各个队列轮流出队。这使得入队的时间复杂度达到了 0 (1)。一些算法往往比此复杂,例如 FQ。如果入队的所有数据包大小一样,SFQ 是最大最小化公平的。DRR (Deficit round robin) 考虑到了出队时各个数据包的大小[6],在轮循时只有符合条件的队列上的包才能出队,因此 DRR 可以达到近似的最大最小化公平。

WRR (Weighted round robin) 解决了多优先级定长帧的公平性问题[7],例如在 ATM 网络中。每个队列可设定固定分配服务的次数 c,因为数据包定长,c/n 则为该队列分配最小带宽的百分比,其中 n 为总的分配服务次数。4 队列 WRR 的工作原理如图 1 所示,图中假设其 4 个队列的权重分别为 4, 3, 2, 1。

图1 WRR 调度算法图 [8]

首先可根据不同的规则划分优先级,例如源、目的地址等。数据流根据优先级入队,后经 WRR 调度器从队列 1 (Q1) 开始循环调度出队。在以太网中,数据包是不定长的,所以同 SFQ 一样影响到其算法的公平性,且在当数据包爆发时 (Burst),传输延时会大大增加,所以有很多研究对 WRR 做了不同的改进。

虽然多队列的调度算法可以达到很好的公平性,甚至是最大最小化公平,例如 FQ。但是它们被实现在单个的路由器中,所以公平是局部的。由于没有考虑到下个路由器的出口带宽,以及网络的拓朴结构,很可能导致某一些流到了下一出口后,由于出口带宽不足而被限制,从而在当前路由算法分配给它的带宽就多余了。

2.3 分布式算法的解决方案

分布式算法最突出的优点是可以在了解整个网络基本结构的情况下实现全局公平性。例如 CSFQ,NBP 等。就 NBP 来说[9],它需要知道整个网络的拓扑结构,网络划分为进口、核心及出口等部分。NBP 只部署在进口及出口路由处,出口路由必须要监视每个数据流以位为单位的速率;进口路由执行速率控制,它们之间通过 ICMP 包交换信息;进口路由先将向前反馈信息发给出口路由,主要是让出口路由知道哪个进口路由是源,以及让进口路由可监测到的 RTT 时间。当出口路由一接收到信息就会发出 1 个向后的反馈信息给进口路由,信息包括路由计数,速率等。进口路由根据此信息经过计算,执行类似 TCP 一样的速率控制机制,使得网络带宽得到最大的充分利用。

3 网络工具

配置中使用的工具: 1)Wireshark 是开源的跨平台网络协议分析器,其前身是 Ethereal,它提供网络数据包的图形化分析与统计功能,是很好的网络抓包工具;2)Sniffer pro 同为网络协议分析器,但它提供了数据包的发包功能,可将任意数据包向网络中发送,可作网络压力测试用;3)PRTG是在 Windows 平台下的网络流量监视器,可通过SNMP 监视网络接口数据流量。

4 网络现状及分析

网络局部拓扑图如图 2 所示,网络的核心交换机是 H3c的S8508,无电口。整个网络划分为若干Vlan,基本按楼层划分,以静态路由为主,小部分采用 ospf 动态路由。汇聚层的交换机采用的是 H3c的 S3600 和 S3050 交换机,全部通过光纤接入到核心。网络通过租用的线路连接水利部及各地市,其主要用于视频会议,及防汛抗旱等业务数据的传输。Internet 网是通过高速缓存,及另一连接从路由器 Huawei R2631 进出,出口带宽 30 M,其中接有防火墙和 IPS。

图2 网络局部拓扑图

用户或服务器从接入交换机到 Internet,需从主机接至接入层的交换机,而后与汇聚层的 S3600 交换机相连,再经光纤到核心交换机 S8508,通过光纤到 S3050 交换机 S1,最后经 R2631 出去。

网络接入终端峰值约 500 台计算机,网络应用有网页浏览,电子邮件,FTP,软件下载,以及迅雷为主的多线程的 P2P 等。经过 Wireshark 对该网络的统计,通常 UDP 流量大于 TCP 流量,某些时段 UDP 能占到 70 % 以上,其它协议包占约 2 %。通过 PRTG 的监测,核心交换机上的端口流量一般在40 M 以内。交换机 S1 的 E1 口流量在 30 M 以内。

现以问题较多的从用户终端到 Internet 为例,目的是提高这一段在拥塞下的性能。当数据流从交换机 S1 的 E1 端口出时经历了千兆至百兆的过渡,再次到路由器 Internet 的出口时带宽只有 30 M。所以网络中如果出现了高于 100 M的非响应流或是非 TCP 友好流通过交换机 S1 的 E1,拥塞是必然的,此时从内网的终端防问 Internet,或是从外网访问服务器都会受到影响。

测试如下,用软件 PRTG 通过 SNMP 监控 S1 的E1 口,和 S8508 的 E1 口。用软件 Sniffer pro 在 2 台终端计算机上以最大速率向 Internet 方向发送 UDP包,使得 S8508 的 E1 流量大于 100 M,此时 PRTG显示 S1 的 E1 略小于 100 M。在这样的情况下,拥塞就产生了,从网络内任何 1 台计算机 Ping 路由器R2631,结果都会显示网络时通时断,文件上传速度极慢,网络稳定性大大下降。

5 网络的改进

若网络能够以用户为单位实现绝对公平,例如最大最小化公平,则能使每 1 个用户公平的感受到最佳性能且让网络获得极强的稳定性。不过由于设备的限制,如 NBP 似的分布式算法,不但是设备不支持,而且在此小规模局域网也没有必要性。因此若能依赖于路由器和交换机本身的队列管理或是调度算法来提高局域网的局部公平性,对网络的稳定性是有积极作用的。如前所述,重点要解决的问题是交换机 S1 的 E1 端口和出口路由的带宽分配。 在不能更换原有设备和无法改变网络结构的情况下(R2631E 无法直接接入核心),经过对路由器和交换机的配置研究,发现交换机 S1 的队列管理支持 SP(绝对优先队列)和 WRR。由于交换机 H3c 的 S3050 只支持 4 队列的 WRR,队列数量很有限,因此比较好的做法是根据 IP 源地址,把网络的用户分成 4 个组,目标是让每个组能获取最小约 25 % 的带宽,让这 4 个组实现 WRR 上相对的公平。根据需要,IP 源地址分组如表1 所示。此分组的目的是为了使以防汛、管理服务器和其它用户为源地址的段能够互不干扰,并能获得应有的最小带宽。这样一旦网络某部分出现问题,特别是终端用户部分,不至于干扰到所有的段,利于出现问题时及时从管理口排查和防汛业务的开展。

从 Telnet 进入 S1 交换机配置如下:

表1 IP 源地址分组

由于出口路由 R2631 上没有合适的队列调度算法,所以在 IPS 设备上设定固定的分组带宽限制。将其限制每用户最大带宽 5 M。

将以上配置做好后,在 10.45.11.0/24 属于组 4网段的 2 台计算机上,用 Sniffer pro 以最大速率向Internet 方向发送 UDP 包,此时从 PRTG 的监控可看出 S8508 的 E1 口流量大于 100 M,交换机 S1 的E1 口处于拥塞状态。从组 4 网段的任一计算机 Ping出口路由 R2631 及 Internet 上一终端,均显示网络时通时断,再分别从组 1, 2, 3 所在网段的计算机上做同样的测试,结果显示网络畅通无阻。接下来测试文件上传的情况,仍然在此拥塞状态下利用 1 台组 1 与另 1 台组 4 所在网段的计算机同时上传邮件附件。在拥塞状态下,从 100~140 s,组 1 计算机仍能以 IPS 所限的的速率上传文件,完成了 21 M 文件的上传;而组 4 计算机的传偷速率在非响应流的拥塞下接近于 0 kpbs。

假设这 4 个组的平均数据包长基本相等,以上的配置让 4 个组在通过 S1 的 E1 时各拥有最小约 25 M 的带宽,H3C 的 WRR 实现的性能不在此讨论与测试之列。从该测试的结果可以看出,拥塞已经在各个组之间隔离。

在此配置的网络中,实践证明,通畅性比以前大大增强,当其它用户组网络拥塞时,不会影响防汛办组、管理口和服务器的正常访问,有利于问题及时排查。

6 结语

通过具体分析实现网络公平的各种方法,并争对现有局域网络,配置了网络局部关键点交换机上的队列调度算法实现了一定意义上的网络不同分组之间的公平,保证了其带宽。在其它终端用户问题多发的网段受到攻击导致拥塞时,利于服务器的正常访问,重要工作的进行及故障的及时排查,对维护该网络的稳定性及保障防汛抗旱的展开有着重要的作用。另外,通过对网络内其它有必要的交换机采用类似的设置,可以增强网内其它局部的公平与稳定性。更进一步,在今后的网络建设中,还应合理优化网络拓扑结构,从而避免网络瓶颈的产生。

[1]D.Bertsekas, R.Gallager. Data Networks[M]. Prentice-Hall,1987: 18.

[2]J.Kurose;K.Ross. Computer Networking - A Top-Down Approach (4thth ed.) [M]. Addison Wesley, 2007: 56.

[3]S.Floyd, K.Fall. Promoting the Use of End-to-End Congestion Control in the Internet[J]. IEEE/ACM Trans. on Networking,1999, 7 (4): 458-472.

[4]S.Floyd, V.Jacobson. Random early detection gateways for congestion avoidance[J]. Networking, IEEE/ACM Transactions on Volume 1, 1993 (4): 397–413.

[5]P.E.McKenny, Stochastic fairness queuing[J]. Internetworking:Research and Experence, 1991 (2): 113-131.

[6]M.Shreedhar, George Varghese. Efficient fair queueing using deficit round-robin[J]. IEEE/ACM Transactions on Networking (TON), 1996, 4 (3): 375-385.

[7]M.Katevenis, S.Sidiropoulos, C.Courcoubeitis. Weighted round-robin cell multiplexing in a general-purpose ATM switch chip[J], IEEE J.Sel. Areas Commun, 1991, 9 (8): 1265-1279.

[8]许登元,刘文杰,窦军. PFTS 交换中借还-加权轮询高度算法[J]. 四川大学学报,2005, 42 (5): 921-924.

[9]C.Albuquerque, B.J.Vickers, T.Suda, Network border patrol:preventing congestion collapse and promoting fairness in the Internet Networking[J]. IEEE/ACM Transactions,2004, 12 (1): 173-186.

猜你喜欢
公平性队列路由器
买千兆路由器看接口参数
维持生命
路由器每天都要关
队列里的小秘密
基于多队列切换的SDN拥塞控制*
在队列里
无线路由器的保养方法
一种提高TCP与UDP数据流公平性的拥塞控制机制
丰田加速驶入自动驾驶队列
关于公平性的思考