Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
logical-fields: Fix ip6.dst matches caused by multicast flows.
ND NS and MLD flows are added to pipelines unconditionally in order to avoid sending such traffic through conntrack or implement ND responder flows. The problem is that these matches turn into matches on ip6.dst that end up as exact matches in datapath flows in the kernel. This means a separate datapath flow per destination IP address. This may cause significant performance issues in setups where traffic for many different IP addresses is passing through. Since network protocol is stored further in the packet, it is evaluated after checking the IP addresses, and so having a match on ip.proto doesn't save us in this scenario. ND NS and MLD packets are all supposed to be multicast packets and so they all should have multicast destination ethernet addresses. Add the missing eth.mcast6 match to all such packets. This ensures that all the non-multicast traffic will quickly fail the OpenFlow lookup on such rules and the bits from higher layers will not be added to the match criteria in datapath flows. IGMP did not check for IP address being multicast for some reason, so it didn't cause issues for IPv4 traffic. But let's fix it as well. ARP is not an IP protocol, so there is no need to fix ARP responders. Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
- Loading branch information