11  SDN APIs and High Availability

reference-architectures
sdn
apis
clustering

11.1 Start With the Request That Must Survive

APIs and clustering matter because a service request has to survive translation, controller failure, state movement, and switch action. If the request cannot be traced, availability claims are just slogans.

Start simple: follow one northbound request through authorization, controller state, southbound action, and failover. The API contract and cluster design are good only when that trace stays understandable. ## API and Availability Decision Route {.depth-l0}

Use this route when checking an SDN controller API or high-availability design.

SDN API and availability decision route from authorized intent through contract validation, controller state, switch rule, failover path, service proof, and review condition.
Figure 11.1: SDN API and availability decision route
  1. Name the requester: application, workflow, operator, or automation that is allowed to request a network change.
  2. Define the northbound contract: intent fields, authorization, scope, idempotency, response shape, and expected proof.
  3. Define the controller state owner: topology, policy, flow records, counters, and conflict decisions.
  4. Define the southbound action: rule install, rule removal, counter query, role change, barrier, or fallback rule.
  5. Check high-availability behavior: quorum, stale state, switch-controller roles, reconnection, and degraded mode.
  6. Verify the service outcome: receiver proof, counters, alert proof, rollback result, and next review condition.

11.2 Northbound and Southbound Boundaries

Northbound and southbound APIs should not be treated as two names for the same interface. They cross different responsibility boundaries.

SDN API boundary map showing applications using northbound contracts, controllers validating and translating intent, switches enforcing southbound rules, and operations checking proof.
Figure 11.2: SDN northbound and southbound API boundary map

Northbound boundary

Applications and workflows ask for outcomes such as isolate, prioritize, mirror, route, meter, or report. The contract should include identity, scope, reason, and proof expectations.

Controller boundary

The controller validates authorization, checks topology and policy conflicts, computes rule changes, records decisions, and exposes state back to approved clients.

Southbound boundary

The controller programs forwarding devices and asks for device state. Switches should not receive unchecked application intent directly.

Operations boundary

Operations connects API behavior to change approval, monitoring, incident learning, degraded operation, and rollback ownership.

Common northbound styles include REST-style request/response APIs, streaming RPC-style APIs, and configuration-model APIs. Common southbound actions include flow-rule changes, statistics requests, role changes, barrier checks, and device-state queries. The decision question is not “which interface is newest?” It is “which interface carries the right responsibility with enough proof?”

11.3 Request Lifecycle

A safe API design describes what happens after an application request arrives and before the network is allowed to change.

SDN API request lifecycle from application intent through authorization, validation, rule computation, southbound install, switch enforcement, and proof response.
Figure 11.3: SDN API request lifecycle from application intent through authorization, validation, rule computation, southbound install, switch enforcement, and proof response.

Lifecycle check:

  • Receive intent: capture the requester, service objective, affected traffic class, scope, and requested duration.
  • Authorize: confirm that the application or workflow may make this specific change.
  • Validate: check topology, policy conflicts, protected traffic, fallback behavior, and rollback conditions.
  • Translate: convert intent into rules, priorities, counters, timeouts, and affected devices.
  • Install and confirm: send southbound changes and verify whether devices accepted the request.
  • Observe outcome: compare switch proof with receiver or service proof.
  • Respond and record: return a clear API result and store enough proof for later checks.

11.4 Northbound Contract Design

An SDN northbound API should be designed as a contract, not just as a URL or method name.

SDN northbound API contract elements including identity, intent, scope, safety checks, response, proof, version, and rollback.
Figure 11.4: SDN northbound API contract elements

Identity and authorization

Who is making the request, under which role, and for which network domain?

Intent and scope

Which traffic class, source, destination, gateway, tenant, site, or service objective is affected?

Idempotency

What happens if the same request is retried after timeout or failover?

Safety checks

Which conflicts, protected paths, maintenance windows, fallback rules, and rollback gates are checked first?

Response shape

Does the caller receive accepted, rejected, pending, partially applied, rolled back, or degraded state?

Proof and versioning

Which record proves the result, and how will clients survive contract changes?

Do not expose a raw switch-control surface as the first northbound design. Applications should not need to know every match field, rule priority, or device quirk to request a service outcome. The controller owns that translation and must make it traceable.

11.5 Southbound Action Checks

Southbound actions are low-level and device-facing. They should be treated as implementation details with strong proof.

Typical southbound action categories:

  • Rule changes: install, modify, delete, or expire forwarding rules.
  • Packet handling: request controller guidance for unmatched traffic or send a specific packet through a switch.
  • Counter queries: read flow, port, queue, or table counters.
  • Role and connection management: decide which controller instance may write to a device.
  • Synchronization checks: confirm whether earlier rule updates have been processed.
  • Fallback rules: preserve known safe behavior during controller or link degradation.

Check questions:

  • Which application intent caused this southbound action?
  • Which controller state version produced the rule?
  • Which switch accepted, rejected, or partially applied the update?
  • Which counters or receiver proof show the service objective?
  • Which timeout or rollback removes stale rules?

11.6 Controller Cluster Responsibilities

A controller cluster is not automatically safer than one controller. It is safer only when the system can explain which instance owns decisions, what state is shared, and what happens to switches during changeover.

Clustered SDN controllers in a three-tier architecture: a primary controller with a hot-standby backup and distributed state synchronization, managing a spine-leaf switch fabric over a southbound API.
Figure 11.5: A controller cluster keeps a primary and a hot standby in state sync, so the switch fabric keeps forwarding through a controller failover.

Decision ownership

Only one authorized decision path should commit a conflicting policy update for the same scope.

Shared state

Topology, policy records, active rule records, and ownership leases need clear replication and freshness rules.

Local switch behavior

Switches should keep known safe forwarding behavior when possible, but the design must test what actually survives a controller loss.

Operations visibility

Operators need proof of which controller was active, which rules changed, what degraded, and what was rolled back.

11.6.1 State Classes

Not every kind of state needs the same consistency model.

  • Strongly coordinated state: policy ownership, topology decisions, rule install records, and rollback gates.
  • Eventually checked state: counters, sampled telemetry, trend summaries, and diagnostic observations.
  • Local state: switch cache behavior, packet counters, link-local status, and temporary buffering.
  • External proof: receiver service health, application acknowledgement, incident record, and operator approval.

The decision record should state which state can be stale, for how long, and what risk that creates.

11.7 Failover Sequence Checks

Failover design should be checked as a sequence of verifiable events rather than as a single availability promise.

SDN controller failover proof sequence showing a failure event, decision owner selection, switch role proof, state freshness, protected service behavior, receiver proof, operations record, and rollback check.
Figure 11.6: SDN controller failover proof sequence

Failover sequence to verify:

  1. A controller, controller link, or state store becomes unavailable.
  2. Surviving controller instances detect that the decision owner is unavailable.
  3. The cluster chooses a new decision owner without split-brain writes.
  4. Switches accept the correct controller role for writes and telemetry.
  5. The new owner checks state freshness before installing new rules.
  6. Protected service traffic continues, pauses safely, or follows documented degraded behavior.
  7. Operations receives proof of the event, impact, and recovery state.

Avoid broad promises such as “failover is instant” or “existing flows always continue.” Flow persistence depends on rule timeout, switch behavior, connection state, and local fallback design. Test the actual path with representative traffic.

11.8 IoT Availability Fit

SDN API and cluster design is valuable when it reduces operational risk. It is not a substitute for local safety, gateway autonomy, or good protocol design.

SDN API and high availability fit for IoT showing good fits such as coordinated isolation, service policy, telemetry, and change records, plus limits such as local control and wireless constraints.
Figure 11.7: SDN API and high availability fit for IoT

Good fit: authorized isolation

Use SDN APIs when a gateway, device class, or tenant needs scoped isolation with approval, proof, and rollback.

Good fit: service policy

Use controller policy when traffic classes need different paths, queue treatment, metering, or monitoring across shared infrastructure.

Good fit: operations proof

Use cluster and API records when teams need to know who changed what, which controller owned the decision, and what the receiver observed.

Limit: local control

Do not make safety-critical local behavior wait for a remote controller or cluster decision.

Limit: protocol constraints

SDN can coordinate network behavior, but it does not remove wireless range, energy, payload, gateway, or duty-cycle constraints.

Limit: hidden automation

Fast rule changes are risky when ownership, scope, stale-state handling, and rollback proof are not visible.

11.9 Build Gateway Isolation APIs

Scenario: A building network carries access control, environmental telemetry, maintenance laptops, video streams, and background update traffic through shared gateways and switches. The team wants an SDN API that can isolate one suspicious gateway while preserving access-control alert delivery.

Decision route:

  1. Define the API requester: security workflow, operator approval, or incident automation.
  2. Name the affected scope: gateway identity, traffic classes, protected alert path, and requested duration.
  3. Validate policy conflict: do not block protected alert traffic, support traffic, or rollback signal paths.
  4. Translate intent into scoped rules: block or meter only the affected traffic class and attach counters.
  5. Confirm southbound acceptance: which switches accepted the rule and which did not?
  6. Verify receiver proof: protected alert receiver still receives expected traffic.
  7. Record failover behavior: what happens if the controller changes owner during the isolation window?
  8. Close or revise: remove stale rules, update the record, and review the decision again if the same gateway reappears.

Example decision record:

API intent:
  Isolate gateway class: maintenance-laptop traffic from Gateway G-17.
  Preserve: access-control alerts and operator rollback path.

Northbound contract:
  Requester role, incident id, gateway id, traffic class, duration, proof target.
  Idempotency key for retries during controller failover.

Controller checks:
  Authorization, topology scope, protected traffic conflict, fallback rule, stale-state risk.

Southbound actions:
  Install scoped drop or meter rules, attach counters, confirm device acceptance.

Cluster check:
  Decision owner, state version, failover handling, switch role proof.

Proof:
  Receiver alert path OK, blocked class counters increasing, rollback tested.

Review conditions:
  Controller owner change, topology change, rejected switch update, missing receiver proof.

11.10 Proof Loop

The API result should not be the only proof. A successful response can still hide partial rule application, stale state, or broken receiver behavior.

SDN API and cluster proof loop connecting application response, controller decision record, southbound acknowledgement, switch counters, receiver outcome, operations check, and contract update.
Figure 11.8: SDN API and cluster proof loop

Proof to keep:

  • Application request, requester, intent, idempotency key, and response.
  • Controller decision record, state version, conflict checks, and selected owner.
  • Southbound rule acceptance, rejection, timeout, counter, and barrier proof.
  • Switch-controller role and connection event proof.
  • Receiver outcome and protected traffic proof.
  • Rollback action, closure signal, and next review condition.

11.11 Common Pitfalls

Direct switch programming from apps

Applications should express intent through a checked contract, not bypass controller validation.

API without idempotency

Retries during timeout or failover can create duplicate, stale, or contradictory rule changes.

Cluster as performance shortcut

More controller instances do not automatically improve throughput. Check ownership, state cost, and failure behavior.

No split-brain story

A cluster must prevent disconnected controller instances from committing conflicting changes.

Assumed data-plane survival

Existing forwarding may continue, expire, pause, or degrade depending on rule and switch behavior. Test it.

Missing receiver proof

Southbound acknowledgement does not prove that the intended service still worked.

11.12 APIs Split Intent and Enforcement

An SDN API is useful when it keeps application intent separate from device enforcement. The northbound side should describe who is asking, what service behavior is requested, which scope is affected, and what proof is expected. The controller then validates state and policy before translating the request into southbound actions that switches can enforce.

High availability extends that contract across failure. A cluster is not reliable because it has several instances. It is reliable when one decision owner can be identified, state freshness is known, switch roles are tested, split-brain writes are blocked, receiver proof survives failover, and rollback is still possible.

For example, a smart-building access-control system may ask the network to isolate a suspect maintenance gateway while preserving badge-reader alarms and operator rollback access. The northbound API should carry the requester role, incident id, gateway id, protected traffic class, requested duration, idempotency key, and proof target. The controller checks authorization, topology state, policy conflicts, and current cluster owner before translating the request into switch rules, counters, and timeouts. The southbound action is then a device-facing rule update, not a second copy of the application request. The availability claim is proven only when the receiver still sees protected alarm traffic, the controller owner is known, rejected devices are named, and rollback remains possible after a controller role change.

SDN API proof loop connecting application response, controller decision state, southbound acknowledgement, switch counters, receiver proof, and contract update.
The API result is only one part of the evidence loop; receiver proof and operations closure are separate checks.

Boundary rule: applications request outcomes, controllers validate and translate, switches enforce scoped rules, and operations proves the service result.

  • Northbound contract: requester, intent, scope, idempotency, response shape, proof target, and version.
  • Controller decision: authorization, topology, policy conflicts, state freshness, affected devices, and rollback gate.
  • Southbound action: rule install, delete, expire, counter query, role change, barrier, or fallback rule.
  • Service proof: switch acknowledgement plus receiver behavior, protected traffic, operator record, and closure signal.

11.13 Availability Record

An availability record turns a cluster claim into testable operating evidence. It should show what request was made, which controller owner accepted it, which state was trusted, which switch actions happened, what the receiver observed, and what would force the decision to be reviewed.

Build the record from an actual change path, not from a vague “HA enabled” checkbox. In a campus sensor network, an operator might approve a northbound request to meter firmware-update traffic for one building while leaving fire-panel telemetry untouched. The record should show the idempotency key used during retries, the controller instance that owned the write lease, the topology and policy version used for conflict checks, and the devices that accepted or rejected each rule. It should also name the protected receiver test, such as MQTT alert delivery to the operations broker, and the rollback owner if the active controller changes mid-window.

Record field
What to name
Acceptance proof
Review condition
API request
Requester, role, intent, traffic class, scope, duration, idempotency key, and proof target.
The request is authorized, scoped, retry-safe, and tied to a receiver or service objective.
New caller, new traffic class, contract change, missing idempotency, or changed proof target.
Controller owner
Active decision owner, cluster role, state version, conflict owner, and stale-state limit.
Only the allowed owner can commit the scoped change and stale state blocks risky writes.
Failover, role change, split-brain event, stale topology, or conflicting automation path.
Southbound result
Device list, rule action, priority, timeout, counter, barrier, rejection, and fallback behavior.
Every affected device has acceptance, rejection, timeout, or fallback proof.
Device firmware change, rule-table pressure, rejected update, timeout change, or fallback gap.
Service closure
Receiver outcome, protected traffic check, rollback result, operator record, and unresolved assumption.
The service objective still holds or the record names the degraded state and owner.
Receiver proof missing, rollback failure, incident repeat, support change, or topology change.

Write the record for the smallest useful scope. A gateway-isolation API can be acceptable for one site and still remain unapproved for multi-site failover until the cluster and receiver proof cover that wider scope.

11.14 Failover Needs Fresh State

Failover is a state transition, not a slogan. When a controller or link fails, the system must decide which owner may write, which topology and policy state are fresh enough, which switch role is active, and which traffic should continue, pause, isolate, or fall back locally.

The data plane may continue forwarding existing rules, expire stale rules, reconnect to another controller, or enter a degraded state depending on device behavior and rule design. That behavior must be tested with representative traffic instead of assumed from the presence of a cluster.

Under the hood, the hardest part is usually not detecting a dead process. It is preventing two controller instances from writing conflicting policy and preventing a stale owner from acting on old topology. Systems such as ONOS or OpenDaylight deployments typically rely on a controller cluster, a replicated state store or distributed ownership service, and explicit switch-controller roles. A write path should prove which instance owns the affected scope, which state version was used, whether a quorum or lease is still valid, and whether switches accepted the role change before new rules are installed.

The southbound protocol also matters. OpenFlow role messages, barrier replies, flow-mod errors, and counter reads provide different evidence than a NETCONF configuration commit or a gNMI telemetry stream. A high-availability design should record those evidence types separately. If a controller failover occurs while an isolation rule is pending, the safe path may be to preserve old local forwarding, reject new risky writes until state freshness is proven, and keep protected alert traffic on a known-safe rule. That is a design choice, not an automatic property of clustering.

SDN controller failover proof route showing ownership, switch role, state freshness, protected service behavior, receiver proof, operations record, and rollback.
Failover proof is a recorded sequence: decision owner, switch role, state freshness, protected service behavior, receiver proof, operations record, and rollback.

A southbound acknowledgement is not availability proof. It confirms a device-side action; it does not prove protected receiver behavior, split-brain prevention, or rollback after ownership changes.

  • Quorum and role: prevent disconnected controller instances from accepting conflicting writes.
  • Freshness gate: block risky rule changes when topology, policy, or owner state is stale.
  • Switch behavior: verify rule timeout, role change, connection loss, counter visibility, and fallback rules.
  • External proof: pair switch records with receiver outcome, protected traffic, rollback, and operations closure.

11.15 Summary

SDN APIs and clustering define how applications request policy, how controllers coordinate state, and how the control plane remains available. A useful design names the API boundary, consistency model, failover behavior, and operational limits.

For IoT deployments, the design should preserve local safety, prove protected receiver behavior, record controller ownership, and keep rollback connected to every API-driven network change.

11.16 Key Takeaway

Treat SDN API and high-availability design as a traceable control loop: authorized intent, controller state, southbound enforcement, failover owner, receiver proof, rollback, and a clear review condition.

11.17 See Also