Hi Ben,

I am wondering if you could offer some guidance with regards to
using NX error codes.

I have not checked all use-cases, but it seems to me that for OpenFlow1.0
such messages are only used when an NX extension is in use and thus the
controller is aware of the extension and error code. This seems
straightforward.

What I am concerned about is OpenFlow1.1+, in particular the following two
cases. The basis of my concern is that using NX codes seems to imply that
they are understood by the controller, but the codes seem to be used in
conjunction with standard OpenFlow1.1+ behaviour, not NX extensions.

1. An NX code is used but an equivalent OpenFlow1.1+ code exists.
   For example OFPERR_NXBRC_BAD_TABLE_ID and OFPERR_OFPBRC_BAD_TABLE_ID.

   Three behaviours spring to mind

   i. Always use OFPERR_NXBRC_BAD_TABLE_ID
   ii. Always OFPERR_OFPBRC_BAD_TABLE_ID by adding the appropriate NX()
       annotation to its definition. This appears to be the way that
       OFPERR_OFPBMC_DUP_FIELD is handled.
   iii. Use OFPERR_NXBRC_BAD_TABLE_ID for OpenFlow 1.0 and
        OFPERR_OFPBRC_BAD_TABLE_ID for Open Flow 1.1+.

2. An NX code is used but no equally specific OpenFlow1.1+ code exists.
   For example OFPERR_NXBIC_DUP_TYPE.

   Here I also see a few options

   i. Always use OFPERR_NXBIC_DUP_TYPE.
   ii. Always use a less specific type, e.g. OFPERR_OFPIT_BAD_INSTRUCTION.

   Using OFPERR_NXBIC_DUP_TYPE only for Open Flow 1.0 doesn't seem
   to be meaningful as OFPERR_NXBIC_DUP_TYPE is annotated as NX1.1+
   and the error code is only used in an OpenFlow 1.1+ code path.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to