We will need a keep-alive mechanism to keep NAT mappings open even if no data is being sent. Wireguard already has this functionality.
In addition, we can patch boringtun to expose a simple getter: time_since_last_packet, similar to https://docs.rs/boringtun/latest/boringtun/noise/struct.Tunn.html#method.time_since_last_handshake.
Depending on what we set the wireguard keepalive to, checking the newly introduced getter allows us to very quickly detect connectivity problems even before wireguard itself times out (which is after 5 failed keep alives I think).