feature suggestion: in-host network with no external nics

Simon Grinberg simon at redhat.com
Mon Jan 7 17:07:15 UTC 2013



----- Original Message -----
> From: "Dan Kenigsberg" <danken at redhat.com>
> To: "arch" <arch at ovirt.org>
> Cc: "Livnat Peer" <lpeer at redhat.com>, "Moti Asayag" <masayag at redhat.com>, "Michael Pasternak" <mpastern at redhat.com>
> Sent: Thursday, January 3, 2013 12:07:22 PM
> Subject: feature suggestion: in-host network with no external nics
> 
> Description
> ===========
> In oVirt, after a VM network is defined in the Data Center level and
> added to a cluster, it needs to be implemented on each host. All VM
> networks are (currently) based on a Linux software bridge. The
> specific
> implementation controls how traffic from that bridge reaches the
> outer
> world. For example, the bridge may be connected externally via eth3,
> or
> bond3 over eth2 and p1p2. This feature is about implementing a
> network
> with no network interfaces (NICs) at all.
> 
> Having a disconnected network may first seem to add complexity to VM
> placement. Until now, we assumed that if a network (say, blue) is
> defined on two hosts, the two hosts lie in the same broadcast domain.
> If
> a couple of VMs are connected to "blue" it does not matter where they
> run - they would always hear each other. This is of course no longer
> true if one of the hosts implements "blue" as nicless.
> However, this is nothing new. oVirt never validates the single
> broadcast
> domain assumption, which can be easily broken by an admin: on one
> host,
> an admin can implement blue using a nic that has completely unrelated
> physical connectivity.
> 
> Benefits
> ========
> * All-in-One http://www.ovirt.org/Feature/AllInOne use case: we'd
> like
>   to have a complete oVirt deployment that does not rely on external
>   resources, such as layer-2 connectivity or DNS.
> * Collaborative computing: an oVirt user may wish to have a group
>   of VMs with heavy in-group secret communication, where only one of
>   the
>   VMs exposes an external web service. The in-group secret
>   communication
>   could be limited to a nic-less network, no need to let it spill
>   outside.
> * [SciFi] NIC-less networks can be tunneled to remove network
> segments
>   over IP, a layer 2 NIC may not be part of its definition.
> 
> Vdsm
> ====
> Vdsm already supports defining a network with no nics attached.
> 
> Engine
> ======
> I am told that implementing this in Engine is quite a pain, as
> network
> is not a first-class citizen in the DB; it is more of an attribute of
> its primary external interface.

There is more then that. 
You may take the approach of: 
1. Configure this network statically on a host 
2. Pin the VMs to host since otherwise what use there is to define such a network on VMs if the scheduler is free to schedule the VMs on different hosts?

Or, 
1. Create this network ad-hoc according to the first VM that needs it 
2. Use the VM affinity feature to state that these VMs must run together on the same host
3. Assigning a network to these VMs automatically configures the affinity.

The first is simplistic, and requires minimal changes to the engine (you do need to allow LN as device-less entity*) , the second approach is more robust and user friendly but require more work in the engine. 

On top of the above you may like to:
1. Allow this network to be NATed - libvirt already supports that - should be simple.
2. Combine this with the upcoming IP setting for the guests - A bit more complex 
3. May want to easily define it as a Inter-VM-group-channel property same as affinity-group instead of explicit define such a network. Meaning define group of VMs. Define affinity, define Inter-VM-group-channel, define group's SLA etc - Let's admit that VMs that require this type of internal networking are part of VM group that together compose a workload/application. 

*A relativity easy change under current modelling (a model that I don't like in the first place), is to define another 'NIC' of type bridge (same as you have VLAN nic, bond nic, and NIC nic) so a 'floating bridge' is a LN on the Bridge NIC. Ugly but this is the current modelling.  

> 
> This message is an html-to-text rendering of
> http://www.ovirt.org/Features/Nicless_Network
> (I like the name, it sounds like a jewelery)

The name commonly used for this is 'Host only network' 
Though we really into inventing new terminologies to things, in this case I would rather not since it's used in similar solutions, (VMWare, Parallels, Virtual-Box, etc) hence it's not vendor specific. 

In any case Nicless is bad since external interface may also be a Bond. 


> and I am sure it is missing a lot (Pasternak is intentionally CCed).
> Comments are most welcome.
> 
> Dan.
> 



More information about the Arch mailing list