On Mon, 27 Mar 2023 13:22:12 +0100 "Gianluca Stivan" <me(a)yawnt.com> wrote:Thanks for the reply! Here is the ending of the log file: ... <a lot a lot of STALLED and dropped...> 3944.3562: TCP: index 19, timer expires in 2.000s 3944.3563: TCP: index 19, timer expires in 2.000s 3944.3566: TCP: index 19: STALLED 3944.3578: TCP: index 7: STALLED dropped 3944.3579: TCP: index 7, timer expires in 2.000s 3944.3584: TCP: index 7: STALLED 3944.3586: TCP: index 7: STALLED dropped 3944.3587: TCP: index 7: ACK_FROM_TAP_DUE dropped 3944.3588: TCP: index 7: ACK_FROM_TAP_DUE 3944.3588: TCP: index 7, timer expires in 2.000s 3944.3589: TCP: index 12: STALLED dropped 3944.3590: TCP: index 12, timer expires in 2.000s 3944.3620: tap write: No buffer space available 3944.3620: TCP: index 17: STALLED dropped 3944.3620: TCP: index 17: ACK_FROM_TAP_DUE dropped 3944.4420: ERROR: Failed to open tun socket in namespace No buffer space available seems interesting?Interesting, I had never seen ENOBUFS from a tap file descriptor. Let me find out where it might come from (and how pasta should react to it), it might take a bit. What kernel version are you using by the way? I mean, maybe we just have to try again (as if we received EAGAIN): diff --git a/tap.c b/tap.c index 68ef480..21a786d 100644 --- a/tap.c +++ b/tap.c @@ -323,7 +323,8 @@ static size_t tap_send_frames_pasta(struct ctx *c, if (write(c->fd_tap, (char *)iov[i].iov_base, iov[i].iov_len) < 0) { debug("tap write: %s", strerror(errno)); - if (errno != EAGAIN && errno != EWOULDBLOCK) + if (errno != EAGAIN && errno != EWOULDBLOCK && + errno != ENOBUFS) tap_handler(c, c->fd_tap, EPOLLERR, NULL); i--; } but I'm not sure it's correct. You could probably try that as a workaround meanwhile.PS: let me know if you'd like the full file!No no, thank you, that was enough! About issue number 2. (the fact that we can't actually close and reopen the tap file descriptor after this failure), I'll check if I can easily reproduce that in a Podman setting. -- Stefano