According to OpenFlow spec v.1.3.3 - "When a controller changes its role to
OFPCR_ROLE_MASTER, the switch changes all other controllers with the role
OFPCR_ROLE_MASTER to have the role OFPCR_ROLE_SLAVE, but does not affect
controllers with role OFPCR_ROLE_EQUAL. When the switch performs such role
changes, no message is generated to the controller whose role is changed"

The OpenFlow spec v.1.4.0 however adds - "When the switch performs such
role changes, if a controller role is changed from OFPCR_ROLE_MASTER to
OFPCR_ROLE_SLAVE, the switch must generate a controller role status event
for this controller informing it of its new state"

So, it does look like, the "Role Status" message is more of an OpenFlow
1.4+ feature than OpenFlow 1.3.

The problem though is, even if the switch is configured to run in only 1.3
mode, the OVS code tries to encode and send role status message.
File = connmgr.c, function = ofconn_set_role, line =
ofconn_send_role_status(other, OFPCR12_ROLE_SLAVE, OFPCRR_MASTER_REQUEST);

Somewhere down the call graph, in file: ofp-msgs.c, function:
raw_instance_get, the code fails an assertion because the version parameter
= 4 (running in OpenFlow 1.3 mode),
is less than info->min_version = 5, because the python build scripts
construct a raw_instance for OFPRAW_OFPT14_ROLE_STATUS with both a
min_version and max_version of 5.

I don't think this assertion failure is a desirable behavior, and there
should be some check for version before trying to encode+send a role status
message if running in < OpenFlow 1.4 mode.

Thank you,
Anup
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to