Skip to content

Interfaces

Network interface configuration. Each key in the interfaces map is an interface name.

Field Type Description Example
name string Interface name eth1
description string Human-readable description Access Interface
enabled bool Enable the interface true
mtu int MTU size 9000
lcp bool Create Linux Control Plane interface true
bng_mode string BNG role: access or core access
unnumbered string Borrow address from named interface loop100
bond Bond Bond interface configuration (DPDK only)
address Address IP address configuration
subinterfaces Subinterface Sub-interface configuration
ipv6 IPv6 IPv6 configuration
arp ARP ARP configuration

Address

Field Type Description Example
ipv4 array IPv4 addresses (CIDR notation) [10.255.0.1/32]
ipv6 array IPv6 addresses (CIDR notation) [2001:db8::1/128]

Sub-interfaces

Sub-interfaces are configured as a list under the parent interface. Each entry requires an id (the VPP sub-interface ID) and a vlan (the outer VLAN to match).

Field Type Description Example
id int Sub-interface ID 100
vlan int Outer VLAN ID (1-4094) 100
inner-vlan int Inner VLAN ID for double-tag match (1-4094) 200
vlan-tpid string Outer VLAN TPID: dot1q or dot1ad. Defaults to dot1ad for double-tagged sub-interfaces (IEEE 802.1ad), dot1q for single-tagged dot1ad
enabled bool Enable the sub-interface true
description string Human-readable description Customer A
mtu int MTU override (auto-derived from parent if not set) 1504
lcp bool Create Linux Control Plane interface (only needed for addressless interfaces, e.g. unnumbered core interfaces for FRR routing) true
vrf string Bind to VRF CUSTOMER-A
address Address IP address configuration
ipv6 IPv6 IPv6 configuration
arp ARP ARP configuration
unnumbered string Borrow address from named interface loop100
bng BNG BNG configuration

Automatic sub-interface management

When using the BNG functionality of osvbng with subscriber groups, sub-interfaces are automatically deployed and managed based on the VLAN matching rules. You do not need to manually configure sub-interfaces in this section.

Automatic MTU

If mtu is not set, the sub-interface MTU is automatically derived from the parent interface: parent MTU plus 4 bytes for single-tag (802.1q), or plus 8 bytes for double-tag (QinQ). Set mtu explicitly to override.

Automatic LCP

When an IPv4 or IPv6 address is configured on a sub-interface, an LCP (Linux Control Plane) pair is automatically created. You only need to set lcp: true explicitly for addressless sub-interfaces that need Linux visibility (e.g., unnumbered core interfaces for FRR routing protocols).

VLAN matching flags are immutable

VPP does not support modifying sub-interface VLAN matching flags after creation. Changing vlan, inner-vlan, or vlan-tpid on an existing sub-interface requires a restart to take effect.

VLAN Matching Modes

Config Matching
vlan: 100 Single tag, outer dot1q
vlan: 100, inner-vlan: 200 Double tag exact match, outer dot1ad
vlan: 100, inner-vlan: 200, vlan-tpid: dot1q Double tag exact match, outer dot1q
BNG subscriber sub-interface Outer S-VLAN match, any inner C-VLAN, outer dot1ad

Sub-interface BNG

Field Type Description Example
mode string BNG mode: ipoe, ipoe-l3, pppoe, lac, lns pppoe

IPv6

Field Type Description Example
enabled bool Enable IPv6 true
multicast bool Enable IPv6 multicast true
ra RA Router Advertisement configuration

Router Advertisement

Field Type Description Example
managed bool Set Managed (M) flag in RA true
other bool Set Other (O) flag in RA true
router-lifetime int Router lifetime in seconds 1800
max-interval int Max RA interval in seconds 600
min-interval int Min RA interval in seconds 200

ARP

Field Type Description Example
enabled bool Enable ARP true

Bond

Bond interface configuration for link aggregation. In DPDK deployments, bonds are created inside VPP. In AF_PACKET (Docker) deployments, bonds are managed by the host OS — configure the bond interface by name without a bond section.

Field Type Description Example
mode string Bond mode lacp
members array Member interfaces (string or object)
load-balance string Load balancing algorithm (XOR/LACP only) l23
gso bool Enable Generic Segmentation Offload true
mac-address string Custom MAC address for the bond 02:00:00:00:00:01

Bond modes: lacp (default), round-robin, active-backup, xor, broadcast

Load balance algorithms: l2 (default), l23, l34 — only valid for lacp and xor modes.

Bond Members

Members can be specified as a simple string or as an object with per-member LACP settings:

members:
  - TenGigabitEthernet0/0/0                  # string shorthand (active, short timeout)
  - name: TenGigabitEthernet0/0/1            # object with LACP settings
    passive: false
    long-timeout: false
Field Type Description Default
name string Member interface name
passive bool LACP passive mode (don't initiate) false
long-timeout bool 90 second timeout (vs 3 second default) false

AF_PACKET (Docker) deployments

When running osvbng in Docker with AF_PACKET, bond interfaces are managed by the host operating system (e.g., Linux bonding). Simply reference the bond interface by name (e.g., bond0) in your configuration without a bond section — VPP will attach to it as a regular host interface.

Example

interfaces:
  eth1:
    name: eth1
    description: Access Interface
    enabled: true
    bng_mode: access

  eth2:
    name: eth2
    description: Core Interface
    enabled: true
    lcp: true
    subinterfaces:
      - id: 100
        vlan: 100
        enabled: true
        lcp: true
        vrf: CUSTOMER-A
        address:
          ipv4:
            - 10.0.100.1/24
        description: "Customer A VRF-lite"

  loop100:
    name: loop100
    description: Subscriber Gateway
    enabled: true
    lcp: true
    address:
      ipv4:
        - 10.255.0.1/32
    ipv6:
      enabled: true
      ra:
        managed: true
        other: true
        router-lifetime: 1800

DPDK Bond Example

interfaces:
  TenGigabitEthernet0/0/0:
    description: Core link 1
    enabled: true
  TenGigabitEthernet0/0/1:
    description: Core link 2
    enabled: true
  bond0:
    description: Core LACP bond
    enabled: true
    lcp: true
    bond:
      mode: lacp
      load-balance: l23
      gso: true
      members:
        - TenGigabitEthernet0/0/0
        - TenGigabitEthernet0/0/1

AF_PACKET Bond Example

In Docker deployments, bonding is managed by the host OS. The setup-interfaces.sh script bridges the container's veth pair to the host bond interface. osvbng sees the container interface (e.g., eth1), and the name field can be used to reference it as bond0 inside osvbng.

# Host side: bridge container eth1 to host bond0
./setup-interfaces.sh osvbng eth0:br-mgmt eth1:bond0
# osvbng config — eth1 is bridged to host bond0, renamed to bond0 inside VPP
interfaces:
  eth1:
    name: bond0
    description: Core bond (managed by host OS)
    enabled: true
    lcp: true