Showing posts with label VXLAN. Show all posts
Showing posts with label VXLAN. Show all posts

Friday, May 8, 2026

IS-IS: The Quiet Backbone of Modern IP Networks

May 2026 - Estimated read time: 14 min


Why operators choose IS-IS for simple, efficient, and extensible IGP control planes—from service provider cores to enterprise data centers and campus backbones.

When you spend time around large networks-service provider backbones and well-run enterprise cores-you notice a pattern: many of the most stable IP transport domains run IS-IS. That choice often surprises engineers who grow up in corporate environments where OSPF dominates. IS-IS can look obscure until you operate it at scale-then it starts to feel like a deliberately engineered tool: compact, extensible, and predictable.

This article explains why IS-IS earns its reputation as the “hidden jewel” of IP transport. It focuses on the benefits that matter in real networks-simplicity, efficiency, and extensibility-in a way that stays practical and grounded. It also stays honest: OSPF is a strong IGP. The goal is not to dunk on OSPF; the goal is to show why IS-IS often becomes the preferred backbone IGP when the network is large, multi-vendor, and relentlessly operational-whether that network belongs to a carrier, a cloud provider, a global enterprise, or a campus/data-centre operator.

Throughout the post, “simplicity” means fewer special cases and fewer hidden interactions. “Efficiency” means lower operational overhead and smoother scaling as topology and attributes grow. “Accuracy” means the claims stay grounded in how the protocols actually behave and how engineers actually run them in production.

1) The mental model: IS-IS and OSPF solve the same problem differently

Both IS-IS and OSPF are link-state routing protocols. They flood topology information, build a link-state database (LSDB), and run SPF to compute best paths. At a high level, they look similar. The differences that matter appear in three places: how the protocol encodes information, how it scopes the topology, and how it deals with growth (new attributes, new address families, and bigger networks).

  • Encoding: IS-IS uses a TLV (Type-Length-Value) structure almost everywhere, which makes extensions natural. OSPF uses structured LSAs with type-specific formats; extensions exist (including opaque LSAs), but they can feel more constrained and more version-specific.
  • Scoping: IS-IS uses Level-1 and Level-2 to create hierarchy (like “local area” and “backbone”), while OSPF uses areas with a designated backbone area (area 0) and ABRs to connect them.
  • Transport: IS-IS runs directly over Layer 2 using CLNS (not inside IP), while OSPF runs over IP. This sounds academic, but it can simplify bring-up and reduce “IP depends on IGP depends on IP” confusion in some designs, especially when you treat loopbacks as stable identities and want the IGP to form adjacencies without relying on IP transport.

2) Why service providers care: backbone routing is a control-plane product

In SP transport, the IGP is not a feature; it is a control-plane product. It must stay stable while the network grows, while new services appear, while TE and SR attributes expand, and while maintenance happens every week. The best backbone IGP is the one that stays boring under stress: predictable convergence, predictable flooding, predictable extension behavior, and predictable troubleshooting.

This is where IS-IS shines. It is not “better at SPF.” It often stays more predictable as you keep adding requirements, especially in transport-heavy designs with TE/SR attributes and strict operational constraints.

2b) Corporate and enterprise context: where IS-IS fits outside service providers

IS-IS is not “only for carriers.” It shows up in corporate environments whenever the IGP becomes a transport foundation that must carry more than basic reachability: data center fabrics, multi-campus cores, SD-WAN underlays, and hybrid designs that use TE or Segment Routing attributes.

Data centre underlays and EVPN/VXLAN fabrics

Many enterprises build modern data centres with leaf-spine topologies and EVPN/VXLAN overlays. Even when the overlay uses BGP EVPN, the underlay still needs a stable IGP for loopback reachability, fast convergence, and clean extensibility. IS-IS works well here because the configuration surface stays small and the protocol tolerates growth in attributes (TE/SR, new TLVs) without the design turning into “OSPF plus extensions plus exceptions.”

Campus and large-site cores

In large campuses, the core often behaves like a service provider core in miniature: many VLANs, many routed access blocks, and constant churn at the edge. Teams often choose OSPF because it is familiar, but IS-IS can be a strong fit when the goal is a simple, consistent core IGP that is less sensitive to area boundary edge cases. A common enterprise pattern keeps IS-IS in the core and uses redistribution or controlled boundaries to integrate with OSPF at the access edge if required by tooling or legacy constraints.

SD-WAN and multi-transport WAN underlays

SD-WAN overlays depend on a stable transport and predictable failure behavior. In designs that keep a routed WAN core (MPLS, private backbone, or a routed hub-and-spoke), IS-IS often becomes attractive because it stays boring as you add sites and attributes. When the WAN evolves to include traffic engineering or SR policies, IS-IS’s extensibility becomes a practical advantage rather than a theoretical one.

Why enterprises still pick OSPF (and why that can be the right decision)

OSPF often wins in corporate environments for good reasons: deep team familiarity, abundant training material, common tooling assumptions, and integration with existing area designs. In smaller networks, OSPF’s area model can be perfectly clean, especially with point-to-point links and disciplined summarization. If your organization already runs OSPF well, switching IGPs is rarely justified without a clear operational payoff.

The takeaway is simple: IS-IS becomes compelling in enterprises when the IGP starts behaving like a transport product-large topologies, high change rates, multi-vendor needs, and an increasing appetite for TE/SR attributes. In that world, the “simplicity and extensibility” arguments that make sense for carriers apply to corporate networks too.

2c) What IS-IS gives you when you run it as a backbone protocol

IS-IS earns its reputation when you treat it as a backbone control plane rather than as a classroom topic. In that role, it consistently delivers three operator-facing benefits:

  • Compact intent: a small configuration surface that stays consistent across vendors and across years of growth.
  • Extensible mechanics: a TLV-based encoding model that absorbs new attributes (IPv6, TE, SR, flex-algo) without turning into a patchwork of special cases.
  • Predictable operations: stable hierarchy options (L1/L2), pragmatic database synchronization (CSNP/PSNP), and troubleshooting that starts from a few clear questions.

If you already run OSPF successfully, you can keep doing so. This article’s point is narrower: when the network starts behaving like a transport fabric with continuous change, IS-IS tends to stay “quiet” in the best way-boring, consistent, and easy to extend.

3) Simplicity advantage #1: fewer network-type edge cases

OSPF brings a set of interface network types and behaviors (broadcast, point-to-point, NBMA, etc.) that can matter in enterprise and legacy designs. In modern SP cores, most links are point-to-point, and you configure OSPF to match. Even then, network-type mismatches and DR/BDR assumptions can create avoidable pain when someone makes a subtle change or when a topology deviates from the template.

IS-IS also elects a designated role (DIS) on broadcast segments and creates a pseudonode to reduce flooding. However, SP cores typically avoid shared multi-access in the core and run point-to-point everywhere. In that environment, IS-IS feels simpler because the configuration surface is smaller: set levels, set metrics, set authentication, and you are largely done.

This is not a claim that OSPF is hard. It is a claim that IS-IS gives you fewer knobs that can quietly diverge across vendors.

4) Simplicity advantage #2: hierarchy without ABR gymnastics

OSPF hierarchy centers on areas and the special role of area 0. Area design is powerful, but it can become operationally heavy as the network grows. You must keep area 0 contiguous or use virtual links (which most operators avoid). ABRs summarize, translate LSA types, and can create edge cases when policies drift. When area boundaries multiply, troubleshooting often requires thinking about which LSA type exists where and why.

IS-IS hierarchy is Level-1 and Level-2. Level-2 behaves like the backbone. Level-1 behaves like an area. L1/L2 routers sit at the boundary. Many SPs run L2-only in the core to keep it even simpler: one level, one topology, one set of rules. When they use hierarchy, it usually aligns with real failure domains or administrative boundaries.

The practical simplification is that IS-IS area design rarely turns into complex LSA-type reasoning. You still must design it well, but the mental model stays compact.

5) Efficiency advantage #1: TLV extensibility keeps growth tidy

IS-IS encodes most information in TLVs. That matters because real networks evolve. You add IPv6. You add TE attributes. You add SR SIDs. You add flex-algo, multi-topology, or new adjacency attributes. In a TLV world, you add a TLV and keep the rest intact. You do not need to redesign the entire message format.

OSPF has extension mechanisms, including opaque LSAs, and the ecosystem supports many OSPF extensions. The difference is the “feel” of evolution: IS-IS grows by adding TLVs to LSPs; OSPF grows by adding new LSA types or new uses of existing types. Both work, but TLVs often produce a smoother upgrade story because unknown TLVs can be ignored safely by devices that do not support them, while supported devices use them.

This is one reason IS-IS appears frequently in networks that adopt TE and Segment Routing early and at scale. The protocol’s encoding structure makes it comfortable to carry extra attributes without turning into a fragile patchwork.

6) Efficiency advantage #2: database synchronization is pragmatic and visible

IS-IS uses Complete Sequence Number PDUs (CSNPs) and Partial Sequence Number PDUs (PSNPs) to synchronize LSPs and request missing pieces. This model makes it straightforward to reason about database health. When something is missing, the protocol has a clear request/response rhythm.

OSPF uses LSA flooding with acknowledgements and uses database description packets (DD) during adjacency formation. That also works well. The operational difference is subtle: IS-IS’s CSNP/PSNP model is easy to inspect and aligns naturally with the idea of “here is my database summary; request what you need.” In large operational environments, that simplicity helps when you debug partial database issues.

Operational intuition (conceptual)

IS-IS:
  - LSPs carry TLVs (topology + attributes)
  - CSNP advertises "these are the LSPs I have"
  - PSNP requests "send me LSP X/Y that I'm missing"

OSPF:
  - LSAs carry topology + attributes by LSA type
  - DD exchanges summaries during adjacency bring-up
  - LSReq/LSUpd/LSAck finalize synchronization

7) Efficiency advantage #3: IP independence reduces bootstrapping weirdness

IS-IS runs directly over Layer 2 and does not require IP adjacency to form. This can simplify bootstrapping in environments where IP addressing or reachability is still being established. It also means IS-IS does not depend on IP in the same way when you bring up a new core link or when you rebuild a router from scratch.

This does not mean OSPF cannot bootstrap cleanly-it often does. It means IS-IS can feel more forgiving during bring-up when addressing changes, especially in designs where you treat loopbacks as identity and you want the IGP to establish reachability quickly without depending on higher-layer behavior.

8) Where IS-IS really wins: TE, SR, and transport attributes

Modern SP transport is not only shortest-path routing. It is traffic engineering, fast reroute, constraint-based path selection, and sometimes multiple algorithmic topologies. IS-IS is widely deployed in these environments because it carries TE and SR attributes naturally and because operator tooling and vendor support in SP contexts often assume IS-IS.

8.1 Traffic Engineering and SR in practice

When you deploy RSVP-TE or SR-TE, the IGP becomes the source of truth for topology and constraints: link bandwidth, affinities, SRLG hints, latency metrics (where supported), and SR SIDs. IS-IS carries these attributes through TLVs in a way that stays consistent as you evolve the network. That reduces the chance that “core routing” and “TE policy” become separate, drifting datasets.

8.2 Multiple topologies without multiple protocols

IS-IS supports multi-topology concepts that can help when you want different logical topologies for different service sets. Not every network needs this. But when you do need it, having it integrated into the IGP model reinforces the theme: one protocol, one database philosophy, multiple controlled outcomes.

9) Operational simplicity: troubleshooting tends to be more direct

Operators often describe IS-IS troubleshooting as clean. In typical SP deployments you see point-to-point links, L2-only core, stable metrics, and TLV-based attributes. When a problem occurs, you usually ask a small set of questions:

  • Are adjacencies up at the expected level(s)?
  • Do I see the expected LSPs and sequence numbers?
  • Do CSNPs/PSNPs indicate missing or stale LSPs?
  • Does SPF compute the expected next-hop given metrics and constraints?
  • Do TE/SR attributes (if used) match the intended design?

OSPF troubleshooting can be equally systematic, but it often requires more context about area boundaries, LSA types, and interface network types-especially in mixed or legacy designs. In a pure point-to-point OSPF core, OSPF can be very clean too. The point is that IS-IS tends to stay clean even as you add attributes and features because the TLV model absorbs growth gracefully.

10) When OSPF is a natural fit (and why that doesn’t change the IS-IS case)

OSPF remains a strong choice in many networks and is often the default in corporate environments due to familiarity, training depth, and broad support. In enterprise networks, OSPF’s area model and its integration with IP addressing can be very natural. Many tooling ecosystems assume OSPF. Many teams have deep OSPF muscle memory, and that is a real operational asset.

The question is not “can OSPF scale?” It can. The question is “which IGP stays simplest as the network evolves into a transport fabric with SR, TE, multi-domain constraints, and continuous maintenance?” That is where IS-IS earns its reputation.

11) Design patterns that keep IS-IS simple and efficient

IS-IS becomes a jewel when you deploy it with discipline. Here are patterns that consistently work in SP transport:

  • L2-only core where possible: one level reduces cognitive load and boundary complexity.
  • Strict loopback discipline: treat loopbacks as identity; keep them stable and reachable; avoid ad-hoc addressing changes.
  • Consistent metrics: define a metric philosophy that reflects capacity/latency tiers and avoid constant tuning; use TE policies for premium intent.
  • Authentication everywhere: use consistent authentication policies to reduce accidental adjacency formation.
  • Bounded flooding domains: align levels with real failure domains if you use hierarchy.

The same discipline applies to OSPF. The difference is that IS-IS often requires fewer design exceptions to remain stable at SP scale.

12) Common pitfalls and how to avoid them

IS-IS is not immune to mistakes. The most common operational issues are avoidable when you know what to look for.

  • Level mismatches: adjacencies form only when both sides share a level. Standardize interface level settings and validate during turn-up.
  • MTU mismatches: both IS-IS and OSPF can suffer MTU-related adjacency issues. Treat MTU as baseline and validate in templates.
  • Overloaded LSPs: as you add TLVs (TE/SR), LSPs can fragment. That is normal, but you must monitor LSP counts and ensure platforms handle the scale.
  • Metric chaos: frequent metric tweaks cause traffic churn. Use a stable metric strategy and move premium intent into TE/SR policy where possible.
  • Unplanned flooding domains: avoid large broadcast segments in the core; prefer point-to-point links to keep protocol behavior predictable.

None of these pitfalls are unique to IS-IS. The point is that IS-IS gives you a clean baseline when you avoid avoidable complexity.

13) Migration thinking: moving from OSPF to IS-IS without drama

Many operators consider IS-IS after running OSPF for years. A safe migration respects two truths: routing changes are operationally risky, and you do not migrate for novelty. You migrate because you want a simpler transport control plane that scales with TE/SR and multi-domain growth.

A typical approach runs IS-IS in parallel in a controlled domain, validates stability and tooling, then expands gradually. Avoid coupling the migration to unrelated changes unless you have strong change discipline and lab validation. The goal is to keep user experience stable while the control plane evolves.

14) The practical takeaway: why IS-IS feels like a transport engineer’s protocol

IS-IS is not mysterious when you see it as a transport tool. Its strengths align with SP core realities: point-to-point links, a need for clean hierarchy, a steady stream of new attributes (TE/SR), and a requirement for predictable operations under continuous maintenance.

OSPF remains excellent in many contexts. But when you optimize for simplicity and efficiency at scale-especially in modern IP transport fabrics-IS-IS often ends up as the quieter, more adaptable choice. That is why operators call it the hidden jewel.



Sunday, March 8, 2026

Policy, Not Ports: Designing Cisco ACI for Deterministic Segmentation, Service Insertion, and Multi-Site Resilience

March 2026 - Reading time: 16 min

Cisco ACI promises something operators have wanted for decades: stop configuring networks as a collection of ports and start operating them as a set of policies. In practice, ACI delivers that promise only when you treat the fabric as a system with clear boundaries, explicit intent, and measurable failure behavior. When you treat it like “a better VLAN tool,” you inherit all the old problems—just wrapped in a new UI.

This post focuses on practical design. It explains how to build deterministic segmentation with EPGs and contracts, how to insert L4–L7 services without creating mystery hairpins, and how to scale to multi-site and DR without turning policy into folklore. The theme is simple: policy becomes your control plane, and your job is to keep that policy predictable under change and failure.

1) Determinism in ACI means three things

When teams say they want “deterministic ACI,” they usually mean one of three outcomes. If you separate them, the design becomes clearer.

  • Deterministic segmentation: traffic flows only where contracts allow it, and the allow/deny logic stays consistent across upgrades, node failures, and day‑two changes.
  • Deterministic forwarding: endpoints keep reachability, L3Out behaves predictably, and external routing changes do not create accidental asymmetry or black-holes.
  • Deterministic operations: changes are reviewable, testable, and reversible; troubleshooting starts from intent (“which contract?”) instead of packet archaeology.

2) The ACI mental model that prevents 80% of mistakes

ACI becomes easier when you keep a strict hierarchy in your head: Tenant (ownership), VRF (routing domain), Bridge Domain (L2 boundary + default gateway behavior), EPG (group of endpoints), and Contract (policy that permits specific traffic between EPGs).

You can build anything in ACI without understanding why it works. The cost arrives later when you troubleshoot an outage and you can’t answer basic questions: Is this endpoint in the expected EPG? Does the BD map to the correct VRF? Is the contract direction correct? Which filter entry matches this flow? Determinism starts with making those answers unambiguous.

Quick mapping that stays stable:
  • Tenant: who owns the policy and objects
  • VRF: where routing decisions happen (separation boundary)
  • BD: where subnets live, ARP/ND lives, and flooding/unknown handling is defined
  • EPG: who belongs together (policy group)
  • Contract: what is allowed between groups (filters + subjects + scope)

3) Segmentation that scales: EPG strategy and contract discipline

The fastest way to wreck ACI at scale is to create an EPG for everything and a contract for every pair. That model collapses under its own weight. The opposite failure is to create three giant EPGs (“Prod, Dev, DMZ”) and then try to claw security back with filters. The sweet spot is to segment around trust boundaries and application tiers, then keep policy sparse and intentional.

A simple but effective pattern uses tiered EPGs per application: App‑Web, App‑API, App‑DB, and Shared‑Services. Then define contracts that express the architecture: Web→API on specific ports, API→DB on specific ports, and Shared‑Services provides DNS/NTP/AD or other platform dependencies.

Contract discipline matters more than contract count. Treat contracts as an interface definition, not as a convenience. Name them like APIs: Allow_Web_to_API_https beats web‑api. When an incident happens, that naming gives you a path to root cause.

  • Prefer allow-lists: explicit filters beat “permit all” with an exception list.
  • Keep scopes intentional: global scope feels convenient and becomes a security liability; use VRF/tenant scope deliberately.
  • Use shared services consciously: centralize dependencies (DNS, identity, monitoring) in a shared EPG and expose them through explicit contracts.
  • Guard the default: decide whether unknown communication is implicitly denied; rely on contracts, not on “it probably works.”

4) Microsegmentation: when EPGs are too coarse

EPGs are group policy. Sometimes you need per-workload policy. That is where microsegmentation and attributes matter. You can keep the EPG model simple while still achieving fine-grained control by using endpoint attributes (or tags) and contract rules that map to those attributes.

The trick is to avoid turning microsegmentation into a tax. If every VM has a unique policy, you lose the operational advantages of ACI. Use microsegmentation for the flows that actually matter: east‑west movement between sensitive workloads, privileged management planes, or compliance-driven separation where a tier model is insufficient.

  • Use it for sensitive tiers: DB clusters, management interfaces, jump hosts, and privileged APIs.
  • Keep the audit trail: microsegmentation rules should be explainable; “tag‑based deny” is good, “mystery allow” is not.
  • Don’t fight the app: if the app uses dynamic ephemeral ports, model that explicitly or place a service insertion boundary.

5) External connectivity (L3Out): where most real outages start

Most ACI outages that feel “mysterious” happen at the edge of the fabric: L3Out design, route advertisement, and policy between internal EPGs and external networks. The fabric can be stable while the perimeter behaves unpredictably.

Treat L3Out like a product surface. Define: which VRF owns external routing, which prefixes you import/export, what summarization you enforce, and what route policy prevents accidental transit. Then make that policy measurable: track route counts, churn rates, and the impact of upstream changes.

BGP often becomes the natural external protocol because it gives you clear policy controls and well-understood failure modes. OSPF can work, especially in enterprise environments, but BGP scales better in multi-domain designs and makes prefix filtering more explicit. Regardless of protocol, the rule is the same: do not leak routes you do not mean to leak.

  • Import policy: filter aggressively; do not import the universe because “it’s easier.”
  • Export policy: advertise only what the outside needs; prefer summaries when possible.
  • Default routes: treat default as a deliberate decision; if you inject it, guard it with tracking and failover logic.
  • Asymmetry planning: stateful firewalls and NAT devices care about symmetry; design routing to respect that.

6) L4–L7 service insertion: make the hairpin explicit

ACI makes service insertion appealing because it can steer traffic through firewalls or load balancers based on policy rather than cabling. The risk is that service graphs can create unintended hairpins, asymmetric flows, or “it works until failover” scenarios.

Deterministic service insertion requires you to decide where the service boundary lives. You either place the service inline between EPGs (strict choke point) or you use policy-based redirect (PBR) to steer selected traffic. Both work. The key is to document it as part of the application architecture: which flows hit the firewall, which flows bypass it, and what happens during a node failure.

  • Make direction explicit: define client→server vs server→client behavior; avoid designs that rely on implicit symmetry.
  • Validate failover: test service insertion under node failure and under routing changes; many issues only show up during convergence.
  • Keep graphs small: long service chains multiply failure modes; prefer simple, composable insertion points.
  • Measure outcomes: instrument the service path; if the firewall drops or adds latency, the fabric should show it quickly.

7) Multi-site and DR: design failure domains, not stretched hope

Multi-site ACI succeeds when you treat it as a failure-domain problem, not as a stretching exercise. The goal is consistent policy with controlled reachability, not “everything is everywhere.” Determinism requires you to decide what is global (policy objects, identity, shared services) and what remains local (endpoint learning, fault domains, and site-specific external routing).

A healthy multi-site strategy starts with a few clear questions: Do you stretch L2, or keep L2 local and use L3 for site-to-site reachability? Where do you place default gateways? How do you prevent a site failure from causing a routing storm? Which applications truly need active-active?

  • Prefer L3 between sites: it reduces flood domains and makes failure behavior more predictable.
  • Keep endpoints local when possible: stretching endpoint learning increases blast radius and troubleshooting complexity.
  • Define DR modes per app: active-active is not a default; choose active-standby when it simplifies state and security.
  • Make egress consistent: decide whether traffic exits locally or via a preferred site; keep security policy aligned with that choice.

8) Operations: policy as code and safe change pipelines

ACI is policy-driven, but it is not automatically safe. Centralized policy amplifies both good and bad changes. A single mis-scoped contract can open a hole across the fabric. A single L3Out change can withdraw reachability from multiple tiers. Deterministic operations require a change pipeline.

Treat ACI objects as versioned artifacts. Export configurations, keep a source-of-truth for tenants/VRFs/EPGs/contracts, and apply changes via reviewed templates where possible. Even a lightweight workflow—design review, staged deployment, post-change validation—reduces incident rates dramatically.

  • Staging: apply risky changes to a canary tenant or non-production site first.
  • Pre-change validation: check that new contracts do not over-permit; check that L3Out policy does not leak routes.
  • Post-change verification: validate endpoint reachability, contract hits, and external route tables.
  • Rollback readiness: know what “undo” looks like before you apply the change.

9) Troubleshooting: start from intent, then prove with evidence

Troubleshooting in ACI is fast when you start from intent. Ask: which EPGs should communicate, which contract should permit it, and which external boundary should carry it. Then prove each step with evidence: endpoint learning, contract counters or hits, routing tables, and external advertisements.

A useful troubleshooting structure mirrors the determinism goals: (1) segmentation correctness (EPG/contract), (2) forwarding correctness (BD/VRF/L3Out), (3) service insertion correctness (graphs/PBR), and (4) failure-mode correctness (what changed, what failed, what converged). This keeps teams from chasing symptoms like “the firewall looks busy” when the real issue is a route import mistake.

11) Policy resolution mechanics: why “it should allow” sometimes still denies

ACI feels magical until a flow disappears. Then you discover that “contract exists” is not the same as “contract applies.” Deterministic design treats policy resolution as a predictable algorithm, not as a guess.

At a high level, ACI applies these ideas:

  • EPG membership is the starting point: if the endpoint lands in the wrong EPG, every downstream policy decision becomes wrong. Make EPG membership deterministic by using consistent VLAN bindings, VMM integration rules, and naming conventions that match workload intent.
  • Contracts govern inter-EPG traffic: contracts act like allow-lists between groups. Filters define L4/L7 attributes (protocol/ports), and subjects bind filters to contract intent.
  • Intra-EPG behavior is separate: many teams assume “same EPG = allowed.” You can choose that, but you should choose it explicitly. If you require stricter east-west control within a tier, use microsegmentation or split tiers into multiple EPGs.
  • Scope influences reach: contract scope defines where policy applies (for example, within a VRF, within a tenant, or globally). Over-broad scope becomes a security risk; over-narrow scope becomes an availability risk if the app crosses boundaries.

Make these choices visible. Document them per tenant and treat them as architectural constraints. When a new application arrives, you avoid accidental design drift because the policy model is already clear.

12) Bridge Domains and subnets: the hidden levers of stability

Engineers often focus on EPGs and contracts and forget that Bridge Domains and subnets define key forwarding behaviors: gateway placement, ARP/ND behavior, unknown traffic handling, and where L2 boundaries really end. A BD design that looks “fine” in a lab can create unpredictable flooding or endpoint learning behavior at scale.

  • Unknown unicast and flooding: if the BD allows broad flooding, one misbehaving endpoint can create noisy churn that looks like a fabric problem. Prefer designs that keep flood domains small, and use control-plane learning mechanisms where available.
  • Subnets and default gateways: subnets define where the default gateway lives. Place them intentionally. If you move gateways between BDs or VRFs, treat it as a migration with explicit cutover steps.
  • Endpoint learning stability: endpoint move events happen in real environments (VM churn, container churn, host NIC changes). Keep BD and EPG design stable so moves remain local events, not fabric-wide storms.

Think of BDs as “forwarding containers” that must remain boring. When BDs behave predictably, the rest of your policy model becomes easier to trust.

13) L3Out design patterns: predictable routing without accidental transit

L3Out is where ACI meets the rest of the world: upstream routers, firewalls, WAN edge, and cloud gateways. Most “surprise outages” show up here because external routing changes faster than internal policy teams expect.

A deterministic L3Out pattern includes:

  • Clear ownership: one VRF owns external routing for a given security domain. If multiple VRFs require egress, define whether they share an L3Out (with policy controls) or use separate L3Outs per domain.
  • Route control as a contract: treat import/export rules like security policy. Summarize where possible, filter aggressively, and avoid importing default routes “just because.”
  • Symmetry for stateful services: firewalls and NAT devices punish asymmetry. If the design requires stateful inspection, pin egress points and avoid per-site randomness in the path selection.
  • Failure-mode predictability: define what happens if an upstream peer fails. Do you withdraw default? Do you prefer an alternate? Do you keep local-only routes stable? These should be written as explicit requirements.

If you treat L3Out policy as an afterthought, it becomes the single biggest threat to fabric determinism.

14) Service insertion without surprises: validate direction, symmetry, and failure

Service graphs and policy-based redirect make ACI powerful, but they also make it easy to create a flow that works only in one direction or only in steady state. Deterministic insertion starts with a strict rule: document the path and test the failure.

  • Direction matters: client→server and server→client may traverse different nodes if you do not pin them. Make that pinning explicit when stateful inspection exists.
  • Hairpins are not always bad: hairpinning becomes bad when it is accidental. If you need centralized inspection, design for the extra latency and capacity and monitor it.
  • Failover is a feature: test node failure, link failure, and routing change while the service is active. Many “works in lab” designs fail only when the first maintenance window hits production.

When you measure service-path latency and drop behavior, you can treat service insertion as a product with predictable outcomes.

15) Multi-site resilience: policy consistency with controlled blast radius

A multi-site ACI strategy succeeds when you define which things stay global and which things stay local. “Global everything” expands blast radius; “local everything” defeats the purpose of consistent policy.

A practical pattern looks like this:

  • Global policy objects: tenants, VRFs, EPG naming conventions, contract models, and shared-services patterns remain consistent across sites.
  • Local forwarding realities: endpoint learning, local failure detection, and site-specific external routing remain local. When a site fails, other sites should not thrash their forwarding state.
  • L3 between sites by default: keep L2 stretch as the exception, not the default. L3 reduces flood domains and makes failover behavior more predictable.
  • DR modes per application: choose active-active only when the application supports it. Otherwise, treat DR as a controlled cutover with rehearsed runbooks.

This model keeps policy predictable while keeping failures contained.

16) Policy-as-code workflow for ACI: how to avoid “UI drift”

Central controllers tempt teams into manual UI changes because it feels fast. At scale, that becomes drift: two operators make similar changes in different ways, and the fabric becomes inconsistent. A policy-as-code approach does not require heavy tooling; it requires discipline.

  • Source of truth: maintain a canonical representation of tenants, EPGs, contracts, and L3Out intent. Even if the canonical form is exported config + documented templates, it is better than “whatever is in the UI.”
  • Review gates: treat security-affecting changes (contracts, scopes, route policy, service insertion) as reviewed items. Use naming conventions that force clarity.
  • Staged rollout: apply changes first to non-production or to a canary tenant, then to production. Validate endpoints, contracts, and routing after each stage.
  • Automated verification: define a small set of post-change checks (expected route counts, expected contract hits, expected endpoint states) and run them every time.

When you do this consistently, ACI becomes safer precisely because it is centralized.

17) Quick architecture checklist: is your ACI design deterministic?

  • EPG model: do EPGs represent real trust boundaries and tiers, or are they accidental groupings?
  • Contract model: do contracts read like interfaces (allow-lists), and are scopes deliberate?
  • BD/VRF: are BDs boring and bounded, and do VRFs map cleanly to routing domains?
  • L3Out: do you control import/export with explicit intent and avoid accidental transit?
  • Service insertion: is direction/symmetry documented and tested under failure?
  • Multi-site: do you keep endpoint learning local and policy consistent, with L3 between sites by default?
  • Operations: do you have staged change and rollback practices, or do you rely on “UI edits and hope”?

If you can answer these with confidence and evidence, you are operating ACI as an intent-based fabric rather than as a GUI for VLANs.

10) The practical takeaway

ACI delivers strong outcomes when you treat policy as the control plane, not as decoration. Deterministic segmentation comes from clean EPG models and disciplined contracts. Deterministic forwarding comes from explicit L3Out design and clear route policy. Deterministic security comes from intentional service insertion and measurable enforcement. Deterministic operations come from treating policy changes as reviewed artifacts with verification and rollback.

If you build ACI this way, you get what SDN promised: fewer “snowflake ports”, fewer accidental cross-talk events, faster change delivery, and a fabric that remains understandable even as it scales.


 

Eduardo Wnorowski is a systems architect, technologist, and Director. With over 30 years of experience in IT and consulting, he helps organizations maintain stable and secure environments through proactive auditing, optimization, and strategic guidance.
LinkedIn Profile

Thursday, May 2, 2024

Architecting Multi-Segment Network Overlays: Design Strategies for Scale and Isolation

May, 2024 — 6 min read

Introduction

Network overlays define boundaries, enforce isolation, and connect logical entities in ways that physical infrastructure cannot. In May 2024, I build overlays to support segmentation, multi-tenancy, and workload portability across regions and clouds. I treat the network as programmable infrastructure with explicit architectural goals—not just address space stitching.

I favor intentional overlay designs that map to fault domains, compliance zones, or control surfaces. I model overlays as graphs with edge policies, observability anchors, and convergence timers. Each overlay exists to enforce a boundary: performance, trust, availability, or cost. Without structure, overlays devolve into flat fabrics where problems propagate silently.

Overlay Fundamentals

An overlay abstracts IP connectivity away from the physical network. I use overlays to route traffic across segments, span clouds, and enforce policies independent of L2/L3 topology. VXLAN, Geneve, GRE, IPSec, and WireGuard form the basis—but architecture determines how these tunnels compose.

I model overlays in layers. Inner overlays enforce service mesh segmentation (e.g., SNI-based routing or identity-based ACLs). Outer overlays provide transport encryption, route isolation, or multi-region HA. This layered model allows per-tenant overlays inside per-zone overlays inside global peering overlays. It’s complexity with purpose—not for its own sake.

Segment Design and Fault Domains

I segment overlays along failure boundaries. I define overlay segments by zone, region, and tenant class. I ensure that fault isolation in the underlay (like a zone outage or a transpacific link degradation) maps cleanly to overlay boundaries. I configure control-plane propagation timers and route dampening to prevent flapping across fault domains.

Each segment includes a gateway role—a concentrator node, tunnel endpoint, or NAT proxy—that handles route reflection and policy injection. I automate these roles using labels and health-aware routing. When a segment becomes degraded, I cordon it from the rest of the mesh and redirect flows through alternate paths. Segments fail fast, recover slow, and avoid dragging down global stability.

Tenant Isolation in Shared Overlays

In multi-tenant systems, I separate tenants by tags, not just VLANs. I apply per-tenant route filters, policy sets, and traffic classes. I use BGP communities or SDN policies to mark flows for QoS enforcement. I limit east-west visibility between tenants—even if their workloads share a subnet or region.

I don’t rely solely on IP addresses for segmentation. Identity-based networking becomes critical. I issue workload certificates, enforce mTLS on all internal hops, and verify identities at each layer. When tenant workloads misbehave, I rate-limit them at the overlay edge, not just at the app ingress.

Overlay Routing and Convergence

Overlay networks need routing—but not always full mesh. I avoid building all-to-all connectivity unless absolutely required. I use hub-and-spoke or partial mesh topologies based on application needs. Routing updates propagate through overlay control planes, often driven by SDN controllers or policy agents.

I tune convergence timers explicitly. Too fast and I amplify transient flaps. Too slow and failover lags. I track route churn and propagation delay as first-class SLOs. I use distributed tracing to correlate path changes with latency shifts. Every routing event is a system event—it must be observable.

Peering Across Clouds and Regions

When overlays span clouds, I don’t assume homogeneous primitives. AWS, Azure, and GCP support VPC peering, transit gateways, and private interconnects—but each with quirks. I build an abstraction layer that manages tunnel lifecycles, IPAM, MTU negotiation, and health probing across providers.

Cross-region overlays require bandwidth and cost awareness. I tag flows by class and direction to enforce replication boundaries. I encrypt all interconnect traffic, rotate keys quarterly, and log every tunnel establishment with tenant and region context. I rehearse cloud-to-cloud isolation failure and observe how overlays recover under reduced availability.

Observability in Overlays

I treat overlays as first-class networks. I monitor tunnel up/down status, latency, packet loss, jitter, MTU mismatch, and control plane message queues. I annotate all flows with overlay ID, segment, and tenant. I export metrics to per-overlay dashboards with drilldowns by region, service, and role.

I use synthetic traffic to measure overlay health. I inject probes across segments and correlate with end-user traffic. When overlays degrade, I trace impacts to flow re-routing, latency spikes, or control-plane stalls. I record overlay behavior during incidents and include segment health in every postmortem.

Security Boundaries and Crypto Hygiene

Overlays extend the trust boundary of your infrastructure. I enforce mutual TLS across all overlay links. I rotate tunnel keys every 30–90 days and isolate control-plane credentials from data-plane identities. I run access reviews quarterly and remove stale mesh participants aggressively.

I audit encryption at rest and in transit across overlays. I validate that cross-tenant and cross-region paths remain logically segmented. I simulate compromised endpoints and observe lateral movement paths. Every overlay segment must prove its isolation assumptions during red team exercises—not just in design docs.

Conclusion

Overlay networks enable architectural flexibility—but only when built with discipline. I model overlays by failure domains, trust boundaries, and propagation scope. I make routing behavior observable and recovery predictable. I treat overlays not as afterthoughts, but as programmable fabrics that enforce the architecture I intend to deliver.

Performance Optimization and MTU Strategy

I tune overlays for throughput, not just connectivity. MTU mismatches between overlay and underlay cause fragmentation, latency spikes, and dropped packets. I validate MTU end-to-end before scaling deployments. I pad test packets with headers that match real production traffic to detect fragmentation behavior in advance.

I set explicit MTU values on tunnels like VXLAN and WireGuard and ensure jumbo frame support is consistent across segments. When jumbo frames aren’t available, I apply compression selectively or tune chunk sizes to fit under 1400 bytes. I surface per-link throughput and retransmission metrics on overlay dashboards and tune congestion windows accordingly.

Overlay Lifecycle and Governance

Overlays proliferate. I manage them like services—with owners, lifecycle rules, and expiration criteria. I tag each overlay with purpose, scope, and cost center. I track creation time, last validation event, and health over time. I decommission stale overlays as aggressively as I retire unused subnets or unused Kubernetes namespaces.

Overlay governance matters. I enforce limits on peer count, route complexity, and propagation delay. I audit overlay definitions monthly and prune orphaned segments or unauthorized participants. I publish overlay inventories with visualizations that show dependency graphs, control plane propagation times, and tenant usage. Without governance, overlays become invisible technical debt.



Saturday, July 20, 2013

SDN Deep Dive Series – Part 2: Use Cases, Deployment, and Integration

July 2013   |   Reading Time: 12 minutes

In Part 1 of our Software Defined Networking (SDN) deep dive, we dissected the fundamentals and explored the architectural principles. Today, we explore practical SDN use cases, deployment realities, and integration with existing infrastructure.

Why SDN Matters Now

SDN enables unprecedented network agility, allowing administrators to reprogram data flows in real time. This flexibility is pivotal in data centers, service provider backbones, and enterprise WANs where dynamic traffic behavior demands rapid adjustment.

Use Case 1: Multi-Tenant Data Centers

Data center operators hosting cloud environments must ensure traffic segmentation, tenant isolation, and scalable routing. Traditional VLAN-based segmentation runs into scalability limits. SDN introduces programmatic overlay networks using tunneling protocols like VXLAN and NVGRE.

  • Dynamic path computation using traffic policies
  • Automated provisioning and teardown of tenant networks
  • Improved visibility and security posturing

Use Case 2: Campus Networks

Enterprise campuses struggle with consistent policy enforcement across switches. SDN centralizes access control policies, allowing intent-driven networking where administrators define what should happen, not how to configure individual devices.

Use Case 3: WAN Optimization and Path Control

Branch connectivity often relies on MPLS or IPsec tunnels. SDN can dynamically reroute traffic based on cost, link quality, or congestion. By abstracting path decisions from hardware, operators gain control over application flows in hybrid WANs.

Integrating SDN into Existing Networks

Most organizations won’t rip and replace legacy infrastructure. SDN must interoperate with existing routing protocols, physical switches, and firewalls. This integration requires hybrid models:

  • Overlay SDN: Using tunnels over IP to create virtual topologies
  • Hybrid SDN: Coexistence of OpenFlow-controlled and traditional devices
  • Service Chaining: Routing traffic through firewalls, IDS/IPS using SDN paths

Deployment Challenges

Despite the promise, SDN deployment faces practical hurdles in 2013:

  • Controller Selection: No single OpenFlow controller has emerged as a clear winner
  • Interoperability: Varying vendor support and OpenFlow versions hinder standardization
  • Skill Gap: Network engineers must acquire programming and API knowledge
  • Security: Centralized control plane creates new threat vectors

Tooling and Ecosystem Maturity

The SDN ecosystem is rapidly evolving. Notable players include:

  • Floodlight: An open-source Java-based OpenFlow controller
  • NOX and POX: Research-oriented Python frameworks
  • Mininet: A powerful network emulator used for prototyping SDN topologies

Vendors like Cisco, HP, NEC, and Big Switch Networks offer hybrid switches and platforms, though interoperability varies widely.

Planning for SDN Adoption

Successful SDN adoption requires a phased approach:

  1. Define target outcomes (e.g., improved visibility, traffic steering)
  2. Select pilot environments (e.g., lab, edge switches, or isolated VLANs)
  3. Train engineering teams on OpenFlow, controller APIs, and automation tools
  4. Evaluate vendor support for hybrid SDN integration

Conclusion

SDN is no longer theoretical—it is evolving into a deployable technology. By aligning SDN use cases with real network needs, organizations can deploy incrementally while reducing operational complexity and improving responsiveness.



Eduardo Wnorowski
With over 18 years of experience in IT and consulting, he helps businesses simplify network complexity while improving visibility and control.
linkedin.com/i        n/eawnorowski

Network Reliability Engineering: Turning Modern Network Operations into a Discipline Network Reliability Engineering: Turning ...