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?

Versions:
ovs-ofctl (Open vSwitch) 2.5.1
ovs-vsctl (Open vSwitch) 2.5.1
modinfo openvswitch: version: 2.5.1
OS: Ubuntu 14.04 - 3.13.0-24-generic

Thanks,
Janne Alatalo
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to