Adverse network conditions that cause corrupt, delayed, dropped, and out-of-order packets, can play havoc with distributed applications.
Linux provides a kernel module called netem that can modify network traffic in configurable ways. You can create two networks and use a linux box to bridge these two networks, and configure netem to simulate adverse conditions between the two networks.
If you’re building an embedded Linux system, with Buildroot for instance, you can enable netem module under Networking support, Networking options, QoS and/or fair queueing.
You’ll need the tc utility from iproute2 package to configure netem.
You can enable that package under Target packages, Networking applications