Reports
The BNG Blaster can generate detailed reports at the end of the test execution.
Session Setup Rate
The BNG Blaster measures the session setup time and rate. The setup time is the time difference between the first session started and the last session established. The setup rate is measured in calls per second (CPS) and calculated by the number of sessions established divided by the setup time.
sessions established
setup rate = --------------------
setup time
This value is internally calculated every second to derive the minimum, maximum and average setup rate. To better understand how those three values are derived, you can also think about a job that stores the actual setup rate every second into a time series database. Now you can search for the minimum and maximum value in this database and finally calculate the average over all entries. The result would be the same as the minimum, maximum and average setup rate calculated by BNG Blaster.
The following table gives an example of how those values are calculated on a particular example with 200 sessions set up over 4 seconds. The first 100 sessions have been established in one second followed by decreased setup rate.
Seconds |
Sessions Established |
Setup Rate |
MIN |
AVG |
MAX |
---|---|---|---|---|---|
1 |
100 |
100 |
100 |
100 |
100 |
2 |
150 |
75 |
75 |
88 |
100 |
3 |
150 |
50 |
50 |
75 |
100 |
4 |
200 |
50 |
50 |
69 |
100 |
Standard Output Reports
Report:
==============================================================================
Test Duration: 139s
Sessions PPPoE: 1000 IPoE: 0
Sessions established: 1000/1000
DHCPv6 sessions established: 1000
Setup Time: 55661 ms
Setup Rate: 17.97 CPS (MIN: 15.01 AVG: 18.03 MAX: 19.36)
Flapped: 0
Interface: eth1
------------------------------------------------------------------------------
TX: 111410 packets 12654727 bytes
TX Polled: 0
TX IO Error: 0
RX: 110161 packets 12300031 bytes
RX Protocol Error: 0 packets
RX Unknown: 5 packets
RX Polled: 93709
RX IO Error: 0
Access Interface: eth1
TX: 111410 packets 12654727 bytes
RX: 110156 packets 12299556 bytes
RX Multicast: 0 packets 0 loss
Session-Traffic:
TX IPv4: 33319 packets
RX IPv4: 32641 packets 0 loss
TX IPv6: 33319 packets
RX IPv6: 32635 packets 0 loss
TX IPv6PD: 33311 packets
RX IPv6PD: 32633 packets 0 loss
Access Interface Protocol Packet Stats:
ARP TX: 0 RX: 0
PADI TX: 1104 RX: 0
PADO TX: 0 RX: 500
PADR TX: 500 RX: 0
PADS TX: 0 RX: 500
PADT TX: 127 RX: 373
LCP TX: 4880 RX: 4880
PAP TX: 0 RX: 0
CHAP TX: 1700 RX: 1000
IPCP TX: 1500 RX: 1500
IP6CP TX: 1000 RX: 1000
IGMP TX: 0 RX: 0
ICMP TX: 0 RX: 0
DHCP TX: 0 RX: 0
DHCPv6 TX: 500 RX: 500
ICMPv6 TX: 1000 RX: 1840
IPv4 Fragmented RX: 0
Access Interface Protocol Timeout Stats:
LCP Echo Request: 0
LCP Request: 0
IPCP Request: 0
IP6CP Request: 0
PAP: 0
CHAP: 350
DHCP Request: 0
DHCPv6 Request: 0
ICMPv6 RS: 0
Interface: eth2
------------------------------------------------------------------------------
TX: 108580 packets 12360218 bytes
TX Polled: 0
TX IO Error: 0
RX: 106881 packets 11982029 bytes
RX Protocol Error: 0 packets
RX Unknown: 5 packets
RX Polled: 95265
RX IO Error: 0
Access Interface: eth2
TX: 108580 packets 12360218 bytes
RX: 106876 packets 11981554 bytes
RX Multicast: 0 packets 0 loss
Session-Traffic:
TX IPv4: 32465 packets
RX IPv4: 31896 packets 0 loss
TX IPv6: 32465 packets
RX IPv6: 31895 packets 0 loss
TX IPv6PD: 32461 packets
RX IPv6PD: 31894 packets 0 loss
Access Interface Protocol Packet Stats:
ARP TX: 0 RX: 0
PADI TX: 1102 RX: 0
PADO TX: 0 RX: 500
PADR TX: 844 RX: 0
PADS TX: 0 RX: 500
PADT TX: 78 RX: 422
LCP TX: 4343 RX: 4343
PAP TX: 822 RX: 500
CHAP TX: 0 RX: 0
IPCP TX: 1500 RX: 1500
IP6CP TX: 1000 RX: 1000
IGMP TX: 0 RX: 0
ICMP TX: 0 RX: 0
DHCP TX: 0 RX: 0
DHCPv6 TX: 500 RX: 500
ICMPv6 TX: 1000 RX: 1816
IPv4 Fragmented RX: 0
Access Interface Protocol Timeout Stats:
LCP Echo Request: 0
LCP Request: 0
IPCP Request: 0
IP6CP Request: 0
PAP: 322
CHAP: 0
DHCP Request: 0
DHCPv6 Request: 0
ICMPv6 RS: 0
Interface: eth3
------------------------------------------------------------------------------
TX: 197523 packets 21009053 bytes
TX Polled: 0
TX IO Error: 0
RX: 188259 packets 20425245 bytes
RX Protocol Error: 0 packets
RX Unknown: 0 packets
RX Polled: 74810
RX IO Error: 0
Network Interface: eth3
TX: 197523 packets 21009053 bytes
RX: 188259 packets 20425245 bytes
TX Multicast: 0 packets
Session-Traffic:
TX IPv4: 65784 packets
RX IPv4: 64537 packets 0 loss
TX IPv6: 65784 packets
RX IPv6: 61793 packets 0 loss
TX IPv6PD: 65772 packets
RX IPv6PD: 61790 packets 0 loss
Session Traffic (Global):
------------------------------------------------------------------------------
Config:
PPS IPv4: 1
PPS IPv6: 1
PPS IPv6PD: 1
Verified Traffic Flows: 6000/6000 (100.00%)
Downstream IPv4: 1000
Downstream IPv6: 1000
Downstream IPv6PD: 1000
Upstream IPv4: 1000
Upstream IPv6: 1000
Upstream IPv6PD: 1000
Violations: >1s >1s-2s >2s-3s >3s
Downstream IPv4: 623 ( 10.38%) 199 224 200
Downstream IPv6: 624 ( 10.40%) 200 218 206
Downstream IPv6PD: 624 ( 10.40%) 200 227 197
Upstream IPv4: 623 ( 10.38%) 199 224 200
Upstream IPv6: 624 ( 10.40%) 200 218 206
Upstream IPv6PD: 624 ( 10.40%) 200 227 197
Total: 3742 ( 62.37%) 1198 1338 1206
First Sequence Received: MIN AVG MAX
Downstream IPv4 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
Downstream IPv6 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
Downstream IPv6PD 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
Upstream IPv4 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
Upstream IPv6 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
Upstream IPv6PD 1 ( 1.00s) 2 ( 2.00s) 4 ( 4.00s)
JSON Reports
A detailed JSON report is generated if enabled using the optional
argument -J <filename>
.
{
"report": {
"sessions": 1000,
"sessions-pppoe": 1000,
"sessions-ipoe": 0,
"sessions-established": 1000,
"sessions-flapped": 0,
"setup-time-ms": 55661,
"setup-rate-cps": 17.97,
"setup-rate-cps-min": 15.01,
"setup-rate-cps-avg": 18.03,
"setup-rate-cps-max": 19.36,
"dhcp-sessions-established": 0,
"dhcpv6-sessions-established": 1000,
"interfaces": [
{
"name": "SN-6-L1",
"type": "Interface",
"tx-packets": 111410,
"tx-bytes": 12654727,
"tx-polled": 0,
"tx-io-error": 0,
"rx-packets": 110161,
"rx-bytes": 12300031,
"rx-protocol-error": 0,
"rx-unknown": 5,
"rx-polled": 12300031,
"rx-io-error": 0
},
{
"name": "SN-5-L1",
"type": "Interface",
"tx-packets": 108580,
"tx-bytes": 12360218,
"tx-polled": 0,
"tx-io-error": 0,
"rx-packets": 106881,
"rx-bytes": 11982029,
"rx-protocol-error": 0,
"rx-unknown": 5,
"rx-polled": 11982029,
"rx-io-error": 0
},
{
"name": "SN-2-S1",
"type": "Interface",
"tx-packets": 197523,
"tx-bytes": 21009053,
"tx-polled": 0,
"tx-io-error": 0,
"rx-packets": 188259,
"rx-bytes": 20425245,
"rx-protocol-error": 0,
"rx-unknown": 0,
"rx-polled": 20425245,
"rx-io-error": 0
}
],
"network-interfaces": [
{
"name": "SN-2-S1",
"tx-packets": 197523,
"tx-multicast-packets": 0,
"rx-packets": 188259,
"tx-stream-packets": 197340,
"rx-stream-packets": 188120,
"rx-stream-packets-loss": 0,
"tx-session-packets-ipv4": 65784,
"rx-session-packets-ipv4": 64537,
"rx-session-packets-ipv4-loss": 0,
"tx-session-packets-ipv4-avg-pps-max": 1000,
"rx-session-packets-ipv4-avg-pps-max": 1000,
"tx-session-packets-ipv6": 65784,
"rx-session-packets-ipv6": 61793,
"rx-session-packets-ipv6-loss": 0,
"tx-session-packets-ipv6-avg-pps-max": 1000,
"rx-session-packets-ipv6-avg-pps-max": 1000,
"tx-session-packets-ipv6pd": 65772,
"rx-session-packets-ipv6pd": 61790,
"rx-session-packets-ipv6pd-loss": 0,
"tx-session-packets-ipv6pd-avg-pps-max": 1000,
"rx-session-packets-ipv6pd-avg-pps-max": 1000
}
],
"access-interfaces": [
{
"name": "SN-6-L1",
"tx-packets": 111410,
"rx-packets": 110156,
"rx-multicast-packets": 0,
"rx-multicast-packets-loss": 0,
"tx-stream-packets": 99949,
"rx-stream-packets": 97909,
"rx-stream-packets-loss": 0,
"tx-session-packets-ipv4": 33319,
"rx-session-packets-ipv4": 32641,
"rx-session-packets-ipv4-loss": 0,
"rx-session-packets-ipv4-wrong-session": 0,
"tx-session-packets-ipv4-avg-pps-max": 500,
"rx-session-packets-ipv4-avg-pps-max": 500,
"tx-session-packets-ipv6": 33319,
"rx-session-packets-ipv6": 32635,
"rx-session-packets-ipv6-loss": 0,
"rx-session-packets-ipv6-wrong-session": 0,
"tx-session-packets-ipv6-avg-pps-max": 500,
"rx-session-packets-ipv6avg-pps-max": 500,
"tx-session-packets-ipv6pd": 33311,
"rx-session-packets-ipv6pd": 32633,
"rx-session-packets-ipv6pd-loss": 0,
"rx-session-packets-ipv6pd-wrong-session": 0,
"tx-session-packets-ipv6pd-avg-pps-max": 500,
"rx-session-packets-ipv6pd-avg-pps-max": 500,
"protocol-stats": {
"tx-arp": 0,
"rx-arp": 0,
"tx-padi": 1104,
"rx-pado": 500,
"tx-padr": 500,
"rx-pads": 500,
"tx-padt": 127,
"rx-padt": 373,
"tx-lcp": 4880,
"rx-lcp": 4880,
"tx-pap": 0,
"rx-pap": 0,
"tx-chap": 1700,
"rx-chap": 1000,
"tx-ipcp": 1500,
"rx-ipcp": 1500,
"tx-ip6cp": 1000,
"rx-ip6cp": 1000,
"tx-igmp": 0,
"rx-igmp": 0,
"tx-icmp": 0,
"rx-icmp": 0,
"tx-dhcp": 0,
"rx-dhcp": 0,
"tx-dhcpv6": 500,
"rx-dhcpv6": 500,
"tx-icmpv6": 1000,
"rx-icmpv6": 1840,
"rx-ipv4-fragmented": 0,
"lcp-echo-timeout": 0,
"lcp-request-timeout": 0,
"ipcp-request-timeout": 0,
"ip6cp-request-timeout": 0,
"pap-timeout": 0,
"chap-timeout": 350,
"dhcp-timeout": 0,
"dhcpv6-timeout": 0,
"icmpv6-rs-timeout": 0
}
},
{
"name": "SN-5-L1",
"tx-packets": 108580,
"rx-packets": 106876,
"rx-multicast-packets": 0,
"rx-multicast-packets-loss": 0,
"tx-stream-packets": 97391,
"rx-stream-packets": 95685,
"rx-stream-packets-loss": 0,
"tx-session-packets-ipv4": 32465,
"rx-session-packets-ipv4": 31896,
"rx-session-packets-ipv4-loss": 0,
"rx-session-packets-ipv4-wrong-session": 0,
"tx-session-packets-ipv4-avg-pps-max": 500,
"rx-session-packets-ipv4-avg-pps-max": 500,
"tx-session-packets-ipv6": 32465,
"rx-session-packets-ipv6": 31895,
"rx-session-packets-ipv6-loss": 0,
"rx-session-packets-ipv6-wrong-session": 0,
"tx-session-packets-ipv6-avg-pps-max": 500,
"rx-session-packets-ipv6avg-pps-max": 500,
"tx-session-packets-ipv6pd": 32461,
"rx-session-packets-ipv6pd": 31894,
"rx-session-packets-ipv6pd-loss": 0,
"rx-session-packets-ipv6pd-wrong-session": 0,
"tx-session-packets-ipv6pd-avg-pps-max": 500,
"rx-session-packets-ipv6pd-avg-pps-max": 500,
"protocol-stats": {
"tx-arp": 0,
"rx-arp": 0,
"tx-padi": 1102,
"rx-pado": 500,
"tx-padr": 844,
"rx-pads": 500,
"tx-padt": 78,
"rx-padt": 422,
"tx-lcp": 4343,
"rx-lcp": 4343,
"tx-pap": 822,
"rx-pap": 500,
"tx-chap": 0,
"rx-chap": 0,
"tx-ipcp": 1500,
"rx-ipcp": 1500,
"tx-ip6cp": 1000,
"rx-ip6cp": 1000,
"tx-igmp": 0,
"rx-igmp": 0,
"tx-icmp": 0,
"rx-icmp": 0,
"tx-dhcp": 0,
"rx-dhcp": 0,
"tx-dhcpv6": 500,
"rx-dhcpv6": 500,
"tx-icmpv6": 1000,
"rx-icmpv6": 1816,
"rx-ipv4-fragmented": 0,
"lcp-echo-timeout": 0,
"lcp-request-timeout": 0,
"ipcp-request-timeout": 0,
"ip6cp-request-timeout": 0,
"pap-timeout": 322,
"chap-timeout": 0,
"dhcp-timeout": 0,
"dhcpv6-timeout": 0,
"icmpv6-rs-timeout": 0
}
}
],
"session-traffic": {
"config-ipv4-pps": 1,
"config-ipv6-pps": 1,
"config-ipv6pd-pps": 1,
"total-flows": 6000,
"verified-flows": 6000,
"verified-flows-downstream-ipv4": 1000,
"verified-flows-downstream-ipv6": 1000,
"verified-flows-downstream-ipv6pd": 1000,
"verified-flows-upstream-ipv4": 1000,
"verified-flows-upstream-ipv6": 1000,
"verified-flows-upstream-ipv6pd": 1000,
"violated-flows-downstream-ipv4-3s": 200,
"violated-flows-downstream-ipv6-3s": 206,
"violated-flows-downstream-ipv6pd-3s": 197,
"violated-flows-upstream-ipv4-3s": 200,
"violated-flows-upstream-ipv6-3s": 206,
"violated-flows-upstream-ipv6pd-3s": 197,
"violated-flows-downstream-ipv4-2s": 224,
"violated-flows-downstream-ipv6-2s": 218,
"violated-flows-downstream-ipv6pd-2s": 227,
"violated-flows-upstream-ipv4-2s": 224,
"violated-flows-upstream-ipv6-2s": 218,
"violated-flows-upstream-ipv6pd-2s": 227,
"violated-flows-downstream-ipv4-1s": 199,
"violated-flows-downstream-ipv6-1s": 200,
"violated-flows-downstream-ipv6pd-1s": 200,
"violated-flows-upstream-ipv4-1s": 199,
"violated-flows-upstream-ipv6-1s": 200,
"violated-flows-upstream-ipv6pd-1s": 200,
"first-seq-rx-downstream-ipv4-min": 1,
"first-seq-rx-downstream-ipv4-avg": 2,
"first-seq-rx-downstream-ipv4-max": 4,
"first-seq-rx-downstream-ipv6-min": 1,
"first-seq-rx-downstream-ipv6-avg": 2,
"first-seq-rx-downstream-ipv6-max": 4,
"first-seq-rx-downstream-ipv6pd-min": 1,
"first-seq-rx-downstream-ipv6pd-avg": 2,
"first-seq-rx-downstream-ipv6pd-max": 4,
"first-seq-rx-upstream-ipv4-min": 1,
"first-seq-rx-upstream-ipv4-avg": 2,
"first-seq-rx-upstream-ipv4-max": 4,
"first-seq-rx-upstream-ipv6-min": 1,
"first-seq-rx-upstream-ipv6-avg": 2,
"first-seq-rx-upstream-ipv6-max": 4,
"first-seq-rx-upstream-ipv6pd-min": 1,
"first-seq-rx-upstream-ipv6pd-avg": 2,
"first-seq-rx-upstream-ipv6pd-max": 4,
"first-seq-rx-downstream-ipv4-min-seconds": 1,
"first-seq-rx-downstream-ipv4-avg-seconds": 2,
"first-seq-rx-downstream-ipv4-max-seconds": 4,
"first-seq-rx-downstream-ipv6-min-seconds": 1,
"first-seq-rx-downstream-ipv6-avg-seconds": 2,
"first-seq-rx-downstream-ipv6-max-seconds": 4,
"first-seq-rx-downstream-ipv6pd-min-seconds": 1,
"first-seq-rx-downstream-ipv6pd-avg-seconds": 2,
"first-seq-rx-downstream-ipv6pd-max-seconds": 4,
"first-seq-rx-upstream-ipv4-min-seconds": 1,
"first-seq-rx-upstream-ipv4-avg-seconds": 2,
"first-seq-rx-upstream-ipv4-max-seconds": 4,
"first-seq-rx-upstream-ipv6-min-seconds": 1,
"first-seq-rx-upstream-ipv6-avg-seconds": 2,
"first-seq-rx-upstream-ipv6-max-seconds": 4,
"first-seq-rx-upstream-ipv6pd-min-seconds": 1,
"first-seq-rx-upstream-ipv6pd-avg-seconds": 2,
"first-seq-rx-upstream-ipv6pd-max-seconds": 4
}
}
}
The optional argument -j sessions
allows to include per session statistics
in the report file. Similar to -j streams
which allows for including per stream
statistics. Both options can be also combined.
Those extensive JSON reports could be easily verified with simple python scripts to extract the desired results.
#!/usr/bin/env python3
import json
# Open JSON report ...
with open('report.json') as f:
data = json.load(f)
# Analyze data ...