wireguard.lists.zx2c4.com archive mirror
 help / color / mirror / Atom feed
* Netstat bytes count doesn't match with Wireguard
@ 2021-09-14 20:53 Manikandan Thiagarajan
  2021-09-15  7:31 ` Aaron Jones
  2022-03-10  1:00 ` Wireguard Go C API Callbacks Manikandan Thiagarajan
  0 siblings, 2 replies; 3+ messages in thread
From: Manikandan Thiagarajan @ 2021-09-14 20:53 UTC (permalink / raw)
  To: wireguard

Hi,

I use the Wireguard Go C API to integrate with my packet tunnel network extension to forward traffic to the WG tunnel on Mac OS. I also use the wgGetConfig() API to get tunnel status information.

During my testing, I noticed some differences between what the netstat -ib reports and what Wireguard reports as rx and tx bytes. Usually the Wireguard numbers are higher than netstat numbers.

Is it normal to see so much difference? Can you be able to provide me some information or point me to a doc on how Wireguard calculates the tx/rx bytes?


Netstat -ib output:
Name  Mtu   Network       Address            Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll
utun2 1420  <Link#23>                          130     0      42713      180     0      15245     0
utun2 1420  100.101.113.5 100.101.113.54       130     -      42713      180     -      15245     -

Wireguard output:
last_handshake_time_sec=1631646164
last_handshake_time_nsec=79839000
tx_bytes=21328
rx_bytes=47980
persistent_keepalive_interval=0
allowed_ip=155.2.135.28/32
allowed_ip=192.168.128.4/32

Thanks,
Mani

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Netstat bytes count doesn't match with Wireguard
  2021-09-14 20:53 Netstat bytes count doesn't match with Wireguard Manikandan Thiagarajan
@ 2021-09-15  7:31 ` Aaron Jones
  2022-03-10  1:00 ` Wireguard Go C API Callbacks Manikandan Thiagarajan
  1 sibling, 0 replies; 3+ messages in thread
From: Aaron Jones @ 2021-09-15  7:31 UTC (permalink / raw)
  To: WireGuard mailing list; +Cc: Manikandan Thiagarajan


[-- Attachment #1.1: Type: text/plain, Size: 606 bytes --]

Hello.

Netstat is only counting traffic sent or received on the interface; e.g.
the tunnelled bytes themselves, as it should. WireGuard however is
counting that, plus all of the encapsulation overhead (header, MAC,
etc), plus packets not sending or receiving tunnelled data (for example,
keep-alives and periodic re-handshaking), plus periodic response packets
when traffic is only flowing one way (common if you run unidirectional
protocols over it; for example, UDP video streaming).

These extra packets are documented in the WireGuard whitepaper on the
website.

Regards,
Aaron Jones


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Wireguard Go C API Callbacks
  2021-09-14 20:53 Netstat bytes count doesn't match with Wireguard Manikandan Thiagarajan
  2021-09-15  7:31 ` Aaron Jones
@ 2022-03-10  1:00 ` Manikandan Thiagarajan
  1 sibling, 0 replies; 3+ messages in thread
From: Manikandan Thiagarajan @ 2022-03-10  1:00 UTC (permalink / raw)
  To: wireguard

Hi,

We are using Wireguard Go C API to integrate with our packet tunnel network extension to forward traffic to WG Tunnel on Mac OS. Sometimes We encounter some issues with the tunnel that it doesn’t respond anymore. Below log is one of the scenarios where we see this issue. The Wireguard log says "no buffer space available”. Below are my questions regarding this issue and in general WG C API.

“[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Failed to read packet from TUN device: route ip+net: sysctl: no buffer space available"

1. When do we hit this issue? How do we prevent this.
2. I think we need some kind of callback C APIs that notifies such errors to the callers.
3. Also it would be nice to have status update callbacks such as Tunnel established, Handshake completed. Handshake failed, Tunnel file descriptor closed and any other updates.

We would like to handle these notifications and take some actions such as re create the tunnels, update our own UI, and etc

Thanks,
Mani

[Sun Mar  6 15:27:15 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: receive incoming v4 - started
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: event worker - stopped
replace_peers=true
public_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
endpoint=x.x.x.x:51820
persistent_keepalive_interval=0
replace_allowed_ips=true
allowed_ip=10.50.19.176/32
public_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
endpoint=x.x.x.x:51820
persistent_keepalive_interval=0
replace_allowed_ips=true
allowed_ip=10.255.254.170/32

 for interface 100.140.34.230/11
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:286 [INFO]: Update tunnel 0 CCConfig: private_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
replace_peers=true
public_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
endpoint=x.x.x.x:51820
persistent_keepalive_interval=0
replace_allowed_ips=true
allowed_ip=10.50.19.176/32
public_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
endpoint=x.x.x.x:51820
persistent_keepalive_interval=0
replace_allowed_ips=true
allowed_ip=10.255.254.170/32


[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: UAPI: Updating private key
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: UAPI: Removing all peers
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Stopping
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Routine: sequential sender - stopped
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Routine: sequential receiver - stopped
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Stopping
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Routine: sequential receiver - stopped
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Routine: sequential sender - stopped
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Starting
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Routine: sequential sender - started
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - UAPI: Created
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Routine: sequential receiver - started
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - UAPI: Updating endpoint
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - UAPI: Updating persistent keepalive interval
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - UAPI: Removing all allowedips
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - UAPI: Adding allowedip
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Starting
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - UAPI: Created
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Routine: sequential receiver - started
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Routine: sequential sender - started
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - UAPI: Updating endpoint
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - UAPI: Updating persistent keepalive interval
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - UAPI: Removing all allowedips
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - UAPI: Adding allowedip
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: receive incoming v4 - stopped
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: receive incoming v6 - stopped
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: UDP bind has been updated
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: receive incoming v6 - started
[Sun Mar  6 15:27:21 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: receive incoming v4 - started
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Failed to read packet from TUN device: route ip+net: sysctl: no buffer space available
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: TUN reader - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Device closing
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: receive incoming v4 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: receive incoming v6 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Stopping
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Routine: sequential sender - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(EBXr…oDk8) - Routine: sequential receiver - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Stopping
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Routine: sequential sender - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: peer(3wsi…8IXc) - Routine: sequential receiver - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Device closed
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 2 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 11 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 6 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 10 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 7 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 4 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 10 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 5 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 12 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 2 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 7 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 8 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 1 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 9 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 9 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 5 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 1 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: decryption worker 3 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 11 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 8 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 12 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 4 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 3 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: handshake worker 6 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 5 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 9 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 6 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 11 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 12 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 3 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 10 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 4 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 1 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 7 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 8 - stopped
[Sun Mar  6 15:27:22 2022] 832, AgentPacketTunnelProvider.mm:41 [INFO]: Routine: encryption worker 2 - stopped



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-03-10  1:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-14 20:53 Netstat bytes count doesn't match with Wireguard Manikandan Thiagarajan
2021-09-15  7:31 ` Aaron Jones
2022-03-10  1:00 ` Wireguard Go C API Callbacks Manikandan Thiagarajan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).