刚买了DB120双USB的猫,刷了楼主的固件,一次成功。
" ]* k9 S9 A: W5 i' ?; P2 q- b7 U; ~5 M9 ]/ S; u' X# p
其实我对脱机下载没兴趣,就是想实现:adsl拨号+无线路由+带宽平均共享(使用esfq算法,下叙)。9 C5 L3 h5 U) R( N
带宽平均共享就是:比如有两台电脑同时上网,如果其中一台电脑a只占用少量带宽,则另一台电脑b可以占用剩余的大部分带宽,但此时不应该影响电脑a的使用(比如a网游不能卡)。做到这一点的方法就是两台电脑的数据包分别进行排队,轮流进行数据发送,当电脑a的队列变空时,可以连续发送电脑b的数据包,这样带宽不浪费。此时若a又有数据包需要发送了,则即使b的队列很长,也要a、b交替发送。由于发送是轮流进行的,若两台电脑都在疯狂下载,则每台最多能使用一半带宽,即使一台使用p2p,另一台是普通的下载。
4 J1 [% J9 d1 L! |3 V
$ s- s7 \0 ]3 M8 H% Q% I而linux默认的带宽分配算法pfifo的做法是:a、b使用同一个队列,如果b在队列中已经排了很多数据包,这时a来排队就要等b的数据都发出去后才能轮到,这样就很不公平了。! z. I, i4 F2 C2 x
2 Z i7 c1 r5 O0 \2 y) `; s, M' W; ~9 Slinux自带另外一个算法sfq,是对每个连接进行带宽平均分配的,这样如果b进行p2p下载产生了大量连接,a只有1个连接的话,a这个连接就要等很久才能得到一次发送数据的机会,对每台电脑来说就不公平。
$ m j8 R5 E5 Z4 g5 ~$ @( n& P" @8 a& o0 _1 a5 H- @
由于linux自带算法的局限性,有人就开发了增强型的sfq算法,可以做到每台电脑均分带宽,就是我前面所想实现的那样。而且这个均分是自动的,不用指定总带宽,不用指定每台电脑分配多少带宽,同时上网的电脑多,就每台少分点,电脑少就多分点。一台电脑未使用到平均带宽的部分可以被其它电脑共享。
0 m5 M# @" T( a* B) _2 R. J6 Z: R/ Q! I( u1 K! b# D
附带说一下对classful流量控制算法的想法:其基本思想就是对数据包进行优先级标记,只有高优先级的数据发送出去以后才能接着发送低优先级的数据。这个想法很好,但问题在于不同人或不同时候对优先的定义不一样,有时可能想在线视频优先,有时想游戏优先。所以这种算法不应该被设置在路由器中,否则就要频繁地去修改路由器配置了。路由器只要实现带宽均分,每台电脑有责任对自己的数据包发送进行规划,不同电脑可以有不同的规划。
# F3 n. d5 C( v8 R) O5 i& W' ~9 D7 M+ u
dlink固件的好处是支持adsl拨号,及在网上有源代码:http://ftp.dlink.ru/pub/ADSL/GPL_source_code/DSL-2760U_BRU_D/
3 I( A% R5 S% t7 _2 I目前这个固件没有集成linux的tc流量控制命令。其自带的qos设置功能使用复杂,而且没有实现带宽均分的功能。因此想在源代码中添加tc及esfq(参考:http://fatooh.org/esfq-2.6/)算法补丁进行带宽分配。3 ^" G2 B7 }3 J1 T% O- |, W
" u, I, y6 I0 s, O* ^1 V) r- e现在想问问有没有高手会对源代码增加tc等功能?
# ^ L* p0 o, S2 Y我想只要用到共享上网的人都会需要这个功能的。* U% G% d' Z0 \1 G' t/ T. p5 T
|