BitByteIntegration Cloud-Native Networking Architecture Series Part 2 of 6 — Tracking a Packet Through OVN-Kubernetes
Home / Learning / Networking / OVN-Kubernetes
📘 Cloud-Native Networking Architecture Series · Part 2 of 6

Tracking a Packet Through OVN-Kubernetes

Following an Ethernet frame from a virtual machine, across OVN logical networking, through Geneve tunnels, and onto the physical network.

Reading Time20 min
Architecture LevelIntermediate
AuthorKashif Ali
UpdatedJuly 2026
OpenShiftOVN-KubernetesOpen vSwitchGeneveKubeVirt
Prerequisites
Kubernetes networking basics Read: Tracking a Packet Through the Linux Bridge Basic overlay network concepts
⚡ Quick Facts
Network TypeOVN-Kubernetes (Default)
LayerL2 + Distributed L3
EncapsulationGeneve (UDP 6081)
PerformanceHigh — ~50B overhead/pkt
Live MigrationSupported
Typical UseMulti-tenant, Kubernetes-native

Why This Matters

Why OVN-Kubernetes Exists

Linux Bridge answers a narrow question well: how does a packet cross from a VM to a flat physical VLAN? But it has no answer for a much bigger one — what happens when two workloads that need to talk to each other live on different physical hosts, with no shared L2 segment stretched between them? Linux Bridge can't route across nodes on its own, and stretching VLANs across every rack in a datacenter doesn't scale past a few dozen nodes before spanning-tree and broadcast domains collapse under their own weight.

This is precisely the gap Kubernetes networking was built to close, and why every serious CNI is really a software-defined overlay in disguise. Instead of asking the physical network to understand pods, namespaces, and services, an overlay builds a completely independent logical network on top — one that doesn't care whether the underlying fabric has 3 nodes or 3,000, because every node only needs one thing from the physical network: plain IP reachability to every other node.

In this article, we'll follow the same kind of packet as before — but this time through OVN's logical overlay network, where the physical topology becomes almost irrelevant.


Section 02 · Architecture Overview

The Building Blocks

Before tracing the packet in detail, here's the complete journey at a glance — nine stages, no explanations yet.

VMguest OSvirt-launcherpodOVSbr-intLogical SwitchL2Dist. RouterL3GeneveUDP 6081Remote Nodebr-intGateway RouterexternalPhysical Netunderlay
Diagram 1 — Complete OVN Architecture: VM → virt-launcher → OVS → Logical Switch → Distributed Router → Geneve → Remote Node → Gateway Router → Physical Network
Architecture Note: Nine stages sounds like more than Linux Bridge's seven — because it is. OVN trades simplicity for the ability to route between any two nodes without ever touching physical VLAN configuration.

Section 03 · The Components

Meet the Components

ComponentPurpose
VMGenerates traffic via its guest networking stack
virt-launcherThe pod that hosts the running VM process
OVS (br-int)Virtual switch — applies OpenFlow rules programmed by OVN
Logical SwitchConnects workloads on the same logical L2 segment
Distributed RouterL3 routing between subnets, runs locally on every node
Gateway RouterExternal connectivity — north-south traffic exit point
GeneveOverlay tunnel protocol carrying traffic between nodes
Physical NICSends the encapsulated packet onto the wire
Architecture Note: The Gateway Router deserves its own deep dive — EgressIP, ingress routing, and BGP integration all live there. This article stays focused on the east-west packet journey.

Section 04 · Our Signature

The Packet Walk

Same discipline as the Linux Bridge article — one packet, real IP addresses, every hop named. This time it travels from 10.128.2.15 to 10.128.3.22 on a different node.

VM10.128.2.15virtio-netparavirttap0host handoffbr1virt-launcherbr-intOVSLogical SwitchL2 lookupDist. RouterL3 decisionGeneve EncapUDP:6081ens5f0physical NICUnderlayIP fabric
Diagram 2 — Packet Walk: 10.128.2.15 → 10.128.3.22 across two nodes
1

VM generates frame

Source 10.128.2.15, destination 10.128.3.22 — both cluster-internal IPs. No VLAN involved; the VM's default gateway is the OVN logical router.

2

virtio-net → tap0

The paravirtualized NIC hands the frame to QEMU, which writes it into the TAP device — the same handoff point as Linux Bridge networking.

3

Linux Bridge (br1) → veth

Inside the virt-launcher pod, a small Linux bridge still does the first hop of L2 forwarding before the veth pair crosses into the host namespace.

4

Enter OVS (br-int)

The frame enters the host's Open vSwitch integration bridge, which attaches logical port ID, network segment, and ACL context via OpenFlow rules.

5

OVN Logical Switch lookup

L2 segment processing determines the destination isn't local — it's on a remote node, so the frame routes to the logical router.

6

OVN Distributed Router decision

The distributed router evaluates 10.128.3.22, handles inter-subnet routing, applies SNAT/DNAT if needed, and determines the egress node.

7

Geneve encapsulation

The original frame is wrapped: outer IP (node → node), UDP port 6081, Geneve header carrying the VNI that identifies the logical network.

8

Physical NIC (ens5f0)

The now-encapsulated packet exits the host's physical interface toward the remote node's IP — plain UDP as far as the physical network is concerned.

9

Underlay delivery

The physical switch forwards the UDP packet using ordinary IP routing — it has zero awareness that a VM or Kubernetes is involved.

10

Remote node: Geneve decapsulation

The destination node receives UDP:6081, strips the Geneve header, and recovers the original inner frame.

11

OVS → destination pod

The remote node's br-int delivers the decapsulated frame through the same bridge/veth/tap chain in reverse, straight to the destination VM.

The Journey, Condensed

After eleven detailed steps, here's the same trip on one screen.

VM
OVS
Logical Switch
Logical Router
Geneve
Physical Network
Remote Node
OVS
Destination
Architecture Note: Geneve adds roughly 50 bytes of overhead per packet. If the underlay MTU is 1500, the inner (guest-visible) MTU should be set to 1450 — or enable jumbo frames (MTU 9000) on the underlay to avoid fragmentation entirely.

Section 05

Overlay Networking Explained

An overlay only does real work when the destination is actually on a different node. When two workloads land on the same node, OVN skips the entire Geneve pipeline.

Cross-Node (Geneve required) Pod ANode 1 br-int → GeneveUDP:6081 Pod BNode 2 Same-Node (Geneve bypassed) Pod CNode 3 Pod DNode 3 direct br-int switch Encap + decap overhead, physical NIC used ~50 bytes per packet, traverses underlay fabric No encapsulation, no physical NIC OVS switches directly at br-int
Diagram 6 — East-West Packet Flow: cross-node (Geneve) vs. same-node (direct br-int switching)

This matters architecturally: the overlay isn't a permanent tax on every packet — it's a conditional cost that only applies when a packet genuinely needs to leave the node. Same-node traffic between two VMs, or a VM and a pod, is switched directly inside br-int at native kernel speed.

Architecture Note: No VLAN tagging, no physical switch configuration, no switch awareness of Kubernetes at all. The physical fabric just sees UDP traffic between node IPs — everything else is Geneve metadata.

Section 06

Inside OVN — Who Programs Whom?

You don't need every implementation detail of the control plane to troubleshoot OVN — you need to know the direction data flows. Intent goes in one end, flows come out the other.

Northbound DBDesired state (intent) ovn-northdCompiles intent → flows Southbound DBOperational state ovn-controller (per node)Reads SB DB, programs local OVS ovn-controller (per node)Reads SB DB, programs local OVS Every node runs its own ovn-controller — no central packet-forwarding bottleneck
Diagram 3 — OVN Control Plane: Northbound DB → ovn-northd → Southbound DB → ovn-controller → OVS

The Northbound DB stores desired state — the logical switches, routers, and ACLs that should exist. ovn-northd compiles that intent into logical flows written to the Southbound DB. Each node's ovn-controller reads only the flows relevant to it and programs local OVS — which is why OVN scales without a central packet-forwarding bottleneck.

What's Actually Real Hardware — And What Isn't

This is the single biggest source of confusion when reading OVN diagrams. A "Logical Switch" is a database object, not a device. Here's the mapping every engineer eventually needs:

Logical (OVN concept)Physical (what actually runs)
Logical SwitchOVS Bridge (br-int)
Logical RouterOpenFlow rules + kernel routing
Logical PortsOVS ports / veth interfaces
Logical Switch Port ACLOpenFlow match + action rule
Architecture Note: There is exactly one physical thing on every node: Open vSwitch. Every "Logical Switch" and "Logical Router" you see in a diagram is a row in the Northbound DB that ovn-northd compiles down into OpenFlow rules on that single OVS instance.

Section 07 · Signature Section

Distributed Routing

This is the architectural idea that makes OVN fundamentally different from a traditional network: the logical router isn't a device anywhere — it's one logical object that runs locally, identically, on every node.

Logical Router (ovn_cluster_router)One logical instance, distributed Node 1 br-int + local router instance Pod A — 10.128.2.15 Node 2 br-int + local router instance Pod B — 10.128.3.22 Geneve UDP:6081
Diagram 4 — Distributed Routing: every node owns its own instance of ovn_cluster_router

When Pod A on Node 1 talks to Pod B on Node 2, the routing decision is made entirely on Node 1 — there's no trip to a central router first. This is why the term is distributed: routing logic scales linearly with node count instead of bottlenecking through a single appliance.

The direct consequence: east-west traffic never leaves the cluster's logical network to make a routing decision, even though it does leave the node physically via Geneve. The physical hop and the logical routing decision are two separate concerns, and OVN keeps them that way deliberately.

Architecture Note: Unlike traditional networking, OVN does not rely on a centralized router. Logical routing decisions are distributed across cluster nodes, reducing east-west traffic bottlenecks and removing any single point of failure from the data path.
Architecture Note: The Gateway Router — the component that handles north-south traffic leaving the cluster, EgressIP, and BGP — is a distinct concept from the distributed cluster router covered here, and gets its own dedicated article in this series.

Section 08 · Our Signature

What Actually Hits the Wire

This is the single biggest architectural distinction from the Linux Bridge article. Where Linux Bridge sends a native, unmodified Ethernet frame, OVN wraps the entire original frame inside a new one before it ever reaches the physical NIC.

Outer Ethernetnode → node
Outer IPnode → node
UDPport 6081
Geneve HeaderVNI
Inner Ethernetvm → vm
Inner IP + Payloadoriginal packet
Diagram 5 — Geneve-encapsulated packet structure as it appears on the physical wire

The original VM-to-VM packet — with its own inner Ethernet and IP headers — is fully intact, just wrapped. The physical switch only ever reads the outer headers: a UDP packet between two node IPs. It never decodes, inspects, or even knows about the inner frame.

Architecture Note: Unlike Linux Bridge, OVN encapsulates every cross-node packet before transmission. This is the key architectural distinction between the two network types covered in this series.

Section 09

Design Characteristics

FeatureOVN-Kubernetes
OverlayYes
EncapsulationGeneve (UDP 6081)
RoutingDistributed — runs on every node
Multi-tenancyExcellent — logical isolation per namespace/UDN
Network PolicyNative — enforced via OVN ACLs
PerformanceHigh, with ~50 byte/packet overhead
Live MigrationSupported
Architecture Note: "Excellent multi-tenancy" and "~50 bytes overhead" are two sides of the same trade-off — the encapsulation that costs a small amount of bandwidth is exactly what makes per-tenant logical isolation possible without any physical VLAN provisioning.

Section 10

When Should You Use OVN-Kubernetes?

✅ Good Fit
  • Multi-tenant OpenShift platforms requiring per-tenant network isolation
  • Enterprise application platforms with standard east-west service communication
  • Large clusters with significant east-west traffic between pods and VMs
  • Network-policy-driven environments where security posture is enforced at the platform level
🚫 Less Suitable
  • Ultra-low-latency telecom workloads where encapsulation overhead is unacceptable
  • DPDK / UPF scenarios requiring deterministic, hardware-level packet processing
  • Hardware bypass requirements — anywhere the software switch itself is the bottleneck
Architecture Note: These aren't rejections of OVN — they're recognitions that Localnet and SR-IOV exist specifically to cover the cases where overlay encapsulation is the wrong trade-off. Each gets its own article in this series.

Section 11

Linux Bridge vs. OVN

Linux BridgeOVN
Kernel BridgeOpen vSwitch
Native EthernetGeneve
Physical VLANOverlay
Simple L2SDN

This is a concept comparison only — the full seven-way matrix lives in the Cloud-Native Networking Architecture Portal.


Section 12

Key Takeaways

VM10.128.2.15tap0br1br-intLog. RouterGeneveUDP:6081NICRemote10.128.3.22
Diagram 7 — Packet Path Summary: VM → tap0 → br1 → br-int → Logical Router → Geneve → NIC → Remote Node

Section 13

What's Next

Next in the Series — Part 3 of 6
Tracking a Packet Through Localnet
OVN creates a logical network independent of the physical infrastructure. But what happens when virtual machines must directly participate in existing enterprise VLANs, without overlay encapsulation? In the next article, we'll follow a packet through Localnet networking and explore how OVN bridges logical and physical networks — same control plane, same NetworkPolicy enforcement, zero Geneve.
Read the Next Article