IPoE

In addition to its versatile testing capabilities, the BNG Blaster excels in emulating IP over Ethernet (IPoE) subscribers, providing support for both static and dynamic address assignments. This functionality is particularly valuable for testing and validating the performance and behavior of network infrastructure components that handle IPoE-based connections.

The BNG Blaster’s IPoE emulation allows network administrators, developers, and service providers to simulate subscriber connections that utilize Ethernet as the underlying link layer protocol. This emulation extends to address assignment, offering the flexibility to configure both static and dynamic IP address assignment methods.

For scenarios where IP addresses are statically assigned to subscribers, the BNG Blaster enables users to define and assign specific IP addresses to individual subscribers or groups of subscribers. This facilitates accurate testing of network configurations and policies that rely on static IP address allocation.

In cases where dynamic IP address assignment is required, the BNG Blaster supports protocols like DHCP (Dynamic Host Configuration Protocol) to dynamically allocate IP addresses to subscribers. This dynamic address assignment capability allows for realistic testing of scenarios where IPoE subscribers obtain IP addresses dynamically, similar to real-world deployments.

Furthermore, the BNG Blaster provides support for different VLAN (Virtual Local Area Network) modes, including 1:1 and N:1 configurations. In the 1:1 VLAN mode, each IPoE subscriber is associated with a dedicated VLAN, ensuring isolation and individual control over their network traffic. On the other hand, the N:1 VLAN mode allows multiple IPoE subscribers to share a common VLAN.

By supporting various IP address assignment methods and VLAN configurations, the BNG Blaster offers a comprehensive and realistic emulation environment for testing IPoE-based network infrastructures. Whether it’s validating static IP address configurations, evaluating dynamic IP allocation mechanisms, or assessing VLAN-based deployments, the BNG Blaster’s IPoE emulation capabilities enable thorough testing and optimization of network components and services.

Static Addresses

Static addresses mean that the IP address and gateway are assigned statically as shown in the example below.

{
    "interfaces": {
        "access": [
        {
            "interface": "eth1",
            "type": "ipoe",
            "vlan-mode": "1:1",
            "outer-vlan-min": 128,
            "outer-vlan-max": 4000,
            "address": "200.0.0.1",
            "address-iter": "0.0.0.4",
            "gateway": "200.0.0.2",
            "gateway-iter": "0.0.0.4",
        }
    ]
    }
}

DHCPv4/v6

The most common case for IPoE is using DHCPv4/v6 as shown below.

{
    "interfaces": {
        "access": [
        {
            "interface": "eth1",
            "type": "ipoe",
            "outer-vlan": 7,
            "vlan-mode": "N:1"
        }
    ]
    },
    "dhcp": {
        "enable": true,
    },
    "dhcpv6": {
        "enable": true
    },
    "access-line": {
        "agent-remote-id": "DEU.RTBRICK.{session-global}",
        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:{session-global}"
    }
}

IPoE

{ "ipoe": {} }

Attribute

Description

ipv6

Enable/disable IPv6.
Default: true (enabled)

ipv4

Enable/disable IPv4.
Default: true (enabled)

arp-timeout

Initial ARP timeout/retry interval in seconds.
Default: 1

arp-interval

Periodic ARP interval in seconds (0 means disabled).
Default: 300

DHCP

{ "dhcp": {} }

Attribute

Description

enable

This option allows enabling or disabling DHCP.
Default: true

broadcast

DHCP broadcast flag.
Default: false

timeout

DHCP timeout in seconds.
Default: 5

retry

DHCP retry.
Default: 10

release-interval

DHCP release interval.
Default: 1

release-retry

DHCP release retry.
Default: 3

tos

IPv4 TOS for all DHCP control traffic.
Default: 0

vlan-priority

VLAN PBIT for all DHCP control traffic.
Default: 0

access-line

Add access-line attributes like Agent-Remote/Circuit-Id.
Default: true

DHCPv6

{ "dhcpv6": {} }

Attribute

Description

enable

This option allows enabling or disabling DHCPv6.
Default: true

ia-na

This option allows enabling or disabling DHCPv6 IA_NA.
Default: true

ia-pd

This option allows enabling or disabling DHCPv6 IA_PD.
Default: true

rapid-commit

DHCPv6 rapid commit (2-way handshake).
Default: true

timeout

DHCPv6 timeout in seconds.
Default: 5

retry

DHCPv6 retry.
Default: 10

access-line

Add access-line attributes like Agent-Remote/Circuit-Id.
Default: true

ldra

This option allows enabling or disabling LDRA.
DHCPv6 LDRA (Lightweight DHCPv6 Relay Agent) is defined in
Adding access-line information like Agent-Remote-Id or
Agent-Circuit-Id should be used with LDRA enabled only.
Default: false

IPoE Commands

The command session-info session-id <id> provides detailed information for IPoE sessions.

$ sudo bngblaster-cli run.sock session-info session-id 1 | jq .

{
    "status": "ok",
    "code": 200,
    "session-information": {
        "type": "ipoe",
        "session-id": 1,
        "session-state": "Established",
        "interface": "eth1",
        "outer-vlan": 8,
        "inner-vlan": 1,
        "mac": "02:00:00:00:00:01",
        "agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:1",
        "agent-remote-id": "DEU.RTBRICK.1",
        "ipv4-address": "1.1.1.3",
        "ipv4-netmask": "255.255.255.255",
        "ipv4-gateway": "1.1.1.1",
        "ipv4-dns1": "10.0.0.3",
        "ipv4-dns2": "10.0.0.4",
        "ipv6-prefix": "fc66:1337:2222::3/128",
        "ipv6-delegated-prefix": "fc66:1337:3333:2::/64",
        "dhcp-state": "Bound",
        "dhcp-server": "1.1.1.1",
        "dhcp-lease-time": 300,
        "dhcp-lease-expire": 299,
        "dhcp-lease-expire-t1": 149,
        "dhcp-lease-expire-t2": 261,
        "dhcp-tx": 2,
        "dhcp-rx": 2,
        "dhcp-tx-discover": 1,
        "dhcp-rx-offer": 1,
        "dhcp-tx-request": 1,
        "dhcp-rx-ack": 1,
        "dhcp-rx-nak": 0,
        "dhcp-tx-release": 0,
        "dhcpv6-state": "Bound",
        "dhcpv6-lease-time": 14400,
        "dhcpv6-lease-expire": 14399,
        "dhcpv6-lease-expire-t1": 899,
        "dhcpv6-lease-expire-t2": 1439,
        "dhcpv6-tx": 1,
        "dhcpv6-rx": 1,
        "dhcpv6-tx-solicit": 1,
        "dhcpv6-rx-advertise": 0,
        "dhcpv6-tx-request": 0,
        "dhcpv6-rx-reply": 1,
        "dhcpv6-tx-renew": 0,
        "dhcpv6-tx-release": 0,
        "dhcpv6-dns1": "fc66::3",
        "dhcpv6-dns2": "fc66::4",
        "tx-packets": 6,
        "rx-packets": 6,
        "rx-fragmented-packets": 0,
        "session-traffic": {
            "total-flows": 6,
            "verified-flows": 0,
            "downstream-ipv4-flow-id": 2,
            "downstream-ipv4-tx-packets": 13,
            "downstream-ipv4-rx-packets": 13,
            "downstream-ipv4-rx-first-seq": 1,
            "downstream-ipv4-loss": 0,
            "downstream-ipv4-wrong-session": 0,
            "upstream-ipv4-flow-id": 1,
            "upstream-ipv4-tx-packets": 13,
            "upstream-ipv4-rx-packets": 13,
            "upstream-ipv4-rx-first-seq": 1,
            "upstream-ipv4-loss": 0,
            "upstream-ipv4-wrong-session": 0,
            "downstream-ipv6-flow-id": 4,
            "downstream-ipv6-tx-packets": 13,
            "downstream-ipv6-rx-packets": 13,
            "downstream-ipv6-rx-first-seq": 1,
            "downstream-ipv6-loss": 0,
            "downstream-ipv6-wrong-session": 0,
            "upstream-ipv6-flow-id": 3,
            "upstream-ipv6-tx-packets": 13,
            "upstream-ipv6-rx-packets": 13,
            "upstream-ipv6-rx-first-seq": 1,
            "upstream-ipv6-loss": 0,
            "upstream-ipv6-wrong-session": 0,
            "downstream-ipv6pd-flow-id": 6,
            "downstream-ipv6pd-tx-packets": 13,
            "downstream-ipv6pd-rx-packets": 13,
            "downstream-ipv6pd-rx-first-seq": 1,
            "downstream-ipv6pd-loss": 0,
            "downstream-ipv6pd-wrong-session": 0,
            "upstream-ipv6pd-flow-id": 5,
            "upstream-ipv6pd-tx-packets": 13,
            "upstream-ipv6pd-rx-packets": 13,
            "upstream-ipv6pd-rx-first-seq": 1,
            "upstream-ipv6pd-loss": 0,
            "upstream-ipv6pd-wrong-session": 0
        }
    }
}