网站运营
位置:首页>> 网站运营>> 使用linux下的TC进行服务器流量控制

使用linux下的TC进行服务器流量控制

 来源:asp之家 发布时间:2009-09-09 08:39:00 

标签:linux,TC,服务器,流量控制

公司一台服务器,网络环境太高,那台服务器和源服务器连接下载,就跑到400M-500M,为了控制一下,所以研究了一下TC.来做流量控制。给他控制到小点,不要让这一台占了所有的网络。TC很是强大啊,很多所谓的硬件路由器,都是基于这个做的。

TC介绍

在linux中,TC有二种控制方法CBQ和HTB.HTB是设计用来替换CBQ的。它是一个层次式的过滤框架。

TC包括三个基本的构成块: 队列规定qdisc(queueing discipline )、类(class)和分类器(Classifiers)

队列(queueing discipline):用来实现控制网络的收发速度。通过队列,linux可以将网络数据包缓存起来,然后根据用户的设置,在尽量不中断连接(如 TCP)的前提下来平滑网络流量。需要注意的是,linux对接收队列的控制不够好,所以我们一般只用发送队列,即“控发不控收”。它封装了其他两个主要 TC组件(类和分类器)。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。

最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。

队列规则包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(Token Bucket),类基队列(CBQ),CBQ 是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。

class用来表示控制策略。很显然,很多时候,我们很可能要对不同的IP实行不同的流量控制策略,这时候我们就得用不同的class来表示不同的控制策略了。

filter用来将用户划入到具体的控制策略中(即不同的class中)。比如,现在,我们想对xxa,xxb两个IP实行不同的控制策略(A,B),这时,我们可用filter将xxa划入到控制策略A,将xxb划入到控制策略B,filter划分的标志位可用u32打标功能或IPtables的 set-mark(大多使用iptables来做标记)功能来实现。

目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用 Linux netfilter 代码选择流量,而u32分类器允许我们选择基于 ANY 头的流量 .需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。

数据包->iptables(在通过iptables时,iptables根据不同的ip来设置不同的mark)->TC(class)->TC(queue)

应用

假设eth0位是服务器的外网网络接口。

1)首先在eth0的qdiscA,qdiscA控制通过本机到外网的速度,因此是用来控制服务器流出速度的

#tc qdisc add dev eth1 root handle 1:htb default 1

添加 设置接口 最上层 句柄(做标记用) 标记 默认使用1的class

解释如下:无论是队列,还是class和filter都有ID之类的标志符,一般都有parent(父,上层的),注意ID具有接口本地性,不同的网络接口可以有相同的ID.对于这里因为qdisc在顶部,所以parent无,用‘root’字样来标识,ID用1:来标志

‘default 91′表示当某个ip流不满足任何已设定的filter规则时,将自动归入class 1中。更详细的指令规则说明请参考手册。

2)然后在qdisc下建立两个class,来指定eth0控制通过本机到外网的速度

#tc class add dev eth0 parent 1:0 classid1:30 htb rate 2mbit ceil 4mbit prio 2

注:以上就是我们控制输出服务器的速度,为2M,最大可以到4M

rate: 是一个类保证得到的带宽值。如果有不只一个类,请保证所有子类总和是小于或等于父类。

prio:用来指示借用带宽时的竞争力,prio越小,优先级越高,竞争力越强。

ceil: ceil是一个类最大能得到的带宽值。

3)接着针对不同的应用在各root class下设置不同的类,。示例如下。(如果只有一个类,这个就没有必要了)

#tc class add dev eth0 parent 1:30 classid 1:31 htbrate 0.5mbit ceil 2mbit prio 3

同时为了不使一个会话永占带宽,在节点(即本文的各应用结点)添加随即公平队列sfq.(多IP)

#tc qdisc add dev eth0 parent 1:31 handle 31:sfq perturb 10

4)接着添加过滤器。

#tc filter add dev eth0 parent 1: protocol ipprio 31 handle 31 fw flowid 1:31

4)用iptable打标,也可以使用u32之类

#iptables -t mangle -I FORWARD -i !eth1 -p tcp –sport 80 -s xxx.xxx.xxx.xxx –j MARK –set-mark 31


0
投稿

猜你喜欢

  • 搜索引擎算法解密,以下是一些经验.提供大家分享. 希望对一些想学SEO或者正在学SEO的朋友有所帮助. 当然搜索引擎是不断的在变化.所以规律
  • 打算做个下半场营销软件下载站。放上去谷歌广告adsense后,发现杂得也不给我显示。后来找到了原因,我的站应该是属于谷歌官方所说的“版权材料
  • 在windows 2003 server中编写asp代码,你可能会碰到下面的错误提示“不允许的父路径”,涉及到的代码有:Server.Map
  • 很多人都要问,怎么提高关键词的排名,其实提高关键词的排名不是一朝一夕的事情。下面是我总结的一些方法,如果你确定把这些都做好了,那么你的排名应
  • 第 1 步:选择推介区域 选择特定广告前,您需要指定国家/地区和语言首选项。为了最大限度地增加转换机会,请选择能充分反映用户情况的组合。有些
  • 目前很多杀毒软件都带有反广告的功能,可以屏蔽页面上出现的 Flash 广告。就拿卡巴斯基为例,它使用路径规则来过滤 Flash 内容。具体设
  • 做搜索优化的人都知道,反向连接数对于站点的排名,比较重要,分析关键词优化很有帮助的,那么什么是反向链接数呢?反向链接又被称为链接广泛度,说白
  • Linux具有安全、高效、廉价的优点,但大家对它一直有难以使用的印象。其实,随着Linux的不断发展,它的易用性已大有改观。采用Linux操
  • 我们链接专题系列的第三篇是关于创建导出链接,也就是怎样“链出去”。对于大多数网站管理员来说,导出链接
  • 在Windows xp、Windows 2000操作系统下如果需要调试Asp程序,首先需要判断您所安装的系统是否具备调试Asp的环境,IIS
  • 在WIN下安装APACHE配置虚拟目录和UNIN下基本是一样的就是修改httpd.conf1:单个IP对应单个玉米例如:www.phpuni
  • 西联汇款开通以来,有很多发布商需要给我们写邮件修改拼音姓名才能领取付款。为了方便广大发布商顺利取款,我们很高兴地通知您,现在您可以在账户中直
  • ●其它错误此外,还有一些其它难以归类的错误,如“非1即0”导致绕过认证的问题。9.2.3常用的的CG
  • 一、工具的使用1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进
  • 网络营销已经成为旅游行业一种至关重要的推广模式,几乎所有的旅行社都拥有自己的网站,综合类的旅游网站也让人目不暇接,竞争之激烈可谓战火纷飞。但
  • 每当我提到我的博客的时候,人们总是抬一下眼皮,或者微笑一下,表示“我不太了解,不过还不错”。但是当我提到我从博客中赚到钱时,我突然发现,他们
  • 11月16日,google adsense发生了一点小小的变化:广告可点击区域由从原来的几乎所有广告区域变为只有广告标题和网址可点击,就因为
  • 1. 设定个容易记住的网址2. 在流量高的博客上留回应 - 只要你能够发表建设性及有见解的回应,相信其他读者也会希望来你的博客看看你有其他什
  • IIS配置IIS6与IIS5有着很多不同之处,不一一列举,也不是我一个脑袋可以装下的东西。都在资料上!IIS6有一个非常不方便的东西,就是他
  • 什么是SWFUpload?SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaS
手机版 网站运营 asp之家 www.aspxhome.com