`

流量控制 tc

阅读更多

先假设一个简单的环境

  流量控制器上的以太网卡(eth0) 的IP地址为192.168.1.66,在其上建立一个CBQ队列。假设包的平均大小为1000字节,包间隔发送单元的大小为8字节,可接收冲突的发送最长包数目为20字节。

  假如有三种类型的流量需要控制:

  1) 是发往主机1的,其IP地址为192.168.1.24。其流量带宽控制在8Mbit,优先级为2;

  2) 是发往主机2的,其IP地址为192.168.1.26。其流量带宽控制在1Mbit,优先级为1;

  3) 是发往子网1的,其子网号为192.168.1.0,子网掩码为255.255.255.0。流量带宽控制在1Mbit,优先级为6。

  1. 建立队列

  一般情况下,针对一个网卡只需建立一个队列。

  将一个cbq队列绑定到网络物理设备eth0上,其编号为1:0;网络物理设备eth0的实际带宽为10 Mbit,包的平均大小为1000字节;包间隔发送单元的大小为8字节,最小传输包大小为64字节。

  ·tc qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit avpkt 1000 cell 8 mpu 64

  2. 建立分类

  分类建立在队列之上。一般情况下,针对一个队列需建立一个根分类,然后再在其上建立子分类。对于分类,按其分类的编号顺序起作用,编号小的优先;一旦符合某个分类匹配规则,通过该分类发送数据包,则其后的分类不再起作用。

  1) 创建根分类1:1;分配带宽为10Mbit,优先级别为8。

   ·tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 10Mbit rate 10Mbit maxburst 20 allot 1514 prio 8 avpkt 1000 cell 8 weight 1Mbit

  该队列的最大可用带宽为10Mbit,实际分配的带宽为10Mbit,可接收冲突的发送最长包数目为20字节;最大传 输单元加MAC头的大小为1514字节,优先级别为8,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为 1Mbit。

  2)创建分类1:2,其父分类为1:1,分配带宽为8Mbit,优先级别为2。

  ·tc class add dev eth0 parent 1:1 classid 1:2 cbq bandwidth 10Mbit rate 8Mbit maxburst 20 allot 1514 prio 2 avpkt 1000 cell 8 weight 800Kbit split 1:0 bounded

  该队列的最大可用带宽为10Mbit,实际分配的带宽为 8Mbit,可接收冲突的发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为1,包的平均大小为1000字节,包间隔发 送单元的大小为8字节,相应于实际带宽的加权速率为800Kbit,分类的分离点为1:0,且不可借用未使用带宽。

  3)创建分类1:3,其父分类为1:1,分配带宽为1Mbit,优先级别为1。

   ·tc class add dev eth0 parent 1:1 classid 1:3 cbq bandwidth 10Mbit rate 1Mbit maxburst 20 allot 1514 prio 1 avpkt 1000 cell 8 weight 100Kbit split 1:0

  该队列的最大可用带宽为10Mbit,实际分配的带宽为 1Mbit,可接收冲突的发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为2,包的平均大小为1000字节,包间隔发 送单元的大小为8字节,相应于实际带宽的加权速率为100Kbit,分类的分离点为1:0。

  4)创建分类1:4,其父分类为1:1,分配带宽为1Mbit,优先级别为6。

   ·tc class add dev eth0 parent 1:1 classid 1:4 cbq bandwidth 10Mbit rate 1Mbit maxburst 20 allot 1514 prio 6 avpkt 1000 cell 8 weight 100Kbit split 1:0

  该队列的最大可用带宽为10Mbit,实际分配的带宽为 64Kbit,可接收冲突的发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为1,包的平均大小为1000字节,包间隔 发送单元的大小为8字节,相应于实际带宽的加权速率为100Kbit,分类的分离点为1:0。

  3. 建立过滤器

  过滤器主要服务于分类。一般只需针对根分类提供一个过滤器,然后为每个子分类提供路由映射。

  1) 应用路由分类器到cbq队列的根,父分类编号为1:0;过滤协议为ip,优先级别为100,过滤器为基于路由表。

  ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route

  2) 建立路由映射分类1:2, 1:3, 1:4

  ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 2 flowid 1:2

  ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 3 flowid 1:3

  ·tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 4 flowid 1:4

  4.建立路由

  该路由是与前面所建立的路由映射一一对应。

  1) 发往主机192.168.1.24的数据包通过分类2转发(分类2的速率8Mbit)

  ·ip route add 192.168.1.24 dev eth0 via 192.168.1.66 realm 2

  2) 发往主机192.168.1.30的数据包通过分类3转发(分类3的速率1Mbit)

  ·ip route add 192.168.1.30 dev eth0 via 192.168.1.66 realm 3

  3)发往子网192.168.1.0/24的数据包通过分类4转发(分类4的速率1Mbit)

  ·ip route add 192.168.1.0/24 dev eth0 via 192.168.1.66 realm 4

  注:一般对于流量控制器所直接连接的网段建议使用IP主机地址流量控制限制,不要使用子网流量控制限制。如一定需要对直连子网使用子网流量控制限制,则在建立该子网的路由映射前,需将原先由系统建立的路由删除,才可完成相应步骤。

  5. 监视

  主要包括对现有队列、分类、过滤器和路由的状况进行监视。

  1)显示队列的状况

  简单显示指定设备(这里为eth0)的队列状况


·tc qdisc ls dev eth0
qdisc cbq 1: rate 10Mbit (bounded,isolated) prio no-transmit



  详细显示指定设备(这里为eth0)的队列状况


·tc -s qdisc ls dev eth0
qdisc cbq 1: rate 10Mbit (bounded,isolated) prio no-transmit
Sent 7646731 bytes 13232 pkts (dropped 0, overlimits 0)
borrowed 0 overactions 0 avgidle 31 undertime 0



  这里主要显示了通过该队列发送了13232个数据包,数据流量为7646731个字节,丢弃的包数目为0,超过速率限制的包数目为0。

  2)显示分类的状况

  简单显示指定设备(这里为eth0)的分类状况


·tc class ls dev eth0
class cbq 1: root rate 10Mbit (bounded,isolated) prio no-transmit
class cbq 1:1 parent 1: rate 10Mbit prio no-transmit #no-transmit表示优先级为8
class cbq 1:2 parent 1:1 rate 8Mbit prio 2
class cbq 1:3 parent 1:1 rate 1Mbit prio 1
class cbq 1:4 parent 1:1 rate 1Mbit prio 6



  详细显示指定设备(这里为eth0)的分类状况


·tc -s class ls dev eth0
class cbq 1: root rate 10Mbit (bounded,isolated) prio no-transmit
Sent 17725304 bytes 32088 pkts (dropped 0, overlimits 0)
borrowed 0 overactions 0 avgidle 31 undertime 0
class cbq 1:1 parent 1: rate 10Mbit prio no-transmit
Sent 16627774 bytes 28884 pkts (dropped 0, overlimits 0)
borrowed 16163 overactions 0 avgidle 587 undertime 0
class cbq 1:2 parent 1:1 rate 8Mbit prio 2
Sent 628829 bytes 3130 pkts (dropped 0, overlimits 0)
borrowed 0 overactions 0 avgidle 4137 undertime 0
class cbq 1:3 parent 1:1 rate 1Mbit prio 1
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
borrowed 0 overactions 0 avgidle 159654 undertime 0
class cbq 1:4 parent 1:1 rate 1Mbit prio 6
Sent 5552879 bytes 8076 pkts (dropped 0, overlimits 0)
borrowed 3797 overactions 0 avgidle 159557 undertime 0



  这里主要显示了通过不同分类发送的数据包,数据流量,丢弃的包数目,超过速率限制的包数目等等。其中根分类(class cbq 1:0)的状况应与队列的状况类似。

  例如,分类class cbq 1:4发送了8076个数据包,数据流量为5552879个字节,丢弃的包数目为0,超过速率限制的包数目为0。

  显示过滤器的状况


·tc -s filter ls dev eth0
filter parent 1: protocol ip pref 100 route
filter parent 1: protocol ip pref 100 route fh 0xffff0002 flowid 1:2 to 2
filter parent 1: protocol ip pref 100 route fh 0xffff0003 flowid 1:3 to 3
filter parent 1: protocol ip pref 100 route fh 0xffff0004 flowid 1:4 to 4

分享到:
评论

相关推荐

    linux流量控制 TC使用说明

    本篇将围绕“Linux流量控制TC使用说明”这一主题,深入探讨相关知识点。 首先,`netem`是Network Emulation(网络模拟)的缩写,它是TC工具的一部分,用于模拟网络环境,例如延迟、丢包、重复包等,这对于测试应用...

    Linux平台流量控制tc命令使用说明

    linux平台tc命令使用说明,包括查看网卡、模拟时延、模拟丢包、模拟乱序、模拟重包、网卡配置管理等

    TC(linux下流量控制工具)详细说明及应用实例.pdf

    TC(Linux 下流量控制工具)详细说明及应用实例 TC 是 Linux 下的一种流量控制工具,用于控制和管理网络流量。它提供了一个灵活的方式来管理网络带宽、延迟和丢包率等网络性能参数,以满足不同应用场景的需求。 TC...

    TC(linux下流量控制工具)详细说明及应用实例借鉴.pdf

    TC(Linux 下流量控制工具)详细说明及应用实例 TC 是 Linux 操作系统下的流量控制工具,用于控制网络流量的速率、延迟、 Packet loss 等参数,以确保网络资源的合理分配和优化。下面是对 TC 的详细说明及应用实例...

    TC流量控制相关文档

    TC(Traffic Control,流量控制)是Linux内核中的一种网络管理工具,用于对流入和流出系统的网络流量进行精细控制。这个技术允许系统管理员设定规则,限制特定类型或特定来源的流量,以保持网络的稳定性和优化带宽...

    [Linux]使用linux下的TC进行服务器流量控制.pdf

    TC是Linux提供的一种强大的流量控制手段,通常与网络队列调度器(qdisc)和类别(class)相关联。 qdisc是Linux流量控制的基础构件,全称是queueing discipline,它定义了流量如何被排队处理。Linux支持多种qdisc,...

    TC(linux下流量控制工具)详细说明及应用实例

    TC(Linux 下流量控制工具)详细说明及应用实例 TC(Traffic Control)是 Linux 操作系统下的流量控制工具,用于控制和管理网络流量。TC 工具可以对网络流量进行监控、限制和调整,以确保网络资源的合理分配和使用...

    一种基于Linux下TC的流量控制管理架构

    本篇文章将深入探讨一种基于Linux下的TC流量控制管理架构,帮助理解如何利用TC来优化网络性能。 TC,全称Traffic Control,是Linux内核的一部分,提供了对网络数据传输速率、延迟和带宽利用率的精确控制。通过TC,...

    tc 流量控制详解 linux

    tc流量控制参数详解及实例,涉及到网络通信中非常重要的一环,即网络资源的合理分配。 首先,我们要理解流量控制的必要性。在Internet中,由于TCP/IP协议的存在,数据传输的速度会根据网络状况自动调整,当网络拥塞...

    linux流控 TC设置 超详细解析TC命令,流控原理

    流量控制的实现依赖于多个组件和技术,其中最核心的命令行工具是tc(traffic control)。 流量控制的核心思想是通过对网络流量的管理,解决网络拥塞和数据包延迟等问题。在分组交换网络中,由于缺乏对流经网络的...

    Linux TC Ingress输入方向流量控制

    QoS分为入口(Ingress)和出口(Egress)两个部分,分别针对数据包进入和离开网络接口时的流量控制。 **入口流量控制(Ingress Traffic Control)** 入口流量控制主要负责限制进入网络接口的流量速率,通常用于实现...

    一种基于Linux下TC的流量控制管理架构.pdf

    ### 基于Linux下TC的流量控制管理架构解析 #### 一、引言与背景 随着互联网技术的迅猛发展,网络流量控制与带宽管理的重要性日益凸显。尤其是在大规模网络环境中,合理分配与管理网络资源成为了提升网络性能的关键...

    inux下TC+HTB流量控制.doc

    Linux下的TC(traffic control)和HTB(Hierarchical Token Bucket)流量控制是网络管理中的关键工具,主要用于优化网络带宽的分配和确保服务质量(QoS)。它们可以帮助管理员在多用户环境中控制不同类型的网络流量,避免...

    linux_tc流量控制与分析必看

    linux下的基于链接的流量控制。主要应用TC编写完成,功能强大,在工作中完全用的上

    TC-IPv6流量限速配置示例

    使用TC-htb对IPv6流量包进行带宽控制,三行命令即可实现

    Linux下利用TC实现P2P流量控制.pdf

    Linux下利用TC实现P2P流量控制.pdf

    LinuxTC流量控制[收集].pdf

    Linux TC流量控制是Linux操作系统中用于管理网络流量的一种机制,它是Traffic Control的简称。Linux TC提供了丰富的工具和选项,使得管理员能够对网络设备的输入和输出流量进行精细化的控制,从而实现带宽限制、延迟...

    TC(Linux下流量控制工具)详细说明及应用实例

    一、TC的安装 二、TC原来介绍 三、TC规则 四、TC命令 五、具体操作 基本实现步骤 环境模拟实例 建立队列 建立分类 建立过滤器 监视 维护 六、dms小组应用场景一个实例

    基于Linux LQL流量控制系统的研究与实现.pdf

    Linux流量控制的方法有多种,常用的方法包括Linux Traffic Control(TC)命令和IPTABLES。但是,这些方法存在着一些缺陷,例如结构繁琐、效率低下等。 第三个知识点:LQL库的应用 LQL库是一个开源的流量控制库,...

Global site tag (gtag.js) - Google Analytics