Interfaces Configuration
Configure network interface role mapping.
Overview
The interfaces section maps physical network interfaces to their roles in the BNG:
- Management — Out-of-band management (SSH, API, SNMP)
- Subscriber Trunk — Subscriber-facing trunk (QinQ tagged traffic)
- Upstream — Upstream/transit peering (BGP/OSPF)
- CGNAT Handoff — Optional dedicated CGNAT handoff interface
Configuration Options
management
Management interface for out-of-band access (required).
interfaces:
management: "eth0"
Type: String (interface name)
Required: Yes
Default: None
Constraints: Valid interface name (e.g., "eth0", "ens18")
CLI:
abng# set interfaces management "eth0"
Purpose:
- SSH access for CLI and administration
- REST API access
- SNMP monitoring
- Always in management VRF (separate from subscriber traffic)
subscriber_trunk
Subscriber-facing trunk interface (required).
interfaces:
subscriber_trunk: "eth1"
Type: String (interface name)
Required: Yes
Default: None
Constraints: Valid interface name (e.g., "eth1", "ens19")
CLI:
abng# set interfaces subscriber_trunk "eth1"
Purpose:
- Receives QinQ-tagged subscriber traffic
- VLAN demux creates sub-interfaces on this trunk
- Carries PPPoE PADI/PADO and DHCP Discover/Offer frames
- Can be a VLAN interface itself (e.g., "eth1.6969" for router-on-a-stick)
upstream
Upstream/transit peering interface (required).
interfaces:
upstream: "eth2"
Type: String (interface name)
Required: Yes
Default: None
Constraints: Valid interface name (e.g., "eth2", "ens20")
CLI:
abng# set interfaces upstream "eth2"
Purpose:
- BGP and OSPF peering with upstream routers
- Carries subscriber traffic to/from upstream
- Carries transit traffic
cgnat_handoff
Optional dedicated CGNAT handoff interface.
interfaces:
cgnat_handoff: "eth3"
Type: String (interface name)
Required: No
Default: None
Constraints: Valid interface name (e.g., "eth3", "ens21")
CLI:
abng# set interfaces cgnat_handoff "eth3"
Purpose:
- Dedicated interface for CGNAT traffic steering
- Separates CGNAT traffic from upstream traffic
- Optional — if not configured, CGNAT traffic uses upstream interface
Example Configurations
Standard Configuration
Three separate physical interfaces:
interfaces:
management: "eth0"
subscriber_trunk: "eth1"
upstream: "eth2"
Network layout:
Management ──── eth0
Subscribers ──── eth1
Upstream ──────── eth2
With CGNAT Handoff
Four separate physical interfaces:
interfaces:
management: "eth0"
subscriber_trunk: "eth1"
upstream: "eth2"
cgnat_handoff: "eth3"
Network layout:
Management ──── eth0
Subscribers ──── eth1
Upstream ──────── eth2
CGNAT ────────── eth3
Router-on-a-Stick
All services on one physical interface, separated by VLANs:
interfaces:
management: "eth0"
subscriber_trunk: "eth1.6969"
upstream: "eth1.6970"
cgnat_handoff: "eth1.6971"
Network layout:
Management ──── eth0
Subscribers ──── eth1.6969 (VLAN 6969)
Upstream ──────── eth1.6970 (VLAN 6970)
CGNAT ────────── eth1.6971 (VLAN 6971)
Note: Management is always on a separate interface (eth0) and in the management VRF.
Configuration via CLI
Set Management Interface
abng> configure
abng# set interfaces management "eth0"
abng# commit
Set Subscriber Trunk
abng# set interfaces subscriber_trunk "eth1"
abng# commit
Set Upstream Interface
abng# set interfaces upstream "eth2"
abng# commit
Set CGNAT Handoff
abng# set interfaces cgnat_handoff "eth3"
abng# commit
Verification
View Interface Configuration
abng> show configuration | match "^interfaces:"
interfaces:
management: eth0
subscriber_trunk: eth1
upstream: eth2
cgnat_handoff: eth3
View Interface Status
abng> show interfaces
┌──────────┬──────────┬─────────────┬──────────┬──────────┐
│ Name │ State │ IP Address │ MTU │ RX/TX │
├──────────┼──────────┼─────────────┼──────────┼──────────┤
│ eth0 │ UP │ 10.255.0.1 │ 1500 │ 1.2G/850M│
│ eth1 │ UP │ — │ 1500 │ 45.3G/12G│
│ eth2 │ UP │ 10.255.0.2 │ 1500 │ 2.1G/1.8G│
│ eth3 │ UP │ 10.99.0.1 │ 1500 │ 500M/200M│
└──────────┴──────────┴─────────────┴──────────┴──────────┘
Validation Rules
| Field | Validation |
|---|---|
management | Must be a valid interface name that exists on the system |
subscriber_trunk | Must be a valid interface name that exists on the system |
upstream | Must be a valid interface name that exists on the system |
cgnat_handoff | Optional, must be a valid interface name if specified |
Best Practices
- Naming Convention — Use consistent naming (e.g., eth0, eth1, eth2)
- Separate Interfaces — Use separate physical interfaces when possible for better isolation
- Management Interface — Always use a dedicated management interface (eth0)
- Subscriber Trunk — Use a high-capacity interface for subscriber traffic
- Upstream Interface — Use a high-capacity interface for upstream peering
- CGNAT Handoff — Use a dedicated interface if CGNAT traffic is significant
- Router-on-a-Stick — Only use for small deployments or testing
Troubleshooting
Interface Not Found
Validation error: interface "eth10" not found
Solution: Check available interfaces:
ip link show
Interface Already in Use
Error: interface "eth0" is already in use
Solution: Ensure the interface is not used by another service.
Subscriber Trunk Not Receiving Traffic
- Check interface is up:
ip link show eth1 - Check VLAN tags are correct:
tcpdump -i eth1 -e - Check demux is enabled:
show configuration | match demux - Check demux logs:
journalctl -u abng-demux -f
Next Steps
- VLAN Demux Configuration — Dynamic VLAN creation
- PPPoE Configuration — PPPoE server settings
- DHCP Configuration — DHCP/IPoE server settings
- Configuration Overview — All configuration sections