How to inject controlled network impairments to test system behavior.
Why Inject Impairments?
Real networks aren't perfect. Packets experience delay, jitter, and loss. By injecting controlled impairments, you can:
- Verify tolerance — Does your system handle network degradation gracefully?
- Find breaking points — At what delay/loss does the system fail?
- Test recovery — How quickly does the system recover when conditions improve?
- Reproduce issues — Recreate field conditions in the lab
Available Impairments
| Impairment | Effect | Typical Use |
|---|---|---|
| Delay | Adds fixed latency | Simulate geographic distance |
| Jitter | Adds random delay variation | Simulate congested networks |
| Loss | Drops packets randomly | Simulate wireless/lossy links |
| Bandwidth | Limits throughput | Simulate constrained links |
Configuring Impairments
Delay
Adds a constant delay to all packets passing through the bridge.
| Parameter | Range | Description |
|---|---|---|
| Delay | 0–10,000 ms | Fixed latency added to each packet |
Example use cases:
- 50 ms: Simulate cross-continent link
- 150 ms: Simulate satellite link
- 300 ms: Simulate geostationary satellite
Jitter
Adds random delay variation on top of base delay.
| Parameter | Range | Description |
|---|---|---|
| Jitter | 0–1,000 ms | Random variation (uniform distribution) |
The actual delay for each packet is: base_delay + random(0, jitter)
Example use cases:
- 5 ms jitter: Typical enterprise WAN
- 20 ms jitter: Congested network
- 50+ ms jitter: Severely degraded path
Packet Loss
Drops packets randomly at the specified rate.
| Parameter | Range | Description |
|---|---|---|
| Loss | 0–100% | Probability of dropping each packet |
Example use cases:
- 0.1%: Typical internet background loss
- 1%: Noticeable degradation
- 5%: Significant degradation
- 10%+: Severe conditions
Bandwidth Limiting
Limits the throughput through the bridge.
| Parameter | Range | Description |
|---|---|---|
| Bandwidth | 0–10,000 Mbps | Maximum throughput |
Excess packets are queued (up to a limit) then dropped.
Example use cases:
- 100 Mbps: Simulate Fast Ethernet constraint
- 10 Mbps: Simulate ADSL/VDSL
- 1 Mbps: Simulate constrained IoT link
Applying Impairments
- Open the web interface
- Navigate to the Impairments panel
- Set desired values for each impairment type
- Click Apply
Impairments take effect immediately and are applied bidirectionally.
Impairment Patterns
Constant Degradation
Apply fixed impairment values to test steady-state behavior:
Delay: 100 ms
Jitter: 10 ms
Loss: 0.5%
Run your application and verify it operates correctly under these conditions.
Stress Testing
Gradually increase impairments to find breaking points:
- Start with normal operation (no impairments)
- Increase delay in steps (0, 50, 100, 200, 500 ms)
- Record behavior at each level
- Identify the threshold where the system degrades
Burst Testing
Alternate between normal and impaired conditions:
- Run normally for 60 seconds
- Apply severe impairments for 10 seconds
- Return to normal
- Observe recovery behavior
Real-World Profiles
Simulate specific network conditions:
| Profile | Delay | Jitter | Loss | Notes |
|---|---|---|---|---|
| LAN | 0 | 0 | 0 | Baseline |
| WAN (US) | 50 ms | 5 ms | 0.1% | Cross-country |
| WAN (Global) | 150 ms | 10 ms | 0.5% | Intercontinental |
| Satellite | 300 ms | 20 ms | 1% | Geostationary |
| Mobile (good) | 50 ms | 20 ms | 0.5% | 4G/LTE |
| Mobile (poor) | 200 ms | 100 ms | 5% | Cell edge |
| WiFi (congested) | 10 ms | 30 ms | 2% | Busy environment |
Verification
After applying impairments, verify they're taking effect:
- Check the Impairments panel shows correct values
- Monitor the timing measurement chart—you should see increased delay/jitter
- Run a ping through the bridge to confirm delay
- Check application behavior matches expectations
Best Practices
-
Start small — Begin with mild impairments and increase gradually
-
Test one variable — Change one impairment at a time to isolate effects
-
Document thresholds — Record the impairment levels where behavior changes
-
Test recovery — Verify systems recover when impairments are removed
-
Use realistic values — Base impairments on actual network measurements
-
Consider bidirectional effects — Impairments affect both directions
Limitations
- Impairments require inline deployment (not passive mode)
- Maximum delay is bounded by buffer size
- Very high loss rates may affect management traffic
- Bandwidth limiting adds latency at high utilization
Further Reading
For detailed information about impairment injection, see the JitterTrap documentation.