Is it possible to reproduce this behavior using a Network Extension and if so, which type of network extension should I use?
NETransparentProxyProvider is probably your best bet here. The reason why I say that is because you are in charge of copying the flows on both sides of the connection and so you could develop an algorithm where small amounts of delay or data is dropped during the flow copying process without platform disruption.
Delay could be introduced as well with NEFilterDataProvider but that would back up the flow provider queue and could ultimately lead to issues if too much delay is introduced in the case (There can be a lot of traffic in this context!). NEFilterDataProvider does not offer a clear way to discard data / packets from a connection either, only to make a filtering decision.
One thing I will caution against is consuming too much memory in your process while delaying / causing packet loss. This could lead to your process getting terminated due to memory constraints or memory being reaped, especially on iOS.
Matt Eaton - Networking