On Wed, Apr 20, 2016 at 4:32 AM, Alatalo Janne <janne.alat...@jamk.fi> wrote:
> Hello,
>
> I'm testing mpls and vlan tagging with OpenFlow on OpenvSwitch and faced a
> problem when trying to pop mpls tag from a vlan tagged packet. The problem
> can be seen in the following example in a simple mininet network:
> ```
> # mn --topo linear,2 --controller none
> # ovs-vsctl set bridge s1 protocols=OpenFlow13
> # ovs-vsctl set bridge s2 protocols=OpenFlow13
> # ovs-ofctl -O OpenFlow13 add-flow s1
> in_port=1,actions=push_mpls:0x8847,set_field:100-\>mpls_label,push_vlan:0x8100,set_field:0x1005-\>vlan_vid,output:2
> # ovs-ofctl -O OpenFlow13 add-flow s2
> mpls,vlan_vid=0x1005,actions=pop_vlan,pop_mpls:0x0806,output:1
>
> # Then generate traffic from host1
>> h1 ping h2
> ```
> The traffic is tagged correctly on the `s1` and the packets are matched to
> the correct flow in `s2` but the `s2` is not outputting anything from port
> 1. In the kernel log there is messages generated that say:
> ```
> openvswitch: netlink: Flow actions may not be safe on all matching packets.
> ```
>
> If the actions in the `s2` are changed to only pop the vlan tag everything
> works as expected. If the actions in the `s2` are changed to pop only the
> mpls tag the same problem occurs.
>
> Is it not possible to pop mpls from vlan tagged packet? Is this a
> restriction in the OpenFlow protocol? Am I missing some required match
> fields in the flows or is this a bug in OpenvSwitch?

It's a restriction in the way that the OVS datapath is implemented and
verifies correctness of actions. There are many possible combination
of MPLS and vlan tag orderings, which can be complicated and not all
of them are safe to execute. As a result, the use of these actions
together was restricted for simplicity.
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to