[原创] 自己写的tc2,共享给大家,希望听听大家的高见,以待完善.觉得好的,就帮忙顶一下,以便更多的人共同探索,发现问题,解决问题,总结问题.谢谢.
代码:
#!/bin/bash #脚本文件名: tc2 ######################################################################################### #用tc(traffic control)解决adsl宽带速度技术 ver. 1.0 by kindgeorge 2004.12.27 # ######################################################################################### #此脚本经过实验通过,更多的信息请参阅http://lartc.org #tc+iptables+htb+sfq # #一.什么是adsl? adsl(asymmetric digital subscriber loop,非对称数字用户环路) #用最简单的话的讲,就是采用上行与下行不对等带宽的基于atm的技术. #举例,我们最快的其中一条adsl带宽是下行3200kbit,上行只有320kbit.带宽通常用bit表示. # #1.下行3200k 意味着什么? #因为 1byte=8bit ,一个字节由8个位(bit)组成,一般用大写b表示byte,小写b表示bit. #所以 3200k=3200kbps=3200k bits/s=400k bytes/s. #2. 上行320k 意味着什么? # 320k=320kbps=320k bits/s=40k bytes/s. #就是说,个人所能独享的最大下载与上传速度,整条线路在没任何损耗,最理想的时候, #下载只有400k bytes/s,上传只有最大40k bytes/s的上传网速. #这些都是理想值,但现实总是残酷的,永远没有理想中那么好.至少也有损耗,何况内部网有几十台 #电脑一起疯狂上网. # #3.adsl上传速度对下载的影响 #(1)tcp/ip协议规定,每一個封包,都需要有acknowledge讯息的回传,也就是说,传输的资料, #需要有一个收到资料的讯息回复,才能决定后面的传输速度,並决定是否重新传输遗失 #的资料.上行的带宽一部分就是用來传输這些acknowledge(确认)資料模鄙闲懈涸毓? #大的时候,就会影响acknowledge资料的传送速度,并进而影响到下载速度.这对非对称 #数字环路也就是adsl这种上行带宽远小于下载带宽的连接来说影响尤为明显. #(2)试验证明,当上传满载时,下载速度变为原来速度的40%,甚至更低.因为上载文件(包括ftp #上传,发邮件smtp),如果较大,一个人的通讯量已经令整条adsl变得趋向饱与,那么所有的数据 #包只有按照先进先出的原则进行排队与等待.这就可以解释为什么网内其中有人用ftp上载文件, #或发送大邮件的时候,整个网速变得很慢的原因. # #二.解决adsl速度之道 #1. 为解决这些速度问题,我们按照数据流与adsl的特点,对经过线路的数据进行了有规则的分流. #把本来在adsl modem上的瓶颈转移到我们linux路由器上,可以把带宽控制的比adsl modem上的小一点, #这样我们就可以方便的用tc技术对经过的数据进行分流与控制. #我们的想象就象马路上的车道一样,有高速道,还有小车道,大车道.需要高速的syn,ack,icmp等走 #高速道,需要大量传输的ftp-data,smtp等走大车道,不能让它堵塞整条马路.各行其道. #2. linux下的tc(traffic control)就有这样的作用.只要控制得当,一定会有明显的效果. #tc与iptables结合是最好的简单运用的结合方法. #我们设置过滤器以便用iptables对数据包进行分类,因为iptables更灵活,而且你还可以为每个规则设 #置计数器. iptables用mangle链来mark数据包,告诉了内核,数据包会有一个特定的fwmark标记值(hanlde x fw), #表明它应该送给哪个类( classid x : x),而prio是优先值,表明哪些重要数据应该优先通过哪个通道. #首先选择队列,cbq与htb是不错的选择,经过实验,htb更为好用,所以以下脚本采用htb来处理 #3. 一般系统默认的是fifo的先进先出队列,就是说数据包按照先来先处理的原则,如果有一个大的数 #据包在前面,#那么后面的包只能等前面的发完后才能接着发了,这样就算后面即使是一个小小的ack包, #也要等待了,这样上传就影响了下载,就算你有很大的下载带宽也无能为力. #htb(hierarchical token bucket, 分层的令牌桶) #更详细的htb参考 http://luxik.cdi.cz/~devik/qos/htb/ #htb就象cbq一样工作,但是并不靠计算闲置时间来整形.它是一个分类的令牌桶过滤器.... 下一页