[ovs-discuss] Set-field cannot update read-only actions on OVS

Ben Pfaff blp at nicira.com
Mon Mar 24 20:16:58 UTC 2014


On Mon, Mar 24, 2014 at 10:34:37PM +0530, Krish wrote:
> Please refer link: https://bugs.opendaylight.org/show_bug.cgi?id=381 where
> the original bug was filed.
> 
> Description:
> =========
> 
> We cannot use set-field action for:
> ETH_TYPE
> ICMPV4_TYPE
> ICMPV4_CODE
> ARP_OP
> ARP_SPA
> ARP_TPA
> ARP_SHA
> ARP_THA
> IPV6_FLABEL
> ICMPV6_TYPE
> ICMPV6_CODE
> IPV6_ND_TARGET
> IPV6_ND_SLL
> IPV6_ND_TLL

Some of those are modifiable in the latest version of Open vSwitch, so
you should consider upgrading.

eth_type and the ICMP type and code will probably never be made
modifiable, because changing them changes the interpretation of fields
in later layers in ways that don't really make sense.

Some of the claims at your bug system URL are just wrong, though.  For
example:

    >"The OpenFlow 1.3.2 spec says that we should be able to set the
    >values for these fields"

    You are right. In openflow 1.3.2 spec, it is mentioned that all
    fields in ofp_table_features may be requested to be changed by the
    controller with the exception of the max_entries_field, this is
    read only and returned by the switch.

    So this is ovs bug and not of openflowplugin. OVS needs to make
    them read-write.

Here's what OpenFlow 1.3.3 says in section 5.12.  Set-Field is clearly
optional:

    Optional Action: Set-Field. The various Set-Field actions are
    identified by their field type and mod- ify the values of
    respective header fields in the packet. While not strictly
    required, the support of rewriting various header fields using
    Set-Field actions greatly increase the usefulness of an OpenFlow
    implementation.

Here's what 7.2.5 Action Structures says:

    All header fields are valid in the set-field action, as well as
    the OXM_OF_TUNNEL_ID pipeline field, and can be used if the switch
    support them.

So I don't know where Krishnan Iyer gets the idea that all fields have
to be modifiable.

And Jyotsna Priya's comment that:

    In openflow 1.3.2 spec, it is mentioned that all fields in
    ofp_table_features may be requested to be changed by the
    controller with the exception of the max_entries_field, this is
    read only and returned by the switch.

is completely wrong.  ofp_table_features allows one to find out the
switch's features, including whether it can write various fields, and
to request changes to the switch's features.  The text in 1.3.2 means
that the controller can request a change to any feature, but it
doesn't mean that the switch must be able to implement any change that
the controller requests.



More information about the discuss mailing list