mirror of
https://github.com/rtbrick/bngblaster.git
synced 2024-05-06 15:54:57 +00:00
413 lines
13 KiB
Markdown
413 lines
13 KiB
Markdown
# Reports
|
|
|
|
The BNG Blaster is able to generate detailed result reports
|
|
at the end of of the test execution.
|
|
|
|
## Standard Output Reports
|
|
|
|
```text
|
|
|
|
____ __ ____ _ __ ,/
|
|
/ __ \ / /_ / __ ) _____ (_)_____ / /__ ,'/
|
|
/ /_/ // __// __ |/ ___// // ___// //_/ ,' /
|
|
/ _, _// /_ / /_/ // / / // /__ / ,< ,' /_____,
|
|
/_/ |_| \__//_____//_/ /_/ \___//_/|_| .'____ ,'
|
|
____ _ _ ______ ____ _ _ / ,'
|
|
/ __ ) / | / // ____/ / __ ) / /____ _ _____ / /_ ___ ____ / ,'
|
|
/ __ |/ |/ // / __ / __ |/ // __ `// ___// __// _ \ / ___/ /,'
|
|
/ /_/ // /| // /_/ / / /_/ // // /_/ /(__ )/ /_ / __// / /
|
|
/_____//_/ |_/ \____/ /_____//_/ \__,_//____/ \__/ \___//_/
|
|
|
|
Report:
|
|
|
|
Sessions PPPoE: 500 IPoE: 0
|
|
Sessions established: 500/500
|
|
DHCPv6 sessions established: 500
|
|
Setup Time: 396 ms
|
|
Setup Rate: 1262.63 CPS (MIN: 1262.63 AVG: 1262.63 MAX: 1262.63)
|
|
Flapped: 0
|
|
|
|
Network Interface ( eth2 ):
|
|
TX: 25503 packets
|
|
RX: 24254 packets
|
|
TX Session: 8500 packets
|
|
RX Session: 8248 packets (0 loss)
|
|
TX Session IPv6: 8500 packets
|
|
RX Session IPv6: 8000 packets (0 loss)
|
|
TX Session IPv6PD: 8500 packets
|
|
RX Session IPv6PD: 8000 packets (0 loss)
|
|
TX Multicast: 0 packets
|
|
RX Drop Unknown: 1 packets
|
|
TX Encode Error: 0
|
|
RX Decode Error: 0 packets
|
|
TX Send Failed: 0
|
|
TX No Buffer: 0
|
|
TX Poll Kernel: 0
|
|
RX Poll Kernel: 3932
|
|
|
|
Access Interface ( eth1 ):
|
|
TX: 33250 packets
|
|
RX: 34047 packets
|
|
TX Session: 8500 packets
|
|
RX Session: 8248 packets (0 loss, 0 wrong session)
|
|
TX Session IPv6: 8500 packets
|
|
RX Session IPv6: 8000 packets (0 loss, 0 wrong session)
|
|
TX Session IPv6PD: 8500 packets
|
|
RX Session IPv6PD: 8000 packets (0 loss, 0 wrong session)
|
|
RX Multicast: 0 packets (0 loss)
|
|
RX Drop Unknown: 1 packets
|
|
TX Encode Error: 33250 packets
|
|
RX Decode Error: 0 packets
|
|
TX Send Failed: 0
|
|
TX No Buffer: 0
|
|
TX Poll Kernel: 0
|
|
RX Poll Kernel: 3932
|
|
|
|
Access Interface Protocol Packet Stats:
|
|
ARP TX: 0 RX: 0
|
|
PADI TX: 500 RX: 0
|
|
PADO TX: 0 RX: 500
|
|
PADR TX: 500 RX: 0
|
|
PADS TX: 0 RX: 500
|
|
PADT TX: 1 RX: 499
|
|
LCP TX: 2249 RX: 2249
|
|
PAP TX: 250 RX: 250
|
|
CHAP TX: 250 RX: 500
|
|
IPCP TX: 1500 RX: 1500
|
|
IP6CP TX: 1500 RX: 1500
|
|
IGMP TX: 0 RX: 1298
|
|
ICMP TX: 0 RX: 0
|
|
ICMPv6 TX: 500 RX: 500
|
|
DHCPv6 TX: 500 RX: 500
|
|
|
|
Access Interface Protocol Timeout Stats:
|
|
LCP Echo Request: 0
|
|
LCP Request: 0
|
|
IPCP Request: 0
|
|
IP6CP Request: 0
|
|
PAP: 0
|
|
CHAP: 0
|
|
ICMPv6 RS: 0
|
|
DHCPv6 Request: 0
|
|
|
|
Session Traffic:
|
|
Config:
|
|
IPv4 PPS: 1
|
|
IPv6 PPS: 1
|
|
IPv6PD PPS: 1
|
|
Verified Traffic Flows: 3000/3000
|
|
Access IPv4: 500
|
|
Access IPv6: 500
|
|
Access IPv6PD: 500
|
|
Network IPv4: 500
|
|
Network IPv6: 500
|
|
Network IPv6PD: 500
|
|
First Sequence Number Received:
|
|
Access IPv4 MIN: 1 ( 1.000s) MAX: 2 ( 2.000s)
|
|
Access IPv6 MIN: 2 ( 2.000s) MAX: 2 ( 2.000s)
|
|
Access IPv6PD MIN: 2 ( 2.000s) MAX: 2 ( 2.000s)
|
|
Network IPv4 MIN: 1 ( 1.000s) MAX: 2 ( 2.000s)
|
|
Network IPv6 MIN: 2 ( 2.000s) MAX: 2 ( 2.000s)
|
|
Network IPv6PD MIN: 2 ( 2.000s) MAX: 2 ( 2.000s)
|
|
```
|
|
|
|
## JSON Reports
|
|
|
|
A detailed JSON report is generated if enabled using the optional argument `-J <filename>`
|
|
as shown in the example below.
|
|
|
|
```json
|
|
{
|
|
"report": {
|
|
"sessions": 500,
|
|
"sessions-pppoe": 500,
|
|
"sessions-ipoe": 0,
|
|
"sessions-established": 500,
|
|
"sessions-flapped": 0,
|
|
"setup-time-ms": 396,
|
|
"setup-rate-cps": 1263,
|
|
"setup-rate-cps-min": 1263,
|
|
"setup-rate-cps-avg": 1263,
|
|
"setup-rate-cps-max": 1263,
|
|
"dhcpv6-sessions-established": 500,
|
|
"network-interfaces": [
|
|
{
|
|
"name": "eth2",
|
|
"tx-packets": 25503,
|
|
"rx-packets": 24254,
|
|
"tx-session-packets": 8500,
|
|
"rx-session-packets": 8248,
|
|
"rx-session-packets-loss": 0,
|
|
"tx-session-packets-avg-pps-max": 500,
|
|
"rx-session-packets-avg-pps-max": 500,
|
|
"tx-session-packets-ipv6": 8500,
|
|
"rx-session-packets-ipv6": 8000,
|
|
"rx-session-packets-ipv6-loss": 0,
|
|
"tx-session-packets-avg-pps-max-ipv6": 500,
|
|
"rx-session-packets-avg-pps-max-ipv6": 500,
|
|
"tx-session-packets-ipv6pd": 8500,
|
|
"rx-session-packets-ipv6pd": 8000,
|
|
"rx-session-packets-ipv6pd-loss": 0,
|
|
"tx-session-packets-avg-pps-max-ipv6pd": 500,
|
|
"rx-session-packets-avg-pps-max-ipv6pd": 500,
|
|
"tx-multicast-packets": 0
|
|
}
|
|
],
|
|
"access-interfaces": [
|
|
{
|
|
"name": "eth1",
|
|
"tx-packets": 33250,
|
|
"rx-packets": 34047,
|
|
"tx-session-packets": 8500,
|
|
"rx-session-packets": 8248,
|
|
"rx-session-packets-loss": 0,
|
|
"rx-session-packets-wrong-session": 0,
|
|
"tx-session-packets-avg-pps-max": 500,
|
|
"rx-session-packets-avg-pps-max": 500,
|
|
"tx-session-packets-ipv6": 8500,
|
|
"rx-session-packets-ipv6": 8000,
|
|
"rx-session-packets-ipv6-loss": 0,
|
|
"rx-session-packets-ipv6-wrong-session": 0,
|
|
"tx-session-packets-avg-pps-max-ipv6": 500,
|
|
"rx-session-packets-avg-pps-max-ipv6": 500,
|
|
"tx-session-packets-ipv6pd": 8500,
|
|
"rx-session-packets-ipv6pd": 8000,
|
|
"rx-session-packets-ipv6pd-loss": 0,
|
|
"rx-session-packets-ipv6pd-wrong-session": 0,
|
|
"tx-session-packets-avg-pps-max-ipv6pd": 500,
|
|
"rx-session-packets-avg-pps-max-ipv6pd": 500,
|
|
"rx-multicast-packets": 0,
|
|
"rx-multicast-packets-loss": 0,
|
|
"protocol-stats": {
|
|
"arp-tx": 0,
|
|
"arp-rx": 0,
|
|
"padi-tx": 500,
|
|
"pado-rx": 500,
|
|
"padr-tx": 500,
|
|
"pads-rx": 500,
|
|
"padt-tx": 1,
|
|
"padt-rx": 499,
|
|
"lcp-tx": 2249,
|
|
"lcp-rx": 2249,
|
|
"pap-tx": 250,
|
|
"pap-rx": 250,
|
|
"chap-tx": 250,
|
|
"chap-rx": 500,
|
|
"ipcp-tx": 1500,
|
|
"ipcp-rx": 1500,
|
|
"ip6cp-tx": 1500,
|
|
"ip6cp-rx": 1500,
|
|
"igmp-tx": 0,
|
|
"igmp-rx": 1298,
|
|
"icmp-tx": 0,
|
|
"icmp-rx": 0,
|
|
"icmpv6-tx": 500,
|
|
"icmpv6-rx": 500,
|
|
"dhcpv6-tx": 500,
|
|
"dhcpv6-rx": 500,
|
|
"lcp-echo-timeout": 0,
|
|
"lcp-request-timeout": 0,
|
|
"ipcp-request-timeout": 0,
|
|
"ip6cp-request-timeout": 0,
|
|
"pap-timeout": 0,
|
|
"chap-timeout": 0,
|
|
"icmpv6-rs-timeout": 0,
|
|
"dhcpv6-timeout": 0
|
|
}
|
|
}
|
|
],
|
|
"session-traffic": {
|
|
"config-ipv4-pps": 1,
|
|
"config-ipv6-pps": 1,
|
|
"config-ipv6pd-pps": 1,
|
|
"total-flows": 3000,
|
|
"verified-flows": 3000,
|
|
"verified-flows-access-ipv4": 500,
|
|
"verified-flows-access-ipv6": 500,
|
|
"verified-flows-access-ipv6pd": 500,
|
|
"verified-flows-network-ipv4": 500,
|
|
"verified-flows-network-ipv6": 500,
|
|
"verified-flows-network-ipv6pd": 500,
|
|
"first-seq-rx-access-ipv4-min": 1,
|
|
"first-seq-rx-access-ipv4-max": 2,
|
|
"first-seq-rx-access-ipv6-min": 2,
|
|
"first-seq-rx-access-ipv6-max": 2,
|
|
"first-seq-rx-access-ipv6pd-min": 2,
|
|
"first-seq-rx-access-ipv6pd-max": 2,
|
|
"first-seq-rx-network-ipv4-min": 1,
|
|
"first-seq-rx-network-ipv4-max": 2,
|
|
"first-seq-rx-network-ipv6-min": 2,
|
|
"first-seq-rx-network-ipv6-max": 2,
|
|
"first-seq-rx-network-ipv6pd-min": 2,
|
|
"first-seq-rx-network-ipv6pd-max": 2
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
The optional argument `-j sessions` allows to include per session statistics
|
|
in the report file. Similar with `-j streams` which allows to include per stream
|
|
statistics. Both options could be also combined.
|
|
|
|
## Interface Statistics
|
|
|
|
## Session Traffic Statistics
|
|
|
|
Those statistics are related to the test traffic send between PPPoE sessions
|
|
and the network interface.
|
|
|
|
Flow | Description
|
|
---- | -----------
|
|
Access RX | Network traffic received on access interface (downstream)
|
|
Access TX | Network traffic send from access interface (Upstream)
|
|
Network RX | Access traffic received on network interface (Upstream)
|
|
Network TX | Access traffic send from network interface (downstream)
|
|
|
|
### Verified Traffic Flows
|
|
|
|
Counts the verified traffic flows per type and direction.
|
|
|
|
The `Access IPv4` tells how many sessions have successfully received
|
|
session verification traffic IPv4 traffic on the access interface. Similar
|
|
for IPv6 or IPv6PD (prefix delegation). Session verification traffic received
|
|
on the network interface is counted similar using the `Network IP...` statistics.
|
|
|
|
Assuming session traffic is enabled for IPv4, IPv6 and IPv6PD, in this case
|
|
all statics should be equal matching the number of sessions.
|
|
|
|
*Example report output for 100 sessions:*
|
|
|
|
```text
|
|
Session Traffic:
|
|
Config:
|
|
IPv4 PPS: 1
|
|
IPv6 PPS: 1
|
|
IPv6PD PPS: 1
|
|
Verified Traffic Flows: 3000/3000
|
|
Access IPv4: 500
|
|
Access IPv6: 500
|
|
Access IPv6PD: 500
|
|
Network IPv4: 500
|
|
Network IPv6: 500
|
|
Network IPv6PD: 500
|
|
First Sequence Number Received:
|
|
Access IPv4 MIN: 1 MAX: 2
|
|
Access IPv6 MIN: 2 MAX: 2
|
|
Access IPv6PD MIN: 2 MAX: 2
|
|
Network IPv4 MIN: 1 MAX: 2
|
|
Network IPv6 MIN: 2 MAX: 2
|
|
Network IPv6PD MIN: 2 MAX: 2
|
|
```
|
|
|
|
JSON:
|
|
|
|
```json
|
|
{
|
|
"session-traffic": {
|
|
"config-ipv4-pps": 1,
|
|
"config-ipv6-pps": 1,
|
|
"config-ipv6pd-pps": 1,
|
|
"total-flows": 3000,
|
|
"verified-flows": 3000,
|
|
"verified-flows-access-ipv4": 500,
|
|
"verified-flows-access-ipv6": 500,
|
|
"verified-flows-access-ipv6pd": 500,
|
|
"verified-flows-network-ipv4": 500,
|
|
"verified-flows-network-ipv6": 500,
|
|
"verified-flows-network-ipv6pd": 500,
|
|
"first-seq-rx-access-ipv4-min": 1,
|
|
"first-seq-rx-access-ipv4-max": 2,
|
|
"first-seq-rx-access-ipv6-min": 2,
|
|
"first-seq-rx-access-ipv6-max": 2,
|
|
"first-seq-rx-access-ipv6pd-min": 2,
|
|
"first-seq-rx-access-ipv6pd-max": 2,
|
|
"first-seq-rx-network-ipv4-min": 1,
|
|
"first-seq-rx-network-ipv4-max": 2,
|
|
"first-seq-rx-network-ipv6-min": 2,
|
|
"first-seq-rx-network-ipv6-max": 2,
|
|
"first-seq-rx-network-ipv6pd-min": 2,
|
|
"first-seq-rx-network-ipv6pd-max": 2
|
|
}
|
|
}
|
|
```
|
|
|
|
The flow verification status can be also queried via
|
|
global control socket command `session-traffic`.
|
|
|
|
`$ cat command.json | jq .`
|
|
|
|
```json
|
|
{
|
|
"command": "session-traffic"
|
|
}
|
|
```
|
|
|
|
`$ cat command.json | sudo nc -U test.socket | jq .`
|
|
|
|
```json
|
|
{
|
|
"status": "ok",
|
|
"code": 200,
|
|
"session-traffic": {
|
|
"total-flows": 3000,
|
|
"verified-flows": 3000
|
|
}
|
|
}
|
|
```
|
|
|
|
### First Sequence Number Received
|
|
|
|
If session traffic is enabled, the BNG Blaster will start sending bidirectional
|
|
traffic between PPPoE session and network interface as soon as the session is
|
|
established using the rate as configured starting with sequence number 1 for
|
|
each flow.
|
|
|
|
*Example config output with 1 packet per second:*
|
|
|
|
```json
|
|
{
|
|
"session-traffic": {
|
|
"ipv4-pps": 1,
|
|
"ipv6-pps": 1,
|
|
"ipv6pd-pps": 1
|
|
}
|
|
}
|
|
```
|
|
|
|
Assuming the first sequence number received for given flow is 5
|
|
combined with a rate of 1 PPS would mean that it took between 4
|
|
and 5 seconds until forwarding is working.
|
|
|
|
*Example report output with 1 packet per second:*
|
|
|
|
```text
|
|
STDOUT:
|
|
|
|
First Sequence Number Received:
|
|
Access IPv4 MIN: 1 MAX: 1
|
|
Access IPv6 MIN: 1 MAX: 1
|
|
Access IPv6PD MIN: 1 MAX: 1
|
|
Network IPv4 MIN: 1 MAX: 1
|
|
Network IPv6 MIN: 1 MAX: 1
|
|
Network IPv6PD MIN: 1 MAX: 1
|
|
```
|
|
|
|
JSON:
|
|
|
|
```json
|
|
{
|
|
"first-seq-rx-access-ipv4-min": 1,
|
|
"first-seq-rx-access-ipv4-max": 1,
|
|
"first-seq-rx-access-ipv6-min": 1,
|
|
"first-seq-rx-access-ipv6-max": 1,
|
|
"first-seq-rx-access-ipv6pd-min": 1,
|
|
"first-seq-rx-access-ipv6pd-max": 1,
|
|
"first-seq-rx-network-ipv4-min": 1,
|
|
"first-seq-rx-network-ipv4-max": 1,
|
|
"first-seq-rx-network-ipv6-min": 1,
|
|
"first-seq-rx-network-ipv6-max": 1,
|
|
"first-seq-rx-network-ipv6pd-min": 1,
|
|
"first-seq-rx-network-ipv6pd-max": 1
|
|
}
|
|
```
|