When an OXM id is serialized in a table features request, the OXM
header that is serialized sets the oxm_length to 0.  That is, the OXM
id for "eth_dst" is sent as

80000600 instead of 80000606 (the last byte is the length of the value).

There's a comment in the code that explains the issue was unclear in
2014. (ofproto_v1_3_parser, ofproto_v1_4_parser, ofproto_v1_5_parser)

The 1.3.5 OF spec states, "The oxm_length field in OXM headers must be
the length value defined for the OXM field, i.e. the payload length if
the OXM field had a payload." (7.3.5.5.2 Table Features properties)

OVS appears to set the oxm_length to the payload length. If the mask
bit is set, the payload length is double the usual size.

I am trying to change the OFPOxmId serialization code so I can submit
a patch. Is there an API like:

    ofproto.oxm_from_user('eth_dst', None)

that will return the length information for a field?

The ryu parsing code for an OXM ID ignores the oxm_length. This patch
would only break things if the receiving OpenFlow implementation
expects the oxm_length's to be zero in the TableFeatures message
OXMID's. Such an implementation would be broken IMO.

-Bill

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to