当前位置:  技术问答>linux和unix

关于linux的TC,流量控制

    来源: 互联网  发布时间:2015-06-28

    本文导语:  哪位高手能指点一二,我想把网络进流量控制在某个数值,如1M 如何实现呢? 谢谢! | 使用TC实现基于linux的流量管理 作者:本站会员 大楠木 (kent@chinalinuxpub.com) 参考文献:tc weizhishu www...

哪位高手能指点一二,我想把网络进流量控制在某个数值,如1M
如何实现呢?
谢谢!

|
使用TC实现基于linux的流量管理
作者:本站会员 大楠木 (kent@chinalinuxpub.com)
参考文献:tc weizhishu www.chinalinuxpub.com
Linux Advanced Routing & Traffic Control HOWTO by Bert Hubert
http://www.chinalinuxpub.com/vbbfor...&threadid=18601
请认真阅读上面的文章,掌握好相应的概念。
Red Hat Linux 7.3 内核 2.4.18 以上。 
局域网的网络拓扑:


在服务器的eth0 帮定了外部地址 eth0:192.168.1.3 
eth1 帮定了内部地址 eth1:1 172.17.1.1
eth1:2 172.18.1.1
eth1:3 172.19.1.1

现在要实现的功能就是整个出口限制在512kbit(上传流量) , 172.17网段的下载流量下载到512Kbit ,172.18 网段限制在128kbit,172.19的网段限制到 3Mbit。
方法如下:
首先帮定相应的地址:(不细述)
实现路由设定,使用iptables实现。

# iptables –A input -F
# iptables -A output -F
# iptables -A forward -F
#echo 1 > /proc/sys/net/ipv4/ip_forward
#允许转发
# iptables -A input –j accept
# iptables -A output -j accept
# iptables -A forward -j accept
# iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 172.18.0.0/16 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 172.19.0.0/16 -j MASQUERADE

#进行IP地址伪装,使得内部的主机的数据包能通过服务器与外界联系。
进行流量管理

#tc qdisc add dev eth0 root tbf rate 512k lantency 50ms burst 1540

#在网卡eth0上使用tbf(TokenBucket Filter)过滤队列,将出口限制在512kbit,延迟50ms,突发数据1540,rate指定的数值就是限制的带宽。
继续在eth1做限制。

#tc qdisc add dev eth1 root handle 1:0 cbq bandwidth 100Mbit avpkt 1000 cell 8

#创建队列,指明网卡为100M网卡,这个跟流量限制无关,用于计算使用。

#tc class add dev eth1 parent 1:0 classid 1:1 cbq bandwidth 100Mbit rate 5Mbit weight 6Mbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

创建根分类,带宽限制在5Mbit,并且不允许借用别的带宽。
Prio 后面的参数为优先级,指定数据包处理的顺序。

#tc class add dev eth1 parent 1:1 classid 1:3 cbq bandwidth 100Mbit rate 512kbit weight 5Mbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

在跟类底下,创建分类1:3 限制带宽为512kbit,不允许借用带宽,用于172.17网段。

#tc class add dev eth1 parent 1:1 classid 1:4 cbq bandwidth 100Mbit rate 128kbit weight 5Mbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

在跟类底下,创建分类1:4 限制带宽为128kbit,不允许借用带宽,用于172.18网段。

#tc class add dev eth1 parent 1:1 classid 1:5 cbq bandwidth 100Mbit rate 3Mbit weight 10Mbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded 

在跟类底下,创建分类1:5 限制带宽为3Mbit,不允许借用带宽,用于172.19网段。

#tc qdisc add dev eth1 parent 1:3 handle 30: sfq
#tc qdisc add dev eth1 parent 1:4 handle 40: sfq
#tc qdisc add dev eth1 parent 1:5 handle 50: sfq

在每个分类底下,创建队列,使用sfq(Stochastic Fareness Queueing)随即公平队列。

#tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 172.17.0.0/16 flowid 1:3
#tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 172.18.0.0/16 flowid 1:4
#tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 172.19.0.0/16 flowid 1:5

使用u32过滤器,对目的地址进行分类,对应已经创建的队列。
通过以上方式实现了简单的流量控制,限制出口的上传流量以及内口的下载流量。
测试从 172.17.1.2 进行下载 限制的是 512kbit ,下载速率为 64-65kB
172.18.1.2 进行下载 限制的是 128kbit,下载速率为 13-16.3kB
172.19.1.2 进行下载 限制的是 3Mbit,下载速率达到 180-500kB
注:不匹配任何规则的数据包,将已root 设定的规则发送。
发现3M带宽的限制误差比较大。
以上的测试都是基于单机的,没有测试满负载的情况。
以上的文章是匆忙之中写出来的,TC过滤器涉及到的东西极多,有很多中方法可以实现,基于ip地址或者基于端口都可以实现。

希望各位多多讨论,多多完善。

    
 
 

您可能感兴趣的文章:

  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • 请问linux下一般用什么流量统计软件
  • linux 下监控用户或者进程的流量
  • Linux 流量控制系统 Pol-IP
  • 高分求linux下分析网络流量的程序c/c++源码
  • linux下面怎样做流量统计?
  • linux下p2p流量采集——高手请进
  • 我想知道linux内核关于流量控制(tc)方面的问题!
  • 网站系统 linux 如何设置才能限制下载的流量呢?
  • 关于linux 流量均衡负载
  • 关于linux下的流量控制TC
  • linux下怎么监测接口的流量?
  • 请问有在Linux下的流量控制工具吗?
  • linux 下的流量控制软件有那些??
  • 毕设题《linux下IPv6的流量监测控制系统》 求基础 求思路 求意见
  • linux流量监视
  • 如何对linux进行流量控制
  • linux编程设计:如何实时监控并统计应用程序通过linux服务器各端口的流量,以及显示及时速率,源IP,目的IP,类型(TCP、UDP、FTP、HTTP等)?
  • 在linux下如何通过编程获得网络流量或cpu占用率?
  • Linux做的FTP服务器,流量大会彻底死机吗?
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • 1、linux下一个虚拟控制台北我弄死了怎么重启?2、如果所有的虚拟控制台都被我弄死了,是不是就完蛋了?
  • 请问如何用telnet远程控制redhat 9linux系统呀?因为我没有在服务器安装远程控制软件如:VNC、secureCRT.谢谢
  • linux下如何修改控制台字体?
  • 怎样能使linux在控制台中显示中文?
  • linux 控制台
  • 如何在linux环境下编程控制tc35i收发短信
  • 关于公网上的linux服务器安全策略控制
  • 在Linux控制台中,Ctrl+S代表什么?如何禁止它?
  • Linux控制台模拟钟 Clockywock
  • WMWare中的Linux怎样切换不同的控制台,
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统) iis7站长之家


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3