2024年3月12日发(作者:束紫萱)
linux下流量控制工具TC详细说明及应用实例
目录
一、TC的安装 ...................................................................................................................................................... 1
二、TC原理介绍 .................................................................................................................................................. 1
三、TC规则 .......................................................................................................................................................... 2
3.1、流量控制方式 ..................................................................................................................................... 2
3.2、流量控制处理对象 ............................................................................................................................. 2
3.3、操作原理 ............................................................................................................................................. 3
3.4、命名规则 ............................................................................................................................................. 4
3.5、单位 ..................................................................................................................................................... 4
四、TC命令 .......................................................................................................................................................... 5
五、具体操作 ........................................................................................................................................................ 5
5.1、基本实现步骤 ..................................................................................................................................... 6
5.2、环境模拟实例 ..................................................................................................................................... 6
5.2.1. 建立队列 .................................................................................................................................. 6
5.2.2. 建立分类 .................................................................................................................................. 6
5.2.3. 建立过滤器 .............................................................................................................................. 7
5.2.4.建立路由 .................................................................................................................................... 7
5.2.5. 监视 .......................................................................................................................................... 8
5.2.6. 维护 ........................................................................................................................................ 10
六、dms小组应用场景一个实例 ..................................................................................................................... 11
参考资料 .............................................................................................................................................................. 12
一、TC的安装
TC是linux自带的模块,一般情况下不需要另行安装,可以用man tc查看tc相关命令细节,tc 要求内核2.4.18以
上。
注意,64位机器上,先执行下面命令:
ln -s /usr/lib64/tc/ /usr/lib/tc
二、TC原理介绍
Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,它利用队列规定建立处理数
据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。TC模块实现流量控制功能使用的队列规
定分为两类,一类是无类队列规定, 另一类是分类队列规定。 无类队列规定相对简单,而分类队列规定则引出了分类
和过滤器等概念,使其流量控制功能增强。
无类队列规定是对进入网络设备(网卡) 的数据流不加区分统一对待的队列规定。使用无类队列规定形成的队列能
够 接受数据包以及重新编排、延迟或丢弃数据包。这类队列规 定形成的队列可以对整个网络设备( 网卡) 的流量进行整
形, 但 不能细分各种情况… 。常用的无类队列规定主要有pfifo _fast (先进现出) 、TBF ( 令牌桶过滤器) 、SFQ(随
机公平队列) 、ID (前 向随机丢包)等等。这类队列规定使用的流量整形手段主要 是排序、 限速和丢包。
分类队列规定是对进入网络设备的数据包根据不同的需求以分类的方式区分对待的队列规定。 数据包进入一个分
类的队列后, 它就需要被送到某一个类中, 也就是说需要对数据包做分类处理。对数据包进行分类的工具是过滤器,
过滤器会返回一个决定,队列规定就根据这个决定把数据包送入相应的类进行排队。每个子类都可 以再次使用它们的过
滤器进行进一步的分类。直到不需要进一步分类时, 数据包才进入该类包含的队列排队。 除了能够包含其它队列规定
之外, 绝大多数分类的队列规定还能够对流量进行整形。 这对于需要同时进行调度( 如使用 S F Q ) 和流量控制的场
合非常有用。
Linux流量控制的基本原理如下图所示。
接收包从输入接口(Input Interface)进来后,经过流量限制(Ingress Policing)丢弃不符合规定的数据包,
由输入多路分配器(Input De-Multiplexing)进行判断选择:如果接收包的目的是本主机,那么将该包送给上层处理;
否则需要进行转发,将接收包交到转发块(Forwarding Block)处理。转发块同时也接收本主机上层(TCP、UDP等)
产生的包。转发块通过查看路由表,决定所处理包的下一跳。然后,对包进行排列以便将它们传送到输出接口(Output
Interface)。一般我们只能限制网卡
发送
的数据包,不能限制网卡接收的数据包,所以我们可以通过改变发送次序来控
制传输速率。Linux流量控制主要是在输出接口排列时进行处理和实现的。
2024年3月12日发(作者:束紫萱)
linux下流量控制工具TC详细说明及应用实例
目录
一、TC的安装 ...................................................................................................................................................... 1
二、TC原理介绍 .................................................................................................................................................. 1
三、TC规则 .......................................................................................................................................................... 2
3.1、流量控制方式 ..................................................................................................................................... 2
3.2、流量控制处理对象 ............................................................................................................................. 2
3.3、操作原理 ............................................................................................................................................. 3
3.4、命名规则 ............................................................................................................................................. 4
3.5、单位 ..................................................................................................................................................... 4
四、TC命令 .......................................................................................................................................................... 5
五、具体操作 ........................................................................................................................................................ 5
5.1、基本实现步骤 ..................................................................................................................................... 6
5.2、环境模拟实例 ..................................................................................................................................... 6
5.2.1. 建立队列 .................................................................................................................................. 6
5.2.2. 建立分类 .................................................................................................................................. 6
5.2.3. 建立过滤器 .............................................................................................................................. 7
5.2.4.建立路由 .................................................................................................................................... 7
5.2.5. 监视 .......................................................................................................................................... 8
5.2.6. 维护 ........................................................................................................................................ 10
六、dms小组应用场景一个实例 ..................................................................................................................... 11
参考资料 .............................................................................................................................................................. 12
一、TC的安装
TC是linux自带的模块,一般情况下不需要另行安装,可以用man tc查看tc相关命令细节,tc 要求内核2.4.18以
上。
注意,64位机器上,先执行下面命令:
ln -s /usr/lib64/tc/ /usr/lib/tc
二、TC原理介绍
Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,它利用队列规定建立处理数
据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。TC模块实现流量控制功能使用的队列规
定分为两类,一类是无类队列规定, 另一类是分类队列规定。 无类队列规定相对简单,而分类队列规定则引出了分类
和过滤器等概念,使其流量控制功能增强。
无类队列规定是对进入网络设备(网卡) 的数据流不加区分统一对待的队列规定。使用无类队列规定形成的队列能
够 接受数据包以及重新编排、延迟或丢弃数据包。这类队列规 定形成的队列可以对整个网络设备( 网卡) 的流量进行整
形, 但 不能细分各种情况… 。常用的无类队列规定主要有pfifo _fast (先进现出) 、TBF ( 令牌桶过滤器) 、SFQ(随
机公平队列) 、ID (前 向随机丢包)等等。这类队列规定使用的流量整形手段主要 是排序、 限速和丢包。
分类队列规定是对进入网络设备的数据包根据不同的需求以分类的方式区分对待的队列规定。 数据包进入一个分
类的队列后, 它就需要被送到某一个类中, 也就是说需要对数据包做分类处理。对数据包进行分类的工具是过滤器,
过滤器会返回一个决定,队列规定就根据这个决定把数据包送入相应的类进行排队。每个子类都可 以再次使用它们的过
滤器进行进一步的分类。直到不需要进一步分类时, 数据包才进入该类包含的队列排队。 除了能够包含其它队列规定
之外, 绝大多数分类的队列规定还能够对流量进行整形。 这对于需要同时进行调度( 如使用 S F Q ) 和流量控制的场
合非常有用。
Linux流量控制的基本原理如下图所示。
接收包从输入接口(Input Interface)进来后,经过流量限制(Ingress Policing)丢弃不符合规定的数据包,
由输入多路分配器(Input De-Multiplexing)进行判断选择:如果接收包的目的是本主机,那么将该包送给上层处理;
否则需要进行转发,将接收包交到转发块(Forwarding Block)处理。转发块同时也接收本主机上层(TCP、UDP等)
产生的包。转发块通过查看路由表,决定所处理包的下一跳。然后,对包进行排列以便将它们传送到输出接口(Output
Interface)。一般我们只能限制网卡
发送
的数据包,不能限制网卡接收的数据包,所以我们可以通过改变发送次序来控
制传输速率。Linux流量控制主要是在输出接口排列时进行处理和实现的。