openvswitch is used by cloud infrastructure (e.g. OpenStack) and software defined networking stacks, often in conjunction with KVM and Xen compute resources. When creating workloads on KVM compute resources, orchestration services can specify the openvswitch interfaceid and port-profile of the workload's virtual interface(s). E.g. orchestration can create workload configuration containing
<interface type='bridge'> <source bridge='ovsbr'/> <virtualport type='openvswitch'> <parameters profileid='menial' interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/> </virtualport> </interface>
libvirt will connect this virtual interface to an openvswitch bridge named 'ovsbr', which is uniquely identified with openvswitch via interfaceid. Additionally, the 'menial' port profile will be sent to openvswitch as the interface's "port-profile".
Xen, libvirt, and openvswitch do not enjoy the same level of integration. This project aims to improve the integration, allowing orchestration services to use Xen compute resources similar to KVM.
Looking for hackers with the skills:
This project is part of:
Hack Week 14
Activity
Comments
-
about 9 years ago by jfehlig | Reply
My hackweek had several interruptions, including and L3 bug, SLE12 SP2 beta4 preparations, and a bad crash on my bike! But nonetheless, I was able to get libvirt+Xen+openvswitch working well together, including support for VLAN tags and trunking. An example of a trunking interface could be
-
about 9 years ago by jfehlig | Reply
To expand a bit more on the above, starting a VM with such config will add the vif to an openvswitch port and configure the port with ovs-vsctl. E.g. after starting the VM
ovs-vsctl show
406871f3-2fb6-45a7-8fcd-30f1f714ffe1
Bridge "ovsbr0"
Port "eth1"
Interface "eth1"
Port "vif6.0"
trunks: [42, 43]
Interface "vif6.0"
Port "ovsbr0"
Interface "ovsbr0"
type: internal
ovs_version: "2.5.0"
Similar Projects
pudc - A PID 1 process that barks to the internet by mssola
Description
As a fun exercise in order to dig deeper into the Linux kernel, its interfaces, the RISC-V architecture, and all the dragons in between; I'm building a blog site cooked like this:
- The backend is written in a mixture of C and RISC-V assembly.
- The backend is actually PID1 (for real, not within a container).
- We poll and parse incoming HTTP requests ourselves.
- The frontend is a mere HTML page with htmx.
The project is meant to be Linux-specific, so I'm going to use io_uring, namespaces, and Linux-specific features in order to drive all of this.
I'm open for suggestions and so on, but this is meant to be a solo project, as this is more of a learning exercise for me than anything else.
Goals
- Have a better understanding of different Linux features from user space down to the kernel internals.
- Most importantly: have fun.
Resources
- https://github.com/mssola/pudc: private for now, but I will release it under GPL v3.0+ whenever I'm done.