Featured image

Table of Contents Link to heading

ESXi Networking Architecture Link to heading

ESXi virtualises not just compute and storage but also networking. Every ESXi host has a software-based network switch (a vSwitch) that connects the physical NICs (uplinks) to the virtual machines and the host’s own management plane.

The ESXi network model has three layers:

Physical NICs (vmnic0, vmnic1, ...)
          ↓
Virtual Switch (vSS or vDS)
          ↓
Port Groups
    ├── VM Port Groups → Virtual Machine vNICs
    └── VMkernel Ports → ESXi Host Services (mgmt, vMotion, iSCSI, NFS)

All traffic on the ESXi host — VM-to-VM, VM-to-external, and host management — flows through this model.

Physical Layer: NICs and Uplinks Link to heading

Physical network adapters on an ESXi host are named vmnic0, vmnic1, etc., in order of PCI bus address. They are connected to vSwitches as uplinks.

# List physical NICs and link state
esxcli network nic list

# Check NIC driver and firmware
esxcli network nic get -n vmnic0

Best practices for physical NIC allocation:

  • Use at least two uplinks per vSwitch for redundancy
  • Separate management traffic, VM traffic, vMotion, and storage traffic onto dedicated or isolated uplinks where possible
  • Match NIC speed to the traffic type — 25GbE or higher for vMotion and iSCSI/NFS storage networks

Virtual Standard Switch (vSS) Link to heading

The vSS is created and managed locally on each ESXi host. Its configuration exists only on that host — it is not synchronised with other hosts, which means identical configuration must be applied manually (or via automation) to each host.

# List all vSwitches on the host
esxcli network vswitch standard list

# Create a new vSwitch
esxcli network vswitch standard add --vswitch-name vSwitch1

# Add a physical uplink to the vSwitch
esxcli network vswitch standard uplink add --vswitch-name vSwitch1 --uplink-name vmnic1

# Set the MTU (for jumbo frames: 9000)
esxcli network vswitch standard set --vswitch-name vSwitch1 --mtu 9000

Port Groups on vSS Link to heading

Port groups define the network policies for a set of ports on the vSwitch. VMs or VMkernel adapters connect to port groups, not directly to the vSwitch.

# List port groups
esxcli network vswitch standard portgroup list

# Create a VM port group
esxcli network vswitch standard portgroup add \
  --vswitch-name vSwitch1 \
  --portgroup-name "Production VMs"

# Set VLAN on a port group (VLAN 100)
esxcli network vswitch standard portgroup set \
  --portgroup-name "Production VMs" \
  --vlan-id 100

Three port group types:

  • VM Port Group: Connects virtual machine vNICs to the network
  • VMkernel Port: Connects ESXi host services to the network (management, vMotion, iSCSI, NFS)
  • Uplink Port Group (internal): Connects physical NICs to the vSwitch (not user-configured directly)

NIC Teaming on vSS Link to heading

When multiple uplinks are assigned to a vSwitch, NIC teaming controls how traffic is distributed across them and what happens when a NIC fails.

Load balancing policies:

Policy Description Notes
Route based on originating virtual port Default; each VM port uses a fixed uplink No physical switch changes needed; limited to one uplink per VM
Route based on IP hash Balances based on src/dst IP Requires EtherChannel (LACP) on the physical switch
Route based on source MAC hash Uses source MAC to select uplink
Use explicit failover order Always uses the active adapter; failover only For deterministic traffic paths

Failover detection:

Method How it works
Link status only Detects cable unplugged or switch port down
Beacon probing Sends probes to detect upstream switch failures not visible as link-down

Virtual Distributed Switch (vDS) Link to heading

The vDS is managed centrally from vCenter and spans multiple ESXi hosts. Its configuration is defined once in vCenter and synchronised to all hosts in the cluster. This eliminates the per-host configuration inconsistency risk of vSS.

Note
vDS requires a vSphere Enterprise Plus licence. It is the standard networking architecture for production clusters. vSS remains available for management network connectivity during the boot/initialisation phase or in environments where licensing does not permit vDS.

vDS vs vSS Comparison Link to heading

Feature vSS vDS
Management scope Per-host Cluster-wide (via vCenter)
Configuration consistency Manual per host Centralised
Licence requirement Included Enterprise Plus
Network I/O Control No Yes
Port mirroring (SPAN) No Yes
LACP support Static EtherChannel only Full LACP (active/passive)
Per-port statistics No Yes
Private VLANs No Yes
Traffic shaping Egress only Ingress and egress

Distributed Port Groups Link to heading

Distributed port groups (DPGs) are defined at the vDS level and applied consistently across all hosts. Each DPG has a defined set of policies: VLAN, security, traffic shaping, and teaming.

From vCenter UI: Networking → vDS → New Distributed Port Group

Key DPG settings:

  • Port binding: Static (assigned when VM connects), Dynamic (deprecated), Ephemeral (assigned at power-on)
  • VLAN type: None, VLAN (single tag), VLAN Trunking (pass through 802.1Q tags), Private VLAN
  • Number of ports: Elastic (auto-expand) or fixed

VMkernel Adapters Link to heading

VMkernel ports (vmk interfaces) are the ESXi host’s own network connections. They carry host-generated traffic — not VM traffic.

VMkernel Service Purpose Typical Network
Management SSH, vSphere Client, host configuration Management VLAN
vMotion Live VM migration traffic Dedicated vMotion network
vSAN Hyper-converged storage traffic Dedicated storage network
iSCSI iSCSI storage traffic Dedicated storage network
NFS NFS storage traffic Dedicated storage network
Fault Tolerance (FT) Logging VM fault tolerance sync Dedicated FT network
Provisioning Cold migration, cloning, snapshot transfers Management or dedicated
# List VMkernel adapters
esxcli network ip interface list

# Show IP configuration of VMkernel adapters
esxcli network ip interface ipv4 get

# Create a VMkernel adapter (vMotion example)
esxcli network ip interface add \
  --interface-name vmk1 \
  --portgroup-name "vMotion"

esxcli network ip interface ipv4 set \
  --interface-name vmk1 \
  --type static \
  --ipv4 10.10.2.11 \
  --netmask 255.255.255.0

# Enable vMotion traffic type on vmk1
esxcli vmotion network interface add -i vmk1

# Check which services are enabled on each VMkernel adapter
esxcli network ip interface tag get -i vmk0
Tip
Use dedicated VMkernel adapters and dedicated physical NICs for vMotion and storage traffic in production clusters. Sharing vMotion traffic with VM traffic on the same uplink means that heavy vMotion activity (during host failures triggering DRS) competes with production VM traffic for bandwidth — at exactly the moment when performance is most critical.

VLAN Configuration Link to heading

ESXi supports VLAN tagging in three modes:

Mode VLAN ID Description
No VLAN (EST) 0 No tagging; physical switch handles VLANs (External Switch Tagging)
VLAN (VST) 1–4094 ESXi tags frames with the specified VLAN (Virtual Switch Tagging)
VLAN Trunk (VGT) 4095 Passes 802.1Q tags to VMs; VM handles VLAN tagging

For most VM traffic, use VST (Virtual Switch Tagging):

  • Set the VLAN ID on the port group
  • The physical switch port connecting the ESXi host must be a trunk port
  • VMs require no VLAN awareness; the vSwitch tags and untags frames transparently

For VLAN 4095 (trunk mode): the VM’s OS must handle 802.1Q tagging. Used for network appliances (firewalls, routers) running as VMs that need to process multiple VLANs.

Network I/O Control (NIOC) Link to heading

NIOC (available on vDS) applies QoS to physical uplink bandwidth, preventing any single traffic type from monopolising the shared uplinks.

Traffic is classified into network resource pools:

Resource Pool Default Shares
Virtual Machine 100
vMotion 50
vSAN 100
Management 50
iSCSI 50
NFS 50
Fault Tolerance 50

During congestion, each resource pool is guaranteed at least its share proportion of the uplink bandwidth. VM traffic with 100 shares receives twice the bandwidth guarantee of vMotion with 50 shares.

NIOC also supports per-DPG bandwidth limits and reservations (NIOC v3 in vSphere 6.0+):

Distributed Port Group: Production VMs
  Reservation: 1 Gbps (guaranteed minimum)
  Limit: 5 Gbps (hard cap)
  Shares: 100

Common Network Topologies Link to heading

Two-uplink configuration (standard):

ESXi Host
├── vSwitch0 (Management)
│   ├── vmnic0 (active)
│   ├── vmnic1 (standby)
│   └── vmk0 (Management IP)
└── vDS (VM and VMkernel traffic)
    ├── vmnic2 (active)
    ├── vmnic3 (active)
    ├── vmk1 (vMotion)
    ├── vmk2 (vSAN)
    └── DPG: Production VMs

Four-uplink configuration (recommended for production):

ESXi Host
├── vSwitch0 (Management only)
│   ├── vmnic0 (active)  ← dedicated management uplinks
│   └── vmnic1 (active)
└── vDS (All other traffic)
    ├── vmnic2 (active)  ← dedicated data uplinks
    ├── vmnic3 (active)
    ├── vmk1 (vMotion) — teaming policy: vmnic2 active, vmnic3 active
    ├── vmk2 (vSAN)   — teaming policy: vmnic3 active, vmnic2 standby
    └── DPG: VMs       — teaming policy: load balance across vmnic2/3