您好、欢迎来到现金彩票网!
当前位置:ds视讯 > 服务原语 >

利用TC进行流量控制

发布时间:2019-08-06 14:22 来源:未知 编辑:admin

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

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

  通过以上方式实现了简单的流量控制,限制出口的上传流量以及内口的下载流量。

  目前公司专线M,上下行对等,因近期内部人员使用P2P对网络造成较大影响,所以现在进行流量控制(大部人禁止使用P2P下载,但一些管理人员不能限制,无奈之下只有采取流量控制)。

  即保证ERP系统的运行,又不影响其它用户的使用,换句话说,让他们没有感觉,同时达到了我们的目的。注:因为TC只能限制发送数据包,所以下载在内网卡上进行,而上传在外网卡上进行控制。

  默认下不符合以上两规则的全部使用此规则,上传带宽最大为400K(不要说我苛刻哟)

  1)因为内部IP地址在经过外网卡时会进行NAT,所以不能用源地址进行U32匹配,只能是FW规则进行流量标识

  tc - 显示/维护流量控制设置摘要tc qdisc [ add change replace link ] dev DEV [ parent qdisc-id root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]tc class [ add change replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]tc filter [ add change replace ] dev DEV [ parent qdisc-id root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-idtc [-s -d ] qdisc show [ dev DEV ]tc [-s -d ] class show dev DEV tc filter show dev DEV简介Tc用于Linux内核的流量控制。流量控制包括以下几种方式:SHAPING(限制)当流量被限制,它的传输速率就被控制在某个值以下。限制值可以大大小于有效带宽,这样可以平滑突发数据流量,使网络更为稳定。shaping(限制)只适用于向外的流量。SCHEDULING(调度)通过调度数据包的传输,可以在带宽范围内,按照优先级分配带宽。SCHEDULING(调度)也只适于向外的流量。POLICING(策略)SHAPING用于处理向外的流量,而POLICIING(策略)用于处理接收到的数据。DROPPING(丢弃)如果流量超过某个设定的带宽,就丢弃数据包,不管是向内还是向外。流量的处理由三种对象控制,它们是:qdisc(排队规则)、class(类别)和filter(过滤器)。QDISC(排队规则)QDisc(排队规则)是queueing discipline的简写,它是理解流量控制(traffic control)的基础。无论何时,内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。CLASS(类)某些QDisc(排队规则)可以包含一些类别,不同的类别中可以包含更深入的QDisc(排队规则),通过这些细分的QDisc还可以为进入的队列的数据包排队。通过设置各种类别数据包的离队次序,QDisc可以为设置网络数据流量的优先级。FILTER(过滤器)filter(过滤器)用于为数据包分类,决定它们按照何种QDisc进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法可以有多种,使用fileter(过滤器)就是其中之一。使用filter(过滤器)分类时,内核会调用附属于这个类(class)的所有过滤器,直到返回一个判决。如果没有判决返回,就作进一步的处理,而处理方式和QDISC有关。需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。CLASSLESS QDisc(不可分类QDisc)无类别QDISC包括:[pb]fifo使用最简单的qdisc,纯粹的先进先出。只有一个参数:limit,用来设置队列的长度,pfifo是以数据包的个数为单位;bfifo是以字节数为单位。pfifo_fast在编译内核时,如果打开了高级路由器(Advanced Router)编译选项,pfifo_fast就是系统的标准QDISC。它的队列包括三个波段(band)。在每个波段里面,使用先进先出规则。而三个波段(band)的优先级也不相同,band 0的优先级最高,band 2的最低。如果band里面有数据包,系统就不会处理band 1里面的数据包,band 1和band 2之间也是一样。数据包是按照服务类型(Type of Service,TOS)被分配多三个波段(band)里面的。redred是Random Early Detection(随机早期探测)的简写。如果使用这种QDISC,当带宽的占用接近于规定的带宽时,系统会随机地丢弃一些数据包。它非常适合高带宽应用。sfqsfq是Stochastic Fairness Queueing的简写。它按照会话(session--对应于每个TCP连接或者UDP流)为流量进行排序,然后循环发送每个会话的数据包。tbftbf是Token Bucket Filter的简写,适合于把流速降低到某个值。不可分类QDisc的配置如果没有可分类QDisc,不可分类QDisc只能附属于设备的根。它们的用法如下:tc qdisc add dev DEV root QDISC QDISC-PARAMETERS要删除一个不可分类QDisc,需要使用如下命令:tc qdisc del dev DEV root一个网络接口上如果没有设置QDisc,pfifo_fast就作为缺省的QDisc。CLASSFUL QDISC(分类QDisc)可分类的QDisc包括:CBQCBQ是Class Based Queueing(基于类别排队)的缩写。它实现了一个丰富的连接共享类别结构,既有限制(shaping)带宽的能力,也具有带宽优先级管理的能力。带宽限制是通过计算连接的空闲时间完成的。空闲时间的计算标准是数据包离队事件的频率和下层连接(数据链路层)的带宽。HTBHTB是Hierarchy Token Bucket的缩写。通过在实践基础上的改进,它实现了一个丰富的连接共享类别体系。使用HTB可以很容易地保证每个类别的带宽,虽然它也允许特定的类可以突破带宽上限,占用别的类的带宽。HTB可以通过TBF(Token Bucket Filter)实现带宽限制,也能够划分类别的优先级。PRIOPRIO QDisc不能限制带宽,因为属于不同类别的数据包是顺序离队的。使用PRIO QDisc可以很容易对流量进行优先级管理,只有属于高优先级类别的数据包全部发送完毕,才会发送属于低优先级类别的数据包。为了方便管理,需要使用iptables或者ipchains处理数据包的服务类型(Type Of Service,ToS)。操作原理类(Class)组成一个树,每个类都只有一个父类,而一个类可以有多个子类。某些QDisc(例如:CBQ和HTB)允许在运行时动态添加类,而其它的QDisc(例如:PRIO)不允许动态建立类。允许动态添加类的QDisc可以有零个或者多个子类,由它们为数据包排队。此外,每个类都有一个叶子QDisc,默认情况下,这个叶子QDisc使用pfifo的方式排队,我们也可以使用其它类型的QDisc代替这个默认的QDisc。而且,这个叶子叶子QDisc有可以分类,不过每个子类只能有一个叶子QDisc。当一个数据包进入一个分类QDisc,它会被归入某个子类。我们可以使用以下三种方式为数据包归类,不过不是所有的QDisc都能够使用这三种方式。tc过滤器(tc filter)如果过滤器附属于一个类,相关的指令就会对它们进行查询。过滤器能够匹配数据包头所有的域,也可以匹配由ipchains或者iptables做的标记。服务类型(Type of Service)某些QDisc有基于服务类型(Type of Service,ToS)的内置的规则为数据包分类。skb-priority用户空间的应用程序可以使用SO_PRIORITY选项在skb-priority域设置一个类的ID。树的每个节点都可以有自己的过滤器,但是高层的过滤器也可以直接用于其子类。如果数据包没有被成功归类,就会被排到这个类的叶子QDisc的队中。相关细节在各个QDisc的手册页中。命名规则所有的QDisc、类和过滤器都有ID。ID可以手工设置,也可以有内核自动分配。ID由一个主序列号和一个从序列号组成,两个数字用一个冒号分开。QDISC一个QDisc会被分配一个主序列号,叫做句柄(handle),然后把从序列号作为类的命名空间。句柄采用象10:一样的表达方式。习惯上,需要为有子类的QDisc显式地分配一个句柄。类(CLASS)在同一个QDisc里面的类分享这个QDisc的主序列号,但是每个类都有自己的从序列号,叫做类识别符(classid)。类识别符只与父QDisc有关,和父类无关。类的命名习惯和QDisc的相同。过滤器(FILTER)过滤器的ID有三部分,只有在对过滤器进行散列组织才会用到。详情请参考tc-filters手册页。单位tc命令的所有参数都可以使用浮点数,可能会涉及到以下计数单位。带宽或者流速单位:kbps千字节/秒mbps兆字节/秒kbitKBits/秒mbitMBits/秒bps或者一个无单位数字字节数/秒数据的数量单位:kb或者k千字节mb或者m兆字节mbit兆bitkbit千bitb或者一个无单位数字字节数时间的计量单位:s、sec或者secs秒ms、msec或者msecs分钟us、usec、usecs或者一个无单位数字微秒TC命令tc可以使用以下命令对QDisc、类和过滤器进行操作:add在一个节点里加入一个QDisc、类或者过滤器。添加时,需要传递一个祖先作为参数,传递参数时既可以使用ID也可以直接传递设备的根。如果要建立一个QDisc或者过滤器,可以使用句柄(handle)来命名;如果要建立一个类,可以使用类识别符(classid)来命名。remove删除有某个句柄(handle)指定的QDisc,根QDisc(root)也可以删除。被删除QDisc上的所有子类以及附属于各个类的过滤器都会被自动删除。change以替代的方式修改某些条目。除了句柄(handle)和祖先不能修改以外,change命令的语法和add命令相同。换句话说,change命令不能一定节点的位置。replace对一个现有节点进行近于原子操作的删除/添加。如果节点不存在,这个命令就会建立节点。link只适用于DQisc,替代一个现有的节点。历史tc由Alexey N. Kuznetsov编写,从Linux 2.2版开始并入Linux内核。SEE ALSOtc-cbq(8)、tc-htb(8)、tc-sfq(8)、tc-red(8)、tc-tbf(8)、tc-pfifo(8)、tc-bfifo(8)、tc-pfifo_fast(8)、tc-filters(8)

  TC的安装TC是Linux自带的模块,一般情况下不需要另行安装,可以用mantc查看tc相关命令细节,tc要求内核2.4.18以上##注意:64位机器上,先执行下面命令ln-s/usr/lib64/t...博文来自:Gino的专栏

  背景:在工作中会遇到需要对服务所在机器进行流量控制,随机丢包,制造client端与server端连接失败的场景tc介绍:TC--TrafficControlTC是linux中的流量控制模块,利用队列规...博文来自:ZYLmingbai的博客

  最近有同事用bt和电驴疯狂下载,我们上网打cs受到极大影响,所以对nat上网做了流量控制,将一点经验介绍给网友,希望对cs fans 有所帮助. 我们上网环境如下:     eth0 外网ip :a....博文来自:逆雪寒的天坑

  有一台采集服务器抓取互联网上的信息,由于机房给的带宽有限,而服务器经常突破机房的带宽限制,所以想限制一下服务器的带宽,在网上找到了TC命令,并且找到了两条限制带宽的命令 /sbin/tc qdisc论坛

  概述Linux操作系统中的流量控制器TC(TrafficControl)用于Linux内核的流量控制,它利用队列规定(qdisc)建立处理数据包的队列,并定义队列中的数据包被发送的方式,从而实现对流量...博文

  原理介绍Linux操作系统中的流量控制器TC(TrafficControl)用于Linux内核的流量控制,它利用队列规定建立处理数据包的队列,并定义队列中的数据包被发送的方式,从而实现对流量的控制。T...博文来自:onephone的专栏

  每个IP单独限制,好随时修改。如果是用拨号上网的,请把以下内容加到/etc/ppp/ip-up.local中,否则断线重拨后会没有上传限制,对BT光限制下载是不够的。 #!/bin/bash##zyx...博文来自:不懂

  公司一台服务器,网络环境太高,那台服务器和源服务器连接下载,就跑到400M-500M,为了控制一下,所以研究了一下TC。来做流量控制.给他控制到小点,不要让这一台占了所有的网络。TC很是强大啊,很多所...博文来自:ruiyiin的专栏

  已知IP段,上行流量,下行流量,用TC实现控制上行流量和下行流量,求代码 顺便问下,为什么百度限制上行流量和下行流量都是要用到两个端口eth0和eth1,一个不可以吗?论坛

  来自:的工作原理通过设置不同类型的网络接口队列,从而改...博文来自:tenfyguo的技术专栏

  网络流量控制(Shaping,流量整形)TC(trafficcontrol)工作原理通过设置不同类型的网络接口队列,从而改变数据包发送的速率和优先级,达到流量控制的目的。内核如果需要通过某个网络接口发...博文来自:渐入佳境-学习空间

  tc命令简介tc是英文trafficcontrol的简称,即流量控制,主要用于控制网卡流量,包括流量限速、流量整形等。功能简介tc命令可以轻松的实现基于单个ip限速的功能,但如果要实现基于ip组(如1...博文来自:Derry的专栏

  原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。初次接触强大的...博文来自:x_i_y_u_e的专栏

  TC介绍在linux中,TC有二种控制方法CBQ和HTB.HTB是设计用来替换CBQ的。它是一个层次式的过滤框架.TC包括三个基本的构成块:队列规定qdisc(queueingdiscipline)、...博文来自:和蔼的二师兄的专栏

  一、TC原理      Linux操作系统中的流量控制器TC(TrafficControl)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。   接收包从输入接口进来后...博文来自:a2796749的专栏

  本文档的Copyleft归所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性,严禁用于任何商业用途。E-mail: 来源: 博文来自:shangyaowei的专栏

  本文利用vmware虚拟机搭建linux环境,并模拟一些复制网络的情形。一、网络带宽限速linux下进行带宽限速,需要使用分类队列,其原理主要是对网络设备的发送接口(原则上接收接口无非进行流量控制),...博文来自:u011472058的博客

  利用滑动窗口实现流量控制:①研究流量控制的目的是控制发送端发送速率,使之不超过接收端接收速率,防止由于接收端来不及接收送达的字节流,而出现报文段丢失的现象。②利用滑动窗口进行流量控制过程:接收窗口又称...博文来自:hpc的博客

  首先说一下流量控制和拥塞控制的区别    流量控制是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动窗口的大小...博文来自:Linias的博客

  警告!这些例子,需要很好地理解TCP/IP和其它网络概念。所有新的用户,应尽量在测试环境中的例子。TC命令是默认安装在我的Linux发行版。要列出现有规则,请输入:#tc-sqdisclsdeveth...博文来自:eydwyz的专栏

  在linux中,tc有二种控制方法CBQ和HTB.HTB是设计用来替换CBQ的.HTB比CBQ更加灵活,但是CPU开销也更大,通常高速的链路会使用CBQ,一般而言HTB使用的更加广泛我们对tc中的HT...博文

  tc是用来提供流量控制的强大工具,自己在进行DDoS攻击模拟、网络负载测试中一直使用!本文是简单的使用介绍,流量控制工具TC详细说明有详细的介绍概要简介netem是linux内核版本提供的一个网络模拟...博文来自:onephone的专栏

  Linuxtc 详解发表于 2013/04/15 由 wy182000众所周知,在互联网诞生之初都是各个高校和科研机构相互通讯,并没有网络流量控制方面的考虑和设计,IP协议的原则是尽可能好地为所有数据...博文来自:eydwyz的专栏

  TCP使用的流量控制协议是可变大小的滑动窗口协议。字节流服务::两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不在字节流中插入记录标识符。我们将这称为字节流服务(bytestreams...博文来自:JNqidian的博客

  PCIe协议是一种端对端的互连协议,提供了高速传输带宽的解决方案。目前PCIe已经发展到第四代PCIe4.0,每一代的发展,最明显的特征就是速率翻倍,如下表,从最初的2.5GT/s,到现在的PCIe4...博文来自:存储随笔

  转载地址:即流量控制,这一概念起源于网络通信中。PCIe总线采用FlowControl的...博文来自:kunkliu的博客

http://wendevick.net/fuwuyuanyu/838.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有