Hi,

Here is an attempt to simplify the problem description, so as to focus on the 
primary issue we are facing.

Assume the presence of two access ports, P1 and P2, both associated with VLAN 1 
on an OVS bridge. The MAC addresses of P1 and P2 are M1 and M2 respectively. 
Traffic flow in the bridge is performed using the 'normal' operating mode of 
OVS.

We want to detect all packets egressing P2  and have tried to use the following 
flow in the bridge.

                ... dl_vlan=1,dl_dst=M2 ...

However, we don't see any matches, although traffic is (correctly) flowing from 
P1 to P2.

Using the following flow instead

                ... dl_dst=M2 ...

detects traffic flowing from P1 to P2.

I am curious to know why the VLAN tag check in the flow didn't catch the 
packets egressing P2, although P2 has been tagged with VLAN 1.

Thanks for any help on this.

Regards,
Anil


From: discuss [mailto:discuss-boun...@openvswitch.org] On Behalf Of Anil Rao
Sent: Monday, August 29, 2016 4:31 PM
To: discuss@openvswitch.org
Subject: [ovs-discuss] Detecting traffic of VLAN tagged ports using OVS flows

Hi,

We am seeing a behavior that we are unable to work around when using VLAN 
tagged ports inside an OVS bridge.

Environment: The 'br-int' bridge in an OpenStack Compute node, where OVS is 
managed by the Neutron OVS agent.

Our aim is to mirror (unicast) packets moving from OVS toward a VM instance's 
vNIC. To detect such packets, we have added flows which comprise of the 
following:

                dl_vlan==<port-vlan-id>, dl_dst=<port_mac_addr>

As per the OpenStack Neutron implementation:


1.       Each virtual network is assigned a host-local VLAN id.

2.       The MAC address of a port is unique within the scope of the virtual 
network it belongs to.

What we are seeing is the following:


1.       Traffic originating from outside the host that is destined to the port 
in question matches the rule above.

                The packets have the expected VLAN tag.



2.       Traffic originating from inside the host but from a port not in the 
same virtual network (and consequently having a different VLAN tag) that is 
destined to the port in question matches the rule above.

                The packets have the expected VLAN tag.



3.       Traffic originating from inside the host but from a port in the same 
virtual network (and consequently having the same VLAN tag) that is destined to 
the port in question does not match the rule above.

                The packets don't appear to have a VLAN tag.

Examining case (3) further, we noticed that packets flowing between ports on 
the same host that are tagged with the same VLAN id can be matched by the 
following rules:

                dl_dst=<port_mac_addr>

or

                dl_vlan= 0xffff, dl_dst=<port_mac_addr>

The problem with using either of these latter options is that we end up 
breaking OpenStack Neutron's requirement that port MAC addresses are unique to 
only a single virtual network.

I was wondering if anyone here could suggest some options that we could pursue 
to get around this problem we are seeing.

Note: We are using explicit flows to mirror traffic, instead of OVS's 
port-mirroring option, because we intend to support pre-capture filtering and 
the OVS port-mirroring feature doesn't support this (at least as far as we 
know).

Thanks and kind regards,
Anil



_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to