Hello all,

I want to decrease the MPLS TTL for the traffics that MPLS traffic class field 
is 0. I find only the first traffic can be processed properly.

Here are the steps:
1: Add a rule:
# ovs-ofctl add-flow ovsbr0 "priority=42,mpls,vlan_tci=0x1000/0x1000,mpls_tc=0 
actions=dec_mpls_ttl,output:2"

2: Send a traffic that MPLS label is 493. The OVS flow is:
# ovs-dpctl dump-flows
recirc_id(0),in_port(2),eth(),eth_type(0x8100),vlan(),encap(eth_type(0x8847),mpls(label=0/0x0,tc=0/7,ttl=255/0xff,bos=0/0)),
 packets:200, bytes:16400, used:0.000s, 
actions:set(mpls(label=493,tc=0,ttl=254,bos=0)),3
<== the match fields have mask, while the action does not have mask. That means 
no mater what label or bos is, OVS will modify the traffic to 
(label=493,tc=0,ttl=254,bos=0).

3: Send another traffic that MPLS label is 500. We can see the label is changed 
to 493.

The dec_mpls_ttl openflow action should ideally translate to 
set(mpls(ttl=254)). It should not touch the label, tc or bos fields as it does 
in current code, because the values for the other field of the mpls set are 
taken from the first packet that goes through the vswitch, which will break the 
next packets by writing a wrong value in the label, tc and bos fields.

The function execute_masked_set_action() in the datapath supports masked set 
action for MPLS. While from the function commit_odp_actions() we can see that 
some actions support to be masked, but MPLS does not support it.


Are we planning to support masked set action for MPLS?

Thanks
Zijie
_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to