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

ImpairmentEffectTypical Use
DelayAdds fixed latencySimulate geographic distance
JitterAdds random delay variationSimulate congested networks
LossDrops packets randomlySimulate wireless/lossy links
BandwidthLimits throughputSimulate constrained links

Configuring Impairments

Delay

Adds a constant delay to all packets passing through the bridge.

ParameterRangeDescription
Delay0–10,000 msFixed 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.

ParameterRangeDescription
Jitter0–1,000 msRandom 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.

ParameterRangeDescription
Loss0–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.

ParameterRangeDescription
Bandwidth0–10,000 MbpsMaximum 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

  1. Open the web interface
  2. Navigate to the Impairments panel
  3. Set desired values for each impairment type
  4. 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:

  1. Start with normal operation (no impairments)
  2. Increase delay in steps (0, 50, 100, 200, 500 ms)
  3. Record behavior at each level
  4. Identify the threshold where the system degrades

Burst Testing

Alternate between normal and impaired conditions:

  1. Run normally for 60 seconds
  2. Apply severe impairments for 10 seconds
  3. Return to normal
  4. Observe recovery behavior

Real-World Profiles

Simulate specific network conditions:

ProfileDelayJitterLossNotes
LAN000Baseline
WAN (US)50 ms5 ms0.1%Cross-country
WAN (Global)150 ms10 ms0.5%Intercontinental
Satellite300 ms20 ms1%Geostationary
Mobile (good)50 ms20 ms0.5%4G/LTE
Mobile (poor)200 ms100 ms5%Cell edge
WiFi (congested)10 ms30 ms2%Busy environment

Verification

After applying impairments, verify they're taking effect:

  1. Check the Impairments panel shows correct values
  2. Monitor the timing measurement chart—you should see increased delay/jitter
  3. Run a ping through the bridge to confirm delay
  4. Check application behavior matches expectations

Best Practices

  1. Start small — Begin with mild impairments and increase gradually

  2. Test one variable — Change one impairment at a time to isolate effects

  3. Document thresholds — Record the impairment levels where behavior changes

  4. Test recovery — Verify systems recover when impairments are removed

  5. Use realistic values — Base impairments on actual network measurements

  6. 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.