Discussion:
doubt about esfq
Salatiel Filho
2007-12-17 13:02:07 UTC
Permalink
In esfq README i have:

Depth sets the number of slots. If the number of active flows is greater
than the number of slots, flows will end up sharing slots and ESFQ will no
longer be fair. If you anticipate more than 128 concurrently active flows,
you should use a larger depth and probably a larger divisor (see below).

If you expect there to be far fewer than 128 concurrent flows, you may
want to use a lower depth in order to benefit from slightly better latency
(because limit can then be lower as well).



I am just curious, 128 active flows would mean [in ESFQ] 128 different
IPs if i hash for ip dst ? or would it be 128 connections.
For example let`s say i download from my machine using some download
accelerator and put 128 parallel connections[ theorically of course :)
] , so would i be using all slots or just one ?
--
[]'s
Salatiel

"O maior prazer do inteligente é bancar o idiota
diante de um idiota que banca o inteligente".
Corey Hickey
2007-12-18 20:17:54 UTC
Permalink
Post by Salatiel Filho
Depth sets the number of slots. If the number of active flows is greater
than the number of slots, flows will end up sharing slots and ESFQ will no
longer be fair. If you anticipate more than 128 concurrently active flows,
you should use a larger depth and probably a larger divisor (see below).
If you expect there to be far fewer than 128 concurrent flows, you may
want to use a lower depth in order to benefit from slightly better latency
(because limit can then be lower as well).
I am just curious, 128 active flows would mean [in ESFQ] 128 different
IPs if i hash for ip dst ? or would it be 128 connections.
For example let`s say i download from my machine using some download
accelerator and put 128 parallel connections[ theorically of course :)
] , so would i be using all slots or just one ?
Maybe. I had to re-read your message a couple times, and I'm not sure I
completely understand your question. In any case, you didn't specify
whether you are using ESFQ on the LAN interface or the WAN interface of
your router.

Scenario 1: downloading from 128 different IPs
hash dst on LAN interface:
puts all packets in a single slot--after all, the destination IP is
that of your workstation. This approach would only be useful if
other workstations on your LAN were downloading as well, since their
packets would go in other slots.
hash dst on WAN interface:
divides packets into 128 different slots[1], since the destination
IPs are those of the servers from which you are downloading. Note,
however, that if you're only downloading, these packets would be
"empty ACKs", which are quite small. Unless your upstream bandwidth
is severely limited (or in heavy use for other reasons), the ACK
packets would not need any special consideration. This approach is
more useful for if you are actually uploading data and you want the
outbound traffic to be allocated fairly among the remote hosts.

Scenario 2: downloading from one IP, with 128 connections
hash dst on LAN interface:
puts all packets on a single slot (same as in scenario 1).
hash dst on WAN interface:
puts all packets in a single slot, since there is only one remote
host to which the packets are going.
Post by Salatiel Filho
From what I've written, you may gather that using "hash dst" is not of
much use for distributing inbound traffic to a single workstation. If
that is really what you need to do, then you can look into "hash src".


[1] This is subject to the limitations of the hash function, and there
may be collisions that result in slots being shared. See the "divisor"
and "perturb" parameters.

-Corey

Loading...