
Simulating Crap Networks on a Raspberry Pi (2018) - DanBC
https://planb.nicecupoftea.org/2018/09/22/simulating-crap-networks-on-a-raspberry-pi/
======
bschwindHN
At Maker Faire Tokyo this year there was a booth handing out PCBs for their
side project: an interactive packet delay and packet loss simulator.
Underneath it uses tc commands, but they used rotary encoders and a little LCD
screen to make it super easy to use.

I took a PCB, bought the other parts, and put one together. Still need to try
it out this week.

Here's the repo for it:

[https://github.com/pandax381/PACKDROP](https://github.com/pandax381/PACKDROP)

------
phaedrus
A little over 10 years ago I was on an engineering internship and worked on a
NASA project that was part of the overall goal of converting ad hoc links to
being IP-based. I wrote a test tool which allowed simulating long distance
and/or unreliable links. You could specify chains of filters on the command
line for both uplink and downlink, as well as introduce taps. The reason I
couldn't use an off-the-shelf tool was that by "long distance" I mean
"interplanetary". It's one thing to introduce a delay/drop, but my tool
simulated the possibility of gigabytes of data being "in flight" along the
link.

~~~
sitkack
This for others following along more than you, but the work that Luigi Rizzo
did on IPFW [1] and FEC (forward error correcting codes) for internet scale
video delivery is amazing.

I used ipfw (my router was running FreeBSD) to give ICMP traffic 300ms of
jitter and 5% packet loss. Enough to make my DSL endpoint sour enough that the
hack attempts went to zero. They would scan with ping, decide that my link was
garbage and move on.

[1]
[https://github.com/luigirizzo/dummynet](https://github.com/luigirizzo/dummynet)

[2]
[http://www.iet.unipi.it/l.rizzo/research.html](http://www.iet.unipi.it/l.rizzo/research.html)

------
davidhyde
Very interesting. The author may also be able to use throttling functionality
on the Network tab of Firefox dev tools. I think chrome has something similar.
It probably won’t simulate disconnects through. Using ip tables works nicely.

I found webrtc to be quite tricky to get working. It feels like a house of
cards when you’re starting out but it genuinely does work if you persist.
Kudos to the community for making a truly amazing technology. STUN is magical.

------
squarefoot
This could be improved so that it can simulate noisy lines, not just
connection interruptions, by injecting noise (random data) into the data path.
The amount of random data/time could be mapped to a "crappiness" control and
be used to test either hardware appliances or software protocols for
resilience against data corruption. Pretty sure this already exists though as
an old friend of mine developed something like that to be used on serial lines
over 25 years back.

------
tonedev
This is really interesting.

I've been playing about with trying something like this as well, but as an
experiment to see how considerate I would be of spending time online if I was
to be tied down by loading times like back when using dial-up, if/how my
habits would change.

