Academy/VMware Avi Load Balancer 30.x Specialist (6V0-22.25)
VCF

VMware Avi Load Balancer 30.x Specialist (6V0-22.25)

VCF 9.0specialist

NSX Advanced Load Balancer (formerly Avi). Controller cluster, Service Engines, virtual services, SSL/TLS, WAF, GSLB, analytics. Replaces legacy NSX LB. 60 questions, 120 minutes.

6V0-22.25
VCP
65
Questions
90m
Duration
70%
Pass Score
49
Objectives

Exam Blueprint Weights

Section titles, groupings and weights below are VCDX Academy study groupings, NOT the official Broadcom blueprint structure. Broadcom publishes no section weights. Always cross-check the official exam guide. Official exam guide ↗
Section 1 — Avi Architecture
~20%
Section 2 — Virtual Service Configuratio
~25%
High Weight
Section 3 — Application Profiles
~20%
Section 4 — Analytics and Troubleshootin
~20%
Section 5 — Operations
~15%

Version Evolution

Avi Load Balancer (NSX Advanced Load Balancer, ALB) was acquired by VMware in 2020 and integrated into VCF as the default load balancer, replacing NSX LB. Evolution: (1) Architecture became modular—separate Controller (control plane, Raft consensus) from Service Engines (data plane, DPDK-based). (2) VCF 9.0 integrates Avi as default; NSX LB deprecated. (3) Service Engine deployment modes evolved: bare metal for 100+ Gbps, VMs for small deployments, Kubernetes pods for cloud-native. (4) HA modes: Active/Active (N+M) for redundancy without manual failover, Active/Standby for legacy setups.
(5) GSLB (Global Server Load Balancing) enables multi-site deployments with DNS steering and active-passive health checking. (6) Certificate management centralized; OCSP stapling and SNI routing supported. (7) Avi Controller cluster sizing critical: 3-node HA with Raft for production (can tolerate 1 node failure). Key operational: SE sizing directly impacts throughput and connection rate; oversizing wastes resources, undersizing causes queueing.

Learning Outcomes

  • Understand Avi Load Balancer 30.x Specialist concepts and architecture
  • Exam Focus:Understand Raft consensus enables HA without external coordination. 3-node cluster can tolerate 1 node failure (2/3 quorum). If you have 1 controller, any failure = complete outage. Never r
  • Exam Tip:When asked about Avi cluster resilience, mention: (1) Raft quorum (2/3 for 3-node), (2) leader election on failure, (3) read-only mode if quorum lost, (4) split-brain prevention (majority sid

Avi Architecture & Deployment#

Avi Load Balancer (NSX Advanced Load Balancer, ALB) is a software-defined application delivery controller. Unlike traditional hardware appliances, Avi separates control plane (Controller) from data plane (Service Engines), enabling elastic scaling and multi-cloud deployment.

┌────────────────────────────────────────────────────────────────┐
│                      Control Plane                            │
│  ┌──────────────────────────────────────────────────────────┐ │
│  │  Avi Controller Cluster (3-node HA, Raft Consensus)     │ │
│  │  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │ │
│  │  │  Master      │  │  Replica-1   │  │  Replica-2   │  │ │
│  │  │  (Leader)    │  │  (Standby)   │  │  (Standby)   │  │ │
│  │  │  8vCPU/32GB  │  │  8vCPU/32GB  │  │  8vCPU/32GB  │  │ │
│  │  └──────────────┘  └──────────────┘  └──────────────┘  │ │
│  └──────────────────────────────────────────────────────────┘ │
│                    ↓ Pushes config                             │
│  ┌────────────────────────────────────────────────────────┐   │
│  │  Avi Pulse (Analytics Telemetry Cloud)                │   │
│  │  • Real-time metrics (latency, throughput, errors)     │   │
│  │  • Machine learning (anomaly detection)                │   │
│  │  • Predictive scaling recommendations                  │   │
│  └────────────────────────────────────────────────────────┘   │
└────────────────────────────────────────────────────────────────┘
                           ↓ Policy Sync
┌────────────────────────────────────────────────────────────────┐
│                      Data Plane                               │
│  ┌──────────────────────────────────────────────────────────┐ │
│  │  Service Engines (SEs) - Distributed across cluster     │ │
│  │  ┌────────────────────────────────────────────────────┐ │ │
│  │  │ SE-1 (ESXi-1)        SE-2 (ESXi-2)    SE-N (ESXi-N)│ │ │
│  │  │ ┌────────────────┐  ┌────────────────┐             │ │ │
│  │  │ │ Virtual        │  │ Virtual        │             │ │ │
│  │  │ │ Services:      │  │ Services:      │             │ │ │
│  │  │ │ • VS-web:443   │  │ • VS-api:8443  │             │ │ │
│  │  │ │ • VS-web:80    │  │ • VS-db:3306   │             │ │ │
│  │  │ │ Pool: web-pool │  │ Pool: api-pool │             │ │ │
│  │  │ │ Throughput:    │  │ Throughput:    │             │ │ │
│  │  │ │ 5Gbps          │  │ 3Gbps          │             │ │ │
│  │  │ │ Connections:   │  │ Connections:   │             │ │ │
│  │  │ │ 100K active    │  │ 50K active     │             │ │ │
│  │  │ └────────────────┘  └────────────────┘             │ │ │
│  │  └────────────────────────────────────────────────────┘ │ │
│  └──────────────────────────────────────────────────────────┘ │
│                           ↓ Real-time stats                   │
│  ┌────────────────────────────────────────────────────────┐   │
│  │  Backend Pool Members (Physical Servers/Cloud VMs)     │   │
│  │  • web-pool: web-1, web-2, web-3                       │   │
│  │  • api-pool: api-1, api-2, api-3                       │   │
│  │  • db-pool: db-master (primary), db-replica (backup)   │   │
│  └────────────────────────────────────────────────────────┘   │
└────────────────────────────────────────────────────────────────┘

Data Flow (Incoming Request):

Client → SE vNIC (ingress) → Virtual Service (VIP)
         → Service Engine process (load balance, SSL termination, WAF)
         → Health check & pool member selection (round-robin, consistent hash, etc.)
         → Backend pool member
         ← Response (SE encryption/compression, connection tracking)
         ← Client

Controller Cluster & Raft Consensus

Controller Cluster Architecture:

Avi Controller runs as a 3-node cluster using Raft consensus for distributed decision-making. Only the leader (master) accepts configuration changes; followers replicate state.

Controller Cluster Topology (3-Node HA):

┌─────────────────┐       ┌─────────────────┐       ┌─────────────────┐
│ Controller 1    │←─────→│ Controller 2    │←─────→│ Controller 3    │
│ Master (Leader) │ Raft  │ Replica 1       │ Raft  │ Replica 2       │
│ 8vCPU, 32GB RAM │ TCP   │ 8vCPU, 32GB RAM │       │ 8vCPU, 32GB RAM │
└────────┬────────┘       └────────┬────────┘       └────────┬────────┘
         │                         │                         │
         └─────────────────┬───────┴─────────────────────────┘
                           │ Config Distribution
                           ↓
  • All Service Engines
  • (SEs subscribe to config
  • updates via gRPC)

Raft Consensus Protocol:

  1. Leader Election: One controller elected as leader (via Raft voting)
  2. Configuration Sync: All changes committed to leader's log
  3. Replication: Leader replicates changes to followers
  4. Commit: Change confirmed when majority (2/3) nodes acknowledge
  5. Failover: If leader fails, remaining nodes elect new leader (2s timeout)

Configuration Changes Timeline:

Admin configures Virtual Service via Controller UI

  ↓ (accepted by Master, logged)
Master logs change locally (immediate acknowledgment to admin)
  ↓
Master sends "Append Log Entry" to Replicas 1 & 2
  ↓
Both replicas acknowledge log entry
  ↓
Master waits for majority (2/3) acknowledgment
  ↓
Change marked as committed
  ↓
Master pushes config to all Service Engines (gRPC)
  ↓
SEs load new config, validate (syntax, semantic checks)
  ↓
SEs send ACK to Controller
  ↓

Configuration change complete (end-to-end: ~2-5 seconds for production scale)

Failure Scenarios:

Scenario 1: Replica 1 fails

  • Master, Replica 2 form quorum (2/3)
  • Cluster continues accepting config changes
  • Replica 1 rejoins when online, syncs latest changes

Scenario 2: Master fails

  • Replica 1 & 2 detect no heartbeat (3-second timeout)
  • Replicas elect new leader (Raft election: <1 second)
  • New master accepts config changes immediately
  • Cluster disruption: <5 seconds

Scenario 3: Split brain (network partition)

  • Two partitions: Master + 1 Replica vs. 1 Replica
  • Master partition (2/3) can accept config changes
  • Replica partition (1/3) cannot (quorum lost)
  • Configuration changes blocked on replica-only partition
  • When partition heals, replica partition merges and syncs latest state

Exam Focus:

Understand Raft consensus enables HA without external coordination. 3-node cluster can tolerate 1 node failure (2/3 quorum). If you have 1 controller, any failure = complete outage. Never run single-controller deployment in production.

Service Engines & Deployment Modes

Service Engines (SEs):

Data plane entities running on physical servers, hypervisors, or cloud instances. Each SE is independent; no inter-SE communication required (stateless load balancing).

Service Engine Sizing (vSphere Deployment):

Deployment Mode: Write Access (Avi manages SEs)

Small SE (2vCPU, 4GB RAM):

  • Throughput: 500 Mbps per SE
  • Concurrent connections: 20K per SE
  • Typical scale: 5-10 SEs = 2.5-5 Gbps
  • Use case: Dev/test, low-traffic production
  • Cost: Minimal (small VMs)

Medium SE (4vCPU, 8GB RAM):

  • Throughput: 2 Gbps per SE
  • Concurrent connections: 100K per SE
  • Typical scale: 5 SEs = 10 Gbps
  • Use case: Mid-market production (e-commerce, SaaS)
  • Cost: Moderate

Large SE (8vCPU, 16GB RAM):

  • Throughput: 5 Gbps per SE
  • Concurrent connections: 250K per SE
  • Typical scale: 3-5 SEs = 15-25 Gbps
  • Use case: Large enterprise (CDN, financial services)
  • Cost: Higher

Ultra SE (16vCPU, 32GB RAM):

  • Throughput: 10 Gbps per SE
  • Concurrent connections: 500K per SE
  • Typical scale: 2-3 SEs = 20-30 Gbps
  • Use case: Hyperscale (cloud providers)
  • Cost: Significant

Elastic Scaling:

  • Auto-scale policy: If CPU >70% for 5 min, add new SE
  • Deactivation policy: If CPU <30%, remove SE (minimum: 2 SEs per SE Group)
  • Recommendation: Set min=2, max=10 for production (HA + elasticity)

Deployment Modes (Access Level):

  1. Write Access Mode (Avi Manage

Key Takeaways

  • Exam Focus:Understand Raft consensus enables HA without external coordination. 3-node cluster can tolerate 1 node failure (2/3 quorum). If you have 1 controller, any failure = complete outage. Never run single-controller deployment in production.
  • SE Sizing and HA Modes: Active/Standby requires manual failover (slower); Active/Active N+M enables automatic redistribution on SE failure (faster RTO). Example: 4 SEs (N=3 active, M=1 spare) loses SE-1 → SE-4 activates, 3 active again. N+M recommended for production. Holodeck constraint: Limited VM resources require smaller SEs; test performance thoroughly.
  • GSLB Design for Multi-Site: Requires two Avi clusters (primary site + secondary) with DNS steering. Health checks every 10s for failover detection (<30s RTO). BE aware: GSLB does NOT replicate service engine configs; each site must have equivalent VS setup. Virtual service name must be identical across sites (DNS query routes based on health).
  • Certificate Management: Avi manages certificate lifecycle; supports auto-renewal via ACME (Let's Encrypt). OCSP stapling reduces client latency (client doesn't query OCSP responder). SNI routing enables multi-tenant (different cert per hostname on same VIP). Recommendation: centralize certs in Avi vault, not distributed to each SE.
  • Avi Controller Cluster Sizing: 3-node minimum for HA (Raft quorum). Single controller = single point of failure. Each node must have 8vCPU/32GB minimum. Data nodes separate from master improves performance (master handles only writes + Raft consensus, data nodes handle analytics queries). Backup/restore via API for disaster recovery.

Avi Controller Cluster Deep Dive — Raft Consensus & HA#

The Avi Controller is the control plane for all load balancing policies, virtual service configurations, and analytics. A 3-node cluster provides HA through Raft consensus, a distributed state machine replication algorithm. Understanding Raft mechanics and failure scenarios is essential for architect-level deployment.

Raft Consensus Overview

What is Raft?

Raft is a consensus algorithm that ensures all nodes in a cluster agree on the same state. Unlike Paxos, Raft emphasizes simplicity and ease of understanding.

Key Concepts:

RAFT CLUSTER STRUCTURE:

┌─────────────────────────────────────────────────────┐
│ 3-Node Raft Cluster                                 │
├──────────────┬──────────────┬──────────────────────┤
│ Controller-1 │ Controller-2  │ Controller-3         │
│ (LEADER)     │ (FOLLOWER)   │ (FOLLOWER)           │
│              │              │                      │
│ Term: 5      │ Term: 5      │ Term: 5              │
│ Log Index: 42│ Log Index: 42│ Log Index: 42        │
│ Vote For: 1  │ Vote For: 1  │ Vote For: 1          │
└──────────────┴──────────────┴──────────────────────┘
       │                │                │
       │                │                │
   Append Entries    Append Entries   Append Entries
   (Heartbeat or     (Heartbeat or    (Heartbeat or
    New Log Entry)    New Log Entry)   New Log Entry)
       │                │                │
       └────────────────┼────────────────┘
                        │

COMMITTED ENTRIES
(safe state across all nodes)

QUORUM = N/2 + 1 nodes
For 3 nodes: quorum = 2 nodes

→ Can tolerate 1 node failure
→ 2 nodes minimum for consensus (if one fails, 2 remaining quorum)
→ If 2 nodes fail: cluster cannot make decisions (read-only mode)

Raft State Machine & Terms

Each node in a Raft cluster maintains state: leadership, term counter, and log entries (mutations).

NODE STATE (Persistent on disk):

┌─────────────────────────────────────┐
│ Term (epoch counter)                │
│  - Incremented on each election     │
│  - Used to determine stale leaders  │
├─────────────────────────────────────┤
│ Voted For (which candidate this     │
│  term; used to prevent duplicate    │
│  votes in same term)                │
├─────────────────────────────────────┤
│ Log Entries [ { Index, Term, Cmd }] │
│  - Append-only; never deleted       │
│  - Each entry: index + term + actual│
│    command (e.g., "create VS foo")  │
├─────────────────────────────────────┤
│ Commit Index                        │
│  - Last log index known to be       │
│    applied to state machine         │
│  - Updated only by leader           │
├─────────────────────────────────────┤
│ Last Applied                        │
│  - Last log index applied to        │
│    application state                │
│  - Followers lag behind leader      │
└─────────────────────────────────────┘

ELECTION PROCESS:

  1. FOLLOWER TIMEOUT (no heartbeat from leader for 150–300 ms)
   → Increment term
   → Become CANDIDATE
   → Send RequestVote to all peers
   → Vote for self
  1. CANDIDATE WAITS FOR VOTES (1–2 seconds)
   → If majority votes: become LEADER (term 5 → 6)
   → If another candidate becomes leader: follow it
   → If timeout: increment term again; retry election
  1. NEW LEADER (term 6)
   → Send Append Entries heartbeat to all followers immediately
   → Followers reset election timer
   → Cluster stable; can accept new configs

EXAMPLE TIMELINE:

Time Controller-1 Controller-2 Controller-3

────────────────────────────────────────────────────

0 LEADER (T:5) FOLLOWER (T:5) FOLLOWER (T:5)

Sending HB Waiting... Waiting...

1 (hb timeout 150ms on C2, C3)

150 LEADER (T:5) FOLLOWER CANDIDATE

      Sending HB      →Timeout        (T:6)
  • Become CAND Vote self
  • (T:6) Send RequestVote
  • Vote self
  • Send RequestVote
  • 160 Recv vote from C3 (T:6)
  • Majority = 2/3
  • Become LEADER (T:6)
  • 170 LEADER (T:6) Recv Append
  • Send HB to all Entries from C2
  • Follower (T:6)
  • 200 Recv HB (T:6)
  • from C2
  • Convert to FOL
  • (T:6)

[STABLE AGAIN; C2 is new leader; C1, C3 followers]

Log Replication & Quorum

Write Path (New Configuration):

Client sends request to Leader (Controller-1):

"Create VS 'web-pool'"

Leader appends to own log:

[Index: 43, Term: 5, Cmd: "create VS web-pool"]

Leader sends Append Entries to Followers (C2, C3):

"Log entry 43, please append"

Followers append to log:

C2 & C3 each store entry 43

Followers respond:

"Entry 43 appended successfully"

Leader counts responses:

Self + C2 + C3 = 3/3 (quorum achieved!)

Leader commits entry:

Updates commit index to 43

Leader applies to state machine:

Virtual service "web-pool" created locally

Leader responds to client:

"V

Key Takeaways

  • Exam Tip:When asked about Avi cluster resilience, mention: (1) Raft quorum (2/3 for 3-node), (2) leader election on failure, (3) read-only mode if quorum lost, (4) split-brain prevention (majority side survives), (5) backup/restore procedure, (6) RTO/RPO implications (fast leader election ~150 ms; b

Service Engine Architecture — Data Plane Excellence#

Service Engines (SEs) are the data plane for Avi, handling all packet processing, load balancing decisions, and connection management. Understanding SE internals—DPDK acceleration, CPU pinning, SE groups, and HA modes—is critical for performance design.

Service Engine Data Plane (DPDK-Based)

What is DPDK?

Data Plane Development Kit; bypasses Linux kernel networking stack. Packets processed in userspace, avoiding context switches and kernel overhead.

Traditional Linux Kernel Networking vs. DPDK:

TRADITIONAL KERNEL STACK:

┌────────────────────────┐
│ Application (Avi SE)   │
├────────────────────────┤
│ Linux Kernel (Syscall) │ ← Context switch (~10 µs)
├────────────────────────┤
│ Network Driver (NIC)   │ ← DMA, interrupts
└────────────────────────┘

Latency per packet: 10–100 µs

CPU utilization: 30–50% (kernel scheduling overhead)

DPDK USERSPACE STACK:

┌────────────────────────┐
│ Avi SE (DPDK app)      │ ← Packet poll-mode (no interrupts)
│                        │ ← Direct NIC access (hugepages)
├────────────────────────┤
│ NIC Queues (lockless)  │ ← Ring buffers
└────────────────────────┘

Latency per packet: 1–5 µs (10x faster!)

CPU utilization: 80–95% (but higher throughput per core)

TRADE-OFF: Dedicated cores (can't oversubscribe); higher throughput

DPDK SE Initialization:

SE BOOT SEQUENCE:

  1. VM Start: 4 vCPU, 4 GB RAM
  • Reserve 2 GB hugepages (for packet buffers, descriptor rings)
  • Initialize DPDK EAL (Environment Abstraction Layer)
  1. CPU Pinning:
  • vCPU 0: Control plane (config updates, health checks)
  • vCPU 1: Packet processing core (poll mode)
  • vCPU 2: Packet processing core (poll mode)
  • vCPU 3: Reserved for kernel (system tasks)

Effect: Cores 1–2 run at 100% CPU (by design; no context switches)

  1. NIC Queue Steering (RX):
  • NIC receives packet on physical queue 0
   - Steering rule: filter by 5-tuple → route to vCPU 1 or 2
  • Distributes load across processing cores
  • Avoids cache-line bouncing (NUMA-aware)
  1. Packet Ring Initialization:
   - RX ring: NIC → SE (256–4096 buffers per ring)
   - TX ring: SE → NIC (256–4096 buffers per ring)
  • Lockless; FIFO order (no spinlocks)
  1. Ready for Traffic:
  • SE polls RX ring continuously
  • Dequeues packets; processes at ~10M pps per core
  • Enqueues to TX ring
  • NIC DMA reads and sends

PERFORMANCE METRICS:

  • Throughput: 10–50 Gbps per SE (depends on packet size, config complexity)
  • Latency: 1–5 µs per packet (L4 LB) + app latency
  • Connection rate: 100k–1M new connections per second

Service Engine Groups & Tenancy Models

SE Group Definition:

A collection of SEs with shared configuration, placement policy, and resource allocation.

Single SE Group per Application Tier (Isolation Model):

TOPOLOGY:

Web Tier SEs (SE Group: web-group)

├─ web-se-01 (10.0.1.x)
├─ web-se-02 (10.0.1.x)
└─ web-se-03 (10.0.1.x)

Placement: Spread across esx01, esx02, esx03
Network: Routed via NSX Tier-1

App Tier SEs (SE Group: app-group)

├─ app-se-01 (10.0.2.x)
├─ app-se-02 (10.0.2.x)
└─ app-se-03 (10.0.2.x)

Placement: Spread across esx04, esx05, esx06
Network: Routed via NSX Tier-1

DB Tier SEs (SE Group: db-group)

├─ db-se-01 (10.0.3.x)
└─ db-se-02 (10.0.3.x)

Placement: Spread across esx07, esx08
Network: Isolated VLAN (not routed)

BENEFITS:

  • Tenant isolation (web group can't see app traffic)
  • Resource isolation (web group doesn't steal DB group CPU)
  • Easy scaling (add SE to web-group without touching app-group)
  • Failure isolation (web SE crash doesn't affect app)

DRAWBACK:

  • More VMs to manage (9 total SEs for 3 tiers)
  • Resource fragmentation (each group pre-allocates resources)

Multi-Tenant SE Group (Cost Optimization):

SINGLE SE GROUP, MULTIPLE TENANTS:

Shared SE Group (se-group-shared)

├─ se-01
├─ se-02
└─ se-03

Virtual Services (all on same SEs):

├─ VS: web-prod (tenant: acme-corp)
├─ VS: web-staging (tenant: acme-corp)
├─ VS: app-uat (tenant: beta-customer)
├─ VS: api-v2 (tenant: internal-platform)
└─ VS: crm-lb (tenant: salesforce-ops)

BENEFITS:

  • Fewer VMs (3 SEs vs. 9)
  • Better resource utilization (idle capacity shared)
  • Simpler management (one SE group)

DRAWBACKS:

  • Noisy neighbor risk (one tenant's traffic spike affects others)
  • Resource contention (shared CPU, memory, network)
  • Complexity in troubleshooting (mixed logs)
  • Less security isolation (multitenancy in same process)

HA Modes: Active/Active, Active/Standby, Legacy

Mode 1: Active/Active N+M (Distributed HA):

ARCHITECTURE:

SE Pool Size: N=3 active + M=1 extra (N+M=4 total SEs)

Scenario: 3 Virtual Services, spread across 4 SEs

Initial Load:

├─ SE-01: VS-A (active), VS-B (standby)
├─ SE-02: VS-B (active), VS-C (standby)
├─ SE-03: VS-C (active), VS-A (standby)
└─ SE-04: Idle (M spare)

Traffic Distribution:

- VS-A: SE-01 → 1000 RPS + SE-03 → backup (0 RPS)
- VS-B: SE-02 → 800 RPS + SE-01 → backup
- VS-C: SE-03 → 500 RPS + SE-02 → backup

SE-01 FAILURE:

├─ Detect failover (300 ms)
├─ SE-04 assumes VS-A from SE-0

Virtual Service Configuration Matrix — All Types#

Virtual Services (VS) are the core unit of load balancing in Avi. Understanding all types—L4, L7 (HTTP/HTTPS, HTTP/2, QUIC), DNS, GSLB—and their configuration matrices is essential for comprehensive design.

L4 Virtual Services (TCP/UDP/SCTP)

TCP Virtual Service (Stateful, Connection-Based):

CONFIGURATION:

  • Name: databases-tcp
  • Type: L4
  • Protocol: TCP
  • VIP: 10.0.1.100:3306 (MySQL port)
  • Pool: db-backend (3 backend servers on port 3306)
  • HA Mode: Active/Active
  • Connection Timeout: 600 sec
  • SSL: None (native protocol not encrypted)

Pool Members:

├─ 10.0.3.10:3306 (weight 1, active)
├─ 10.0.3.11:3306 (weight 1, active)
└─ 10.0.3.12:3306 (weight 1, active)

Load Balancing Algorithm: Round-Robin (sequential connections)

Persistence: NONE (each new connection can go to different backend)

TRAFFIC FLOW:

Client 10.0.2.5:54321 → VIP 10.0.1.100:3306
  ├─ SE receives TCP SYN
  ├─ Lookup pool member (RR: 10.0.3.10)
  ├─ NAT: Rewrite src to SE IP (10.0.1.101)
  ├─ Forward to backend 10.0.3.10:3306
  ├─ Backend responds; SE receives response
  ├─ NAT: Rewrite dst to VIP (10.0.1.100)
  └─ Send to client (client sees response from VIP)

Connection Table Entry:

  Client: 10.0.2.5:54321 → VIP 10.0.1.100:3306
  Backend: 10.0.1.101:54321 → 10.0.3.10:3306  (SE's src becomes this)

TTL: 600 sec (TCP idle timeout)

UDP Virtual Service (Connectionless):

CONFIGURATION:

  • Name: dns-udp
  • Type: L4
  • Protocol: UDP
  • VIP: 10.0.1.101:53 (DNS)
  • Pool: dns-servers (3 backend servers)
  • Connection Timeout: 2 min (UDP shorter than TCP)

Pool Members:

├─ 10.0.3.20:53
├─ 10.0.3.21:53
└─ 10.0.3.22:53

TRAFFIC FLOW:

Client 10.0.2.50:12345 → VIP 10.0.1.101:53
  ├─ SE receives UDP packet
  ├─ Create connection entry (5-tuple)
  ├─ Forward to pool member (RR: 10.0.3.20:53)
  ├─ Backend responds with DNS answer
  ├─ SE translates response; send to client
  └─ Connection aged out after 2 min of inactivity

DIFFERENCE FROM TCP:

  • No SYN/ACK handshake; stateless protocol
  • First packet creates entry; subsequent packets within TTL reuse entry
  • No connection cleanup (timeout-based)
  • Faster (no TCP overhead); lower latency

SCTP Virtual Service (Rare; Telecom/Diameter):

Protocol:

Stream Control Transmission Protocol; hybrid of TCP + UDP

Use Case:

Telecom signaling (Diameter, S1AP); load balancing 3GPP core networks

Avi Support:

Yes; treated similarly to TCP (stateful, connection-based)

Performance:

Similar to TCP (connection overhead)

L7 Virtual Services (HTTP, HTTPS, HTTP/2, HTTP/3 QUIC)

HTTP Virtual Service (Cleartext):

CONFIGURATION:

  • Name: web-http
  • Type: L7
  • Protocol: HTTP
  • VIP: 10.0.1.102:80
  • Pool: web-servers (3 Apache/Nginx backends)
  • HTTP Profile: default

HTTP Request Handling:

├─ Client: GET /api/v1/products
├─ SE intercepts; reads HTTP headers
├─ Content-Switch rule: If URI = /api/* → route to api-pool
├─ Otherwise → route to web-pool
├─ Rewrite rule: Add header "X-Forwarded-For:

"

Pool Selection:

├─ /api/v1/* → api-pool (3 servers on port 8000)
├─ /static/* → cdn-pool (CDN origin cache)
└─ /* → web-pool (3 servers on port 80)

Session Persistence: HTTP Cookie

├─ SE inserts: Set-Cookie: AVIX_ID=se01-conn123
├─ Client stores cookie
├─ Next request includes cookie
├─ SE routes to same backend (session stickiness)

TRAFFIC FLOW:

Client GET http://example.com/api/v1/products

  ├─ TCP SYN → VIP 10.0.1.102:80
  ├─ TCP ACK; connection established
  ├─ Client sends HTTP GET with headers
  ├─ SE reads headers; matches rule: URI=/api
  ├─ Select pool member from api-pool (RR or persistent)
  ├─ Rewrite Host header (if needed)
  ├─ Forward HTTP GET to 10.0.3.30:8000
  ├─ Server responds: HTTP/1.1 200 OK
  ├─ SE adds Set-Cookie header (persistence)
  ├─ Forward response to client
  └─ Connection closed after response (HTTP/1.0) or keep-alive

LATENCY ADDED BY LB:

  • TCP handshake: 0 ms (simultaneous client + server handshake)
  • HTTP header parsing: 0.1–0.5 ms
  • Rule evaluation: 0.05–0.2 ms
  • Total LB overhead: ~0.2–1 ms per request

HTTPS Virtual Service (TLS-Encrypted):

CONFIGURATION:

  • Name: web-https
  • Type: L7
  • Protocol: HTTPS (HTTP over TLS)
  • VIP: 10.0.1.103:443
  • Pool: web-servers-secure (3 backends on port 443)

TLS/SSL Configuration:

├─ Certificate: example.com (RSA 2048, or ECDSA P-256)
├─ Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (strong)
├─ Min TLS Version: 1.2
├─ Max TLS Version: 1.3
├─ Session Reuse: Enabled (tickets, cache)
├─ OCSP Stapling: Enabled (cert freshness proof)

TRAFFIC FLOW:

Client TLS ClientHello → VIP 10.0.1.103:443
  ├─ SE receives ClientHello (plaintext; SNI visible)
  ├─ Extract SNI (Server Name Indication): example.com
  ├─ Match against cert store; select certificate
  ├─ SE performs TLS handshake (SE acts as server)
  ├─ E.g., ECDHE key exchange + AES-256-GCM encryption
  ├─ Client and SE now have encrypted session
  ├─ Client sends encrypted HTTP GET /api/v1/products
  ├─ SE decrypts payload; reads HTTP header
  ├─ Apply content-switch rule (same as HTTP)
  ├─ Re-encrypt to backend (SSL bridging):
  │    ├─ SE → Backend TLS han

SSL/TLS Complete Reference — Ciphers, Certificates, Handshakes#

TLS is the foundation of secure web traffic. Architects must understand cipher suite selection, certificate lifecycle management, and the handshake process to design secure, performant load balancing.

SSL/TLS Profiles in Avi

Profile Components:

SSL PROFILE: production-strict

Cipher Suite Configuration:

├─ Enabled Ciphers (order matters; client preference ignored):
│  1. TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (strongest + fastest)
│  2. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
│  3. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
│  4. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
│  5. TLS_AES_256_GCM_SHA384 (TLS 1.3 only)
│
├─ Disabled (insecure):
│  - TLS_RSA_WITH_* (no forward secrecy; AVOID)
│  - TLS_*_WITH_DES_* (weak encryption)
│  - TLS_*_EXPORT_* (export-grade; 40-bit keys)
│  - TLS_ECDHE_*_MD5 (broken hash)

TLS Version Enforcement:

├─ Min TLS: 1.2 (reject TLS 1.0, 1.1)
├─ Max TLS: 1.3 (allow latest)

Session Management:

├─ Session Resumption: Enabled
│  └─ Method 1: Session ID (server-side cache; ~256 bytes per session)
│  └─ Method 2: Session Tickets (stateless; encrypted on client)
├─ Ticket Rotation: 1 hour (rekey tickets to prevent compromise)
├─ Ticket Lifetime: 24 hours (old tickets become invalid)

OCSP Stapling:

├─ Status: Enabled
├─ Frequency: Update cert revocation status every 6 hours
├─ Benefit: Client doesn't need to query OCSP responder (faster; privacy)

HSTS (HTTP Strict-Transport-Security):

├─ Status: Enabled
├─ Max-Age: 31536000 (1 year)
├─ Include SubDomains: Yes
├─ Preload: Yes (submit to browser preload list)
├─ Effect: Browser enforces HTTPS for all future requests (1 year)

Client Certificate Authentication (mTLS):

├─ Mode: Optional (CA-signed cert required from client)
├─ CA Bundle: Internal Corp CA (corporate.ca.crt)
├─ Validation: Verify chain; reject self-signed

Cipher Order Preference:

├─ Server Preference: Enabled (ignore client cipher order)
├─ Effect: Server chooses best cipher (not client-picked weak cipher)

TLS 1.2 vs. TLS 1.3 Handshake Differences

TLS 1.2 Handshake (3 Round Trips = 150 ms):

ROUND TRIP 1 (Client Hello):

┌─────────────────────────────────────┐
│ Client → Server (100 ms RTT)         │
│ ClientHello                          │
│ ├─ Supported TLS versions: 1.0–1.2  │
│ ├─ Cipher suites: 20+ options       │
│ ├─ Supported curves: P-256, P-384   │
│ ├─ SNI: example.com                 │
│ └─ Random nonce (client_random)     │
└─────────────────────────────────────┘

Time: 0 ms (client sends immediately after TCP ACK)

ROUND TRIP 2 (Server Response):

┌─────────────────────────────────────┐
│ Server → Client (RTT 100 ms)         │
│ ServerHello + Certificate + DHE     │
│ ├─ Selected TLS version: 1.2        │
│ ├─ Selected cipher: TLS_ECDHE_...   │
│ ├─ Server certificate               │
│ ├─ ECDHE public key (ephemeral)     │
│ ├─ Random nonce (server_random)     │
│ └─ Signature (cert private key)     │
└─────────────────────────────────────┘

Time: 100 ms (client received server response)

CPU: Server: ~10 ms for cert verification + key exchange
Client: ~10 ms for cert verification

ROUND TRIP 3 (Client Finishes):

┌─────────────────────────────────────┐
│ Client → Server (RTT 100 ms)         │
│ ClientKeyExchange + ChangeCipherSpec│
│ ├─ Client's ECDHE public key        │
│ ├─ Encrypted premaster secret       │
│ ├─ MAC (message auth code)          │
│ └─ Finished (verification)          │
└─────────────────────────────────────┘

Time: 200 ms (client sends after computing shared key)
CPU: Client: ~20 ms for key derivation

ROUND TRIP 4 (Server Finishes) - Optimized (wait for client ack):

┌─────────────────────────────────────┐
│ Server → Client (RTT 100 ms)         │
│ ChangeCipherSpec + Finished         │
└─────────────────────────────────────┘

Time: 300 ms (full handshake complete)

TOTAL HANDSHAKE TIME: 300 ms (with 100 ms RTT)
CPU TIME: Server ~10 ms; Client ~30 ms

ISSUE: 3 round trips = high latency for long-distance clients (300+ ms)

TLS 1.3 Handshake (1 Round Trip = 50 ms):

REDESIGNED FOR SPEED:

ROUND TRIP 1 (Client Hello + Early Data):

┌─────────────────────────────────────┐
│ Client → Server (RTT 100 ms)         │
│ ClientHello                          │
│ ├─ Supported TLS 1.3 only            │
│ ├─ Supported curves: X25519, P-256  │
│ ├─ Client's ephemeral public key    │
│ ├─ SNI: example.com                 │
│ └─ Pre-shared key (if resuming)     │
│                                      │
│ Early Data (optional; 0-RTT):        │
│ ├─ Encrypted HTTP GET (if resuming) │
│ └─ Uses PSK derived key              │
└─────────────────────────────────────┘

Time: 0 ms (client sends; now includes ephemeral key)

KEY DIFFERENCE: Client sends ECDHE public key in ClientHello

  → Server can immediately compute shared secret
  → No need for ServerKeyExchange roundtrip!

ROUND TRIP 2 (Server Response):

┌─────────────────────────────────────┐
│ Server → Client (RTT 100 ms)         │
│ ServerHello                          │
│ ├─ Selected TLS 1.3

Lab Exercise: Advanced Avi Configuration & Troubleshooting#

  • Reference Links & Further Reading
  • •
  • Avi Controller Cluster Administration
  • •
  • Service Engine Architecture & Scaling
  • •
  • Virtual Service Configuration Reference
  • •
  • SSL/TLS Configuration Guide
  • •
  • Global Server Load Balancing (GSLB) Guide
  • •
  • Service Engine HA Modes (Active/Active, Active/Standby)
  • •
  • RFC 8446 - TLS 1.3 Specification
  • •
  • RFC 7539 - ChaCha20 and Poly1305 (Alternative Ciphers)

Additional Hands-On Practice Labs (VCF 5.2 / 9.x)#

Targeted practice labs for deeper mastery of Avi Alb topics on VCF 5.2 and VCF 9.x.

Exam Mapping: 6V0-22.25 — Avi Load Balancer 30.x Specialist

  • See Avi Load Balancer 30.x Specialist exam blueprint for detailed objectives

Labs in This Section

Multi-Site GSLB with Failover

VCF 9.0Intermediate⏱ 105 min

TLS 1.2 vs. TLS 1.3 Handshake Comparison

VCF 9.0Intermediate⏱ 75 min

Lab B1: Deploy Avi Controller HA Cluster & Service Engine Fabric in VCF 9.0

VCF 9.0Intermediate⏱ 75 min

Lab B2: Migrate NSX Load Balancer to Avi for a VCF Workload Domain

VCF 9.0Intermediate⏱ 75 min

Lab B3: Avi WAF Policy for a Public-Facing Web App

VCF 9.0Intermediate⏱ 75 min

Lab B4: Avi GSLB Across Two VCF 9.0 Instances

VCF 9.0Intermediate⏱ 75 min

Lab B5: Avi L7 Analytics & End-to-End Troubleshooting

VCF 9.0Intermediate⏱ 75 min
📝 Quiz (50)
🃏 Flashcards (50)

📝 Quiz — Avi Load Balancer

0/50 correct

Avi Architecture

Q1
In the Avi three-tier architecture, which tier handles application data-plane traffic?
  • Controller cluster
  • Service Engines (SEs)
  • SDDC Manager
  • vCenter
Service Engines (SEs) handle application data-plane traffic — they receive client connections, process load balancing decisions, and forward to backend servers. The Controller manages configuration. SDDC Manager and vCenter are infrastructure management.
Q2
How many nodes are required for an Avi Controller cluster in production, and what does the cluster VIP provide?
  • 2 nodes; round-robin DNS
  • 3 nodes; single management endpoint with leader election
  • 1 node; manual failover
  • 5 nodes; data-plane forwarding
A 3-node Controller cluster provides a single management endpoint via a cluster VIP with leader election for HA. 2 nodes lack quorum. 1 node has no redundancy. 5 nodes is over-provisioned. Controllers don't forward data-plane traffic.
Q3
Which object is a logical grouping of Service Engines sharing HA mode, placement, and resource settings?
  • Virtual Service
  • Service Engine Group
  • Pool Group
  • Tenant
A Service Engine Group is a logical grouping of SEs sharing HA mode, placement rules, and resource settings. Virtual Services define application front-ends. Pool Groups aggregate pools. Tenants provide RBAC isolation.
Q4
Elastic scale-out on Avi refers to:
  • Automatic deployment of additional SEs to scale a Virtual Service
  • Adding Controller nodes at runtime
  • Resizing backend VMs via DRS
  • Horizontal pod autoscaling in Kubernetes
Elastic scale-out automatically deploys additional SEs to distribute load when a Virtual Service exceeds the capacity of a single SE. It's not about adding Controllers, resizing VMs, or K8s HPA.
Q5
In VCF, Avi is integrated primarily via:
  • Manual OVA deployment only
  • SDDC Manager / VCF Automation with NSX Cloud Connector and vCenter discovery
  • Direct install on ToR switches
  • An agent inside each VM
In VCF, Avi integrates via SDDC Manager / VCF Automation with NSX Cloud Connector and vCenter discovery for automated SE deployment and segment attachment. Manual OVA, ToR installs, and VM agents are not the VCF integration model.

Virtual Service Configuration

Application Profiles

Analytics and Troubleshooting

Operations

🃏 Flashcards — Avi Load Balancer

50 cards
Card 1 of 50
Avi Controller
The management and control-plane component of Avi Load Balancer, typically deployed as a 3-node cluster (one Leader, two Followers) fronted by a Cluster IP; smaller/lab deployments can use a single Controller. Holds configuration, analytics, and API; never handles data-plane traffic. Loss of the Controller cluster does not affect running Virtual Services served by Service Engines.

Labs in this section

Was this page useful?
Type to search. ↑ ↓ to move, Enter to open, Esc to close.