Home / Services / Cloud-Native Networking
🌐 Cloud-Native Networking Architecture Portal

Enterprise Cloud-Native Networking Architecture for OpenShift & KubeVirt

Design, implement, and optimize production-grade networking for OpenShift, Kubernetes, and OpenShift Virtualization. Linux Bridge, OVN-Kubernetes, Localnet, SR-IOV, UDN, CUDN, and macvlan — explained the way packets actually move.

7Network Types Covered
25+Architecture Diagrams
12Packet Walk Deep Dives
1Question We Always Answer: How Does the Packet Move?
Section 01

Why Cloud-Native Networking Is Difficult

Every layer you add compounds the complexity of the one below it. This is the journey most infrastructure teams walk without realising it.

Traditional networking assumed something simple: a workload has one IP, lives on one VLAN, and stays on one host for its lifetime. Kubernetes broke every one of those assumptions. Containers move between nodes. Services are virtual IPs that don't exist on any wire. Then OpenShift Virtualization added a fourth assumption-breaker: VMs that expect the exact opposite — a stable IP, L2 adjacency, and the ability to migrate live without dropping a single packet.

Traditional
Networking
Containers
(CNI)
VMs
(KubeVirt)
Multi-Network
(Multus)
Hybrid
Pod + VM
Overlay
(Geneve)
Physical
VLAN
Performance
(SR-IOV)

Each stage in that chain solves the problem before it and introduces a new one. Overlays solve mobility but add encapsulation overhead. Physical VLANs solve performance but reintroduce the exact tenant-isolation problem overlays were built to fix. SR-IOV solves latency but breaks live migration unless VF mapping is planned around it from day one. There is no single "best" network type — there is only the right network type for the specific workload, and getting that decision wrong is the single most common cause of production networking incidents in OpenShift Virtualization environments.

This page exists to make that decision correctly, the first time — and to show you, at the packet level, exactly what each option actually does.

Section 02

Our Networking Portfolio

Six network types. Every one battle-tested in production OpenShift Virtualization environments.

Section 03

Architecture Selection Matrix

Eleven criteria, six network types, one interactive table. This alone answers most networking design questions for OpenShift Virtualization.

Highlight:
UDN L2overlay
UDN L3routed
CUDNlocalnet
Linuxbridge
SR-IOVpassthrough
macvlanvirtual NIC
Layer model
L2 overlay
L3 routed
L2 → VLAN
L2 bridge
L2 hardware
L2 vNIC
VM support
Yes
No — pods only
Yes
Yes
Yes
Yes w/ caveats
Pod support
Yes
Yes
Yes
Yes
Yes
Yes
Overlay / Geneve
Yes
Yes
No — localnet
No
No
No
Tenant isolation
Strong (UDN)
Strong (UDN)
Strong + VLAN
None
None
None
NetworkPolicy / ACLs
Yes
Yes
Yes
No
No
No
L2 adjacency across nodes
Yes
No
Yes — via VLAN
Yes — via VLAN
Yes — via VLAN
Limited broadcast
Broadcast (ARP/DHCP)
Yes
No
From physical
Yes
Yes
Limited siblings
Performance
Medium — OVS + Geneve
Medium — OVS + Geneve
Low–medium
Low — bridge + NIC
Very low — near wire
Low
Live migration
Good — overlay
Not for VMs
Good — OVN-aware
Good — bridge
Complex — VF mapping
Poor — host-bound
Multus needed
No
No
Yes
Yes
Yes
Yes
Best use case
Tenant VMs, mixed pods
Scalable pod networks
VMs needing VLAN + policy
Legacy VM migration
Telco UPF, NFV, HPC
Simple L2 attachment
Yes / supported No / not applicable Partial / caveats Best performance

Not sure which network type fits your platform? We can help evaluate requirements and produce a reference design tailored to your environment.

Interactive

Click the Packet's Path

This is the question every section on this page answers. Click each hop to see what actually happens there — using the CUDN Localnet path as the example.

tap0 — VM NIC
Linux Bridge (br1)
veth pair
OVS br-int
OVN Logical Switch (localnet)
OVS br-ex
Physical NIC
Physical Switch (VLAN)
tap0 — VM NIC

The kernel TAP device is the virtual cable connecting QEMU to the host's network stack. The VM's guest OS sees this as a normal Ethernet interface — it has no idea what happens after this hop.

Section 04 · Deep Dive
🔗

Linux Bridge

📖 14 min read 🎥 Video available 📄 PDF available Best for: Legacy VM migration

Linux Bridge is the network type most infrastructure teams reach for first when migrating VMs off VMware or RHV — and for good reason. It behaves exactly like a physical switch: a kernel bridge device (br1, commonly named br-provider) sits inside the pod network namespace, the VM's TAP device plugs into it, and a veth pair crosses into the host namespace where the bridge is enslaved to a physical or bonded NIC. There is no overlay, no OVN logical switch, no Geneve encapsulation — just a flat L2 segment exactly like the one the VM used to live on.

This is precisely why it's the right first choice for lift-and-shift migrations: the VM's guest OS doesn't need to know anything changed. ARP broadcasts, GARP-based failover, and live migration all work exactly as they did on the old platform, because the underlying L2 semantics are identical.

The Packet Walk

Outbound traffic from the VM follows a fixed hop sequence: VM eth0 → tap0 → Linux Bridge (br1, inside virt-launcher pod) → veth pair → host network namespace → host NIC (ethX/bond0, possibly VLAN-tagged) → physical switch → datacenter network. Every hop is a real, inspectable Linux networking primitive — you can run brctl show or bridge link directly on the node and see the exact same topology described here.

Best Practices

✅ Do
  • Use a dedicated NetworkAttachmentDefinition per bridge to keep VLAN tagging explicit
  • Pin bridge MTU to match the physical switch trunk configuration
  • Document which physical NIC each br-provider bridge maps to per node
❌ Common Mistakes
  • Forgetting NetworkPolicy doesn't apply — Linux Bridge traffic bypasses OVN entirely
  • Mismatched VLAN tagging between nodes causing intermittent VM connectivity
  • Assuming live migration "just works" without validating bridge naming consistency across nodes

Troubleshooting

The most common Linux Bridge issue in production is a VM that can reach some hosts on the VLAN but not others. This is almost always a bridge/NIC naming mismatch between nodes — check that the NodeNetworkConfigurationPolicy (NNCP) that creates the bridge maps to the identical physical interface on every node in the pool, not just the one it was tested on.

Linux Bridge and network path comparison for KubeVirt
All 5 KubeVirt network paths — Linux Bridge highlighted (column 3)
Section 05 · Deep Dive
🌐

OVN-Kubernetes

📖 22 min read 🎥 Video available 📄 PDF available Best for: Default cluster networking, tenant isolation

OVN-Kubernetes is the network controller — not the network engine. That distinction matters more than almost anything else on this page. OVN is Open Virtual Network, an SDN platform that provides logical switches, logical routers, ACLs, NAT, DHCP, and distributed routing as primitives. OVN-Kubernetes is the Kubernetes CNI that automatically translates Kubernetes objects — Pods, Services, Namespaces, NetworkPolicies — into those OVN primitives, without any manual ovn-nbctl commands.

The translation chain is the single most useful mental model for troubleshooting: Kubernetes Object → OVN-Kubernetes Controller → OVN Logical Object → OVS Flow → Packet Forwarding. Once you can trace any Kubernetes object down that chain, you can debug almost any OVN-Kubernetes issue from first principles instead of guessing.

Distributed Routing & The Join Switch

Unlike a traditional network with a central router, OVN's ovn_cluster_router is logically one router but runs locally on every node. When Pod A on Node 1 talks to Pod B on Node 2, the routing decision happens entirely on Node 1 — the packet is routed across a hidden internal L2 segment called the join switch, which triggers Geneve encapsulation, then decapsulates and delivers on Node 2. No central bottleneck, no single point of failure.

EgressIP & BGP

EgressIP is implemented as router policy, not NAT at the source. A priority-100 logical router policy reroutes matching pod traffic to a designated egress node's join-switch IP; the actual SNAT happens on that node's gateway router (GR_<node>). For clusters exposing pod/VM networks directly to a physical fabric, BGP integration via FRRouting lets OVN-Kubernetes advertise pod CIDRs and EgressIPs to a provider router — the foundation for eventual no-overlay, EVPN-based deployments.

Best Practices

✅ Do
  • Use allow-related ACLs for NetworkPolicy so return traffic is automatically permitted via connection tracking
  • Design EgressIP pools with at least two nodes for ECMP failover
  • Monitor Southbound DB size on very large clusters — it stores full operational state
❌ Common Mistakes
  • Assuming EgressIP does SNAT on the source node — it doesn't, SNAT happens on the egress node
  • Confusing the Northbound DB (intent) with the Southbound DB (operational state) when debugging
  • Not accounting for Geneve encapsulation overhead in MTU planning
OVN vs OVN-Kubernetes translation chain
OVN (engine) vs OVN-Kubernetes (controller) — the translation chain
OVN distributed routing and join switch topology
Distributed routing via the hidden join switch

OVN Object Model

Six primitives compose every OVN topology: Logical Switch (L2 broadcast domain), Logical Router (distributed L3), ACL (stateful firewall), NAT (SNAT/DNAT/floating IP), Load Balancer (connection-tracked VIP→backend), and DHCP options (answered locally by OVS, no server process). Every Kubernetes object you create maps to one or more of these.

Section 06 · Deep Dive
🔌

CUDN Localnet

📖 16 min read 🎥 Video available 📄 PDF available Best for: VMs needing real VLAN + OVN policy

Localnet is the hybrid answer to a question every OpenShift Virtualization migration eventually asks: "Can I keep my existing physical VLANs but still get NetworkPolicy?" A Localnet port on an OVN logical switch does exactly this — traffic still enters OVS br-int and gets full ACL/NetworkPolicy treatment, but instead of Geneve-encapsulating to another node, it exits directly onto a physical VLAN via br-ex and the physical NIC.

This is the network type most enterprises land on for VM workloads that need to be reachable from existing datacenter infrastructure using their own IPs — no NAT, no overlay, but still governed by Kubernetes-native policy.

Outbound Packet Flow

Confirmed hop-by-hop from production testing: VM eth0 → tap0 → Linux Bridge (inside virt-launcher pod) → veth pair → OVS br-int → OVN Logical Switch (localnet port, VLAN 200 tagged) → OVS br-ex → physical NIC (ens5f0) → physical switch (VLAN 200 access/trunk). Return traffic reverses the exact same path: the physical switch delivers the VLAN-tagged frame to the NIC, br-ex receives it, br-int strips the VLAN tag and applies OVN metadata, and the localnet port forwards it to the destination veth.

Best Practices

✅ Do
  • Confirm the physical switch port is configured for the exact VLAN the localnet NAD specifies
  • Use NetworkPolicy from day one — it works here unlike Linux Bridge
  • Keep localnet NAD names consistent across environments for GitOps portability
❌ Common Mistakes
  • Forgetting that Localnet has no overlay — MTU must match the physical network exactly
  • Assuming Localnet works identically across all nodes without verifying uplink NIC naming
OVN to physical Linux network handoff
How OVN hands off to br-ex and the physical NIC
Section 07 · Deep Dive
🧩

User Defined Networks (UDN)

📖 15 min read 🎥 Video available Best for: Per-namespace tenant isolation

A User Defined Network creates an entirely isolated OVN topology — its own logical switch, its own segment of the cluster router — scoped to a single namespace. UDNs come in two flavors: L2, which spans all nodes as one flat overlay broadcast domain (required for VM live migration and GARP-based failover), and L3, which gives each node its own subnet behind a router hop (fine for stateless pods, wrong for VMs that migrate).

The distinction matters enormously for OpenShift Virtualization: choosing UDN L3 for a VM workload silently breaks live migration and GARP-based IP takeover, because the VM's IP would need to change subnets when it moves between nodes.

Best Practices

✅ Do
  • Always choose UDN L2 for any namespace hosting VMs
  • Use UDN L3 only for pure pod workloads that don't need L2 broadcast semantics
❌ Common Mistakes
  • Defaulting to L3 for "better scalability" without checking if VMs are present
  • Assuming UDN isolation extends to Localnet-attached interfaces — it doesn't by default
UDN and CUDN isolated topology
UDN-1 and UDN-2 as fully isolated OVN topologies off the cluster router
Section 08 · Deep Dive
🏢

Cluster User Defined Networks (CUDN)

📖 12 min read Best for: Shared isolation across multiple namespaces

CUDN extends the UDN model from a single namespace to a set of namespaces sharing one isolated OVN topology — useful when several teams' namespaces should be network-isolated from the rest of the cluster but still able to reach each other directly, such as a shared services tier or a multi-tenant application platform where "tenant" means a group of namespaces, not just one.

CUDN Localnet (covered in Section 06) is the specific CUDN variant that bridges this isolated topology to a physical VLAN — the combination that most enterprise VM migrations actually deploy in production.

Kubernetes to OVN object mapping table
Kubernetes object → OVN-Kubernetes → OVN object translation
Section 09 · Deep Dive

SR-IOV

📖 13 min read 🎥 Video available Best for: Telco, NFV, HPC, latency-sensitive workloads

SR-IOV bypasses the entire software networking stack. A physical NIC (the PF, physical function) exposes multiple lightweight Virtual Functions (VFs), each of which is passed directly into a VM via PCI passthrough. There is no OVS, no bridge, no kernel switching — the VM's guest driver talks almost directly to the NIC hardware. This is the only network type on this page with genuinely near-zero performance overhead, which is exactly why it's the standard for telco UPF and other line-rate workloads.

The tradeoff is total: no OVN, no NetworkPolicy, no tenant isolation, and — critically — complicated live migration, because a VF is tied to a specific physical NIC on a specific node. Migrating a VM with an attached VF requires either detaching and reattaching the VF on the destination node or accepting a connectivity gap.

Best Practices

✅ Do
  • Plan VF pools per node explicitly — don't assume even distribution
  • Pair SR-IOV with a secondary Multus network, not as the primary pod network
❌ Common Mistakes
  • Expecting live migration to work the same as Linux Bridge or OVN — it doesn't without extra tooling
  • Forgetting NetworkPolicy silently does nothing on SR-IOV interfaces
Reference architecture cards
OVN primitives for comparison — SR-IOV uses none of these
Section 10 · Deep Dive
🎯

macvlan

📖 9 min read Best for: Simple L2 attachment, static IP tooling

macvlan creates a virtual interface with its own MAC address directly on top of a physical NIC — lighter weight than a full Linux Bridge, with lower overhead, but with one important limitation: macvlan sub-interfaces on the same physical NIC often cannot communicate with each other directly in bridge mode, and the host itself typically cannot reach macvlan children without a workaround. This makes it a poor fit for anything requiring rich intra-host communication, but a reasonable fit for simple, single-purpose VM or pod attachments that mainly talk outward to the physical network.

Layer stack for comparison
Full stack for reference — macvlan bypasses layers 2–4 entirely
Design Patterns

Production Design Patterns

Real-world deployment shapes, matched to the network type that actually fits — with the trade-offs stated plainly.

🖥️
VM Migration from VMware
Linux Bridge
Guest OS keeps identical L2 semantics — ARP, GARP failover, and live migration behave exactly as before.
Advantages: zero guest reconfiguration.Trade-off: no NetworkPolicy, no tenant isolation.
📡
Bare-Metal NFV
SR-IOV
Direct PCI passthrough eliminates OVS overhead entirely for line-rate packet processing.
Advantages: near-zero latency.Trade-off: live migration requires VF re-attachment planning.
📶
Telco UPF
SR-IOV + DPDK
User Plane Function workloads demand deterministic, hardware-level throughput no software switch can match.
Advantages: telco-grade throughput.Trade-off: highest operational complexity of any pattern here.
🤖
AI / GPU Cluster
SR-IOV or UDN L2
RDMA/RoCE-based GPU fabrics favor SR-IOV; general multi-tenant AI platforms favor UDN L2 for isolation.
Advantages: matches interconnect bandwidth needs.Trade-off: depends heavily on fabric choice — evaluate case by case.
🏢
Enterprise VLAN Extension
CUDN Localnet
Keeps existing physical VLAN segmentation while adding OVN-native NetworkPolicy enforcement.
Advantages: bridges legacy and cloud-native worlds.Trade-off: no overlay means MTU must match physical fabric exactly.
🧩
Multi-Tenant Platform
UDN / CUDN
Per-namespace or per-tenant-group isolated OVN topologies with no cross-tenant L2/L3 reachability by default.
Advantages: strong tenant boundaries out of the box.Trade-off: cross-tenant traffic requires explicit policy design.
🏛️
Traditional Enterprise LAN
Linux Bridge or Localnet
Workloads that must appear directly on an existing flat LAN with minimal architectural change.
Advantages: fastest path to parity with legacy environment.Trade-off: gives up cloud-native policy unless Localnet is chosen.
📍
Edge Cluster
UDN L2 + BGP
Small-footprint clusters benefit from overlay simplicity plus BGP route advertisement back to the WAN edge.
Advantages: simplified day-2 ops at remote sites.Trade-off: BGP peering adds a dependency on the edge router config.

Don't see your deployment shape here? Every pattern above started as a one-hour conversation about actual requirements.

Maturity Model

Architecture Maturity Model

Networking requirements evolve as your platform scales. Here's how the right answer changes at each stage.

STAGE 1
Single Node
Default OVN networking is sufficient. No EgressIP, no BGP, no multi-node routing concerns yet.
STAGE 2
Production Cluster
Distributed routing via the join switch becomes relevant. NetworkPolicy and UDN isolation should be designed in, not bolted on.
STAGE 3
High Availability
EgressIP pools need at least two nodes for ECMP failover. Ingress and egress paths must be validated independently.
STAGE 4
Multi-Site
BGP route advertisement and physical fabric integration (Localnet, SR-IOV) start to matter more than overlay-only designs.
STAGE 5
Edge
Overlay simplicity plus lightweight BGP peering wins over complex SDN stacks at resource-constrained remote sites.
STAGE 6
Enterprise Scale
Mixed network types per workload class become normal — SR-IOV for line-rate, UDN for tenants, Localnet for legacy VLANs, all in one cluster.
Section 11

Decision Tree — Which Network Type Do I Need?

Follow the questions. Every path ends in a concrete recommendation, not a maybe.

Does the workload run VMs?
No — pods only
UDN L3 or Default OVN
Yes — VMs
Need line-rate / lowest latency?
Yes
SR-IOV
No
Migrating from VMware/RHV?
Yes
Linux Bridge
No
Need tenant isolation + physical VLAN?
Yes
CUDN Localnet
No — cloud-native overlay OK
UDN L2

Every branch on this tree represents a real trade-off we've navigated before. We can walk your specific environment through this decision live.

Section 12 · Our Signature

Packet Walk Library

Every networking topic on this page answers one question: how does the packet actually travel? This is the library of every packet walk we've documented.

01
Linux Bridge — VM to Datacenter Network
TAP → br1 → veth → host NIC → physical switch
02
OVN Distributed Routing — Cross-Node Pod Traffic
br-int → cluster router → join switch → Geneve → br-int
03
CUDN Localnet — VM to Physical VLAN (Outbound + Inbound)
TAP → br-int → OVN localnet port → br-ex → NIC → VLAN 200
04
Ingress VIP vs Egress IP — Stateless Communication
Client → Ingress VIP → Router Pods → Service → Egress IP → External
05
EgressIP Router Policy — Priority 100/102 Deep Dive
cluster_router → policy reroute → GR_node → SNAT → br-ex
06
SR-IOV VF Passthrough — Zero-Copy Path
VM → VF (PCI passthrough) → Physical NIC → Switch
Section 14

Download Center

Take the reference material with you.

📄
PDF Guides
All 7 network types
📊
PowerPoint Decks
Architecture briefings
🖼
Architecture PNGs
High-res diagrams
📋
Cheat Sheets
One-page quick refs
Section 15

Frequently Asked Questions

Can I use Linux Bridge and OVN-Kubernetes on the same node?+
Yes. Linux Bridge networks are attached via Multus as secondary interfaces alongside the default OVN-Kubernetes primary network — they coexist per-pod, not per-node.
Does NetworkPolicy work on SR-IOV or Linux Bridge interfaces?+
No. NetworkPolicy is enforced by OVN. Any traffic that bypasses OVN — Linux Bridge, SR-IOV, macvlan — is not covered by NetworkPolicy and needs to be secured at the physical network layer instead.
Why did my VM lose connectivity after live migration on UDN L3?+
UDN L3 gives each node its own subnet. When a VM migrates to a different node, its IP would need to change subnets, which breaks existing connections. Use UDN L2 for any namespace running VMs that may migrate.
What's the actual performance difference between Localnet and SR-IOV?+
Localnet still passes through the full OVS kernel datapath (br-int → br-ex), adding a small but real amount of per-packet processing. SR-IOV bypasses OVS entirely via PCI passthrough, which is why it's the only option with genuinely near-zero overhead — at the cost of losing NetworkPolicy and live migration simplicity.
How do I decide between UDN and CUDN?+
UDN scopes isolation to a single namespace. CUDN extends the same isolated topology across a defined set of namespaces. Choose CUDN when multiple teams' namespaces need to share a network boundary that's still isolated from the rest of the cluster.
"Great cloud-native platforms aren't defined by the technologies they use — they're defined by the quality of the architectural decisions behind them."
Don't memorize technologies. Understand the packet. That's the philosophy behind every page in this Architecture Portal.
Ready to go deeper?

Want to Master All Seven Networking Options?

Every architecture on this page is covered as a full packet-walk deep dive in our guided learning curriculum — six articles, one packet at a time.

Explore Learning Path →
Let's design it right, the first time

Need Help Designing Your Networking Architecture?

One conversation can save months of rework. Bring your current topology — we'll map it against every option on this page.