In my understanding, the flow rules stay present. My issue is with rules that direct the packet to the controller. If a new flow comes in, for example, and the controller is down, will this new packet simply be dropped?
2 Answers
Its up to the configuration whether the flows will present or not. Here is the explanation from Openflow 1.3 documentation:
Flow entries are removed from flow tables in two ways, either at the request of the controller or via the switch flow expiry mechanism. The switch flow expiry mechanism that is run by the switch independantly of the controller and is based on the state and configuration of flow entries. Each flow entry has an idle_timeout and a hard_timeout associated with it. If either value is non-zero, the switch must note the flow entry's arrival time, as it may need to evict the entry later. A non-zero hard_timeout field causes the flow entry to be removed after the given number of seconds, regardless of how many packets it has matched. A non-zero idle_timeout field causes the flow entry to be removed when it has matched no packets in the given number of seconds. The switch must implement flow expiry and remove flow entries from the flow table when one of their timeout is exceeded.
If both idle_timeout and hard_timeout are zero, the entry is considered permanent and will never time out:
If the idle_timeout is set and the hard_timeout is zero, the entry must expire after idle_timeout seconds with no received trafic. If the idle_timeout is zero and the hard_timeout is set, the entry must expire in hard_timeout seconds regardless of whether or not packets are hitting the entry. If both idle_timeout and hard_timeout are set, the flow entry will timeout after idle_timeout seconds with no trafic, or hard_timeout seconds, whichever comes first. If both idle_timeout and hard_timeout are zero, the entry is considered permanent and will never time out. It can still be removed with a flow_mod message of type OFPFC_DELETE.