-
Notifications
You must be signed in to change notification settings - Fork 2
vpp
Pre-Alpha. This page describes behavior that may change.
Ze optionally integrates with VPP (the FD.io Vector Packet Processor) to forward packets at DPDK speed. When vpp.enabled is true, ze takes ownership of the whole VPP lifecycle: startup, DPDK NIC binding, GoVPP connection, crash recovery, and clean teardown.
BGP reactor -> protocol RIB -> sysRIB
|
+------+------+
| |
fib-kernel fib-vpp
(netlink) (GoVPP)
| |
v v
Linux FIB VPP FIB
(local) (transit)
Ze keeps two FIB backends side by side. fib-kernel programs the Linux route table for local services (SSH, web UI, BGP TCP sessions). fib-vpp pushes the same routes into VPP's FIB for DPDK-speed transit forwarding.
Minimal example:
vpp {
enabled true;
dpdk {
interface 0000:03:00.0 { name xe0; }
interface 0000:03:00.1 { name xe1; }
}
}
Full reference:
| Path | Type | Default | Description |
|---|---|---|---|
vpp.enabled |
boolean | false | Master switch. |
vpp.external |
boolean | false | Connect to an existing VPP (skip startup.conf, NIC bind, exec). |
vpp.api-socket |
string | /run/vpp/api.sock | GoVPP Unix socket path. |
vpp.cpu.main-core |
uint8 | auto | CPU core for VPP main thread. |
vpp.cpu.workers |
uint8 | auto | Number of worker threads. |
vpp.memory.main-heap |
size | 1G | VPP main heap. 1536M for full DFZ. |
vpp.memory.hugepage-size |
2M or 1G | 2M | Hugepage size. |
vpp.memory.buffers |
uint32 | 128000 | Buffers per NUMA node. |
vpp.dpdk.interface[pci].name |
string | required | Short interface name (e.g. xe0). |
vpp.stats.poll-interval |
uint16 | 30 | Seconds between stats reads. |
vpp.lcp.enabled |
boolean | true | Linux Control Plane plugin. |
vpp.lcp.netns |
string | dataplane | Network namespace for LCP TAPs. |
fib {
vpp {
enabled true;
table-id 0;
}
}
When something else owns VPP (systemd, container sidecar):
vpp {
enabled true;
external true;
api-socket /run/vpp/api.sock;
}
Ze connects to the API socket, runs telemetry, and programs the FIB, but does not start VPP or bind NICs.
When VPP is ze-owned (not external):
- Parses
vpp { }YANG config. - Renders
startup.conf. - Loads
vfio,vfio_pci,vfio_iommu_type1kernel modules. - Unbinds NICs from current driver, binds to vfio-pci.
- Execs the VPP binary.
- Connects GoVPP to the API socket.
- Starts the stats poller.
- On crash: backoff (1s to 30s), restart, replay RIB.
- On shutdown: SIGTERM VPP, PCI rescan, restore original NIC drivers.
| Requirement | How to provide it |
|---|---|
| Hugepages (~6 GB production, 2 GB lab) |
/sys/kernel/mm/hugepages/ or /etc/sysctl.d/
|
| IOMMU enabled | BIOS: VT-d / AMD-Vi. Kernel: intel_iommu=on iommu=pt
|
| CPU isolation for workers | isolcpus=<cores> |
| DPDK-compatible NIC | Intel i210/i350, X520/X540, X710/XL710, E810, VirtIO |
- Prometheus metrics: per-interface rx/tx packets/bytes/drops/errors, per-node clocks, system vector rates.
-
fib-vpp show: JSON dump of routes fib-vpp believes it has installed. -
vppctl: Direct VPP introspection via/run/vpp/cli.sock.
| Phase | What it adds |
|---|---|
| vpp-3 | MPLS label push/swap/pop from labelled unicast. |
| vpp-5 | L2 cross-connect, bridge domains, VXLAN, policers, ACLs, SRv6, sFlow. |
- In-tree VPP guide for the full reference.
- Traffic Control for the VPP traffic control backend.
- FIB for how routes reach the forwarding table.
Adapted from main/docs/guide/vpp.md.
Unreviewed draft. This wiki was authored in bulk and has not been reviewed. File corrections on the issue tracker.
- Overview
- YANG Model
- Editor Workflow
- Archive and Rollback
- System
- Interfaces
- VRRP
- BFD
- FIB
- OSPF
- IS-IS
- MPLS / LDP / RSVP-TE
- RSVP-TE
- SRv6
- Static Routes
- Policy Routing
- Firewall
- Traffic Control
- Class of Service
- L2TP/PPP
- PPPoE
- VPP Data Plane
- RPKI
- IPsec VPN
- TACACS+ AAA
- RADIUS AAA
- AS112 DNS
- Authorization
- Fleet
- BGP
- Starting and Stopping
- Show Commands
- Monitoring
- Flow Export
- DDoS Mitigation
- Anomaly Detection
- Health Checks
- Audit Trail
- Production Diagnostics
- Logging
- Operational Reports
- Healthcheck
- Self-Update
- Zero-Touch Provisioning
- MRT Analysis
- Upgrade and Restart
- Storage
- Policy
- Core
- Resilience
- Validation
- Capabilities
- Address Families
- Protocol
- Subsystems
- Infrastructure
- Route Server at an IXP
- Transit Edge with RPKI
- Public Looking Glass
- ExaBGP Migration Walkthrough
- FlowSpec Injection
- Chaos-Tested Peering
- AS Path Topology