Linux TC基于CBQ队列的流量管理范例

Linux TC基于CBQ队列的流量管理范例参考了 TC 的很多文档 自己也整理了一篇配置记录 在实际使用过程中效果还不错 在此分享给大家以备参考 环境 局域网规模不是很大 40 多台机器 NAT 共享上网 内网 eth0 外网 eth2 CBQ 是通过硬件的闲置时间来计算队列 硬件不同 效果也不同 对于比较大的网络使用 HTB 比较好 以下限制上传和下载的方法可以写成脚本 通过 mrtg 发现流量的异常情

 1) 针对网络物理设备(如以太网卡eth0)绑定一个CBQ队列

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

#tc class add dev eth0 parent 1:1 classid 1:2 cbq bandwidth 10Mbit rate 64Kbit maxburst 20 allot 1514 prio 8 avpkt 1000 cell 8 weight 100Kbit bounded
创建分 类1:2,其父分类为1:1,分配带宽为64Kbit,优先级别为8。该队列的最大可用带宽为10Mbit,实际分配的带宽为64Kbit,可接收冲突的 发送最长包数目为20字节;最大传输单元加MAC头的大小为1514字节,优先级别为8,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相 应于实际带宽的加权速率为100Kbit,且不可借用未使用带宽。

3)在子分类地下创建队列,使用sfq随机公平队列
#tc qdisc add dev eth0 parent 1:2 sfq quantum 1514b perturb 15
#tc qdisc add dev eth0 parent 1:3 sfq quantum 1514b perturb 15

在分类底下,创建队列,使用sfq随即公平队列

4) 为每一分类建立一个基于路由的过滤
#tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.111.1.116 flowid 1:2
#tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.111.1.66 flowid 1:3

限制各ip地址的下载带宽,使用u32过滤器,对目的地址进行分类,对应已经创建的队列
需要添加新的被限制ip的下载带宽,需要先要创建新的分类(比如1:4),然后根据新的分类创建新的sfq队列,最后使用u32过滤器对目的地址进行带宽限制。
需要对几个ip限制下载带宽,就需要创建几个分类、队列、过滤器


 

限制上传

 

 

 

 

 

 

 

维护
主要包括对队列、分类、过滤器和路由的增添、修改和删除。 
增添动作一般依照”队列->分类->过滤器->路由”的顺序进行;修改动作则没有什么要求;删除则依照”路由->过滤器->分类->队列”的顺序进行。
#简单显示指定设备的队列状况
/sbin/tc qdisc ls dev eth0



 

 

 

 

分类的维护 
增添动作通过tc class add命令实现。
修改动作通过tc class change命令实现,如下所示:
/sbin/tc class change dev eth0 parent 1:1 classid 1:2 cbq bandwidth 10Mbit rate 64Kbit maxburst 20 allot 1514 prio 8 avpkt 1000 cell 8 weight 100Kbit bounded
对于bounded命令应慎用,一旦添加后就进行修改,只可通过删除后再添加来实现。


#过滤器的维护

本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2011/11/13/2247261.html,如需转载请自行联系原作者



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223211.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:36
下一篇 2026年3月17日 下午2:37


相关推荐

  • Matlab 没有 randint,Matlab_learning_4(rand randn randint函数 )「建议收藏」

    ||matlab中rand函数是产生0到1的随机分布1>、RAND:Uniformlydistributedrandomnumbers.标准化分布的随机数2>、RAND(N)isanN-by-Nmatrixwithrandomentries,chosenfromauniformdistributionontheinterval(0.0,1.0…

    2022年4月16日
    46
  • ubuntu域名服务器配置_linux虚拟主机配置

    ubuntu域名服务器配置_linux虚拟主机配置像我一样刚开始接触Ubuntu系统朋友不知道怎么配置虚拟主机的可以看一下,这里完整记录了我配置虚拟主机的全部过程

    2025年12月1日
    6
  • ANSI和ASCII、GBK和GB2312、Unicode和UTF-8的区别

    ANSI和ASCII、GBK和GB2312、Unicode和UTF-8的区别ANSI和ASCII区别NSI码(American National Standards Institute)美国国家标准学会的标准码ASCII码(America Standard Code for Information Interchange)美国信息交换标准码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准…

    2022年6月13日
    54
  • IT界最伟大的十位人物「建议收藏」

    IT界最伟大的十位人物「建议收藏」美国《电脑周刊》最近评出了“IT界最伟大十位人物”,苹果公司创办人史蒂夫·乔布斯(SteveJobs)凭借着创新精神和在苹果的二次创业排名榜首。    世界首富的微软董事会主席比尔·盖茨仅排名第三位,不敌万维网(Web)发明人蒂姆·伯纳斯·李。巧合的是,三甲排名人物都是在同一年出生。    上榜的十位人物大多世界闻名,而且富可敌国。例如,盖茨已经

    2022年10月9日
    4
  • 原生Form表单提交方式

    原生Form表单提交方式varidcard result data data varurl 请求的地址 varpostForm document createElemen form 表单对象 postForm method post postForm action url vartimeInput document createElemen inp

    2026年3月17日
    2
  • setPositiveButton和setNegativeButton的区别[通俗易懂]

    setPositiveButton和setNegativeButton的区别[通俗易懂]setPositiveButton和setNegativeButton的区别和setNeutralButton的区别三者都是AlertDialog弹出框的按钮,都是封装好的button,只是显示的位置不同,项目中可根据情况选择使用,setNegativeButton一般用于确认,setNegativeButton一般用于取消。newAlertDialog.Builder(MainActivi…

    2022年6月28日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号