On Sun, 11 Nov 2012 22:07:30 +0800, Dan Kenigsberg danken@redhat.com wrote:
Hi,
Nowadays, when vdsm receives the setupNetowrk verb, it mangles /etc/sysconfig/network-scripts/ifcfg-* files and restarts the network service, so they are read by the responsible SysV service.
This is very much Fedora-oriented, and not up with the new themes in Linux network configuration. Since we want oVirt and Vdsm to be distribution agnostic, and support new features, we have to change.
setupNetwork is responsible for two different things: (1) configure the host networking interfaces, and (2) create virtual networks for guests and connect the to the world over (1).
Functionality (2) is provided by building Linux software bridges, and vlan devices. I'd like to explore moving it to Open vSwitch, which would enable a host of functionalities that we currently lack (e.g. tunneling). One thing that worries me is the need to reimplement our config snapshot/recovery on ovs's database.
I have tried replacing Linux bridge with ovs in ovirt-node, using a earlier version(like 1.3 or so) with brigde-compatible support. Then I had nothing extra to do other than loading ovs's brcompat module instead of linux bridge module. And newer version's ovs also has network-scripts support for rhel-based distros. So the problem is more about the tool and the way we achieve the configuring work.
As far as I know, ovs is unable to maintain host level parameters of interfaces (e.g. eth0's IPv4 address), so we need another tool for functionality (1): either speak to NetworkManager directly, or to use NetCF, via its libvirt virInterface* wrapper.
I have minor worries about NetCF's breadth of testing and usage; I know it is intended to be cross-platform, but unlike ovs, I am not aware of a wide Debian usage thereof. On the other hand, its API is ready for vdsm's usage for quite a while.
NetworkManager has become ubiquitous, and we'd better integrate with it better than our current setting of NM_CONTROLLED=no. But as DPB tells us, https://lists.fedorahosted.org/pipermail/vdsm-devel/2012-November/001677.htm... we'd better offload integration with NM to libvirt.
We would like to take Network configuration in VDSM to the next level and make it distribution agnostic in addition for setting the infrastructure for more advanced features to be used going forward. The path we think of taking is to integrate with OVS and for feature completeness use NetCF, via its libvirt virInterface* wrapper. Any comments or feedback on this proposal is welcomed.
If we use NetCF, are we limited to use only NM or only ovs? If not, as long as virInterface driver can provide a set of consistent and workable APIs, vdsm shouldn't care much about how functionality (1) and (2) are actually achieved. For different purpose, it is nice to maintain the variety to achieve the functionalities, maybe with plugins for those several tools and ways.