ICMP

The BNG Blaster responds to ICMP echo-requests (PING) on all interfaces, allowing you to ping PPPoE and IPoE sessions, as well as network interfaces. When it comes to network interfaces, the BNG Blaster replies to any request with matching MAC address. This means you can ping all advertised prefixes over those interfaces.

Beyond simply responding to echo-requests, the BNG Blaster also includes an ICMP client. With this client, you can initiate ICMP echo-requests (PING) from PPPoE and IPoE sessions and network interfaces. Each client instance maintains its result tracking. Consequently, if the client receives ICMP unreachable, TTL exceeded, or fragmentation needed messages, these are properly logged and made accessible through the associated ICMP commands.

ICMP Client

Following is a basic ICMP client configuration example.

{
    "interfaces": {
        "network": [
            {
                "interface": "eth1",
                "address": "10.0.1.2/24",
                "gateway": "10.0.1.1",
                "vlan": 10
            }
        ],
        "access": [
            {
                "interface": "eth2",
                "outer-vlan": 7,
                "icmp-client-group-id": 1
            }
        ]
    },
    "icmp-client": [
        {
            "__comment__": "ping from session"
            "icmp-client-group-id": 1,
            "destination-address": "10.10.10.10"
        },
        {
            "__comment__": "ping from network interface"
            "network-interface": "eth1:10",
            "destination-address": "10.0.1.1"
        }
    ]
}
{ "icmp-client": {} }

Attribute

Description

icmp-client-group-id

ICMP client identifier.
This identifier is used to create ICMP clients for sessions.
Range: 1 - 65535

network-interface

ICMP client network-interface.
Use network-interface instead of icmp-client-group-id when
creating ICMP clients on a network interface. These two options
are mutually exclusive, but at least one of them is required.

destination-address

Mandatory destination IPv4 address.

source-address

Optional source IPv4 address.
Default: session/interface address

size

ICMP data size.
Default: 8 Range: 0 - 65507

interval

ICMP send interval in seconds.
Default: 1.0

count

ICMP requests to send before stopping.
Default: 0 (infinity)

results

ICMP request to track results for.
Default: 3 or count if set

ttl

IPv4 header TTL value.
Default: 64

tos

IPv4 header TOS value.
Default: 0

df

IPv4 header dont-fragement (DF) bit.
Default: false

autostart

Autostart ICMP client after session reconnects. This applies only
to ICMP clients that are bound to access sessions.
Default: true

start-delay

ICMP client start delay in seconds.
Default: 0

The association between the ICMP client and sessions is established through the use of the ICMP client group identifier (icmp-client-group-id). Multiple ICMP clients can be defined with the same ICMP client group identifier.

For instance, if you define 4 ICMP clients with the same ICMP client group identifier and bind them to 100 sessions each, the BNG Blaster will generate a total of 400 ICMP client instances.

It is also possible to setup ICMP clients over network interfaces, in this case the network interface name (network-interface) must be defined instead of the ICMP client group identifier (icmp-client-group-id).

It is mandatory to set either ICMP client group identifier or network interface but only one as those attributes are mutually exclusive.

The ICMP logging flag (-l icmp) enables detailed ICMP logging:

# network interfaces
Dec 18 15:58:22.394677 ICMP (eth1:10) send echo-request addr=10.0.1.2 id=2 seq=21
Dec 18 15:58:22.395566 ICMP (eth1:10) fragmentation needed addr=10.0.1.2 id=2 seq=21 mtu=1492
# sessions
Dec 18 15:58:22.727988 ICMP (ID: 1) send echo-request addr=10.0.1.2 id=1 seq=21
Dec 18 15:58:22.728992 ICMP (ID: 1) received echo-reply addr=10.0.1.2 id=1 seq=21 size=8 ttl=63 rtt=1ms
Dec 18 15:58:22.927569 ICMP (ID: 2) send echo-request addr=10.0.1.2 id=1 seq=21
Dec 18 15:58:22.928480 ICMP (ID: 2) TTL exceeded addr=10.0.1.2 id=1 seq=21