资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
TC规则涉及到队列(QUEUE)分类器(CLASS)过滤器(FILTER),filter划分的标志位可用U32或iptables的set-mark来实现)一般是控发不控收linux下有两块网卡,一个eth1是外网,另一块eth0是内网.在eth0上做HTB(注意:filter划分标志位可用u32打标功能或iptables的set-mark功能,如果用iptables来打标记的话,下行速LV在eth0处控制,但打标应在进入eth0之前进行,所以,-ieth1”;例子:主要命令就下面三句:创建一个HTB的根1 .tcqdiscadddeveth0roothandle1:htbdefault20创建一个HTB的类,流量的限制就是在这里限制的,并设置突发.2 .tcclassadddeveth0parent1:classid1:1htbrate200kbit(速率)ceil200kbitburst20k(突发流量)创建一个过滤规则把要限制流量的数据过滤出来,并发给上面的类来限制速度3.tcfilteradddeveth0parent1:prio1(优先级)protocolipu32matchipsport800xfffflowid1:1说明:让交互数据包保持较低的延迟时间,并最先取得空闲带宽,比如:sshtelnetdnsquake3ircftp控制smtp命令和带有SYNft记的数据包,都应属于这一类。为了保证上行数据流不会伤害下行流,还要把AC烟据包排在队列前面,因为下行数据的ACK必须同上行流进行竞争。TC+IPTABLES+HTB+SFQ1tcp/ip协议规定,每个封包,都需要有ACKNOWLEDG息的回传,也就是说,传输的资料需要有一个收到资料的讯息回复,才能决定后面的传输速度,并决定是否重新传输遗失的资料,上行的带宽一部分就是用来传输这些ACK资料的.上行带宽点用大的时候,就会影响ACK资料的传送速度,并进而影响到下载速度,2试验证明,当上传满载时,下载速度变为原来速度的40%,甚至更低,因为上载文件(包括ftp上传,发邮件SMTP)如果较大,一个的通讯量令带宽超向包和,那么所有的数据包按照先进先出的原则进行排队和等待,这就可以解释为什么网内其中有人用ftp上载文件或发送大邮件的时候,整个网速变得很慢的原因.解决速度之道:1为了解决这些速度问题,对经过线路的数据进行了有规则的分流.把本来在宽带上的瓶颈转移到我们的LINUX路由器上,可以把带宽控制的比我们购买的带宽小一点.这样,我们就可以方便的用tc技术对经过的数据进行分流与控制我们的想像就像马路上的车道一样,有高速道,还有小车道,大车道,需要高速的synackicmpssh等走高速道,需要大量传输的ftp-data,smtp等走大车道,不能让它堵塞整条马路,各行其道.linux下的TC(trafficcontrol)就有这样的作用,只要控制得当,一定会有明显的效果.tc和iptables结合是最好的简单运用的结合方法.我们设置过滤器以使用iptables对数据包进行分类,因为iptables更灵活,而且还可以为每个规则设置计数器,iptables用mangle链来mark数据包,告诉了内核,数据包会有一个特定的FWMARK记值(handlexfw)表明它应该送给那个类(classidx:x),而prio是优先值,表明那些重要数据应该优先通过那个通道,首先选择队列(选才hhtb),一般系统默认的是fifo的先进先出队列,就是说包是按照先来先处理的原则,如果有一个大的数据包在前面,那么后面的包只能等前面的发完后才能接着发了,这样就算后面既使是一个小小的ack包,也要等待了,这样上传就影响了下载,就算你有很大的下载带宽也无能为力.HTB(Hierarchicaltokenbucket,分层的令牌桶),就像CBM样工作,但是并不靠计算闲置时间来整形,它是一个分类的令牌桶过滤器.,它只有很少的参数.结构简图:1:|1:111:121:211:221:231:24优先顺序:1:111:121:211:221:231:24根据上面的例子,开始脚本:关于参数的说明:rate:是一个类保证得到的带宽值,如果有不只一个类,请保证所有子类总和是小于或等于父类,ceil:ceil是一个类最大能得到带宽值.prio:是优先权的设置,数值越大,优先权越小,如果是分配剩余带宽,就是数值小的会最优先取得剩余的空闲的带宽权.一般大数据的话,控制在50%-80脸右吧,而ceil最大建议不超过85%,以免某一个会话占用过多的带宽.rate可按各类所需要分配:1:11是很小而且最重要的数据包通道,当然要多分点,甚至必要时先全部占用,不过一般不会的,所以给全速.1:12是很重要的数据道,给多点,最少给一半,但需要时可以再多一点rate规划1:2=1:21+1:22+1:23+1:24一般总在50%-80脸右.1:21http,pop是最常用的啦,为了太多人用,而导致堵塞,我们不能给得太多,也不能太少.1:22我打算给smtp用,优先低于1:21,以防发大的附件大量占用带宽.1:23我打算给ftp-data,和1:22一样,很可能大量上传文件,所以,rate不能给的太多,而当其他有剩时可以给大些,ceil设置大些.1:24是无所谓通道,就是一般不是我们平时工作上需要的通道,给小点防止这些人妨碍有正常工作需要的人.上行uplink320K,设置销低于理论值.DEV=PPP0UPLINK=300下行downlink3200K大概一半左右,以便能够得到更多的关发连接.DOWNLINK=15001曾加一个根队列,没有进行分类的数据包都走这个1:24是缺省类:tcqdiscadddev$DEVparent1:htbdefault241.1 增加一个根队下面主干类1:速率为$UPLINKktccladdadddev$DEVparent1:classid1:1htbrate$UPLINKkbitceil$UPLINKkbitprio01.1.1 在主干类1下建立第一叶子类,这是一个最高优先权的类,需要高优先和高速的包走这条通道,比如SYNACKICMP.tcclassadddev$DEVparent1:1classid1:11htbrate$uplinkkbitceil$uplinkkbitprio11.1.2 在主类1下建立第二叶子类,这是一个次高优先权的类,比如我们重要的CRhM据。tcclassadddev$DEVparent1:1classid1:12htbrate$uplink-150kbitceil$uplink-50kbitprio21.2 在根类下建立次干类classid1:2,此次干类的下面全部优先权低于主干类,以防重要数据堵塞。tcclassadddev$DEVparent1:classid1:2htbrate$UPLINK-150kbitprio31.2.1 在次干类下建立第一叶子类,可以跑例如http,pop等。tcclassadddev$DEVparent1:2classid1:21htbrate100kbitceil$uplink-150kbitprio41.2.2 在次干类下建立第二叶子类,不要太高的速度,以防发大的附件大量占用带宽,便如smtp等。tcclassadddev$DEVparent1:2classid1:22htbrate30kbitceil$uplink-160kbitprio51.2.3 在次干类下建立第三叶子类,不要太高的带宽,以防大量的数据堵塞网络,例如:ftp-data.tcclassadddev$DEVparent1:2classid1:23htbrate15kbitceil$UPLINK-170kbitprio61.2.4 在次干类下建立第四叶子类。无所谓的数据通道,无需要太多的带宽,以防无所谓的人在阻碍正务。tcclassadddev$DEVparent1:2classid1:24htbrate5kbitceil$UPLINK-250kbitprio7在每个类下面再附加上另一个队列规定,随机公平队列(SFQ,不被某个连接不停占用带宽,以保证带宽的平均公平使用。#SFQ(stochasticfairnessqueueing随机公平队列),SFQ的关键词是“会话”(或称作流),主要针对一个TC哙话或者UDPa,流量被分成相当多数量的FIFO队列中,每个队列对应一个会话。数据按照简单轮转的方式发送,每个会话都按顺序得到发送机会。这种方式非常公平,保证了每个会话都不会被其它会话所淹没,SFCfe所以被称为“随机”,是因为它并不是真的为每个会话创建一个队列,而是使用一个散列算法,把所有的会话映射到有限的几个队列中去。#参数perturb是多少秒后重新配置一次散列算法,默认为10秒.tcqdiscadddev$DEVparent1:11handle111:sfqperturb5tcqidscadddev$DEVparent1:12handle112:sfqperturb5tcqdiscadddev$DEVparent1:21handle121:sfqperturb10tcqidscadddev$DEVparent1:22handle122:sfqperturb10tcqidscadddev$DEVparent1:23handle123:sfqperturb10tcqidscadddev$DEVparent1:24handle124:sfqperturb10设置过滤器,handle是iptables作mark的值,让被iptables在mangle链做了mark的不同的值选择不同的通道classid,而prio是过滤器的优先级别tcfilter1:11adddev$DEWarent1:0protocolipprio1handle1fwclassidtcfilter1:12adddev$DEVparent1:0protocolipprio2handle2fwclassidtcfilter1:21adddev$DEVparent1:0protocolipprio3handle3fwclassidtcfilter1:22adddev$DEVparent1:0protocolipprio4handle4fwclassidtcfilter1:23adddev$DEVparent1:0protocolipprio5handle5fwclassidtcfilteradddev$DEWarent1:0protocolipprio6handle6fwclassid1:24,kTTTTTTTTTTTTTTTTJTrTnTTFTr“TF”“TFTF“TF”TTTFTF”“7T7T7T7T7T7T7T7T7T7T7T7T”HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号