vBNG Deployment Guide
Deploy ISPChamp vBNG on commodity x86 hardware. This guide covers hardware requirements, architecture, and component configuration.
Architecture Overview
# ISPChamp vBNG — Packet Flow
#
# ┌─────────┐ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌───────────┐
# │ OLT │───▶│ Kea DHCP │───▶│ RADIUS │───▶│ VPP/DPDK │───▶│ FRRouting │
# │ (GPON) │ │ (DHCPv46)│ │ (Auth+Acct│ │ (Fwd+NAT)│ │ (BGP/OSPF)│
# └─────────┘ └──────────┘ └───────────┘ └──────────┘ └───────────┘
# Option 82 Lease Req Auth Check Wire-speed Upstream
# insertion + PD + Policy forwarding peering
#
# Data plane (VPP) runs in userspace with DPDK — zero kernel involvement
# Control plane (Kea + RADIUS + FRR) runs as standard services
Hardware Requirements
| Component | Minimum (10Gbps) | Recommended (100Gbps) |
|---|---|---|
| CPU | Intel Xeon E-2300 (8C/16T) | Dual Intel Xeon Gold 6300+ (32C+) |
| RAM | 32 GB DDR4 ECC | 128 GB DDR4/DDR5 ECC |
| NIC | 2x 10GbE Intel X710 | 2x 25GbE Intel E810 or Mellanox CX-6 |
| Storage | 240 GB SSD | 480 GB NVMe SSD |
| OS | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
Component Configuration
VPP/DPDK — Data Plane
Vector Packet Processing with DPDK handles all subscriber traffic at wire speed. Manages per-subscriber QoS, NAT, and packet forwarding without kernel overhead.
ISC Kea 3.0 — DHCP
Handles DHCPv4, DHCPv6, and prefix delegation for all subscribers. Integrates with RADIUS via the Kea RADIUS hook for authentication.
FreeRADIUS — AAA
Handles subscriber authentication, bandwidth policy assignment, and accounting. PostgreSQL-backed with ISPChamp as the management layer.
FRRouting — Control Plane
Manages BGP/OSPF peering with upstream providers and internal routing. Advertises subscriber prefixes and handles failover.
CGNAT — NAT44
Inline Carrier-Grade NAT with deterministic mapping and BTRC-compliant session logging.
Quick Deploy
# 1. Prepare the server
sudo apt update && sudo apt upgrade -y
sudo apt install -y linux-tools-common hugepages dpdk dpdk-dev
# 2. Configure hugepages
echo 'vm.nr_hugepages=8192' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 3. Bind NICs to DPDK
sudo dpdk-devbind --bind=vfio-pci 0000:01:00.0
sudo dpdk-devbind --bind=vfio-pci 0000:01:00.1
# 4. Deploy ISPChamp vBNG (Docker Compose)
curl -sL https://get.ispchamp.com/vbng | bash
cd /opt/ispchamp-vbng
docker compose up -d
# 5. Verify
vppctl show interface
vppctl show nat44 sessions
vtysh -c "show bgp summary"