OpenFlow is a switching technology that uses the OpenFlow protocol to build software-defined networks, enabling the network to be managed as a whole rather than as countless independent devices. Many vendors are now considering adopting the OpenFlow protocol.
1. Traditionally, Spanning Tree Protocol or other newer standards (such as Transparent Interconnection of Lots of Links, TRILL) are used to determine packet forwarding paths. OpenFlow, however, transfers forwarding decisions from individual routers to a controller, which is typically a server or workstation. A management application runs on the controller, responsible for interacting with all network routers and configuring data forwarding paths, thereby improving bandwidth utilization. This application interacts with cloud management software to ensure sufficient bandwidth supports workload creation and changes.
2. The OpenFlow standard defines the interaction protocol between the controller and routers, as well as a set of router operations. This controller-router protocol runs over Transport Layer Security (TLS) or an unprotected TCP connection. The controller sends instructions to the router, controlling how packets are forwarded, and configures parameters such as VLAN priority. The router notifies the controller via messages when a link is interrupted or when a packet arrives without a specified forwarding instruction.
3. Forwarding instructions are based on a flow, which consists of common characteristics shared by all packets. Defining a flow requires specifying many parameters, which may include: the router port the packet arrived on, source Ethernet port, source IP port, VLAN tag, destination Ethernet or IP port, and many other packet characteristics. The controller sets a group of parameters on the router to define each flow and how packets matching that flow are handled.
4. Each router maintains multiple flow tables, and each table contains multiple flow entries. Every flow entry contains a match field, which defines the flow, counters, and an instruction set. The entries recorded in the match field may contain a comparison parameter value corresponding to an arriving packet, or a wildcard value indicating the absence of a specific value in that flow’s parameter set.
5. Flow tables are numbered starting from 0. An arriving packet is compared against the entries in table 0. If a match is found, the flow counter is incremented, and the specified instruction set is executed. If the arriving packet does not match any flow table entry, a new flow must be created.
Some routers may directly drop undefined flows, but in most cases, the packet is forwarded to the controller. The controller then defines a new flow for that packet and creates one or more flow table entries. It then sends the entries to the router and adds them to the flow table. Finally, the packet is sent back to the router to be processed using the newly created flow entry.
6. Flow table instructions modify the action set applied to each packet. Initially, a packet is processed with an empty action set. These actions may require the packet to be forwarded through a specific port, or require modification of the packet’s TTL, VLAN, MPLS label, or packet QoS.
7. Instructions in the first flow table may perform actions on the packet, or accumulate actions to be executed later. These instructions compare the packet with other flow table entries, controlling the packet’s subsequent processing. Instructions in subsequent flow table entries may further add actions, remove or modify previously added actions, or perform other operations