DragonFly kernel List (threaded) for 2008-04
Network transition complete + PF question
The network move is complete.
I have a question for the PF/ALTQ masters out there. I am trying to
configure PF in a manner similar to what Cisco's fair-queue algorithm
does. Cisco's algorithm basically hashes TCP and UDP traffic based
on the port/IP pairs, creating a bunch of lists of backlogged packets
and then schedules the packets at the head of each list.
I am trying to find something equivalent with PF and not having much
luck. Neither CBQ nor HFSC seem to work well. I can separate certain
types of traffic but the real problem is when there are multiple
TCP connections that are essentially classified the same, and one is
hogging the outgoing bandwidth.
So the question is, is there a PF solution for that or do I need to
write a new ALTQ mechanic to implement fair queueing ?
If there is no current solution I have a pretty good idea how to
implement it. I can use PF's 'keep state' mechanism and then hash
the state structure pointer and store it in the packet header, then
implement a new ALTQ that takes that hash code and throws it into an
array of queues from which it fair-dequeues packets for output.