第5章 流量管理策略 前面介绍了行为安全管理的阻断、干扰技术,这些技术本质上是对用户的行为进行阻 止,是“能”与“不能”的问题。广义的行为安全管理控制还应该包括限制、优化等,这是 “度”的问题,即允许用户使用,但用多少、用得好不好则要根据具体情况而定。本章讨论 其中一个比较常见的问题———流量管理。 本章学习要求如下: . 了解QoS的基础知识。 . 理解流量管制和流量整形技术。 . 掌握常见的流量管理方法。 5.1 QoS基础知识 【任务分析】 流量管理属于QoS(QualityofService,服务质量)的范畴。所谓服务质量,包括网络 带宽、时延、丢包、抖动(时延的变化)等。从字面意思来看,服务质量是用来衡量网络好坏 的,但实际上它确实不是一个指标,而是一组工具集和一系列方法,目的是为了提升服务 质量,具体可能是保障传输带宽、降低时延、减少丢包等。简单地讲:QoS是用来修理、优 化网络数据传输过程中的细小问题的特性。对于一个端到端的网络而言,人们通常提到 的QoS的好坏,多指这个网络中QoS特性运用的好坏或者网络优化的优劣。 在学习具体的流量管理之前,学习和理解一些QoS基本知识,是理解后续章节内容 以及在具体工程实践中分析、处理问题的基础。 【课堂任务】 了解QoS的基础知识。 5.1.1 端到端的QoS 为了保证网络质量,QoS必须在通信链路的各个部分中实施。用一个古老的原理来 描述QoS非常合适:网络质量的强壮程度取决于其中最为薄弱的环节,也是人们常说的 “木桶原理”“短板效应”。如图5-1所示,在用户1与用户2之间的端到端通信链路中,尽 第5章 流量管理策略 管各个部分网络的带宽、时延和丢包情况各不同,但端到端链路的整体质量总是取决于质 量最差的一段网络。其中: 图5-1 端到端通信链路中的QoS . 端到端的最大带宽取决于链路中的最小值,即20Mb/s。 . 端到端的总时延为各部分网络时延的总和,即49ms。 . 端到端的总丢包率为各部分网络丢包率的总和,即3.5%。 理想情况下,在网络路径中的每一个设备上都应当采用适当的QoS特性来确保在两 个端点之间传输的数据包不会被不恰当地延迟或丢失。图5-2显示了在典型的企业网络 中需要部署QoS的网段以及在该网段上一些常用的QoS特性。 图5-2 在典型的企业网络中应用QoS 5.1.2 QoS 的必要性 没有QoS的网络被描述为“尽力而为”服务型网络。在这样的网络中,所有的数据报 135 行为安全管理技术与应用 文都被看成是同等重要的,并按照先后顺序依次被网络设备处理。在网络有足够的 CPU、存储和带宽资源,能够立即处理所有通过网络到达的报文的情况下,这样的网络可 以很好地运行。可惜的是,这样的情况很少出现,于是就出现了以下情形: . 来自不同用户、用户组、部门甚至不同企业的报文争用同一网络资源时出现了基 于用户的竞争。 . 来自相同用户或者用户组的不同应用相互争夺有限的网络资源时出现了基于应 用的竞争。而实际上,不同的应用对网络有不同的服务需求,如图5-3所示。 图5-3 不同应用对于网络的服务需求 要想让应用从这样常常有竞争发生的资源稀缺的网络中获得适当的服务,就必须采 用QoS对各类应用产生的数据报文区分对待,而不能将它们看作同等重要。 除此之外,另一个部署QoS的重要动机来自现代汇聚网络的需求。所谓汇聚网络,就 是指在仅有的一个网络中将数据、语音和视频等应用以对终端用户透明的方式汇聚在一起。 为了达到这个目标,必须采用QoS特性,允许不同类型的流量不平等地竞争网络资源。实时应 用,如语音或交互式视频,可被赋予高于普通数据应用的优先级或优先获得服务。 5.1.3 QoS 服务模型 通常QoS提供以下3种服务模型:尽力而为服务模型(Best-EffortService)、综合服 务模型(IntegratedService,Int-Serv)和区分服务模型(DifferentiatedService,Diff-Serv)。 . 尽力而为服务模型是单一的服务模型,也是最简单的服务模型。采用这种模型的 网络尽最大的可能性来转发报文。但对时延、可靠性等性能不提供任何保证。它 也是网络的默认服务模型,通过FIFO(FirstInFirstOut,先入先出)队列来实现。 它适用于绝大多数网络应用,如FTP、E-Mail等。 . 综合服务模型可以满足多种QoS需求。该模型使用资源预留协议(Resource reServationProtocol,RSVP),RSVP运行在从源端到目的端的每个设备上,可以 监视每个流,以防止其消耗的资源过多;这种体系能够明确区分并保证每一个业 务流的服务质量,为网络提供最细粒度的服务质量区分。但是,这种模型对设备 的要求很高,可扩展性很差,难以在大型网络中实施; . 区分服务模型是一个多服务模型,它可以满足不同的QoS需求。与综合服务模 型不同,它不需要通知网络为每个业务预留资源。区分服务模型实现简单,扩展 性较好,也是目前常用的QoS模型。 136 第5章 流量管理策略 5.1.4 QoS 工具集 前文已经讲到QoS包含了一组工具集。通常,QoS工具分为以下几个类别: . 分类和标记工具。 . 管制和整形工具。 . 拥塞避免和管理(排队)工具。 图5-4显示了不同QoS工具之间的关系以及总体上的联系。分类和标记是任何给 定QoS策略的前提,也可以说是为了执行具体QoS策略的准备工作(策略的条件)。分 类工具(分类器)可以使用各种标准来识别流。 图5-4 QoS工具集 正如图5-5所示,OSI参考模型中每个层次中的参数都可以作为分类依据;作为行为 安全管理设备,虽然可以依据五元组对原始IP流进行分类,但其最大的价值还是在于基 于应用签名的分类。 图5-5 帧/数据包/数据段分类字段① 基于分类的结果可以为不同类型的流量打上对应的标记,使得后续的具体策略动作 能够根据标记执行。例如,图5-5中的CoS、DSCP两个字段也可用来为数据帧或数据包 打标记,在本节的后面部分会对此进行介绍。 137 ① 为了便于初学者学习理解,这里仅列出了常见的字段。除此之外的一些字段,如MPLSEXP等,已经超出了 本书的讨论范围,不作介绍。 行为安全管理技术与应用 分类和标记完成后,设备已经了解了汇聚网络的流量中都包含哪些用户、用户组以及 哪些应用,接下来就需要对不同的用户、用户组及应用执行不同的QoS策略动作了。这 些策略动作由拥塞避免工具、管制和整形工具以及拥塞管理(排队)工具来完成。对于一 个行为安全管理设备(非专业QoS设备)来说,其中的流量管理功能模块主要由管制和整 形工具实现。 5.1.5 优先级标记 QoS工具集可以为数据报文提供优先级标记服务。优先级的种类包括IEEE802.1p、 IPPrecedence、ToS、DSCP等,这些优先级可以适用于不同的QoS模型。 IEEE802.1p 优先级定义在二层以太网帧IEEE802.1q 标签头中的TCI(Tag ControlInformation,标签控制信息)字段中。3比特定义了8种优先级,如图5-6所示。 图5-6 IEEE802.1q标签结构 IEEE802.1p优先级也称为CoS(CodeofServices,服务代码),如图5-7所示。 图5-7 数据包中的CoS字段 138 第5章流量管理策略 IPPrecedence、ToS和DSCP 优先级定义在三层IP 头中的服务类型字段中,如图5-8、 图5-9所示。 图5-8IPv4头结构 图5-9IPv4头服务类型字段 根据RFC1349 的定义,这8比特在表示IP 优先级时使用最高3位,可有8种不同的 优先级;中间4位代表服务类型。具体如图5-10 所示。 图5-10 RFC1349 定义的IP 优先级和服务类型字段 931 行为安全管理技术与应用 RFC2474重新命名了IPv4头中的8位服务类型字段,新的名字称为区分服务字段 (DiferentiatedServices,DS )。该字段的作用没有变,仍然被QoS工具用来标记数据。 不同的是IP优先级使用3位,而DSCP(DiferentiatedServicesCodePoint,区分服务代 码点)使用6位,最低2位不用。其中,最高3比特为级别/类别选择代码,其意义和IP优 先级的定义是相同的;其后3比特表示不同的丢弃率。 理论上,6位共有64种情况,可标记64类数据;但在实际的工程实践中并不需要如 此复杂的分类,RFC2474命名了其中的18种情况,它们是由第7~5位的6种位值和第 4~2位的4种位值组合而成的,如图5-11所示。 图5-11 RFC2474定义的DSCP 这18种情况下DSCP和IP优先级的对应关系如表5-1所示。 表5- 1 DSCP和IP优先级的对应关系 十进制值二进制位值DSCP IP优先级 56 101110 EF 5(优先级最高,但丢弃率最高, 通常用来标记VoIP数据) 32 100000 CS4 4(最好的数据,优先级最高且 丢弃率最低) 34 100010 AF41 36 100100 AF42 38 100110 AF43 24 011000 CS3 3 26 011010 AF31 28 011100 AF32 30 011110 AF33 16 010000 CS2 2 18 010010 AF21 20 010100 AF22 22 010110 AF23 140 第5章流量管理策略 续表 十进制值二进制位值DSCP IP优先级 8 001000 CS1 1(最差的数据,优先级最低且 丢弃率最高) 10 001010 AF11 12 001100 AF12 14 001110 AF13 0 000000 BE 0 实际上十进制0~63都可以作为DSCP用来标记数据(配置策略时可以直接使用,如 图5-12所示),而只有表5-1中出现的优先级有名称。表5-1中的AF为承诺转发 (AsuredForwarding),由RFC2597定义;EF为加急转发(ExpeditedForwarding),由 RFC2598定义。图5-13显示了一个真实数据包中的DSCP字段(DSCP为AF22 )。 图5-12 某网络设备的DSCP选项 图5-13 数据包中的DSCP字段 141 行为安全管理技术与应用 5.2 流量管制和流量整形技术 【任务分析】 在QoS应用中,最重要的两个工具就是流量管制器(trafficpolicer)和流量整形器 (trafficshaper)。本节介绍相关的技术原理和算法。 【课堂任务】 了解流量管制和流量整形相关的技术原理和算法。 流量管制和流量整形都是为了限制外出流量的速率,并且都引入了令牌桶(token bucket)算法作为测量数据包通过速率的流量测量器,但两者存在着本质的区别: . 流量管制测量数据包进入或离开一个接口的速率。如果速率超过了事先定义好 的值,流量管制器就开始工作。它要么丢掉过量数据包,以保证事先定义的速率 不被超过;要么标记此类过量数据包,使得它们在后续过程中优先被丢弃。 . 流量整形延缓(通过把多余流量加入缓存或等待队列中实现)某一时刻(如该时刻 带宽不足)通过接口数据包的速率,使得平均速率不会超过事先定义好的整形值。 简言之,流量整形不丢弃数据包,流量管制要么丢弃数据包要么标记它。图5-14形 象地说明了流量管制和流量整形所产生效果的区别。 图5-14 流量管制和流量整形的效果对比 5.2.1 漏桶与令牌桶算法 漏桶(leakybucket)算法是流量管制或流量整形中经常使用的一种算法,它的主要目 的是控制数据注入网络的速率,平滑网络上的突发流量。该算法的思路比较简单,所有需 要发送的数据包先进入一个漏桶里,漏桶以一定的速率(接口响应速率)向外发送这些数 据包,当注入数据包的速率过大时会直接溢出,漏桶就拒绝转发。这一过程就像向一个带 142 第5章流量管理策略 有出水口的桶中放水,通过调节出水口处的水龙头可以控制水的流出速率,使得桶以一个 恒定的速率向外放水。当注水速率超过放水速率时,水就会溢出。漏桶算法原理如图5-15 所示。 图5-15 漏桶算法原理 不难看出,漏桶算法能够强行限制数据包的传输速率。但由于漏桶的发送速率是固 定的参数,所以即使网络中不存在资源冲突(没有发生拥塞), 漏桶算法也不能使流量突发 (burst)到更高的速率。因此,漏桶算法对于存在突发特性的流量来说效率较低。 与漏桶算法在漏桶中直接缓存要发送的数据包不同,令牌桶算法不直接对数据包进 行操作,而是以恒定的速率向桶中注入令牌。令牌可以看作允许数据包被传输的通行证, 每传输一个单位的数据需要一个令牌,如图5-16 所示。 图5-16 令牌桶算法基本原理 采用这种方式可以高效地处理存在突发流量的数据传输,主要体现在以下几点: .当注入令牌的速率和待发送数据产生的速率一致时,每秒注入的令牌都被用来发 送数据,数据可以按照令牌的注入速率(承诺信息速率)被匀速发送。这种情况 341