netdev
[Top] [All Lists]

Re: netlink drops messages.

To: Gleb Natapov <gleb@xxxxxxxxxxx>
Subject: Re: netlink drops messages.
From: Andi Kleen <ak@xxxxxx>
Date: Wed, 17 Jan 2001 18:50:57 +0100
Cc: Andi Kleen <ak@xxxxxx>, kuznet@xxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20010117191811.E16180@nbase.co.il>; from gleb@nbase.co.il on Wed, Jan 17, 2001 at 06:22:41PM +0100
References: <20010116200600.C5122@nbase.co.il> <200101161828.VAA31502@ms2.inr.ac.ru> <20010117101720.F5122@nbase.co.il> <20010117120652.A1830@fred.local> <20010117133932.B16180@nbase.co.il> <20010117141900.A3308@fred.local> <20010117155035.C16180@nbase.co.il> <20010117171438.B5589@fred.local> <20010117191811.E16180@nbase.co.il>
Sender: owner-netdev@xxxxxxxxxxx
On Wed, Jan 17, 2001 at 06:22:41PM +0100, Gleb Natapov wrote:
> On Wed, Jan 17, 2001 at 05:14:38PM +0100, Andi Kleen wrote:
> > On Wed, Jan 17, 2001 at 02:51:48PM +0100, Gleb Natapov wrote:
> > > 
> > > You are trying to say that if I'll connect to my router via 9600 serial 
> > > line and run 'ip monitor'
> > > there the routing daemon will not be able to feed routes to the kernel 
> > > quicker than ip monitor will
> > > be able to read them and send output via slow serial line?! Somehow 9600 
> > > serial line become a
> > > bottleneck! Are you sure about that, or I misunderstood you?
> > 
> > You misunderstood me. The kernel side doesn't do any flow control, it just 
> > drops messages when the 
> > buffers fill up. The user side does flow control by blocking or EAGAIN, 
> > e.g. you submitting new
> > routes.
> >
> What user side? There are to sides: W - feeds routes to the kernel, R - read 
> netlink updates from the kernel.


(W) is flow controlled. 

(R) is in a sense flow controlled too because it can only get information
the kernel queues, but the kernel cheats a bit by dropping stuff when the
buffer fills. 


> 
> Who does flow control and how? 
> 
> W knows nothing about R it simple adds routes to the kernel with the speed 
> kernel can process them.

Which is the flow control -- it gets blocked when the kernel cannot keep up.



-Andi

<Prev in Thread] Current Thread [Next in Thread>