Hi everyone,

In today's IRC meeting I brought up the fact I was enhancing multicast support in OVN, and I was asked to expand on this a bit. So here are details about what all I am working on.

Right now, OVN logical switches treat all multicast destinations as if they were broadcast. That is, the packet gets sent to all ports on the switch. OVN logical routers block all traffic destined to a multicast address.

My goal is for there to be more intelligence. IP traffic sent to multicast addresses should be sent to members of that multicast group when possible.

My work consists of the following phases:

Phase 1: Northbound changes; multicast on a single logical switch port.

For this part, we create a new northbound table called Multicast_Group. It consists of:
* A name
* A multicast IP address
* A list of logical switch ports
The general idea is that traffic sent to the IP address should reach all logical switch ports listed.

In practice, each northbound multicast group will result in southbound multicast groups being added to the datapaths that the logical switch ports reside on. Logical flows are introduced on the logical switch ingress pipelines to output packets that are destined for the multicast IP address and the corresponding derived multicast ethernet address [1] to the constituent ports.

In practice, this set of changes only works if all ports in the multicast group are on the same logical switch.

I already have this implemented and have a test written for the testsuite that passes. You can see what I have at https://github.com/putnopvut/ovs/tree/multicast-improvements

Phase 2: Add multicast routing support

This expands on the work in phase 1 by creating southbound multicast groups on logical router datapaths for router ports connected to logical switches with multicast groups on them. This way, a multicast group distributed across multiple logical switches can have the traffic routed as desired.

This also requires adding new logical flows for the router pipeline to ensure that traffic bound to known multicast IPs is sent where we expect.

I'm currently working on this phase. I have a test written and it is not passing.

Phase 3: Expand to IPv6 support.

The previous phases are very IPv4-centric. This phase expands on what we have already by making it work with IPv6 as well. Mostly, this means removing IPv4-centric idioms and installing IPv6 flows in parallel with the IPv4 flows.


With those three phases complete, I think I'll have a decent patchset to submit for approval. There are other enhancements that can be implemented as well later on:

* IGMP/MLD snooping in ovn-controller.
* Installation of rules for well-known multicast addresses with semantic significance.

That's all for that. If you have questions/concerns, please let me know.

Mark!

[1] I initially had wanted to only use the multicast ethernet address for determining where to send the packets. However, the way that multicast IP translates into multicast ethernet addresses, there can be ambiguity. Therefore the logical switch needs to also examine the multicast IP address.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to