Discussion:
pf altq and cbq borrowing
Matt Hamilton
2006-12-12 13:10:05 UTC
Permalink
Hi All,
Something I just noticed on 3.9 with our firewall that I'm hoping
someone can explain, as it looks like a bug to me. Our simplified
config for queueing is:

altq on $ext_if cbq bandwidth 8Mb queue { colo, bmex, deflt }

queue bmex bandwidth 4Mb cbq { A, B, C, D }
queue A bandwidth 1Mb cbq(borrow)
queue B bandwidth 1Mb cbq(borrow)
queue C bandwidth 1Mb cbq(borrow)
queue D bandwidth 1Mb cbq(borrow)

queue colo bandwidth 4Mb cbq(borrow) { E, F, G, H }
queue E bandwidth 1Mb cbq(borrow)
queue F bandwidth 1Mb cbq(borrow)
queue G bandwidth 1Mb cbq(borrow)
queue H bandwidth 1Mb cbq(borrow)


As you can see, although queues A-D have borrow, their parent, bmex,
does not have borrow. This seems that no-one on A-D can get above
1Mb. If I add borrow to the parent, bmex, then it works.

Is this right? Surely a child should be able to borrow from its
parent regardless of if its parent can borrow from root? Is this a
bug, or am I not understanding something? Is this something that
hfsc might address?

-Matt
--
Matt Hamilton ***@netsight.co.uk
Netsight Internet Solutions, Ltd. Business Vision on the Internet
http://www.netsight.co.uk +44 (0)117 9090901
Web Design | Zope/Plone Development & Consulting | Co-location | Hosting
Lawrence Horvath
2006-12-12 13:38:12 UTC
Permalink
Post by Matt Hamilton
Hi All,
Something I just noticed on 3.9 with our firewall that I'm hoping
someone can explain, as it looks like a bug to me. Our simplified
altq on $ext_if cbq bandwidth 8Mb queue { colo, bmex, deflt }
queue bmex bandwidth 4Mb cbq { A, B, C, D }
queue A bandwidth 1Mb cbq(borrow)
queue B bandwidth 1Mb cbq(borrow)
queue C bandwidth 1Mb cbq(borrow)
queue D bandwidth 1Mb cbq(borrow)
queue colo bandwidth 4Mb cbq(borrow) { E, F, G, H }
queue E bandwidth 1Mb cbq(borrow)
queue F bandwidth 1Mb cbq(borrow)
queue G bandwidth 1Mb cbq(borrow)
queue H bandwidth 1Mb cbq(borrow)
As you can see, although queues A-D have borrow, their parent, bmex,
does not have borrow. This seems that no-one on A-D can get above
1Mb. If I add borrow to the parent, bmex, then it works.
Is this right? Surely a child should be able to borrow from its
parent regardless of if its parent can borrow from root? Is this a
bug, or am I not understanding something? Is this something that
hfsc might address?
-Matt
--
Netsight Internet Solutions, Ltd. Business Vision on the Internet
http://www.netsight.co.uk +44 (0)117 9090901
Web Design | Zope/Plone Development & Consulting | Co-location | Hosting
afaik and speaking from my personal cbq set up, you should not have to
have (borrow) on the bmex, i have the following cbq and it works
properly, for outgoing queues at least, i can get a full 2000Kb out of
any of the child queues


##BEGIN_QUEUES##
altq on tl0 cbq bandwidth 2000Kb qlimit 200 queue { \
ssh_out, http_out, ftp_control_out, ftp_data_out, other_out \
ssh_in, http_in, ftp_control_in, ftp_data_in, other_in }

queue other_out bandwidth 100Kb qlimit 200 cbq (
default, borrow )
queue ssh_out bandwidth 100Kb qlimit 200 cbq ( borrow )
queue http_out bandwidth 100Kb qlimit 200 cbq ( borrow )
queue ftp_control_out bandwidth 100Kb qlimit 200 cbq ( borrow )
queue ftp_data_out bandwidth 100Kb qlimit 200 cbq ( borrow )

queue other_in bandwidth 100Kb qlimit 200 cbq ( borrow )
queue ssh_in bandwidth 100Kb qlimit 200 cbq ( borrow )
queue http_in bandwidth 100Kb qlimit 200 cbq ( borrow )
queue ftp_control_in bandwidth 100Kb qlimit 200 cbq ( borrow )
queue ftp_data_in bandwidth 100Kb qlimit 200 cbq ( borrow )
##END_QUEUES##
--
-Lawrence
-Student ID 1028219
Loading...