Reports
The BNG Blaster can generate detailed result 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:
=======
Sessions PPPoE: 4000 IPoE: 0
Sessions established: 4000/4000
DHCPv6 sessions established: 0
Setup Time: 4048 ms
Setup Rate: 988.14 CPS (MIN: 988.14 AVG: 4352.28 MAX: 17021.28)
Flapped: 0
Interface: eth1
--------------------------------------------------------------
TX: 163654 packets 24936136 bytes
TX Polled: 0
TX IO Error: 0
RX: 180455 packets 25267731 bytes
RX Protocol Error: 0 packets
RX Unknown: 0 packets
RX Polled: 6661
RX IO Error: 0
A10NSP Interface: eth1
TX: 163654 packets 24936136 bytes
RX: 180455 packets 25267731 bytes
TX Stream: 115654 packets
RX Stream: 115654 packets (0 loss)
Session-Traffic:
TX IPv4: 57827 packets
RX IPv4: 57827 packets (0 loss)
TX IPv6: 0 packets
RX IPv6: 0 packets (0 loss)
TX IPv6PD: 0 packets
RX IPv6PD: 0 packets (0 loss)
Interface: eth2
--------------------------------------------------------------
TX: 180854 packets 26000677 bytes
TX Polled: 0
TX IO Error: 0
RX: 163655 packets 24281590 bytes
RX Protocol Error: 0 packets
RX Unknown: 0 packets
RX Polled: 6704
RX IO Error: 0
Access Interface: eth2
TX: 180854 packets 26000677 bytes
RX: 163655 packets 24281590 bytes
RX Multicast: 0 packets 0 loss
TX Stream: 115654 packets
RX Stream: 115654 packets 0 loss
Session-Traffic:
TX IPv4: 57827 packets
RX IPv4: 57827 packets 0 loss
TX IPv6: 0 packets
RX IPv6: 0 packets 0 loss
TX IPv6PD: 0 packets
RX IPv6PD: 0 packets 0 loss
Access Interface Protocol Packet Stats:
ARP TX: 0 RX: 0
PADI TX: 4000 RX: 0
PADO TX: 0 RX: 4000
PADR TX: 4000 RX: 0
PADS TX: 0 RX: 4000
PADT TX: 4000 RX: 0
LCP TX: 12000 RX: 12000
PAP TX: 4000 RX: 4000
CHAP TX: 0 RX: 0
IPCP TX: 16000 RX: 16000
IP6CP TX: 8000 RX: 8000
IGMP TX: 0 RX: 0
ICMP TX: 0 RX: 0
DHCP TX: 0 RX: 0
DHCPv6 TX: 0 RX: 0
ICMPv6 TX: 13200 RX: 0
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: 0
DHCP Request: 0
DHCPv6 Request: 0
ICMPv6 RS: 9200
Session Traffic (Global):
--------------------------------------------------------------
Config:
IPv4 PPS: 1
IPv6 PPS: 0
IPv6PD PPS: 0
Verified Traffic Flows: 8000/8000
Downstream IPv4: 4000
Downstream IPv6: 0
Downstream IPv6PD: 0
Upstream IPv4: 4000
Upstream IPv6: 0
Upstream IPv6PD: 0
Violations (>1s): 0
Downstream IPv4: 0
Downstream IPv6: 0
Downstream IPv6PD: 0
Upstream IPv4: 0
Upstream IPv6: 0
Upstream IPv6PD: 0
First Sequence Number Received:
Downstream IPv4 MIN: 1 ( 1.00s) AVG: 1 ( 1.00s) MAX: 1 ( 1.00s)
Downstream IPv6 MIN: 0 ( 0.00s) AVG: 0 ( 0.00s) MAX: 0 ( 0.00s)
Downstream IPv6PD MIN: 0 ( 0.00s) AVG: 0 ( 0.00s) MAX: 0 ( 0.00s)
Upstream IPv4 MIN: 1 ( 1.00s) AVG: 1 ( 1.00s) MAX: 1 ( 1.00s)
Upstream IPv6 MIN: 0 ( 0.00s) AVG: 0 ( 0.00s) MAX: 0 ( 0.00s)
Upstream IPv6PD MIN: 0 ( 0.00s) AVG: 0 ( 0.00s) MAX: 0 ( 0.00s)
Traffic Streams:
--------------------------------------------------------------
Verified Traffic Flows: 8000/8000
First Sequence Number Received MIN: 1 MAX: 1
Flow Receive Packet Loss MIN: 0 MAX: 0
Flow Receive Delay (msec) MIN: 0.009 MAX: 7.249
JSON Reports
A detailed JSON report is generated if enabled using the optional
argument -J <filename>
.
{
"report": {
"sessions": 4000,
"sessions-pppoe": 4000,
"sessions-ipoe": 0,
"sessions-established": 4000,
"sessions-flapped": 0,
"setup-time-ms": 4046,
"setup-rate-cps": 988.6,
"setup-rate-cps-min": 988.6,
"setup-rate-cps-avg": 4214,
"setup-rate-cps-max": 16330,
"dhcp-sessions-established": 0,
"dhcpv6-sessions-established": 0,
"interfaces": [
{
"name": "eth1",
"type": "Interface",
"tx-packets": 139642,
"tx-bytes": 20229784,
"tx-polled": 0,
"tx-io-error": 0,
"rx-packets": 154042,
"rx-bytes": 20479757,
"rx-protocol-error": 0,
"rx-unknown": 0,
"rx-polled": 20479757,
"rx-io-error": 0
},
{
"name": "eth2",
"type": "Interface",
"tx-packets": 154442,
"tx-bytes": 21107125,
"tx-polled": 0,
"tx-io-error": 0,
"rx-packets": 139642,
"rx-bytes": 19671216,
"rx-protocol-error": 0,
"rx-unknown": 0,
"rx-polled": 19671216,
"rx-io-error": 0
}
],
"access-interfaces": [
{
"name": "eth2",
"tx-packets": 154442,
"rx-packets": 139642,
"rx-multicast-packets": 0,
"rx-multicast-packets-loss": 0,
"tx-stream-packets": 91642,
"rx-stream-packets": 91642,
"rx-stream-packets-loss": 0,
"tx-session-packets-ipv4": 45821,
"rx-session-packets-ipv4": 45821,
"rx-session-packets-ipv4-loss": 0,
"rx-session-packets-ipv4-wrong-session": 0,
"tx-session-packets-ipv4-avg-pps-max": 4000,
"rx-session-packets-ipv4-avg-pps-max": 4000,
"tx-session-packets-ipv6": 0,
"rx-session-packets-ipv6": 0,
"rx-session-packets-ipv6-loss": 0,
"rx-session-packets-ipv6-wrong-session": 0,
"tx-session-packets-ipv6-avg-pps-max": 0,
"rx-session-packets-ipv6avg-pps-max": 0,
"tx-session-packets-ipv6pd": 0,
"rx-session-packets-ipv6pd": 0,
"rx-session-packets-ipv6pd-loss": 0,
"rx-session-packets-ipv6pd-wrong-session": 0,
"tx-session-packets-ipv6pd-avg-pps-max": 0,
"rx-session-packets-ipv6pd-avg-pps-max": 0,
"protocol-stats": {
"tx-arp": 0,
"rx-arp": 0,
"tx-padi": 4000,
"rx-pado": 4000,
"tx-padr": 4000,
"rx-pads": 4000,
"tx-padt": 4000,
"rx-padt": 0,
"tx-lcp": 12000,
"rx-lcp": 12000,
"tx-pap": 4000,
"rx-pap": 4000,
"tx-chap": 0,
"rx-chap": 0,
"tx-ipcp": 16000,
"rx-ipcp": 16000,
"tx-ip6cp": 8000,
"rx-ip6cp": 8000,
"tx-igmp": 0,
"rx-igmp": 0,
"tx-icmp": 0,
"rx-icmp": 0,
"tx-dhcp": 0,
"rx-dhcp": 0,
"tx-dhcpv6": 0,
"rx-dhcpv6": 0,
"tx-icmpv6": 10800,
"rx-icmpv6": 0,
"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": 0,
"dhcp-timeout": 0,
"dhcpv6-timeout": 0,
"icmpv6-rs-timeout": 0
}
}
],
"a10nsp-interfaces": [
{
"name": "eth1",
"tx-packets": 139642,
"rx-packets": 154042,
"tx-stream-packets": 91642,
"rx-stream-packets": 91642,
"rx-stream-packets-loss": 0,
"tx-session-packets-ipv4": 45821,
"rx-session-packets-ipv4": 45821,
"rx-session-packets-ipv4-loss": 0,
"tx-session-packets-ipv4-avg-pps-max": 4000,
"rx-session-packets-ipv4-avg-pps-max": 4000,
"tx-session-packets-ipv6": 0,
"rx-session-packets-ipv6": 0,
"rx-session-packets-ipv6-loss": 0,
"tx-session-packets-ipv6-avg-pps-max": 0,
"rx-session-packets-ipv6-avg-pps-max": 0,
"tx-session-packets-ipv6pd": 0,
"rx-session-packets-ipv6pd": 0,
"rx-session-packets-ipv6pd-loss": 0,
"tx-session-packets-ipv6pd-avg-pps-max": 0,
"rx-session-packets-ipv6pd-avg-pps-max": 0
}
],
"session-traffic": {
"config-ipv4-pps": 1,
"config-ipv6-pps": 0,
"config-ipv6pd-pps": 0,
"total-flows": 8000,
"verified-flows": 8000,
"verified-flows-downstream-ipv4": 4000,
"verified-flows-downstream-ipv6": 0,
"verified-flows-downstream-ipv6pd": 0,
"verified-flows-upstream-ipv4": 4000,
"verified-flows-upstream-ipv6": 0,
"verified-flows-upstream-ipv6pd": 0,
"violated-flows-downstream-ipv4": 0,
"violated-flows-downstream-ipv6": 0,
"violated-flows-downstream-ipv6pd": 0,
"violated-flows-upstream-ipv4": 0,
"violated-flows-upstream-ipv6": 0,
"violated-flows-upstream-ipv6pd": 0,
"first-seq-rx-downstream-ipv4-min": 1,
"first-seq-rx-downstream-ipv4-avg": 1,
"first-seq-rx-downstream-ipv4-max": 1,
"first-seq-rx-downstream-ipv6-min": 0,
"first-seq-rx-downstream-ipv6-avg": 0,
"first-seq-rx-downstream-ipv6-max": 0,
"first-seq-rx-downstream-ipv6pd-min": 0,
"first-seq-rx-downstream-ipv6pd-avg": 0,
"first-seq-rx-downstream-ipv6pd-max": 0,
"first-seq-rx-upstream-ipv4-min": 1,
"first-seq-rx-upstream-ipv4-avg": 1,
"first-seq-rx-upstream-ipv4-max": 1,
"first-seq-rx-upstream-ipv6-min": 0,
"first-seq-rx-upstream-ipv6-avg": 0,
"first-seq-rx-upstream-ipv6-max": 0,
"first-seq-rx-upstream-ipv6pd-min": 0,
"first-seq-rx-upstream-ipv6pd-avg": 0,
"first-seq-rx-upstream-ipv6pd-max": 0,
"first-seq-rx-downstream-ipv4-min-seconds": 1,
"first-seq-rx-downstream-ipv4-avg-seconds": 1,
"first-seq-rx-downstream-ipv4-max-seconds": 1,
"first-seq-rx-downstream-ipv6-min-seconds": 0,
"first-seq-rx-downstream-ipv6-avg-seconds": 0,
"first-seq-rx-downstream-ipv6-max-seconds": 0,
"first-seq-rx-downstream-ipv6pd-min-seconds": 0,
"first-seq-rx-downstream-ipv6pd-avg-seconds": 0,
"first-seq-rx-downstream-ipv6pd-max-seconds": 0,
"first-seq-rx-upstream-ipv4-min-seconds": 1,
"first-seq-rx-upstream-ipv4-avg-seconds": 1,
"first-seq-rx-upstream-ipv4-max-seconds": 1,
"first-seq-rx-upstream-ipv6-min-seconds": 0,
"first-seq-rx-upstream-ipv6-avg-seconds": 0,
"first-seq-rx-upstream-ipv6-max-seconds": 0,
"first-seq-rx-upstream-ipv6pd-min-seconds": 0,
"first-seq-rx-upstream-ipv6pd-avg-seconds": 0,
"first-seq-rx-upstream-ipv6pd-max-seconds": 0
},
"traffic-streams": {
"total-flows": 8000,
"verified-flows": 8000,
"first-seq-rx-min": 1,
"first-seq-rx-max": 1,
"flow-rx-packet-loss-min": 0,
"flow-rx-packet-loss-max": 0,
"flow-rx-delay-min": 6779,
"flow-rx-delay-max": 6940868
}
}
}
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 ...