The OpenFlow protocol is divided into four components:
- Configuration (language and utility)
- State machine
- Message layer
- System interface
Configuration is divided into two parts, the configuration language and the configuration utility. The configuration language is designed with a straightforward interface to configure OpenFlow switches and OpenFlow controllers. The structure of the language is based on the types of information the switch or controller can handle.
For example, the configuration language for an OpenFlow 1.3 switch will contain type definitions for the supported internet protocols, IPv4 and IPv6. Type definitions can be combined to create stages. Examples of stages are initialization, authentication, and authorization.