Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Jan 2015 21:57:21 +0400
From:      Slawa Olhovchenkov <slw@zxy.spb.ru>
To:        Luigi Rizzo <rizzo@iet.unipi.it>
Cc:        freebsd-net@freebsd.org
Subject:   Re: netmap pipes
Message-ID:  <20150103175721.GE49169@zxy.spb.ru>
In-Reply-To: <20150103174207.GC95134@onelab2.iet.unipi.it>
References:  <20150103164035.GC49169@zxy.spb.ru> <20150103172139.GB95134@onelab2.iet.unipi.it> <20150103173255.GD49169@zxy.spb.ru> <20150103174207.GC95134@onelab2.iet.unipi.it>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jan 03, 2015 at 06:42:07PM +0100, Luigi Rizzo wrote:

> On Sat, Jan 03, 2015 at 09:32:55PM +0400, Slawa Olhovchenkov wrote:
> > On Sat, Jan 03, 2015 at 06:21:39PM +0100, Luigi Rizzo wrote:
> > 
> > > On Sat, Jan 03, 2015 at 08:40:35PM +0400, Slawa Olhovchenkov wrote:
> > > > Can anybody explain netmap pipes (more then netmap(4))?
> > > > How use it?
> > > > How it works?
> > > > pipes works over existing network adapter in netmap mode?
> > > > Or indepened (can I create netmap pipe named 'some_strange_name')?
> > > > What purpose of master and slave?
> > > 
> > > think of pipes as regular netmap ports connected back to back,
> > > (or as two ports on a VALE switch, if you like).
> > > They are unrelated to network devices (though the name indicates
> > > how they share memory, but forget that for the time being);
> > > are created using the "strange names" like valeX:Y{0 and valeX:Y}0
> > > (which I realize are not yet in the manpage, sorry);
> > 
> > can I use names other then valeX:Y? for example 'inside0'?
> 
> no, the basename has to be netmap:fooX (where foo is some existing
> ethernet device) or valeX:Y

Can I transfer through netmap pipes packet with non-ethernet structure?

> > > and you have master and slave because need to name both endpoints.
> > 
> > I create pipe with many slaves (NIOCREGIF with nr_arg1=16, for
> > example), how I can use this? Writing to master replicated to all
> > slaves? Writing to any slaves reading from master? Or unidirected?
> 
> a pipe has only two endpoints.

What differens between master and slave?
Can I write to slave and read from master?
Can I first create slave second master?

> If you want a full n-port switch use a VALE switch.

Hmm.
     NIOCREGIF
           binds the port named in nr_name to the file descriptor. For a phys-
           ical device this also switches it into netmap mode, disconnecting
           it from the host stack.  Multiple file descriptors can be bound to
           the same port, with proper synchronization left to the user.

           NIOCREGIF can also bind a file descriptor to one endpoint of a
           netmap pipe, consisting of two netmap ports with a crossover con-
           nection.  A netmap pipe share the same memory space of the parent
           port, and is meant to enable configuration where a master process
           acts as a dispatcher towards slave processes.

           To enable this function, the nr_arg1 field of the structure can be
           used as a hint to the kernel to indicate how many pipes we expect
           to use, and reserve extra space in the memory region.

What this talk about?
I can create multiple pipe pairs over existing netmap interface?
What right way to use this?
NIOCREGIF(ix0, NR_REG_ONE_NIC, nr_arg1=16, nr_ringid=0)
NIOCREGIF(ix0, NR_REG_PIPE_MASTER, nr_ringid=0..15)
NIOCREGIF(ix0, NR_REG_PIPE_SLAVE, nr_ringid=0..15)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150103175721.GE49169>