流量控制--7.总结

8. 流量控制的规则、准则和方法

8.1. Linux流量控制的通用规则

可使用以下通用规则来学习Linux流量控制。可使用tcngtc进行初始化配置Linux下的流量控制结构。html

  • 任何执行整流功能的路由器都应该成为链路的瓶颈,而且应该调整为略低于最大可用的链路带宽。经过整流能够防止在其余路由器中造成队列,从而最大程度地控制到整流设备的报文的延迟/延期。
  • 一个设备能够对其传输的流量进行调整。因为已经在输入接口上接收到流量,所以没法调整这类流量。 解决此问题的传统方法是使用ingress策略。
  • 每一个接口必须包含一个qdisc。当没有明确附加其余qdisc时会使用默认的qdisc( pfifo_fast qdisc)。
  • 若是一个接口附加了classful qdiscs ,但没有任何子类,这种状况会无心义地消耗CPU。
  • 任何新建立的类都包含一个 FIFO。可使用任何qdisc来替换这个qdisc。当一个子类附加到该类时,会隐式地删除FIFO qdisc。
  • 直接附加到root qdisc的类能够模拟虚拟电路。
  • 能够在类或任意一种classful qdiscs上附加过滤器。

8.2. 处理已知带宽的链路

当一个链路已知带宽时,HTB是一个理想的qdisc,由于能够给最内层的(最根)类设置给定连接上的最大可用带宽。流量后续会被分割到子类中,用于保证特定类型的流量的带宽或容许优先选择特定类型的流量。linux

8.3. 处理已知可变带宽的链路

理论上,PRIO是一个理想的用于处理可变带宽的调度器,由于它是一个连续工做的qdisc(这意味着它不提供整流)。在带宽未知或波动的链路中,PRIO 调度器更喜欢优先将具备最高优先级的band中的全部报文出队列,而后再处理较低优先级的队列中。算法

8.4. 基于流的带宽共享和分割

在多种类型的网络带宽竞争中,这一般是比较容易处理的竞争类型之一。经过使用SFQ,特定队列中的流量能够分为多条流,而后公平地处理该队列中的每条流。表现良好的应用程序(和用户)会发现,使用SFQ和ESFQ足以知足大多数共享需求。网络

这些公平排队算法的致命弱点是没法抵御行为不端的用户或应用程序同时打开不少链接(例如,eMule, eDonkey, Kazaa)。经过建立大量独立的流,应用程序能够控制公平排队算法中的时间间隙。重申一下,公平排队算法不知道单个应用程序会生成大多数流,而且不会惩罚用户。 须要依赖其余方法。学习

8.5. 基于IP的带宽共享和分割

对于许多管理员来讲,这是在用户之间划分带宽的理想方法。不幸的是,没有简单的解决方案,并且随着共享网络链接的机器数量的增长,它变得愈来愈复杂。.net

为了在N个IP地址之间公平地分配带宽,必须有N个类。code

9. 使用QoS/流量控制的脚本

9.1. wondershaper

更多参见 wondershaper.htm

9.2. ADSL Bandwidth HOWTO script (myshaper)

更多参见myshaper.接口

9.3. htb.init

更多参见htb.init.队列

9.4. tcng.init

更多参见 tcng.init.

9.5. cbq.init

更多参见 cbq.init.

相关文章
相关标签/搜索