Hello

Hello is used by either controller or switch during connection setup. It is used for version negotiation. When the connection is established, each side must immediately send a Hello message with the version field set to the highest version supported by the sender. If the version negotiation fails, an Error message is sent with type HelloFailed and code Incompatible.
Initiator
Switch, Controller
Acknowledged
No

Structure

The Hello message has no body, it is comprised of only a header. However, uninterpreted data is allowed in the payload for future and proprietary development.

References

OpenFlow Switch Specification 1.0.0, page 41

Structure

The Hello message has no body, it is comprised of only a header. However, uninterpreted data is allowed in the payload for future and proprietary development.

References

OpenFlow Switch Specification 1.1.0, page 55

Structure

The Hello message has no body, it is comprised of only a header. However, uninterpreted data is allowed in the payload for future and proprietary development.

References

OpenFlow Switch Specification 1.2, page 66

Structure

The Hello message has no body, it is comprised of only a header. However, uninterpreted data is allowed in the payload for future and proprietary development.

References

OpenFlow Switch Specification 1.3.0, page 84

Structure

The Hello message contains a sequence of HelloElements. A HelloElement is a contains a type, length, and payload. The only payload currently defined is a sequence of version bitmaps.

Element

Name Bits Byte Ordering Constraints
Type 16 MSBF =1
Length 16 MSBF >=8

Bitmap

Version numbers are used to index the bitmap. For example, 1.0.0 (version 0x01) and 1.3 (version 0x04) will have a bitmap of ...10010 (0x00000012). The negotiated version should be the highest version supported by both sides if the same common bits in the bitmap are set. Otherwise, it needs to be the smaller one indicated in the version fields. If version number exceeds 32, a second 32 bit bitmap will be used. Note that the LSB is always 0.

References

OpenFlow Switch Specification 1.3.1, page 101

Structure

The Hello message contains a sequence of HelloElements. A HelloElement is a contains a type, length, and payload. The only payload currently defined is a sequence of version bitmaps.

Element

Name Bits Byte Ordering Constraints
Type 16 MSBF =1
Length 16 MSBF >=8

Bitmap

Version numbers are used to index the bitmap. For example, 1.0.0 (version 0x01) and 1.3 (version 0x04) will have a bitmap of ...10010 (0x00000012). The negotiated version should be the highest version supported by both sides if the same common bits in the bitmap are set. Otherwise, it needs to be the smaller one indicated in the version fields. If version number exceeds 32, a second 32 bit bitmap will be used. Note that the LSB is always 0.

References

OpenFlow Switch Specification 1.3.2, page 103

Structure

The Hello message contains a sequence of HelloElements. A HelloElement is a contains a type, length, and payload. The only payload currently defined is a sequence of version bitmaps.

Element

Name Bits Byte Ordering Constraints
Type 16 MSBF =1
Length 16 MSBF >=8

Bitmap

Version numbers are used to index the bitmap. For example, 1.0.0 (version 0x01) and 1.3 (version 0x04) will have a bitmap of ...10010 (0x00000012). The negotiated version should be the highest version supported by both sides if the same common bits in the bitmap are set. Otherwise, it needs to be the smaller one indicated in the version fields. If version number exceeds 32, a second 32 bit bitmap will be used. Note that the LSB is always 0.

References

OpenFlow Switch Specification 1.3.3, page 108

Structure

The Hello message contains a sequence of HelloElements. A HelloElement is a contains a type, length, and payload. The only payload currently defined is a sequence of version bitmaps.

Element

Name Bits Byte Ordering Constraints
Type 16 MSBF =1
Length 16 MSBF >=8

Bitmap

Version numbers are used to index the bitmap. For example, 1.0.0 (version 0x01) and 1.3 (version 0x04) will have a bitmap of ...10010 (0x00000012). The negotiated version should be the highest version supported by both sides if the same common bits in the bitmap are set. Otherwise, it needs to be the smaller one indicated in the version fields. If version number exceeds 32, a second 32 bit bitmap will be used. Note that the LSB is always 0.

References

OpenFlow Switch Specification 1.4, page 130