[long] Network stack -> NIC flow (was Re: MQ Patch.)
Andre Oppermann
andre at freebsd.org
Wed Oct 30 22:23:40 UTC 2013
On 30.10.2013 22:53, Adrian Chadd wrote:
> On 30 October 2013 14:30, Andre Oppermann <andre at freebsd.org> wrote:
>
>> As default setup and when running a server no QoS will be active
>> or inserted. No or only very small software queues exist to handle
>> concurrency (except for ieee80211 to do sophisticated frame management
>> inside *if_txframe). Whenever the DMA ring is full there is no point
>> in queuing up more packets. Instead the socket buffers act as buffers
>> and also ensure flow control and backpressure up to userspace to limit
>> kernel memory usage from double and triple buffering.
>
> .. and what about for LAN<->WAN traffic, where there's no socket buffers?
When the DMA ring is full (in case of a deep ring, or the software queue
for small DMA rings) additional packets get dropped as it is today. Instead
of tail dropping an active queue management algorithm like RED may be used.
The is no point in ultra deep buffering ending up in tens or hundreds of
milliseconds (see bufferbloat). If there is more egress traffic destined
for an interface than it can handle there is no way to avoid packet drops.
It's actually a good thing because for TCP packet drops are the primary
feedback for its sending behavior.
--
Andre
More information about the freebsd-net
mailing list