[ovs-discuss] MAC-learning action
Ben Pfaff
blp at ovn.org
Wed Aug 17 20:55:29 UTC 2016
On Wed, Aug 17, 2016 at 10:31:34PM +0200, Bolesław Tokarski wrote:
> Hello,
>
> I have a couple of physical machines on the Internet, connected together
> with IPsec-GRE tunnels. The tunnels are executed from my OpenVSwitch bridge
> 'tunnels', on which I have a dedicated port '1' that connects local
> machines (VMs sitting on another ovs bridge actually, but it's out of scope
> of the problem).
>
> The bridge configuration looks like this:
> Bridge tunnels
> Port "patch0"
> Interface "patch0"
> type: patch
> options: {peer="patch1"}
> Port "gre6"
> Interface "gre6"
> type: ipsec_gre
> options: {psk="secret", remote_ip="1.1.1.1"}
> Port "gre4"
> Interface "gre4"
> type: ipsec_gre
> options: {psk="secret", remote_ip="2.2.2.2"}
> Port tunnels
> Interface tunnels
> type: internal
>
> As each of the tunnels link to the other physical machine "directly"
> through the Internet, forming a full-mesh logical topology, I have no use
> of Spanning-Tree - this would make all traffic pass through a single
> physical machine elected as the root bridge. So, what I did was:
>
> ovs-ofctl del-flows tunnels
> ovs-ofctl add-flow tunnels "in_port=1 actions=normal"
> ovs-ofctl add-flow tunnels "actions=output:1"
>
> In my view this was supposed to handle my specific use case - when traffic
> comes from my local network, it is passed along normal MAC-learning port,
> so flooding the tunnels with ARP request, response would get through one of
> the tunnel-ports, and would be directed to the local network (port 1).
> Traffic following it would be directed to the appropriate port, since the
> bridge would learn on which port the MAC address sits.
>
> However, it seems that when actions=output:1 is specified, the bridge does
> not learn the MAC address of the incoming frame, and all the traffic from
> port 1 is always flooding all the tunnels.
>
> I found the very good set of examples in the provided "Tutorial.md" file,
> which seems to cover this case, but it seems to require very complex rule
> definition for something that seems pretty easy - just tell the switch to
> learn the MAC before putting it through.
>
> Is it possible to make NORMAL action learn source MAC addresses and tell it
> which port to direct the traffic at the same time? Something like:
>
> ovs-ofctl add-flow tunnels "actions=learn(src_mac),1"
>
> If this setup does require re-writing the NORMAL action, is it possible to
> display the flow rules that govern the NORMAL action internally?
OVS doesn't have that kind of a feature yet. It's been suggested once
or twice but no one has come forward with an implementation.
More information about the discuss
mailing list