A method performed by an apparatus comprising an active controller ring comprising at least two active controllers, for receiving a plurality of data packets and providing routing instructions to a plurality of nodes using the plurality of data packets within an OpenFlow Software Defined Network, the method comprising the steps of: • Receiving, by a first active controller, being in a master state, of the active controller ring, a first data packet from a controller in-queue component of the apparatus configured to temporarily store data packets received by the apparatus and transiting, by the first active controller, from the master state into a slave state after receiving the first data packet; • Transiting, by a second active controller of the active controller ring, from the slave state into the master state prior to receiving a second data packet from the controller in-queue component; • Receiving, by the second active controller, the second data packet in the master state, wherein the first data packet is processed by the first active controller in the slave state while receiving the second data packet by the second active controller in the master state; • Computing, by the first active controller in the slave state, a plurality of generated flow tables based on processing the first data packet and the second data packet; and • Transmitting, from the active controller ring via a dispatcher component a plurality of outgoing packets that comprise the generated flow tables using the OpenFlow protocol to the plurality of nodes, wherein the generated flow tables dictate the routing behavior of the nodes to forward data packets received by the nodes, wherein the master state is a state in which one of the at least one active controller being in the master state listens to the controller in queue component for one of the data packets received by the apparatus and the slave state is a state in which one of the at least active controller being in the slave state processes one of the data packets received by the one active controller from the controller in queue component. • Receiving, by a first active controller, being in a master state, of the active controller ring, a first data packet from a controller in-queue component of the apparatus configured to temporarily store data packets received by the apparatus and transiting, by the first active controller, from the master state into a slave state after receiving the first data packet; • Transiting, by a second active controller of the active controller ring, from the slave state into the master state prior to receiving a second data packet from the controller in-queue component; • Receiving, by the second active controller, the second data packet in the master state, wherein the first data packet is processed by the first active controller in the slave state while receiving the second data packet by the second active controller in the master state; • Computing, by the first active controller in the slave state, a plurality of generated flow tables based on processing the first data packet and the second data packet; and • Transmitting, from the active controller ring via a dispatcher component a plurality of outgoing packets that comprise the generated flow tables using the OpenFlow protocol to the plurality of nodes,