[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Network questions

The until a few weeks ago, the unstable tree had a compile-time choice between 
"old" and "new" IO world.  Recently, the old IO world has been removed, so if 
you have pulled recently, the VIRQ_NET and the drivers in Xen, etc should 

The backend driver creates an virtual "ethernet interface" for each 
unprivileged domain whose frontend connects to it.  The kernel that is running 
the backend driver thinks that it's connected to all the other domains by 
ethernet interfaces as well as to the physical network by the physical 
ethernet hardware.

Getting packets between virtual interfaces of domains and the physical network 
is then just a task of bridging or routing, which is dealt with by the same 
code that would transfer packets between multiple ethernet interfaces in any 
Linux system.  Currently, we use bridging by default.  See the code in 
linux/net/bridge/ for more details about how the Linux bridging code works.

In your example, when the packet is received on the Vortex card, it eventually 
gets passed to the bridging code, which identifies that it should be passed 
out on one of the virtual interfaces connected to another domain.  It then 
passes the packet to the backend driver, which transfers it to the frontend 
driver of the destination domain and notifies that domain of the arrival.

Since this stuff happens in the bridging code, you wouldn't be able to find an 
obvious call path.

As for the control messages, you should remember that the control interface is 
only used for a domain to talk to xend.  The backend driver uses the message 
you described to tell Xend that it is UP and ready to accept connections from 
other domains.  When other domains want to connect their network interfaces, 
they use their control interface to tell Xend.  Xend co-ordinates the process 
of connecting, then once the connection is established, the two domains can 
talk directly using shared memory.  You can find relevant code in 
tools/python/xen/xend/server/netif.py (I think) but you'll need to read other 
bits of Xend to understand how this all fits together.

It would be nice to have some documentation for this stuff (and we probably 
need some diagrams) in the interface manual...



This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.