[Firehol-support] FireQOS Handling link speeds

Julian Tyler lovely at crm114.net
Thu Aug 27 01:17:42 CEST 2015


Hello all,

I've been using fireqos on a DSL link for a few years and recently i've added a cable modem as that the way my country/area is going.
However after playing around with fireqos on this new connection. I've discovered something that I don't how to fix.

From my server outwards there is a 1000BaseT ethernet connection to Netgear CG3100D-2BPAUS. Which then connects via a docis coax connection with 115/2.5 (DWN/UP) megabit bandwidth. 

See end of message for extra info and my current fireqos config for that link. 

When the ethernet port between the cable modem and server is configured at 1000BaseT.  I see while watching this link with fireqos status, a limit between 34mbs and 48 mbs, with backlog packets (yellow numbers), the speed slows and picks up again cyclically. 

However when the ethernet port is configure as 100BaseT. The link sits happily around 90 (+/- 5) mbs. Both test were to the same server (rsync/ssh), in a 10 minutes window.

I believe this is due to the cable modem providing bursty traffic, which i guess fq_codel sees as overloading the link and starts backlogging/dropping to slow things down (overly aggressively)
What is best way apart from running the ethernet link at 100BaseT to fix this?

Extra Info:
Using FireQOS 2.0.0

eth2 Byte Queue Limit: 3000 (same oddness at max BQL)
eth2 offloads disabled.

fireqos.hfc.conf below:

DEVICE=eth2
SYNC_DWN=114000
SYNC_UP=2500

INPUT_SPEED="$(($SYNC_DWN * 95 / 100))kbit"
OUTPUT_SPEED="$(($SYNC_UP  * 95 / 100))kbit"

LINKTYPE="ethernet"

server_rtp_ports="udp/10000:10100"
server_lol_ports="udp/5000:5500 tcp/8393:8400,2099,5223,5222,8088"
server_openvpn_ports="any/1195:1198"
server_mytorrent_ports="any/49710"

# ------------- INTERFACES -------------
interface $DEVICE hfc bidirectional $LINKTYPE input rate $INPUT_SPEED output rate $OUTPUT_SPEED 
	class voip commit 100kbit pfifo
		server sip
		client sip
		server rtp
		client stun
	
	class interactive input commit 5% output commit 10%
		server icmp
		server dns
		client dns
		server ssh
		client ssh
		client teamviewer
		client lol
	
	class chat input commit 1000kbit output commit 100kbit
		client facetime
		server hangouts
		client hangouts
		client gtalk
		client jabber
	
	class vpns input commit 5% output commit 10%
		server pptp
		server GRE
		server openvpn
	
	class servers
		server http
	
	class surfing prio keep commit 10%
		client surfing
		client rsync

	class ftp prio keep commit 10%
		client ftp

	class synacks output commit 1000kbit
		match tcp syn
		match tcp ack
		
	class default fq_codel options "noecn"
	
	class torrents fq_codel options "noecn"
		client torrents
		server mytorrent prio 1
		match sports 16384:65535 dports 16384:65535
		match mark 1024
		match ip X.X.X.X prio 1

--------
Below is the output: tc qdisc show dev eth2 and  tc qdisc show dev eth2-ifb

qdisc htb 1: root refcnt 2 r2q 1 default 5000 direct_packets_stat 527 direct_qlen 1000
qdisc pfifo 11: parent 1:11 limit 1000p
qdisc fq_codel 12: parent 1:12 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 13: parent 1:13 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 14: parent 1:14 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 15: parent 1:15 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 16: parent 1:16 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 17: parent 1:17 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 18: parent 1:18 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 19: parent 1:5000 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms 
qdisc fq_codel 20: parent 1:20 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms 
qdisc ingress ffff: parent ffff:fff1 ---------------- 

qdisc htb 1: root refcnt 2 r2q 79 default 5000 direct_packets_stat 1353 direct_qlen 32
qdisc pfifo 11: parent 1:11 limit 32p
qdisc fq_codel 12: parent 1:12 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 13: parent 1:13 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 14: parent 1:14 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 15: parent 1:15 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 16: parent 1:16 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 17: parent 1:17 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 18: parent 1:18 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn 
qdisc fq_codel 19: parent 1:5000 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms 
qdisc fq_codel 20: parent 1:20 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms




More information about the Firehol-support mailing list