Techkarma NetEm is a modern, browser‑based WAN emulator built on top of Linux tc/netem.
It lets you shape latency, jitter, packet loss, and bandwidth across transparent L2 bridges —
perfect for testing firewalls, SD‑WAN units, routers, Starlink behaviour, 4G/5G, IPS systems, failover logic, and more.
This project is open‑core:
- Free open-source edition (this repository)
- Paid OVA appliance --- prebuilt Debian VM (ready-to-run)
➡ Official site: https://techkarma.no/
➡ Quickstart Guide: GUIDE.md
➡ OVA Appliance: https://buymeacoffee.com/techkarma/extras
Each WAN link uses:
- Inner interface → toward your test device (FW/SD‑WAN/router)
- Outer interface → toward upstream/ISP side
Bridges (br-wan1,br-wan2) are created automatically.
Clean UI with sliders for:
- Delay (ms)
- Jitter (ms)
- Packet loss (%)
- Bandwidth limit (Mbit/s)
Give each WAN link a friendly name:
Fiber primary, Starlink, 5G backup, etc.
Under the hood:
tc qdisc netemfor latency/jitter/losstbf(token bucket filter) for bandwidth- Linux bridges for transparent forwarding
Optimized for:
- Fortinet
- Cisco
- Juniper
- Palo Alto
- SD‑WAN platforms
- Starlink testing
- Failover tuning
- IPS/IDS behaviour analysis
+----------------------+
| Test Device (FW) |
+----------+-----------+
|
(inner NIC)
|
+---------+----------+
| Techkarma NetEm |
| br-wan1 |
| tc/netem+tbf |
+---------+----------+
|
(outer NIC)
|
+----------+-----------+
| Upstream Router |
+----------------------+
2 bridges = 2 independent WAN paths.
sudo apt update
sudo apt install -y python3 python3-venv python3-pip iproute2 bridge-utils gitcd /opt
sudo git clone https://github.com/techkarma-no/techkarma-netem.git
sudo chown -R $USER:$USER techkarma-netem
cd techkarma-netempython3 -m venv .venv
source .venv/bin/activate
pip install flaskFLASK_APP=app.py python app.pyThen open:
http://<vm-ip>:8081/
You will see the Setup screen on first launch.
cd /opt/techkarma-netem
python3 -m venv .venv
source .venv/bin/activate
pip install flask
deactivateFile: /etc/systemd/system/techkarma-netem.service
[Unit]
Description=Techkarma NetEm - WAN Emulator UI
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/techkarma-netem
ExecStart=/opt/techkarma-netem/.venv/bin/python app.py
User=techkarma
Group=techkarma
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable techkarma-netem
sudo systemctl start techkarma-netem
sudo systemctl status techkarma-netem- Go to
http://<vm-ip>:8081/setup - Assign:
- WAN1 alias
- WAN1 inner
- WAN1 outer
- Optionally repeat for WAN2
- Save – bridges are created automatically
- Open Dashboard
Your links are now live.
Each WAN link is implemented as:
br-wanX
|-- inner NIC (towards firewall/test device)
|-- outer NIC (towards WAN/upstream)
Traffic is shaped on the inner NIC via:
tc qdisc add dev <nic> root netem delay ... jitter ... loss ...tc qdisc add dev <nic> parent 1:1 tbf rate ...
Clearing shaping:
tc qdisc del dev <nic> rootEmulate:
- Bad LTE
- Moderate Starlink
- Weak backup radio
Trigger realistic failover behavior.
Reproduce:
- Latency spikes
- Temporary packet loss
- Saturation under load
Test how your NGFW behaves under real-world poor WAN conditions.
Run:
which tc
tc qdisc show dev <nic>Make sure no conflicting names exist:
brctl show
ip link showCheck:
sudo systemctl status techkarma-netem
sudo ss -ltnp | grep 8081- Multiple WAN links (more than 2)
- Profile presets
- API for automation
- Automatic Starlink-behavior presets
- Import/export config
- Authentication for GUI
- Built‑in package installer
A ready-to-use VM image for: - Proxmox\
- VMware ESXi\
- VMware Workstation\
- VirtualBox\
- XCP-NG
Includes: - Debian preconfigured\
- Techkarma NetEm preinstalled\
- Web UI running automatically\
- Forced password change on first boot
Buy & auto-download:
https://buymeacoffee.com/techkarma/extras
PRs, issues and feature requests welcome.
Please open GitHub issues before large contributions.
MIT License – see LICENSE.
Made by techkarma
for people who need real WAN behavior in their labs.

