removing latency problems with queuing

Matt H. matt at popewax.com
Sat Aug 23 13:22:31 PDT 2003


Hi, this is my first time posting so I hope I don't make an idiot of myself
;)

I have a problem where whenever I saturate my upstream via bittorrent (or
even ftp), my latency to even local routers spikes like crazy.

su-2.05b# ping 12.244.69.73
PING 12.244.69.73 (12.244.69.73): 56 data bytes
64 bytes from 12.244.69.73: icmp_seq=0 ttl=253 time=27.544 ms
64 bytes from 12.244.69.73: icmp_seq=1 ttl=253 time=8.557 ms
64 bytes from 12.244.69.73: icmp_seq=2 ttl=253 time=122.327 ms
64 bytes from 12.244.69.73: icmp_seq=3 ttl=253 time=40.008 ms
64 bytes from 12.244.69.73: icmp_seq=4 ttl=253 time=16.521 ms
64 bytes from 12.244.69.73: icmp_seq=5 ttl=253 time=99.050 ms

I'm on 1.8Mbit/256Kbit cable, so I read some manpages developed this queue
system for ipfw:

 ipfw pipe 1 config bw 250Kbit/s
 ipfw pipe 2 config bw 1800Kbit/s
 ipfw queue 1 config weight 1 pipe 1
 ipfw queue 2 config weight 99 pipe 1
 ipfw queue 3 config weight 1 pipe 2
 ipfw queue 4 config weight 99 pipe 2
 ipfw add 600 queue 1 ip from any 6881-6889 to any out xmit rl0
 ipfw add 610 queue 2 ip from any to any out
 ipfw add 620 queue 3 ip from any to any 6881-6889 in recv rl0
 ipfw add 640 queue 4 ip from any to any in recv rl0

note that bittorrent uses ports 6881-6889.
resulting in:

su-2.05b# ipfw list
00050 divert 8668 ip from any to any via rl0
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00310 allow ip from 192.168.0.0/24 to me dst-port 22 via xl0
00320 allow ip from me to 192.168.0.0/24 via xl0
00600 queue 1 ip from any 6881-6889 to any out xmit rl0
00610 queue 2 ip from any to any out
00620 queue 3 ip from any to any dst-port 6881-6889 in recv rl0
00640 queue 4 ip from any to any in recv rl0
65000 allow ip from any to any
65535 deny ip from any to any

Yet it still spikes? Am I doing something wrong here?

rl0 is my WAN interface and xl0 is my LAN interface. 192.168.0.0/24 is my
LAN.

net.inet.ip.fw.one_pass is also 1 to prevent stuff from jumping through
twice.

Thanks for the help.




More information about the freebsd-ipfw mailing list