Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This algorithm has a fatal flaw in that it assumes both the controller and the switch support all versions of OpenFlow less than that advertised. In practice, many switches and controllers might, for example, only support OpenFlow 1.3 and not 1.2, 1.1, and 1.0 – implied via the aforementioned algorithm. Furthermore, many switches, for some reason, do not choose the lower of the two versions (even if it's the switch's own version) and either disconnect or report an error. Instead, these switches tend to want the controller to advertise the same version as it speaks and do not try to negotiate a version if the advertised versions are different.

(2) To address these issues, OpenFlow versions 1.3.1 and above include a version bitmap in the header of the hello message. This bitmap contains a flag bit for every OpenFlow version. The switch and the controller will each set the corresponding flag for each version of OpenFlow they support. Upon receipt of a version bitmap, the controller and switch will compare the bitmap received to its own version bitmap. A simple AND bit mask operation will reveal the highest, common supported version. This version will be chosen as the version to use in the handshake.

...