网游的数据包尺寸在128byte以下的数据包占了多数,也就是说网络游戏和web网页的数据包& j+ e: _; e6 p" }6 ]
多数都是小包。
/ A" Y+ C- V4 C9 ]2 N其实,很多关键的数据包,比如dns,tcp的syn数据包等都是“小包”。
- }& }) `6 y4 f; x4 W由此想到,可以把在QOS中把小包单独分为一个子类,并且给予最高的优先级。
W; k- I) K) H ?( Y2 T" F
2 K% H4 e' K' ?/ z, K9 v9 A下面是一个脚本范例。8 Q* `& e) H: b$ H7 q J
环境:dualwan,关闭web界面的所有QOS设置(不然有冲突),一条2MADSL,4PC。7 }; V2 G' |4 \
目标:192.168.1.2--192.168.1.5所有IP限制下载1200kbit/s,上传200kbit/s,且使得“小包优先”。
6 e% [+ T7 m# R0 Z我所选择的“小包”是小于512byte的包。 modprobe imq L" r# m$ R" ~: |
5 ]- z# j z5 _! Hmodprobe ipt_IMQ0 I1 o/ w) s' F; m1 l
& t9 t* F1 T7 S) ?" x
ifconfig imq1 up6 s# R6 Y' z- A4 {8 w+ e, d
1 e; w, q) P$ P/ Y9 f" n, Jifconfig imq0 up
4 G4 L% a! I: F3 n; S* f. K' W
" v; L! K. o4 a6 j6 niptables -t mangle -A POSTROUTING -o br0 -j IMQ --todev 0& ^4 w) P/ x) J' f j
% E' P a* L7 c0 k& C% ^5 Z6 @iptables -t mangle -A PREROUTING -i br0 -j IMQ --todev 1
# \0 z% Q3 z$ p" e3 n) `
& ]* b" u, u* m( @* r) [
0 R9 J: ]/ z1 A0 [& T2 }) n- `2 \0 B: h& F" _: v' Z. G# h
modprobe /lib/modules/2.4.37.6/kernel/net/ipv4/netfilter/ipt_length.o 0 f9 O% W* [! X
R& ?1 Y; f2 Q# n! z: ~! r* Diptables -t mangle -A POSTROUTING -p all -m length --length :512 -j MARK --set-mark 99/ I; m# z3 g8 ~/ d( z( K( K
$ R# v2 I2 `* L6 w7 ^# q" e
iptables -t mangle -A PREROUTING -p all -m length --length :512 -j MARK --set-mark 99- u" D0 B$ @' R& J
8 ]7 [' \2 {' m2 v
$ ]' a* l8 A4 I# o# R* F% w; S! `* U$ P8 }9 ?! l0 U# h
tc qdisc del dev imq0 root
; |9 \3 R% c8 a( z+ {1 b$ @
1 \) {- e" z- A5 l: ^; i$ ]/ _/ ytc qdisc add dev imq0 root handle 1: htb
4 Z6 O H- f" `: l8 x7 `$ M9 ?. C+ F
- j- U! ]- N: i0 ?$ [! Y# Ltc class add dev imq0 parent 1: classid 1:1 htb rate 1600kbit
$ z' Z( M/ H; g4 ~$ [2 G2 h9 l9 S$ M/ D# A0 S- ?
tc class add dev imq0 parent 1:1 classid 1:10 htb rate 200kbit ceil 1200kbit prio 20 \- b. N- K; x* n1 c8 o5 m
7 p* A7 I) Q- k* f# k& z! z
tc class add dev imq0 parent 1:1 classid 1:11 htb rate 200kbit ceil 1200kbit prio 2
: C2 @" D' o s6 I9 F) ^6 w4 q# b8 C, U! y4 ^
tc class add dev imq0 parent 1:1 classid 1:12 htb rate 200kbit ceil 1200kbit prio 2' U" ]% N7 B. J9 K' v/ H9 ^: L- v; s
) r& J5 u, A& z5 Z, S9 F
tc class add dev imq0 parent 1:1 classid 1:13 htb rate 200kbit ceil 1200kbit prio 2
* f# G8 H; d+ ]3 F/ F7 l. `
2 Z# ], }/ x4 O0 Otc class add dev imq0 parent 1:1 classid 1:99 htb rate 400kbit ceil 1000kbit prio 0/ i4 h4 u. f: {
4 m( t3 V% d9 Z- h9 otc qdisc add dev imq0 parent 1:10 handle 10: sfq perturb 108 W# O7 o( l) j# t/ a
8 h1 p {# |8 I$ Mtc qdisc add dev imq0 parent 1:11 handle 11: sfq perturb 10
2 j0 q/ ]# C' E/ d7 A- e" a
+ J% [; n# q' J# F# i6 @tc qdisc add dev imq0 parent 1:12 handle 12: sfq perturb 100 K5 ?: H0 y1 T& ?& {, S# C: H5 _
( {! ?; M( P3 X2 l0 A- wtc qdisc add dev imq0 parent 1:13 handle 13: sfq perturb 105 S: a* t$ `" h6 y) Q: D# X
1 H4 j, w1 Z3 E' f9 g7 d; F9 ^tc filter add dev imq0 parent 1:0 protocol ip handle 10 fw flowid 1:10- w& c- O: c6 A
* e y5 T! i+ atc filter add dev imq0 parent 1:0 protocol ip handle 11 fw flowid 1:113 B' B" E1 _5 ?# P7 Y
5 C7 K! o1 f! l; t4 b8 j
tc filter add dev imq0 parent 1:0 protocol ip handle 12 fw flowid 1:12* I [; x: y+ f' Y5 y
( F& U3 K: {" s/ _5 B' y
tc filter add dev imq0 parent 1:0 protocol ip handle 13 fw flowid 1:13. Y8 i: ^) w, e
y5 e) U: Z; q$ a7 r# t/ m. `tc filter add dev imq0 parent 1:0 protocol ip handle 99 fw flowid 1:999 r5 l* W. H: _9 b( R- ^5 ~
0 T' q! u+ Q( m& Jiptables -t mangle -A POSTROUTING -d 192.168.1.2 -j MARK --set-mark 104 V1 ^, p9 m, X* e6 v3 Y9 B6 b
* g4 B( M: w \: O
iptables -t mangle -A POSTROUTING -d 192.168.1.3 -j MARK --set-mark 11
3 w" |8 F/ U& t, l: _* ?6 A, ?4 W h
iptables -t mangle -A POSTROUTING -d 192.168.1.4 -j MARK --set-mark 129 L2 l, p* h {8 H2 {& n) K, w
f5 O4 K9 H' H
iptables -t mangle -A POSTROUTING -d 192.168.1.5 -j MARK --set-mark 13$ a3 d/ [0 J; X& W- X
; v# c* n5 R9 t' G, r% m! G
- X# {7 {! p8 ?: b# M& _+ @) j1 R* H7 I$ Z
tc qdisc del dev imq1 root
% j! ~ f5 }6 r1 W5 y
0 q1 x( s% m2 \; X1 S( Vtc qdisc add dev imq1 root handle 1: htb
: W; X$ P( E: k6 h* I1 T: |* B% m t+ d; R9 T8 V. w( U: _
tc class add dev imq1 parent 1: classid 1:1 htb rate 320kbit
8 H& v8 S" v$ [& X' t5 A
. _0 f4 z# Y2 F) S# X; itc class add dev imq1 parent 1:1 classid 1:10 htb rate 20kbit ceil 200kbit prio 21 s ]2 u$ U" v+ A# Q
& @9 d' q- ^- ^- c* Z
tc class add dev imq1 parent 1:1 classid 1:11 htb rate 20kbit ceil 200kbit prio 2* \7 i- l. r- y6 n1 @' {
7 e' E- e8 D- S5 \% {
tc class add dev imq1 parent 1:1 classid 1:12 htb rate 20kbit ceil 200kbit prio 2
& H) x4 _/ u# ]6 l5 @4 F' k4 n; F- L3 T& E
tc class add dev imq1 parent 1:1 classid 1:13 htb rate 20kbit ceil 200kbit prio 2
1 a. v# ^" k+ X0 {' o" E
" T0 k0 w3 T" ]) t: e! I( otc class add dev imq1 parent 1:1 classid 1:99 htb rate 100kbit ceil 200kbit prio 0
$ |; R2 Q/ O: ]7 h* H) H
2 ?# b; b. v1 }% otc qdisc add dev imq1 parent 1:10 handle 10: sfq perturb 109 C; C# z/ p1 b2 A
# R/ F: A0 n1 Y& J$ k5 qtc qdisc add dev imq1 parent 1:11 handle 11: sfq perturb 102 p$ M( H% M1 C- i4 Y
9 F; @+ O5 X# ~4 d: F+ \
tc qdisc add dev imq1 parent 1:12 handle 12: sfq perturb 10! I) [" h9 H7 p/ o- {3 c, x
5 S3 a; p2 o0 G$ b5 P) t% F1 ftc qdisc add dev imq1 parent 1:13 handle 13: sfq perturb 10
' X8 g4 u- s, P3 X1 \: @% N! L. t$ y* m9 w
tc filter add dev imq1 parent 1:0 protocol ip handle 10 fw flowid 1:10
* k0 W+ E! Q- b" y2 a
2 f' @# N B0 ~( Utc filter add dev imq1 parent 1:0 protocol ip handle 11 fw flowid 1:116 v& s7 C: I# O
% d# S: `9 p" t
tc filter add dev imq1 parent 1:0 protocol ip handle 12 fw flowid 1:12
6 ?3 f6 d+ s" F `- l {5 `
" K" l# w$ x X; A3 wtc filter add dev imq1 parent 1:0 protocol ip handle 13 fw flowid 1:13 d3 j1 N v2 W! m* K
8 z! Z1 t4 A, k/ K% \/ U0 Ttc filter add dev imq1 parent 1:0 protocol ip handle 99 fw flowid 1:993 \8 q# v5 U/ v1 V( V9 P; J$ h7 l1 Q
8 Z% G1 I8 O- B: z% Riptables -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 106 M: Y9 N% D" P; @1 J! J
$ j! N# s% h: W& y5 r
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 11 @+ d0 C$ H. o' v, r9 @( S
3 y$ k( }- ~" d5 j/ `iptables -t mangle -A PREROUTING -s 192.168.1.4 -j MARK --set-mark 12
9 ~. Y( d+ t: ?2 D! A y# K' [+ t: {" T, x" Y
iptables -t mangle -A PREROUTING -s 192.168.1.5 -j MARK --set-mark 13
( R8 c$ E" z" Z, @复制代码把脚本放在防火墙脚本里面,重起路由就OK。* Y+ V6 _$ t; O
效果:单机疯狂下载,但是打开网页还是很流畅。玩网络游戏也不卡了。 |