Right. So I was speaking to Ben Pfaff about OVS deployment and the
recommendation he gave me was to use the linux kernel module over the
in-tree module in OVS. This is the approach that I took in packaging OVS
for docker.
https://github.com/dave-tucker/docker-ovs (i.e userspace only, kmod
provided by host).
I think I'd need to get some more info on how kernel upgrades affect
other parts of docker before I get concerned about usage of internal
ports.
E.g if the expectation is that all containers are ejected from a host
pre-upgrade this may be a non-issue
That said, we can easily support both. We should look at the existing
veth strategy in libcontainer and see if this can be re-used, or whether
we need to add an "ovs-veth" strategy.
>>
>>
>> We should have enough of OVSDB implemented to handle the heavy
>> lifting in
>> libcontainer soon.
> Have you thought about the strategy on how to manage a changed schema
> that the Open vSwitch database managed by ovsdb-server is using?
> Different OVS versions would have different schemas which could result
> in particular versions of libcontainer not working with particular
> versions of Open vSwitch, isn't it?. Using ovs-vsctl, if the use case
> is simple, solves these issues. It also reduces the amount of code to
> be maintained in libcontainer.
Yes. My team and I wrote a schema-independent OVSDB library for Java so
we're pretty comfortable with how to handle different versions of the
schema. Also I believe that the Open_vSwitch schema doesn't approve
backwards-incompatible changes. The only things we need to touch here
are the Bridge, Port and Interface tables and the necessary columns.
Not initially.
Firstly I haven't checked the code to make sure there is enough context
about the container available to the method that will write these values
in to OVSDB.
Secondly, I'm not sure what to do re: "vm-id".
Yes we can re-use this for containers... but what about an environment
that has docker running on VMs instead of bare-metal, or a a mix of
docker and kvm or xen server?
Do we want to keep "vm-id" for VMs and "container-id" for containers to
make it easy to differntiate at the interface level?
If both "vm-id" and "container-id" are specified can we assume "vm-id"
is a reference to the parent-vm?
Should we just use "vm-id" and call it quits?