Darren Reed writes:
 > Andrew Gallatin wrote:
 > > Darren Reed writes:
 > >  > Can any of the existing NICs receive a packet into more
 > >  > than one buffer simultaneously?
 > >
 > > Myri10GE uses firmware on the NIC, so it can do nearly anything in
 > > theory.
 > >
 > >  > To explain this, if I have a NIC with rx rings A and B,
 > >  > what I'd like it to do is deliver every packet into both
 > >  > rx rings.  Is that possible?
 > >
 > > Yes, with firmware modifications, Myri10GE could do this.  However, by
 > > DMA'ing things twice, you'd double PCIe bus utilization and increase
 > > the work done by the firmware, limiting performance.
 > 
 > Hmmm.
 > Is it possible to have two descriptors point to the
 > same buffer?  Or rather to receive one packet, put
 > it in a single buffer but have two (or more descriptor
 > rings) have a reference to it?
 > 
 > And flag the packet as "I am only receiving this because
 > of promiscuous mode"?
 > 
 > Besides this being useful for packet capture (where as Seb
 > guessed right, the benefit is to better isolate the workload
 > from the packets being captured), this can also be useful
 > for exclusive stack instances where there are multiple vnics
 > created atop a physical nic that has multiple descriptor
 > rings.  How does this latter point come into play?
 > 
 > If I have 3 vnics, each belonging to individual zones and
 > part of the same subnet, it stands to reason that each one
 > of them wants to receive the same broadcast packets and possibly
 > the same set of multicast packets.  Thus if the NIC can
 > receive one packet but put it on 3 descriptor rings, one for
 > each of 3 zones, there should be a small benefit here in
 > handling broadcast and multicast traffic for all concerned.

I don't know enough about vnics in Solaris to answer super
intelligently.  If I think about this in terms of our current GLDv3
driver, modified slightly to hash packets to different rings based on
destination MAC (rather than IP addrs/ports) like we do in other
virtualized OSes, then I could imagine a shared ring for broadcast /
multicast / promisc traffic.  However, it seems like the coordination
required between the different rings would be sufficently complicated
that something simpler (like copying at a higher level, or your
original proposal of multiple DMAs) would actually be better.

Drew
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to