Linux 的带宽管理系统

2016-01-29 19:44 2 1 收藏

Linux 的带宽管理系统,Linux 的带宽管理系统

【 tulaoshi.com - Linux 】

  Linux 包含复杂的带宽管理系统 TC (流量控制,Traffic Control)。该系统支持分类、优先、共享和输入、输出流量限制等。这套系统可以与专用的带宽管理系统相媲美。

1. 基本的构成块

tc 包括三个基本的构成块: 队列规定(queueing discipline )、类(class)和分类器(Classifiers) 。

队列规定可以看作设备的流量/数据包管理器。 队列规定内封装了其他两个主要TC组件(类和分类器),控制数据的流动。

目前,有一些设备队列规定可以用来管理设备,包括类基队列(CBQ),优先级和CSZ (Clark-Shenker-Zhang)等。CBQ 是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。

类由设备队列规定来管理。类由若干规则(rule)构成,这些规则用以管理那个类所拥有的数据。例如,某类里的全部数据包都受到 1 Mbps的速率限度,而在午夜和早上6点的一段时间段内允许最高达 3 Mbps。

一些队列规定可以绑定到类上,包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(Token Bucket)。

如果设备上未绑定队列规定,则使用基本的FIFO。另外, CBQ,CSZ和优先级也能用于类,以及类的子类。这表明使用TC,可以轻松地建造非常复杂的流量控制。管理类的队列规定可以称为类队列规定(class queueing disciplines)。

一般地,类队列规定管理该类的数据和队列,能决定延迟、丢掉或者重新分类它管理的包。分类器或过滤器描述包,并且把他们映射到队列规定所管理的类。

这些过滤器通常都提供简单的描述语言,指定选择包、把包映射到类的方法。

目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用 Linux netfilter 代码选择流量,而u32分类器允许我们选择基于 ANY 头的流量 。所有的防火墙过滤器, 例如,ipchains,都能用来分类包。

TC代码位于内核,不同的功能块既能编译为模块,也能直接编进内核。 与内核代码或模块的通信和配置由用户级程序tc完成。

2. 示例

2.1 编译内核

首先要确保选中 Kernel/User netlink socket,因为只有这样 tc 才能通过 netlink 与内核通讯。

然后,把队列规定和分类器都编进内核。这其中包括:

QoS or fair queueing, CBQ packet scheduler, CSZ packet scheduler, the simplest PRIO pseudoscheduler, RED queue, SFQ queue, TBF queue, QoS support, rate estimator, packet classifier API, routing-tables-based classifier, U32 classifier, special RSVP classifier 和 special RSVP classifier for IPv6。

然后就是大家熟知的编译和安装过程了。

2.2 建立

[因特网] ---〈E3、T3 等〉--- [Linux 路由器] --- [Office+ISP]

eth1 eth0

上图中的 Linux 路由器有两个接口,不妨称之为 eth0 和 eth1。eth1 连接到路由器, eth0 连接到包括公司防火墙在内的子网上。

由于我们只能限制发送的内容,所以我们需要两套独立的、但可能非常相似的规则集。我们可以通过改变发送次序来控制传输速率。通过修改 eth0 上的队列,我们可以确定客户 的下载(download)速率;通过修改 eth1 上的队列,我们可以确定我们公司自己的用 户的上载(upload)速率。

比如说,公司连接到因特网的线路带宽为 10 兆,同时满足外部客户和公司自己用户的需要;此时,我们就需要一种策略,来进行管理和协调。CBQ 就可以满足我们的要求。

我们有两个主类:'ISP' 和 'Office'。我们可以决定,客户有 8 兆的带宽,Office用户有 2 兆的带宽。

我们首先发布如下的命令:

# tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000

其含义是:我们配置了 eth0 的队列规定,root 表示这是根(root)规定,其句柄 (handle)设定为 10:'。 其类型为 CBQ。带宽为 10 M,平均包大小为 1000 字节。
下面生成根类(root class):

# tc class add dev eth0 parent 10:0 classid 10

来源:https://www.tulaoshi.com/n/20160129/1510017.html

延伸阅读
功能说明: 显示目前登入系统的用户信息。 语 法: w [-fhlsuV][用户名称] 补充说明: 执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。 参 数:   -f  开启或关闭显示用户从何处登入系统。  ...
标签: 服务器
Linux系统中基本的用户管理方法   用户管理的配置文件 用户信息文件:/etc/passwd 密码文件:/etc/shadow 用户组文件:/etc/group 用户组密码文件:/etc/gshadow 用户配置文件: /etc/login.defs /etc/default/useradd 新用户信息文件:/etc/ske1 登陆信息:/etc/motd /etc/issue ...
功能说明: 管理记录文件。 语 法: logrotate [-?dfv][-s <状态文件][--usage][配置文件] 补充说明: 使用logrotate指令,可让你轻松管理系统所产生的记录文件。它提供自动替换,压缩,删除和邮寄记录文件,每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。您必须自行编辑,指定配置文件,预设...
功能说明: 登入另一个群组。 语 法: newgrp [群组名称] 补充说明: newgrp指令类似login指令,当它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则newgrp指令会登入该用户...
功能说明: 显示系统状态。 语 法: procinfo [-abdDfhimsSv][-F <输出文件][-n <间隔秒数] 补充说明: procinfo指令从/proc目录里读取相关数据,将数据妥善整理过后输出到标准输出设备。 参 数: -a  显示所有信息。  -b  显示磁盘设备的区块数目,而非存取数目。  -d&nb...

经验教程

355

收藏

36
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部