[LARTC] SFQ improvement ideas

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm glad to see this, since I was planning to make a similar proposal.

 > 1) Backlog depth limit
 > 
 > Currently total limit of SFQ is 128 packets. SFQ tries
 > to keep lengths of all flows to be roughly the same. It
 > means that there can be one flow with 128 packets backlog.
 > 
 > It would be nice to have control over maximal lenght of
 > backlog. To be able to control max delay introduced.

I have an alternative suggestion, which I think might profitably be
added to a number of qdiscs:
 a parameter for the maximum delay allowed for forwarded packets
When you dequeue a packet that is older than that (current time minus
arrival time stamp) you drop it.

This seems trivial to implement and accomplishes the goal much more 
accurately than limiting the size of a flow.  The time a packet spends
in the queue is determined by how many packets arrive for other flows
as well as the length of its own.  The worst case is that it's at the
end of a long flow, say 64 long, and 64 other flows are sending
packets just in time to be served.  So it has to wait for 64 other
packets for each packet ahead of it in its own flow.  And, of course,
to add to the delay, all of the packets involved could be long.

On the other hand a packet that's 128'th in its own queue might only
have to wait for 127 other packets to be sent, and if they're all
short this might not be a long time.

It seems more reasonable to just say don't bother to send any packets
over 5 sec old.

 > 2) Interactive traffic isolation
 > 
 > Cisco IOS implements WFQ which has one queue per flow and
 > common queue for interactive traffic. Packets are queued
 > into interactive queue for some time and after it is clear
 > that they constitute large flow they are assigned private
 > queue. Interactive queue has higher prio.
I was not aware of this distinction between interactive an other.
How do you recognize interactive other than by low rate?
Do you have a pointer to doc?  

 > Nice effect is that short conversations are handled faster
 > and long downloads are isolated with lower priority.
Isn't this just what you get from a queue for each flow?
I thought that's what WFQ did.

 > 3) Hash select
 > 
 > Default SFQ impl. uses src(ip+port)+dst(ip+port) to distinguish
 > connections. It might be useful to be able to set src(ip)+dst(ip)
 > for example (do disallow users to fool SFQ by creating more connections)
 > or src(ip)+dst(ip+port) to make it yet better. I'd suggest tc
 > parameters like "hash " followed by set of "dip,sip,sport,dport,proto"
 > arguments (e.g. ... sfq hash dip sip dport).

I agree (in fact was going to propose exactly this).
The real use I see is that people keep asking for what amounts to hash
only on one address (e.g., fair service to all internal machines).


[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux