PPPoE
Emulating PPP over Ethernet (PPPoE) sessions was initial use case of the BNG Blaster supporting 1:1 and N:1 VLAN mode.
Configuration
Following a basic PPPoE configuration example.
{
"interfaces": {
"network": {
"interface": "eth2",
"address": "10.0.0.1",
"gateway": "10.0.0.2",
"address-ipv6": "fc66:1337:7331::1",
"gateway-ipv6": "fc66:1337:7331::2"
},
"access": [
{
"interface": "eth1",
"type": "pppoe",
"outer-vlan-min": 1000,
"outer-vlan-max": 1999,
"inner-vlan-min": 1,
"inner-vlan-max": 4049,
"authentication-protocol": "PAP"
},
{
"interface": "eth1",
"type": "pppoe",
"outer-vlan-min": 2000,
"outer-vlan-max": 2999,
"inner-vlan-min": 1,
"inner-vlan-max": 4049,
"authentication-protocol": "CHAP"
}
]
},
"sessions": {
"count": 1000,
"session-time": 0,
"max-outstanding": 800,
"start-rate": 400,
"stop-rate": 400
},
"pppoe": {
"reconnect": true,
"discovery-timeout": 3,
"discovery-retry": 10
},
"ppp": {
"mru": 1492,
"authentication": {
"username": "user{session-global}@rtbrick.com",
"password": "test",
"timeout": 5,
"retry": 30
},
"lcp": {
"conf-request-timeout": 1,
"conf-request-retry": 10,
"keepalive-interval": 30,
"keepalive-retry": 3
},
"ipcp": {
"enable": true,
"request-ip": true,
"request-dns1": true,
"request-dns2": true,
"conf-request-timeout": 1,
"conf-request-retry": 10
},
"ip6cp": {
"enable": true,
"conf-request-timeout": 1,
"conf-request-retry": 10
}
},
"dhcpv6": {
"enable": true,
"rapid-commit": 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}",
"rate-up": 1024,
"rate-down": 16384
},
"session-traffic": {
"ipv4-pps": 1,
"ipv6-pps": 1,
"ipv6pd-pps": 1
}
}
PPPoE
{ "pppoe": {} }
Attribute |
Description |
Default |
---|---|---|
session-time |
Max PPPoE session time in seconds |
0 (infinity) |
reconnect |
Automatically reconnect sessions if terminated |
false |
discovery-timeout |
PPPoE discovery (PADI and PADR) timeout in seconds |
5 |
discovery-retry |
PPPoE discovery (PADI and PADR) max retry |
10 |
service-name |
PPPoE discovery service name |
|
host-uniq |
PPPoE discovery host-uniq |
false |
vlan-priority |
VLAN PBIT for all PPPoE/PPP control traffic |
0 |
PPP
{ "ppp": {} }
Attribute |
Description |
Default |
---|---|---|
mru |
Define the maximum receive unit proposed via PPP |
1492 |
PPP Authentication
{ "ppp": { "authentication": {} } }
Attribute |
Description |
Default |
---|---|---|
username |
Username |
|
password |
Password |
test |
timeout |
Authentication request timeout in seconds |
5 |
retry |
Authentication request max retry |
30 |
protocol |
This value can be set to PAP or CHAP to reject the other protocol |
allow PAP and CHAP |
PPP LCP
{ "ppp": { "lcp": {} } }
Attribute |
Description |
Default |
---|---|---|
conf-request-timeout |
LCP configuration request timeout in seconds |
5 |
conf-request-retry |
LCP configuration request max retry |
10 |
keepalive-interval |
LCP echo request interval in seconds (0 means disabled) |
30 |
keepalive-retry |
PPP LCP echo request max retry |
3 |
start-delay |
PPP LCP initial request delay in milliseconds |
0 |
ignore-vendor-specific |
Ignore LCP vendor specific requests |
false |
connection-status-message |
Accept LCP connection status messages |
false |
PPP IPCP (IPv4)
{ "ppp": { "ipcp": {} } }
Attribute |
Description |
Default |
---|---|---|
enable |
This option allows to enable or disable the IPCP protocol |
true |
request-ip |
Include IP-Address with 0.0.0.0 in initial LCP configuration request |
true |
request-dns1 |
Request Primary DNS Server Address (option 129) |
true |
request-dns2 |
Request Secondary DNS Server Address (option 131) |
true |
conf-request-timeout |
IPCP configuration request timeout in seconds |
5 |
conf-request-retry |
IPCP configuration request max retry |
10 |
PPP IP6CP (IPv6)
{ "ppp": { "ip6cp": {} } }
Attribute |
Description |
Default |
---|---|---|
enable |
This option allows to enable or disable the IP6CP protocol |
true |
conf-request-timeout |
IP6CP configuration request timeout in seconds |
5 |
conf-request-retry |
IP6CP configuration request max retry |
10 |
LCP Vendor Extension
This chapter refers to RFC 2153 PPP vendor extensions.
Per default all LCP vendor specific requests will be rejected sending a
LCP code reject message. With the LCP option ignore-vendor-specific
enabled, those messages will be ignored as required to emulate different CPE
behaviors.
The LCP option connection-status-message
allows to accept LCP vendor requests
with any OUI if kind is set to 1
by responding with vendor request of
kind 2
. The OUI from request is copied to response in this case.
The value from request is stored in the session as connection-status-message
.
PPPoE Commands
The control socket command session-info session-id <id>
provides
detailed information for PPPoE sessions.
$ sudo bngblaster-cli run.sock session-info session-id 1 | jq .
{
"status": "ok",
"code": 200,
"session-information": {
"type": "pppoe",
"session-id": 1,
"session-state": "Established",
"interface": "eth1",
"outer-vlan": 1000,
"inner-vlan": 1,
"mac": "02:00:00:00:00:01",
"username": "user1@rtbrick.com",
"agent-circuit-id": "0.0.0.0/0.0.0.0 eth 0:1",
"agent-remote-id": "DEU.RTBRICK.1",
"lcp-state": "Opened",
"ipcp-state": "Opened",
"ip6cp-state": "Opened",
"ipv4-address": "10.100.128.0",
"ipv4-dns1": "10.0.0.3",
"ipv4-dns2": "10.0.0.4",
"ipv6-prefix": "fc66:1000:1::/64",
"ipv6-delegated-prefix": "fc66:2000::/56",
"ipv6-dns1": "fc66::3",
"ipv6-dns2": "fc66::4",
"dhcpv6-state": "Bound",
"dhcpv6-dns1": "fc66::3",
"dhcpv6-dns2": "fc66::4",
"tx-packets": 10036,
"rx-packets": 10083,
"rx-fragmented-packets": 0,
"session-traffic": {
"total-flows": 6,
"verified-flows": 6,
"first-seq-rx-access-ipv4": 2,
"first-seq-rx-access-ipv6": 3,
"first-seq-rx-access-ipv6pd": 3,
"first-seq-rx-network-ipv4": 2,
"first-seq-rx-network-ipv6": 3,
"first-seq-rx-network-ipv6pd": 3,
"access-tx-session-packets": 3266,
"access-rx-session-packets": 3265,
"access-rx-session-packets-loss": 0,
"network-tx-session-packets": 3266,
"network-rx-session-packets": 3265,
"network-rx-session-packets-loss": 0,
"access-tx-session-packets-ipv6": 3266,
"access-rx-session-packets-ipv6": 3264,
"access-rx-session-packets-ipv6-loss": 0,
"network-tx-session-packets-ipv6": 3266,
"network-rx-session-packets-ipv6": 3264,
"network-rx-session-packets-ipv6-loss": 0,
"access-tx-session-packets-ipv6pd": 3266,
"access-rx-session-packets-ipv6pd": 3264,
"access-rx-session-packets-ipv6pd-loss": 0,
"network-tx-session-packets-ipv6pd": 3266,
"network-rx-session-packets-ipv6pd": 3264,
"network-rx-session-packets-ipv6pd-loss": 0
}
}
}