SlideShare a Scribd company logo
OSS Network Testing
breaking the network, not the bank
This presentation is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
(C) 2017 jim@openoid.net
Jim Salter
Technomancer,
Mercenary Sysadmin,
Small Business Owner
Today's slides can be found at:
http://openoid.net/presentations/
A couple of years ago
I got really interested in routers.
I didn’t trust consumer stuff
… so I built my own.
Once I built it, I had to test it.
(e-peen ain’t gonna measure itself)
iPerf, big numbers, go home?
NOPE - real protocols needed
I tried using CIFS tests...
mount -t cifs ; time cat /stuff
but ppl relate more to HTTP
ApacheBench to the rescue!
ab, smaller numbers, go home!
me@banshee:~$ ab -c10 -t3 http://192.168.0.30/1M.bin
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Licensed to The Apache Software Foundation,
http://www.apache.org/
Benchmarking 192.168.0.30 (be patient)
Completed 5000 requests
Completed 10000 requests
Finished 11486 requests
(better, but limited ability to model)
gigabit consumer switch
gigabit Ubuntu router
gigabit consumer switch
“gigabit” consumer router
“… but you couldn’t pay me enough to care about Wi-Fi!”
well ACTUALLY...
Breakthrough tri-band Wi-Fi technology
with amazing combined wireless speeds of
up to 5,332 Mbps!!!1one
we need to move past
the single client model
I always want free speech
But this time, I also
needed the beer!
ixChariot == $$$
enter the hydra
net-hydra -c {configfile} [-t {testname}]
net-hydra requires a config file specifying [clients], [directives], and optionally
[aliases], which it uses to schedule jobs to run simultaneously in the very near future
on multiple client machines.
# sample nethydra.conf
[clients]
local0 = root@127.0.0.1
local1 = root@127.0.0.2
[directives]
# These are the command(s) to be run on each client device. Directives
# beginning with $ reference lines from the [aliases] section. Any use
# of $when, either here or in [aliases], will be replaced with the
# scheduled execution time, in Unix epoch seconds; $testname is replaced
# with the --testname argument passed to net-hydra on the command-line.
local0 = $4kstream
local1 = /usr/bin/touch /tmp/test-$testname-$when.txt
[aliases]
# Defining aliases here keeps [directives] cleaner, so you can
# see what you're doing a little more easily.
#
$4kstream = netburn -u http://127.0.0.1/1M.bin -r 25 -o /tmp/$testname-$when.csv
ab wouldn’t do… so, netburn
netburn -u {url}
[-r {rate limit} ] ... specified in Mbps (default none)
[-t {seconds} ] ... time to run test, default 30
[-o {filespec} ] ... output filespec for CSV report
[--no-header ] ... suppress header row of CSV output
[-h {hostname} ] ... override system-defined hostname
in CSV output
[-c {concurrency} ] ... number of concurrent URL fetches to
make per 'page' fetch
[-q ] ... quiet (suppress all but CSV output)
[-ifinfo {iface} ] ... output detailed wifi info about {iface}
[--usage ] ... you're looking at this right now
feeling the burn
you@box:~$ netburn -u http://server/128K.bin -r 10
Fetching http://server/128K.bin at 10 Mbps for 30 seconds.
Throughput so far: 10.01 Mbps
Seconds remaining: 0
Time elapsed: 30.2 seconds
Number of pages fetched: 301
Total data fetched: 37.6 MB
Mean page length fetched: 1048576 KB
Page length maximum deviation: 0 KB
Throughput achieved: 10 Mbps
Mean latency: 41.65 ms
Worst latency: 190 ms
99th percentile latency: 51 ms
95th percentile latency: 46 ms
90th percentile latency: 45 ms
75th percentile latency: 43 ms
Median latency: 41 ms
Min latency: 35 ms
/usr/bin/at only granular to 1m... wtf?
whenits [-d] {time} {/path/to/command {arg1 arg2 arg3 ...} }
-d ... optional: daemonize (fork and run in
background). You'll need this if you're
scheduling commands that need to run after
the current shell closes.
time ... Required. Execution time may be specified
in absolute epoch seconds, or relative to
current time - eg now+5s, now+10m, now+2h.
command ... the command to be scheduled at {time},
along with any arguments to be passed to it.
whenits {time}, run {command}
OK, let’s pull some
NUMBERS!
(and tell a story with them)
single-client testing
ho, hum… boring
single-client testing
ho, hum at long range
now let’s test them with
our multiclient test model
Downloading
Browsing
VoiP...ing
Streaming
wi-fi: it’s all about the
collision domains
aggressive spectrum use
auto band steering
– – vs – –
manual band allocation
radios and access points
multi-client testing
hard mode (bandsteer)
Archer
C7
Archer
C5400
Linksys
EA8300
Netgear
R8000
simplifying the charts:
web browsing fails first
image credit: US State Department – Doug Thompson
multi-client testing
easy mode (manual)
multi-client testing
hard mode (bandsteer)
bring on the mesh!
(but remember how flaky R8000 was in bedroom2.)
Boo Plume. Yay Ubiquiti!
Collision domains: they matter.
GTFO with your Wi-Fi
P-t-P > broadcast. Always.
Questions?
Comments?
Angry denunciations?
https://github.com/jimsalterjrs/network-testing

More Related Content

PDF
Move Over, Rsync
PDF
Small, Simple, and Secure: Alpine Linux under the Microscope
PPT
Running High Performance and Fault Tolerant Elasticsearch Clusters on Docker
PDF
Breaking the RpiDocker challenge
PPTX
Container Torture: Run any binary, in any container
PPTX
moscmy2016: Extending Docker
PDF
Ansible not only for Dummies
PDF
Neutron Network Namespaces and IPtables--A Technical Deep Dive
Move Over, Rsync
Small, Simple, and Secure: Alpine Linux under the Microscope
Running High Performance and Fault Tolerant Elasticsearch Clusters on Docker
Breaking the RpiDocker challenge
Container Torture: Run any binary, in any container
moscmy2016: Extending Docker
Ansible not only for Dummies
Neutron Network Namespaces and IPtables--A Technical Deep Dive

What's hot (20)

PDF
PDF
What Have Syscalls Done for you Lately?
PDF
Using Nix and Docker as automated deployment solutions
PDF
OSv at Cassandra Summit
PDF
nix-processmgmt: An experimental Nix-based process manager-agnostic framework
PPTX
[오픈소스컨설팅] Linux Network Troubleshooting
PDF
Docker up and running
PDF
Wordpress y Docker, de desarrollo a produccion
PDF
PDF
Under the Hood with Docker Swarm Mode - Drew Erny and Nishant Totla, Docker
PPTX
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
PDF
Sysdig
PDF
Build Your Own CaaS (Container as a Service)
PDF
Docker Networking – Running multi-host applications
PDF
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
ZIP
How we use Twisted in Launchpad
PDF
How to operate containerized OpenStack
PDF
Automating Mendix application deployments with Nix
PDF
Kubernetes: Beyond Baby Steps
PDF
Anton Moldovan "Building an efficient replication system for thousands of ter...
What Have Syscalls Done for you Lately?
Using Nix and Docker as automated deployment solutions
OSv at Cassandra Summit
nix-processmgmt: An experimental Nix-based process manager-agnostic framework
[오픈소스컨설팅] Linux Network Troubleshooting
Docker up and running
Wordpress y Docker, de desarrollo a produccion
Under the Hood with Docker Swarm Mode - Drew Erny and Nishant Totla, Docker
6 Million Ways To Log In Docker - NYC Docker Meetup 12/17/2014
Sysdig
Build Your Own CaaS (Container as a Service)
Docker Networking – Running multi-host applications
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
How we use Twisted in Launchpad
How to operate containerized OpenStack
Automating Mendix application deployments with Nix
Kubernetes: Beyond Baby Steps
Anton Moldovan "Building an efficient replication system for thousands of ter...
Ad

Similar to Testing Wi-Fi with OSS Tools (20)

PPTX
Docker Security workshop slides
PDF
Devel::NYTProf v5 at YAPC::NA 201406
PDF
Microarmy - by J2 Labs
KEY
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
KEY
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
KEY
fog or: How I Learned to Stop Worrying and Love the Cloud
PDF
Deep Dive on Amazon EC2 Instances (March 2017)
PDF
Trying and evaluating the new features of GlusterFS 3.5
PPTX
PDF
Non-blocking I/O, Event loops and node.js
KEY
Nyt Prof 200910
PDF
One-Man Ops
PDF
PerfUG 3 - perfs système
PDF
Defcon 22-paul-mcmillan-attacking-the-iot-using-timing-attac
PPTX
Salting new ground one man ops from scratch
DOCX
Yet another node vs php
PDF
BruCON 2010 Lightning Talks - DIY Grid Computing
PDF
Alta disponibilidad en GNU/Linux
PDF
Analyze Virtual Machine Overhead Compared to Bare Metal with Tracing
PPTX
Running Docker in Development & Production (#ndcoslo 2015)
Docker Security workshop slides
Devel::NYTProf v5 at YAPC::NA 201406
Microarmy - by J2 Labs
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
How I Learned to Stop Worrying and Love the Cloud - Wesley Beary, Engine Yard
fog or: How I Learned to Stop Worrying and Love the Cloud
Deep Dive on Amazon EC2 Instances (March 2017)
Trying and evaluating the new features of GlusterFS 3.5
Non-blocking I/O, Event loops and node.js
Nyt Prof 200910
One-Man Ops
PerfUG 3 - perfs système
Defcon 22-paul-mcmillan-attacking-the-iot-using-timing-attac
Salting new ground one man ops from scratch
Yet another node vs php
BruCON 2010 Lightning Talks - DIY Grid Computing
Alta disponibilidad en GNU/Linux
Analyze Virtual Machine Overhead Compared to Bare Metal with Tracing
Running Docker in Development & Production (#ndcoslo 2015)
Ad

More from All Things Open (20)

PDF
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
PPTX
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
PDF
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
PDF
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
PDF
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
PDF
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
PDF
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
PPTX
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
PDF
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
PDF
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
PPTX
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
PDF
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
PPTX
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
PDF
The Death of the Browser - Rachel-Lee Nabors, AgentQL
PDF
Making Operating System updates fast, easy, and safe
PDF
Reshaping the landscape of belonging to transform community
PDF
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
PDF
Integrating Diversity, Equity, and Inclusion into Product Design
PDF
The Open Source Ecosystem for eBPF in Kubernetes
PDF
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
The Death of the Browser - Rachel-Lee Nabors, AgentQL
Making Operating System updates fast, easy, and safe
Reshaping the landscape of belonging to transform community
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
Integrating Diversity, Equity, and Inclusion into Product Design
The Open Source Ecosystem for eBPF in Kubernetes
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman

Recently uploaded (20)

PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
OMC Textile Division Presentation 2021.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
A Presentation on Artificial Intelligence
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Mushroom cultivation and it's methods.pdf
PPTX
1. Introduction to Computer Programming.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
August Patch Tuesday
PDF
A comparative study of natural language inference in Swahili using monolingua...
Spectral efficient network and resource selection model in 5G networks
Assigned Numbers - 2025 - Bluetooth® Document
OMC Textile Division Presentation 2021.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Heart disease approach using modified random forest and particle swarm optimi...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Network Security Unit 5.pdf for BCA BBA.
A Presentation on Artificial Intelligence
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Mushroom cultivation and it's methods.pdf
1. Introduction to Computer Programming.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
August Patch Tuesday
A comparative study of natural language inference in Swahili using monolingua...

Testing Wi-Fi with OSS Tools

  • 1. OSS Network Testing breaking the network, not the bank This presentation is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. (C) 2017 [email protected] Jim Salter Technomancer, Mercenary Sysadmin, Small Business Owner Today's slides can be found at: http://openoid.net/presentations/
  • 2. A couple of years ago I got really interested in routers.
  • 3. I didn’t trust consumer stuff … so I built my own.
  • 4. Once I built it, I had to test it. (e-peen ain’t gonna measure itself)
  • 5. iPerf, big numbers, go home? NOPE - real protocols needed
  • 6. I tried using CIFS tests... mount -t cifs ; time cat /stuff
  • 7. but ppl relate more to HTTP ApacheBench to the rescue!
  • 8. ab, smaller numbers, go home! me@banshee:~$ ab -c10 -t3 http://192.168.0.30/1M.bin This is ApacheBench, Version 2.3 <$Revision: 1706008 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.0.30 (be patient) Completed 5000 requests Completed 10000 requests Finished 11486 requests (better, but limited ability to model)
  • 11. “… but you couldn’t pay me enough to care about Wi-Fi!” well ACTUALLY...
  • 12. Breakthrough tri-band Wi-Fi technology with amazing combined wireless speeds of up to 5,332 Mbps!!!1one
  • 13. we need to move past the single client model
  • 14. I always want free speech But this time, I also needed the beer! ixChariot == $$$
  • 15. enter the hydra net-hydra -c {configfile} [-t {testname}] net-hydra requires a config file specifying [clients], [directives], and optionally [aliases], which it uses to schedule jobs to run simultaneously in the very near future on multiple client machines. # sample nethydra.conf [clients] local0 = [email protected] local1 = [email protected] [directives] # These are the command(s) to be run on each client device. Directives # beginning with $ reference lines from the [aliases] section. Any use # of $when, either here or in [aliases], will be replaced with the # scheduled execution time, in Unix epoch seconds; $testname is replaced # with the --testname argument passed to net-hydra on the command-line. local0 = $4kstream local1 = /usr/bin/touch /tmp/test-$testname-$when.txt [aliases] # Defining aliases here keeps [directives] cleaner, so you can # see what you're doing a little more easily. # $4kstream = netburn -u http://127.0.0.1/1M.bin -r 25 -o /tmp/$testname-$when.csv
  • 16. ab wouldn’t do… so, netburn netburn -u {url} [-r {rate limit} ] ... specified in Mbps (default none) [-t {seconds} ] ... time to run test, default 30 [-o {filespec} ] ... output filespec for CSV report [--no-header ] ... suppress header row of CSV output [-h {hostname} ] ... override system-defined hostname in CSV output [-c {concurrency} ] ... number of concurrent URL fetches to make per 'page' fetch [-q ] ... quiet (suppress all but CSV output) [-ifinfo {iface} ] ... output detailed wifi info about {iface} [--usage ] ... you're looking at this right now
  • 17. feeling the burn you@box:~$ netburn -u http://server/128K.bin -r 10 Fetching http://server/128K.bin at 10 Mbps for 30 seconds. Throughput so far: 10.01 Mbps Seconds remaining: 0 Time elapsed: 30.2 seconds Number of pages fetched: 301 Total data fetched: 37.6 MB Mean page length fetched: 1048576 KB Page length maximum deviation: 0 KB Throughput achieved: 10 Mbps Mean latency: 41.65 ms Worst latency: 190 ms 99th percentile latency: 51 ms 95th percentile latency: 46 ms 90th percentile latency: 45 ms 75th percentile latency: 43 ms Median latency: 41 ms Min latency: 35 ms
  • 18. /usr/bin/at only granular to 1m... wtf? whenits [-d] {time} {/path/to/command {arg1 arg2 arg3 ...} } -d ... optional: daemonize (fork and run in background). You'll need this if you're scheduling commands that need to run after the current shell closes. time ... Required. Execution time may be specified in absolute epoch seconds, or relative to current time - eg now+5s, now+10m, now+2h. command ... the command to be scheduled at {time}, along with any arguments to be passed to it. whenits {time}, run {command}
  • 19. OK, let’s pull some NUMBERS! (and tell a story with them)
  • 22. now let’s test them with our multiclient test model Downloading Browsing VoiP...ing Streaming
  • 23. wi-fi: it’s all about the collision domains aggressive spectrum use auto band steering – – vs – – manual band allocation radios and access points
  • 24. multi-client testing hard mode (bandsteer) Archer C7 Archer C5400 Linksys EA8300 Netgear R8000
  • 25. simplifying the charts: web browsing fails first image credit: US State Department – Doug Thompson
  • 28. bring on the mesh! (but remember how flaky R8000 was in bedroom2.)
  • 29. Boo Plume. Yay Ubiquiti! Collision domains: they matter.
  • 30. GTFO with your Wi-Fi P-t-P > broadcast. Always.