historically the kernel queues packets two times. once at the device and second in qdisc. this is believed to cause interface stalls if one of these queues overruns.
setting IFF_ONE_QUEUE is the default in kernels >= 3.8. the flag is ignored since then. see kernel commit 5d097109257c03a71845729f8db6b5770c4bbedc Signed-off-by: Peter Lieven <p...@kamp.de> --- net/tap-linux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/tap-linux.c b/net/tap-linux.c index a953189..2759b78 100644 --- a/net/tap-linux.c +++ b/net/tap-linux.c @@ -49,7 +49,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, return -1; } memset(&ifr, 0, sizeof(ifr)); - ifr.ifr_flags = IFF_TAP | IFF_NO_PI; + ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_ONE_QUEUE; if (*vnet_hdr) { unsigned int features; -- 1.7.9.5