Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sometimes connections to a gateway are only established after 10s #4058

Closed
thomaseizinger opened this issue Mar 10, 2024 · 31 comments
Closed
Labels
area/connlib Firezone's core connectivity library area/gateway Issues involving the Firezone Gateway business_value/critical Required by 100% of our customer base kind/bug Something isn't working

Comments

@thomaseizinger
Copy link
Member

thomaseizinger commented Mar 10, 2024

In my own testing, I noticed that a connection to a gateway sometimes takes ~10s. Subsequent connections from a restarted client are much quicker which leads me to believe that it is somehow related to how we cache candidates across connections.

@thomaseizinger thomaseizinger added kind/bug Something isn't working area/connlib Firezone's core connectivity library labels Mar 10, 2024
@jamilbk
Copy link
Member

jamilbk commented Mar 15, 2024

Just hit this now on a fresh connection.

Client logs:

connlib	15:45:26.106029-0700	Sending connection intent	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.297949-0700	request_connection	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.301450-0700	Added new TURN server  address=[2600:1900:4020:eb:0:10::]:3478	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.302380-0700	Added new TURN server  address=34.75.142.234:3478	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.303210-0700	Added new TURN server  address=34.151.248.99:3478	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.304068-0700	Added new TURN server  address=[2600:1900:40f0:e339:0:11::]:3478	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.305794-0700	Establishing new connection  duration_since_intent=192.876917ms	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.378521-0700	Add local candidate: Candidate(host=192.168.1.65:63515/udp prio=2130706175)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.390158-0700	Add local candidate: Candidate(host=[2600:1700:3ecb:2410:34d7:c47e:3241:fda9]:57728/udp prio=2130706431)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.453010-0700	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.75.142.234:56753/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:10::]:56753/udp prio=50331647)) srflx=Some(Candidate(srflx=107.197.104.68:63515/udp base=192.168.1.65:63515 prio=1694498559))	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.459724-0700	received offer response	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.460380-0700	Set remote credentials: IceCreds { ufrag: "99I3", pass: "PafyatnYjPSm0O6Z0VAZsu" }	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.460907-0700	Add local candidate: Candidate(srflx=107.197.104.68:63515/udp base=192.168.1.65:63515 prio=1686109951)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.461314-0700	Add local candidate: Candidate(relay=34.75.142.234:56753/udp prio=37748479)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.461693-0700	Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:10::]:56753/udp prio=37748735)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.462399-0700	State change (new connection): New -> Checking	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.466279-0700	Signalling protocol completed  duration_since_intent=354.385834ms remote=38c4065bfdcc60d865fb4fde28b7ce7ac5f3f90fe784146f8a442a8a89447c4c	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.468705-0700	Sending ICE candidate to gateway  candidate=candidate:5419530295210720364 1 udp 2130706175 192.168.1.65 63515 typ host gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.469163-0700	Sending ICE candidate to gateway  candidate=candidate:11909503792003719251 1 udp 2130706431 2600:1700:3ecb:2410:34d7:c47e:3241:fda9 57728 typ host gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.469665-0700	Sending ICE candidate to gateway  candidate=candidate:8908444180100827448 1 udp 1694498559 107.197.104.68 63515 typ srflx gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.470073-0700	Sending ICE candidate to gateway  candidate=candidate:14469559569025009274 1 udp 50331391 34.75.142.234 56753 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.470468-0700	Sending ICE candidate to gateway  candidate=candidate:3391753753991239091 1 udp 50331647 2600:1900:4020:eb:0:10:: 56753 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.473680-0700	Add remote candidate: Candidate(host=172.17.0.2:48357/udp prio=2130706175)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.474967-0700	Add remote candidate: Candidate(host=[fd00::242:ac11:2]:45804/udp prio=2130706431)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.475780-0700	Add remote candidate: Candidate(srflx=[2600:1f18:2406:c402:4e68:9bcb:a386:ae8c]:45804/udp prio=1694498815)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.476994-0700	Add remote candidate: Candidate(relay=34.75.142.234:52040/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.477983-0700	Add remote candidate: Candidate(relay=[2600:1900:4020:eb:0:10::]:52040/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.478785-0700	Add remote candidate: Candidate(relay=34.151.113.134:56460/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.479662-0700	Add remote candidate: Candidate(relay=[2600:1900:40b0:1504:0:10::]:56460/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.480644-0700	Add remote candidate: Candidate(relay=34.94.54.201:54096/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.481905-0700	Add remote candidate: Candidate(relay=[2600:1900:4120:f732:0:10::]:54096/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.483294-0700	Add remote candidate: Candidate(srflx=44.201.57.127:48357/udp prio=1694498559)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.484297-0700	Add remote candidate: Candidate(relay=34.123.11.189:54367/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.485289-0700	Add remote candidate: Candidate(relay=[2600:1900:4000:102d:0:10::]:54367/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.486198-0700	Add remote candidate: Candidate(relay=34.75.142.234:55361/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.486979-0700	Add remote candidate: Candidate(relay=[2600:1900:4020:eb:0:10::]:55361/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.487499-0700	Add remote candidate: Candidate(relay=34.151.248.99:51620/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.488086-0700	Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:11::]:51620/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.489020-0700	Add remote candidate: Candidate(relay=34.94.54.201:52957/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.489757-0700	Add remote candidate: Candidate(relay=[2600:1900:4120:f732:0:10::]:52957/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.490586-0700	Add remote candidate: Candidate(relay=34.151.248.99:54551/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.491353-0700	Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:11::]:54551/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.491930-0700	Add remote candidate: Candidate(relay=34.123.11.189:57118/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.492531-0700	Add remote candidate: Candidate(relay=[2600:1900:4000:102d:0:10::]:57118/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.493086-0700	Add remote candidate: Candidate(relay=34.151.113.134:61333/udp prio=50331391)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.493674-0700	Add remote candidate: Candidate(relay=[2600:1900:40b0:1504:0:10::]:61333/udp prio=50331647)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.495209-0700	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.75.142.234:55031/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:10::]:55031/udp prio=50331647)) srflx=Some(Candidate(srflx=[2600:1700:3ecb:2410:34d7:c47e:3241:fda9]:57728/udp prio=1694498815))	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.513215-0700	Add local candidate: Candidate(relay=34.75.142.234:55031/udp prio=37747967)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.513708-0700	Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:10::]:55031/udp prio=37748223)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.514553-0700	Sending ICE candidate to gateway  candidate=candidate:14469559569025009274 1 udp 50331391 34.75.142.234 55031 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.514815-0700	Sending ICE candidate to gateway  candidate=candidate:3391753753991239091 1 udp 50331647 2600:1900:4020:eb:0:10:: 55031 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.672535-0700	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.151.248.99:59369/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:11::]:59369/udp prio=50331647)) srflx=Some(Candidate(srflx=107.197.104.68:63515/udp base=192.168.1.65:63515 prio=1694498559))	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.681510-0700	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.151.248.99:61636/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:11::]:61636/udp prio=50331647)) srflx=Some(Candidate(srflx=[2600:1700:3ecb:2410:34d7:c47e:3241:fda9]:57728/udp prio=1694498815))	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.713566-0700	Add local candidate: Candidate(relay=34.151.248.99:61636/udp prio=37747455)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.714175-0700	Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:11::]:61636/udp prio=37747711)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.714766-0700	Add local candidate: Candidate(relay=34.151.248.99:59369/udp prio=37746943)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.715298-0700	Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:11::]:59369/udp prio=37747199)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.716878-0700	Sending ICE candidate to gateway  candidate=candidate:1556540688565005902 1 udp 50331391 34.151.248.99 61636 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.717303-0700	Sending ICE candidate to gateway  candidate=candidate:12098470161847201852 1 udp 50331647 2600:1900:40f0:e339:0:11:: 61636 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.717690-0700	Sending ICE candidate to gateway  candidate=candidate:1556540688565005902 1 udp 50331391 34.151.248.99 59369 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:26.718070-0700	Sending ICE candidate to gateway  candidate=candidate:12098470161847201852 1 udp 50331647 2600:1900:40f0:e339:0:11:: 59369 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.110965-0700	Failed to encapsulate: Not connected	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.317795-0700	State change (got nomination, still trying others): Checking -> Connected	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.363698-0700	Updating remote socket  duration_since_intent=1.254385834s new=Direct { source: 192.168.1.65:63515, dest: 34.75.142.234:52040 } old=None	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.364233-0700	Local candidate to discard Candidate(srflx=107.197.104.68:63515/udp base=192.168.1.65:63515 prio=1686109951)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.364569-0700	Local candidate to discard Candidate(relay=34.75.142.234:56753/udp prio=37748479)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.364902-0700	Local candidate to discard Candidate(relay=[2600:1900:4020:eb:0:10::]:56753/udp prio=37748735)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.365225-0700	Local candidate to discard Candidate(relay=34.75.142.234:55031/udp prio=37747967)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.365545-0700	Local candidate to discard Candidate(relay=[2600:1900:4020:eb:0:10::]:55031/udp prio=37748223)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.365859-0700	Local candidate to discard Candidate(relay=34.151.248.99:61636/udp prio=37747455)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.366185-0700	Local candidate to discard Candidate(relay=[2600:1900:40f0:e339:0:11::]:61636/udp prio=37747711)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.366503-0700	Local candidate to discard Candidate(relay=34.151.248.99:59369/udp prio=37746943)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.366812-0700	Local candidate to discard Candidate(relay=[2600:1900:40f0:e339:0:11::]:59369/udp prio=37747199)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:27.470386-0700	Completed wireguard handshake  duration_since_intent=1.358121042s	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:28.012578-0700	Updating remote socket  duration_since_intent=1.904385834s new=Direct { source: [2600:1700:3ecb:2410:34d7:c47e:3241:fda9]:57728, dest: [2600:1f18:2406:c402:4e68:9bcb:a386:ae8c]:45804 } old=Some(Direct { source: 192.168.1.65:63515, dest: 34.75.142.234:52040 })	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:28.013031-0700	Local candidate to discard Candidate(host=192.168.1.65:63515/udp prio=2130706175)	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:28.017909-0700	Failed to decapsulate incoming packet: Packet is a STUN message but no agent handled it; num_agents = 1  from=44.201.57.127:48357 local=192.168.1.65:63515 num_bytes=64	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:28.099999-0700	Failed to decapsulate incoming packet: Packet is a STUN message but no agent handled it; num_agents = 1  from=34.151.113.134:61333 local=192.168.1.65:63515 num_bytes=64	FirezoneNetworkExtensionmacOS	dev.firezone.firezone
connlib	15:45:37.511857-0700	State change (no more possible to try): Connected -> Completed	FirezoneNetworkExtensionmacOS	dev.firezone.firezone

Ping output:

jamil@Airbook-Mac:~/Developer/firezone/firezone (feat/handle-network-changes-apple$*=) % ping 10.0.32.101   
PING 10.0.32.101 (10.0.32.101): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
Request timeout for icmp_seq 6
Request timeout for icmp_seq 7
Request timeout for icmp_seq 8
Request timeout for icmp_seq 9
Request timeout for icmp_seq 10
64 bytes from 10.0.32.101: icmp_seq=11 ttl=62 time=73.160 ms
64 bytes from 10.0.32.101: icmp_seq=12 ttl=62 time=72.284 ms
64 bytes from 10.0.32.101: icmp_seq=13 ttl=62 time=72.557 ms
64 bytes from 10.0.32.101: icmp_seq=14 ttl=62 time=73.062 ms
64 bytes from 10.0.32.101: icmp_seq=15 ttl=62 time=73.327 ms
64 bytes from 10.0.32.101: icmp_seq=16 ttl=62 time=73.244 ms
64 bytes from 10.0.32.101: icmp_seq=17 ttl=62 time=75.248 ms
64 bytes from 10.0.32.101: icmp_seq=18 ttl=62 time=71.885 ms
64 bytes from 10.0.32.101: icmp_seq=19 ttl=62 time=73.530 ms
64 bytes from 10.0.32.101: icmp_seq=20 ttl=62 time=72.640 ms
64 bytes from 10.0.32.101: icmp_seq=21 ttl=62 time=72.747 ms
64 bytes from 10.0.32.101: icmp_seq=22 ttl=62 time=73.135 ms
64 bytes from 10.0.32.101: icmp_seq=23 ttl=62 time=71.922 ms
64 bytes from 10.0.32.101: icmp_seq=24 ttl=62 time=72.168 ms
^C
--- 10.0.32.101 ping statistics ---
25 packets transmitted, 14 packets received, 44.0% packet loss
round-trip min/avg/max/stddev = 71.885/72.922/75.248/0.822 ms

Environment: Staging

@thomaseizinger
Copy link
Member Author

Yeah, I've been hitting it pretty regularly. It is always exactly 10s.

I am almost certain it is a problem on the gateway but I haven't looked at the logs yet.

@jamilbk jamilbk added area/gateway Issues involving the Firezone Gateway business_value/critical Required by 100% of our customer base labels Mar 16, 2024
@jamilbk
Copy link
Member

jamilbk commented Mar 16, 2024

👍 Moving to high prior since it affects all users. I can paste gateway logs here next time I encounter it.

@jamilbk
Copy link
Member

jamilbk commented Mar 16, 2024

After some more testing trying to reproduce, it seems to happen only with gateways that have been up for some time, making it tricky to debug. Perhaps there's a timer or something that doesn't get reset that affects new clients connecting.

@thomaseizinger
Copy link
Member Author

After some more testing trying to reproduce, it seems to happen only with gateways that have been up for some time, making it tricky to debug. Perhaps there's a timer or something that doesn't get reset that affects new clients connecting.

Yeah, it seems to happen when the gateway has been idle for a bit.

@thomaseizinger
Copy link
Member Author

👍 Moving to high prior since it affects all users. I can paste gateway logs here next time I encounter it.

Are we logging snownet on debug for the gateways? Because the info logs themselves won't say much. boringtun on debug would be useful too.

@jamilbk
Copy link
Member

jamilbk commented Mar 17, 2024

@thomaseizinger Yes, see here: https://github.com/firezone/firezone/blob/main/terraform/environments/staging/aws.tf#L162

@jamilbk
Copy link
Member

jamilbk commented Mar 18, 2024

@thomaseizinger Just hit this again. Here are the relevant logs that capture the 10 seconds from initial intent from the client until the pings started flowing:

2024-03-18T22:51:54.199052Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=34.94.54.201:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199126Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=[2600:1900:4020:eb:0:11::]:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199161Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=[2600:1900:40b0:1504:0:11::]:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199186Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=[2600:1900:4000:102d:0:11::]:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199210Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=34.151.120.63:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199236Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=34.39.139.92:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199258Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=[2600:1900:40f0:e339:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199280Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=34.132.98.11:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199304Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=[2600:1900:4120:f732:0:11::]:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199355Z DEBUG Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}:refresh{relay=35.237.41.61:3478}: snownet::allocation: Refreshing allocation
2024-03-18T22:51:54.199383Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Set remote credentials: IceCreds { ufrag: "Dyp8", pass: "TAds4MlkBtSzvTiLJ5mu0A" }
2024-03-18T22:51:54.199395Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(host=[fd00::242:ac11:2]:55882/udp prio=2130706431)
2024-03-18T22:51:54.199409Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(host=172.17.0.2:48131/udp prio=2130706175)
2024-03-18T22:51:54.199427Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(srflx=[2600:1f18:2406:c402:189:b80a:5b9e:1dba]:55882/udp base=[fd00::242:ac11:2]:55882 prio=1686110207)
2024-03-18T22:51:54.199446Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.151.120.63:57993/udp prio=37748479)
2024-03-18T22:51:54.199457Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40b0:1504:0:11::]:57993/udp prio=37748735)
2024-03-18T22:51:54.199468Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(srflx=44.201.57.127:48131/udp base=172.17.0.2:48131 prio=1686109951)
2024-03-18T22:51:54.199478Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.39.139.92:59665/udp prio=37747967)
2024-03-18T22:51:54.199487Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:12::]:59665/udp prio=37748223)
2024-03-18T22:51:54.199497Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.39.139.92:64730/udp prio=37747455)
2024-03-18T22:51:54.199506Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:12::]:64730/udp prio=37747711)
2024-03-18T22:51:54.199516Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.94.54.201:57053/udp prio=37746943)
2024-03-18T22:51:54.199525Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:11::]:57053/udp prio=37747199)
2024-03-18T22:51:54.199536Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.237.41.61:61586/udp prio=37746431)
2024-03-18T22:51:54.199545Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:11::]:61586/udp prio=37746687)
2024-03-18T22:51:54.199556Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.94.54.201:53297/udp prio=37745919)
2024-03-18T22:51:54.199565Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:11::]:53297/udp prio=37746175)
2024-03-18T22:51:54.199576Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.132.98.11:65293/udp prio=37745407)
2024-03-18T22:51:54.199587Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4000:102d:0:11::]:65293/udp prio=37745663)
2024-03-18T22:51:54.199602Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.237.41.61:52751/udp prio=37744895)
2024-03-18T22:51:54.199611Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:11::]:52751/udp prio=37745151)
2024-03-18T22:51:54.199623Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.151.120.63:56184/udp prio=37744383)
2024-03-18T22:51:54.199631Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40b0:1504:0:11::]:56184/udp prio=37744639)
2024-03-18T22:51:54.199642Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.132.98.11:65411/udp prio=37743871)
2024-03-18T22:51:54.199650Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4000:102d:0:11::]:65411/udp prio=37744127)
2024-03-18T22:51:54.199676Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: State change (new connection): New -> Checking
2024-03-18T22:51:54.199940Z  INFO Eventloop::poll:accept_connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: snownet::node: Created new connection
2024-03-18T22:51:54.200437Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:2338719037163789452 1 udp 2130706431 fd00::242:ac11:2 55882 typ host
2024-03-18T22:51:54.200453Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:2226555494660524928 1 udp 2130706175 172.17.0.2 48131 typ host
2024-03-18T22:51:54.200461Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:17296116321717390924 1 udp 1694498815 2600:1f18:2406:c402:189:b80a:5b9e:1dba 55882 typ srflx
2024-03-18T22:51:54.200468Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:608329450728488443 1 udp 50331391 34.151.120.63 57993 typ relay
2024-03-18T22:51:54.200476Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:9053274591738420882 1 udp 50331647 2600:1900:40b0:1504:0:11:: 57993 typ relay
2024-03-18T22:51:54.200485Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:3329374309411154963 1 udp 1694498559 44.201.57.127 48131 typ srflx
2024-03-18T22:51:54.200492Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:8095197637150929414 1 udp 50331391 34.39.139.92 59665 typ relay
2024-03-18T22:51:54.200499Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:1406592185651051785 1 udp 50331647 2600:1900:40f0:e339:0:12:: 59665 typ relay
2024-03-18T22:51:54.200506Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:8095197637150929414 1 udp 50331391 34.39.139.92 64730 typ relay
2024-03-18T22:51:54.200513Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:1406592185651051785 1 udp 50331647 2600:1900:40f0:e339:0:12:: 64730 typ relay
2024-03-18T22:51:54.200520Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:14000115128808051680 1 udp 50331391 34.94.54.201 57053 typ relay
2024-03-18T22:51:54.200528Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:3627530668704243432 1 udp 50331647 2600:1900:4120:f732:0:11:: 57053 typ relay
2024-03-18T22:51:54.200535Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16484633351749061323 1 udp 50331391 35.237.41.61 61586 typ relay
2024-03-18T22:51:54.200542Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16221608279510380250 1 udp 50331647 2600:1900:4020:eb:0:11:: 61586 typ relay
2024-03-18T22:51:54.200549Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:14000115128808051680 1 udp 50331391 34.94.54.201 53297 typ relay
2024-03-18T22:51:54.200556Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:3627530668704243432 1 udp 50331647 2600:1900:4120:f732:0:11:: 53297 typ relay
2024-03-18T22:51:54.200563Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:1198995081225676466 1 udp 50331391 34.132.98.11 65293 typ relay
2024-03-18T22:51:54.200572Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:17527105837007724457 1 udp 50331647 2600:1900:4000:102d:0:11:: 65293 typ relay
2024-03-18T22:51:54.200580Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16484633351749061323 1 udp 50331391 35.237.41.61 52751 typ relay
2024-03-18T22:51:54.200588Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16221608279510380250 1 udp 50331647 2600:1900:4020:eb:0:11:: 52751 typ relay
2024-03-18T22:51:54.200595Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:608329450728488443 1 udp 50331391 34.151.120.63 56184 typ relay
2024-03-18T22:51:54.200603Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:9053274591738420882 1 udp 50331647 2600:1900:40b0:1504:0:11:: 56184 typ relay
2024-03-18T22:51:54.200610Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:1198995081225676466 1 udp 50331391 34.132.98.11 65411 typ relay
2024-03-18T22:51:54.200618Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:17527105837007724457 1 udp 50331647 2600:1900:4000:102d:0:11:: 65411 typ relay
2024-03-18T22:51:54.222682Z  INFO Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=28}:handle_input{id=TransactionId(0xDF059DFBFEB4CAA33332264F) method=refresh class=success response rtt=23.609359ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=44.201.57.127:48131/udp base=172.17.0.2:48131 prio=1694498559)) relay_ip4=Some(Candidate(relay=35.237.41.61:61586/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:11::]:61586/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.223798Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:4020:eb:0:11::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x69DB1EC21EF93CE6FD3540B3) method=refresh class=success response rtt=24.737907ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:189:b80a:5b9e:1dba]:55882/udp base=[fd00::242:ac11:2]:55882 prio=1694498815)) relay_ip4=Some(Candidate(relay=35.237.41.61:52751/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:11::]:52751/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.230794Z  INFO Eventloop::poll:decapsulate{from=34.132.98.11:3478 num_bytes=28}:handle_input{id=TransactionId(0x388C009BF3C6538BF1F92FBB) method=refresh class=success response rtt=31.727887ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=44.201.57.127:48131/udp base=172.17.0.2:48131 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.132.98.11:65411/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4000:102d:0:11::]:65411/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.231053Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:11::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x3F25D02BBC8A00844089176A) method=refresh class=success response rtt=31.994258ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:189:b80a:5b9e:1dba]:55882/udp base=[fd00::242:ac11:2]:55882 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.132.98.11:65293/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4000:102d:0:11::]:65293/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.264613Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:4120:f732:0:11::]:3478 num_bytes=28}:handle_input{id=TransactionId(0xD21F3973A13B19E34245DC86) method=refresh class=success response rtt=65.536876ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:189:b80a:5b9e:1dba]:55882/udp base=[fd00::242:ac11:2]:55882 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.94.54.201:53297/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:11::]:53297/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.264836Z  INFO Eventloop::poll:decapsulate{from=34.94.54.201:3478 num_bytes=28}:handle_input{id=TransactionId(0x98C5AE08313DC6C3AFE7D2B1) method=refresh class=success response rtt=65.777597ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=44.201.57.127:48131/udp base=172.17.0.2:48131 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.94.54.201:57053/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:11::]:57053/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.294419Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:5419530295210720364 1 udp 2130706175 192.168.1.65 49696 typ host
2024-03-18T22:51:54.294479Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(host=192.168.1.65:49696/udp prio=2130706175)
2024-03-18T22:51:54.295149Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:12112248463498405324 1 udp 2130706431 2600:1700:3ecb:2410:9d22:afbb:f49c:af0b 56211 typ host
2024-03-18T22:51:54.295180Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(host=[2600:1700:3ecb:2410:9d22:afbb:f49c:af0b]:56211/udp prio=2130706431)
2024-03-18T22:51:54.295436Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16484633351749061323 1 udp 50331391 35.237.41.61 63734 typ relay
2024-03-18T22:51:54.295472Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=35.237.41.61:63734/udp prio=50331391)
2024-03-18T22:51:54.298378Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16221608279510380250 1 udp 50331647 2600:1900:4020:eb:0:11:: 63734 typ relay
2024-03-18T22:51:54.298407Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:4020:eb:0:11::]:63734/udp prio=50331647)
2024-03-18T22:51:54.298630Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:8908444180100827448 1 udp 1694498559 107.197.104.68 49696 typ srflx
2024-03-18T22:51:54.298657Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(srflx=107.197.104.68:49696/udp prio=1694498559)
2024-03-18T22:51:54.299354Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16484633351749061323 1 udp 50331391 35.237.41.61 64335 typ relay
2024-03-18T22:51:54.299381Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=35.237.41.61:64335/udp prio=50331391)
2024-03-18T22:51:54.299634Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:16221608279510380250 1 udp 50331647 2600:1900:4020:eb:0:11:: 64335 typ relay
2024-03-18T22:51:54.299657Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:4020:eb:0:11::]:64335/udp prio=50331647)
2024-03-18T22:51:54.317387Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x6D32A47E29A666F359A00A08) method=refresh class=success response rtt=118.312882ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:189:b80a:5b9e:1dba]:55882/udp base=[fd00::242:ac11:2]:55882 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.39.139.92:64730/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:12::]:64730/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.317692Z  INFO Eventloop::poll:decapsulate{from=34.39.139.92:3478 num_bytes=28}:handle_input{id=TransactionId(0x49E1A82CDC5F44964025E843) method=refresh class=success response rtt=118.633294ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=44.201.57.127:48131/udp base=172.17.0.2:48131 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.39.139.92:59665/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:12::]:59665/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.329847Z DEBUG Eventloop::poll:decapsulate{from=34.132.98.11:3478 num_bytes=20}:handle_input{id=TransactionId(0xCA2EF6FEE65A7FC90E0ADAB5) method=channel bind class=success response rtt=31.168341ms}: snownet::allocation: Bound channel channel=16390 peer=107.197.104.68:49696
2024-03-18T22:51:54.329929Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:11::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x76E73E517DA7B84F112EBEFD) method=channel bind class=success response rtt=31.232524ms}: snownet::allocation: Bound channel channel=16390 peer=107.197.104.68:49696
2024-03-18T22:51:54.331024Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=20}:handle_input{id=TransactionId(0xADB11DEBFDA0E3B788E856CC) method=channel bind class=success response rtt=35.549954ms}: snownet::allocation: Bound channel channel=16391 peer=35.237.41.61:63734
2024-03-18T22:51:54.331812Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=20}:handle_input{id=TransactionId(0xA253F24E35592DC97837B516) method=channel bind class=success response rtt=33.39922ms}: snownet::allocation: Bound channel channel=16392 peer=[2600:1900:4020:eb:0:11::]:63734
2024-03-18T22:51:54.333169Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=20}:handle_input{id=TransactionId(0x5BA633CE18B50A0BF1FC96E3) method=channel bind class=success response rtt=34.505985ms}: snownet::allocation: Bound channel channel=16393 peer=107.197.104.68:49696
2024-03-18T22:51:54.334258Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4020:eb:0:11::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xAB5A64114C1045C9AAC0B50E) method=channel bind class=success response rtt=35.593198ms}: snownet::allocation: Bound channel channel=16386 peer=107.197.104.68:49696
2024-03-18T22:51:54.335007Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=20}:handle_input{id=TransactionId(0x11FCAB7486608D3750327C02) method=channel bind class=success response rtt=35.619542ms}: snownet::allocation: Bound channel channel=16394 peer=35.237.41.61:64335
2024-03-18T22:51:54.340431Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=20}:handle_input{id=TransactionId(0xD0157070ADFCDB6AF92C73A1) method=channel bind class=success response rtt=40.762626ms}: snownet::allocation: Bound channel channel=16395 peer=[2600:1900:4020:eb:0:11::]:64335
2024-03-18T22:51:54.363280Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4120:f732:0:11::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xED3E99DCAD3D4A4CD7EF42BC) method=channel bind class=success response rtt=64.596652ms}: snownet::allocation: Bound channel channel=16386 peer=107.197.104.68:49696
2024-03-18T22:51:54.363382Z DEBUG Eventloop::poll:decapsulate{from=34.94.54.201:3478 num_bytes=20}:handle_input{id=TransactionId(0x84BFB3874ED05EC819A45DE9) method=channel bind class=success response rtt=64.717259ms}: snownet::allocation: Bound channel channel=16390 peer=107.197.104.68:49696
2024-03-18T22:51:54.398187Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:40b0:1504:0:11::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x306637BA66A8E0CEF939AA68) method=refresh class=success response rtt=199.113077ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:189:b80a:5b9e:1dba]:55882/udp base=[fd00::242:ac11:2]:55882 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.151.120.63:57993/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40b0:1504:0:11::]:57993/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.399676Z  INFO Eventloop::poll:decapsulate{from=34.151.120.63:3478 num_bytes=28}:handle_input{id=TransactionId(0xE8BC36EE2E043E320181241C) method=refresh class=success response rtt=200.614389ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=44.201.57.127:48131/udp base=172.17.0.2:48131 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.151.120.63:56184/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40b0:1504:0:11::]:56184/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-18T22:51:54.417439Z DEBUG Eventloop::poll:decapsulate{from=34.39.139.92:3478 num_bytes=20}:handle_input{id=TransactionId(0x200A8296CC9A9BA1588A8A8D) method=channel bind class=success response rtt=118.753256ms}: snownet::allocation: Bound channel channel=16391 peer=107.197.104.68:49696
2024-03-18T22:51:54.417532Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x4EF8845450409A3662DAB9E6) method=channel bind class=success response rtt=118.864794ms}: snownet::allocation: Bound channel channel=16386 peer=107.197.104.68:49696
2024-03-18T22:51:54.495508Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:8095197637150929414 1 udp 50331391 34.39.139.92 57828 typ relay
2024-03-18T22:51:54.495555Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=34.39.139.92:57828/udp prio=50331391)
2024-03-18T22:51:54.495990Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:1406592185651051785 1 udp 50331647 2600:1900:40f0:e339:0:12:: 57828 typ relay
2024-03-18T22:51:54.496020Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:12::]:57828/udp prio=50331647)
2024-03-18T22:51:54.496193Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:8095197637150929414 1 udp 50331391 34.39.139.92 62953 typ relay
2024-03-18T22:51:54.496212Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=34.39.139.92:62953/udp prio=50331391)
2024-03-18T22:51:54.496432Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=e089e5f3-00fd-4efa-8bbf-a0258e84db50 candidate=candidate:1406592185651051785 1 udp 50331647 2600:1900:40f0:e339:0:12:: 62953 typ relay
2024-03-18T22:51:54.496463Z  INFO Eventloop::poll:add_remote_candidate{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:12::]:62953/udp prio=50331647)
2024-03-18T22:51:54.497145Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40b0:1504:0:11::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x5FB055AF6305DD112CB1A6BD) method=channel bind class=success response rtt=198.463696ms}: snownet::allocation: Bound channel channel=16386 peer=107.197.104.68:49696
2024-03-18T22:51:54.498028Z DEBUG Eventloop::poll:decapsulate{from=34.151.120.63:3478 num_bytes=20}:handle_input{id=TransactionId(0x3E6E5D36B8578F5D54AF0DB5) method=channel bind class=success response rtt=199.362509ms}: snownet::allocation: Bound channel channel=16386 peer=107.197.104.68:49696
2024-03-18T22:51:54.620624Z DEBUG Eventloop::poll:decapsulate{from=34.39.139.92:3478 num_bytes=20}:handle_input{id=TransactionId(0xCA02DDA7458C87FB9B47D5E4) method=channel bind class=success response rtt=125.06092ms}: snownet::allocation: Bound channel channel=16392 peer=34.39.139.92:57828
2024-03-18T22:51:54.621864Z DEBUG Eventloop::poll:decapsulate{from=34.39.139.92:3478 num_bytes=20}:handle_input{id=TransactionId(0x2D0F56C9562334DBE24F38F7) method=channel bind class=success response rtt=125.833003ms}: snownet::allocation: Bound channel channel=16393 peer=[2600:1900:40f0:e339:0:12::]:57828
2024-03-18T22:51:54.623496Z DEBUG Eventloop::poll:decapsulate{from=34.39.139.92:3478 num_bytes=20}:handle_input{id=TransactionId(0x13A3A6FBBC20E16ECF183AF8) method=channel bind class=success response rtt=127.273084ms}: snownet::allocation: Bound channel channel=16394 peer=34.39.139.92:62953
2024-03-18T22:51:54.625400Z DEBUG Eventloop::poll:decapsulate{from=34.39.139.92:3478 num_bytes=20}:handle_input{id=TransactionId(0x89FAA49FB829B7281E01902F) method=channel bind class=success response rtt=128.929612ms}: snownet::allocation: Bound channel channel=16395 peer=[2600:1900:40f0:e339:0:12::]:62953
2024-03-18T22:51:55.349640Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=152}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise: Received handshake_initiation remote_idx=2849022721
2024-03-18T22:51:55.350075Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=152}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise: Sending handshake_response local_idx=243571201
2024-03-18T22:51:55.350094Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=152}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: snownet::node: Updating remote socket from WG activity old=None new=Relay { relay: 35.237.41.61:3478, dest: 107.197.104.68:49696 }
2024-03-18T22:51:55.370373Z  INFO Eventloop::poll:handle_timeout{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: str0m::ice_::agent: State change (got nomination, still trying others): Checking -> Connected
2024-03-18T22:51:55.440195Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=36}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise: New session session=243571201
2024-03-18T22:51:55.440228Z  INFO Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=36}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: snownet::node: Completed wireguard handshake duration_since_intent=1.241134026s
2024-03-18T22:51:55.834131Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:9d22:afbb:f49c:af0b]:56211 num_bytes=148}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise: Received handshake_initiation remote_idx=2849022722
2024-03-18T22:51:55.834693Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:9d22:afbb:f49c:af0b]:56211 num_bytes=148}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise: Sending handshake_response local_idx=243571202
2024-03-18T22:51:55.834718Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:9d22:afbb:f49c:af0b]:56211 num_bytes=148}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: snownet::node: Updating remote socket from WG activity old=Some(Relay { relay: 35.237.41.61:3478, dest: 107.197.104.68:49696 }) new=Direct { source: [fd00::242:ac11:2]:55882, dest: [2600:1700:3ecb:2410:9d22:afbb:f49c:af0b]:56211 }
2024-03-18T22:51:55.908758Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:9d22:afbb:f49c:af0b]:56211 num_bytes=32}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise: New session session=243571202
2024-03-18T22:52:05.200331Z DEBUG Eventloop::poll:handle_timeout{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise::timers: KEEPALIVE(PERSISTENT_KEEPALIVE)

@jamilbk
Copy link
Member

jamilbk commented Mar 18, 2024

From the logs above, it seems that the delay may be caused by some sort of WireGuard state? Looks like it didn't work until the first keepalive was sent after the session was set up.

@thomaseizinger
Copy link
Member Author

From the logs above, it seems that the delay may be caused by some sort of WireGuard state? Looks like it didn't work until the first keepalive was sent after the session was set up.

I thought that too but we do have a session much earlier:

2024-03-18T22:51:55.440195Z DEBUG Eventloop::poll:decapsulate{from=35.237.41.61:3478 num_bytes=36}:connection{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise: New session session=243571201

@jamilbk
Copy link
Member

jamilbk commented Mar 19, 2024

This is when the pings started working:

2024-03-18T22:52:05.200331Z DEBUG Eventloop::poll:handle_timeout{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise::timers: KEEPALIVE(PERSISTENT_KEEPALIVE)

Is it possible it somehow missed a window or some other lookup failed causing it to wait until that handle_timeout?

Maybe happens with gateways after clients have connected and disconnected, maybe from the same IP / peer?

@thomaseizinger
Copy link
Member Author

This is when the pings started working:

2024-03-18T22:52:05.200331Z DEBUG Eventloop::poll:handle_timeout{id=e089e5f3-00fd-4efa-8bbf-a0258e84db50}: boringtun::noise::timers: KEEPALIVE(PERSISTENT_KEEPALIVE)

Is it possible it somehow missed a window or some other lookup failed causing it to wait until that handle_timeout?

Maybe happens with gateways after clients have connected and disconnected, maybe from the same IP / peer?

Well, it doesn't happen if the same peer connects again, that is the weird bit. But our ICE timeout is around ~10 seconds and after that, we clean up all the state to this peer. I am not aware of any state that we keep around beyond that which would make it faster to connect again after.

It is almost as if wireguard is buffering the data we want to send and needs to send / receive a keep-alive before it will actually encapsulate the packet and we can send it over. But I don't understand how that is related at all to the cold-start symptom.

@jamilbk
Copy link
Member

jamilbk commented Mar 20, 2024

@thomaseizinger It just happened again, this time I think I got better logs. I think there's a clue -- it looks like the state quickly goes to Checking -> Connected, but the allocation with a Relay times out, which seems to block packets from flowing.

Once the Relay auth succeeds, the ping started working. This is about 10 seconds from authorization to success.

Could it be that connections are held up by any pending Relay allocations even if they've been directly established?

log.txt.zip

@jamilbk
Copy link
Member

jamilbk commented Mar 21, 2024

One more set of logs, if it's helpful from first ping until the time where pings were flowing. This is time it's similar to the previously posted logs, where it waited until the first KEEPALIVE_TIMEOUT before working

2024-03-21T18:13:46.811162Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=35.247.245.189:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811230Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=34.138.90.126:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811285Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:4000:102d:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811315Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=34.135.208.161:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811339Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=35.244.114.208:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811364Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:40b0:1504:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811388Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:40f0:e339:0:13::]:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811411Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=34.102.20.7:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811435Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:4120:f732:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811461Z DEBUG Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:4020:eb:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-21T18:13:46.811490Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Set remote credentials: IceCreds { ufrag: "eATX", pass: "al2mdaxoFEXQGKGvn5M823" }
2024-03-21T18:13:46.811504Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(host=172.17.0.2:33217/udp prio=2130706175)
2024-03-21T18:13:46.811518Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(host=[fd00::242:ac11:2]:48597/udp prio=2130706431)
2024-03-21T18:13:46.811530Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(srflx=[2600:1f18:2406:c402:c0c2:59d4:9a21:d04b]:48597/udp base=[fd00::242:ac11:2]:48597 prio=1686110207)
2024-03-21T18:13:46.811541Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.247.245.189:65093/udp prio=37748479)
2024-03-21T18:13:46.811565Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:65093/udp prio=37748735)
2024-03-21T18:13:46.811578Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(srflx=3.231.55.21:33217/udp base=172.17.0.2:33217 prio=1686109951)
2024-03-21T18:13:46.811588Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.244.114.208:63641/udp prio=37747967)
2024-03-21T18:13:46.811598Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40b0:1504:0:12::]:63641/udp prio=37748223)
2024-03-21T18:13:46.811611Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.102.20.7:61497/udp prio=37747455)
2024-03-21T18:13:46.811623Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:61497/udp prio=37747711)
2024-03-21T18:13:46.811635Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.135.208.161:51676/udp prio=37746943)
2024-03-21T18:13:46.811645Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:51676/udp prio=37747199)
2024-03-21T18:13:46.811656Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.244.114.208:52574/udp prio=37746431)
2024-03-21T18:13:46.811668Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40b0:1504:0:12::]:52574/udp prio=37746687)
2024-03-21T18:13:46.811679Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.135.208.161:56079/udp prio=37745919)
2024-03-21T18:13:46.811688Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:56079/udp prio=37746175)
2024-03-21T18:13:46.811699Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.102.20.7:54126/udp prio=37745407)
2024-03-21T18:13:46.811709Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:54126/udp prio=37745663)
2024-03-21T18:13:46.811731Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.247.245.189:61438/udp prio=37744895)
2024-03-21T18:13:46.811740Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:61438/udp prio=37745151)
2024-03-21T18:13:46.811751Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.138.90.126:54557/udp prio=37744383)
2024-03-21T18:13:46.811760Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:12::]:54557/udp prio=37744639)
2024-03-21T18:13:46.811772Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.138.90.126:49448/udp prio=37743871)
2024-03-21T18:13:46.811781Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:12::]:49448/udp prio=37744127)
2024-03-21T18:13:46.811793Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: State change (new connection): New -> Checking
2024-03-21T18:13:46.812273Z  INFO Eventloop::poll:accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: snownet::node: Created new connection
2024-03-21T18:13:46.812495Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:2226555494660524928 1 udp 2130706175 172.17.0.2 33217 typ host
2024-03-21T18:13:46.812508Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:2338719037163789452 1 udp 2130706431 fd00::242:ac11:2 48597 typ host
2024-03-21T18:13:46.812516Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:17296116321717390924 1 udp 1694498815 2600:1f18:2406:c402:c0c2:59d4:9a21:d04b 48597 typ srflx
2024-03-21T18:13:46.812524Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:8371210897384904618 1 udp 50331391 35.247.245.189 65093 typ relay
2024-03-21T18:13:46.812531Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:14935958210108877476 1 udp 50331647 2600:1900:40f0:e339:0:13:: 65093 typ relay
2024-03-21T18:13:46.812539Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:3329374309411154963 1 udp 1694498559 3.231.55.21 33217 typ srflx
2024-03-21T18:13:46.812546Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:17693589061372511779 1 udp 50331391 35.244.114.208 63641 typ relay
2024-03-21T18:13:46.812554Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:11970412396909905767 1 udp 50331647 2600:1900:40b0:1504:0:12:: 63641 typ relay
2024-03-21T18:13:46.812561Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:2077113276712493812 1 udp 50331391 34.102.20.7 61497 typ relay
2024-03-21T18:13:46.812569Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:4628041249016130852 1 udp 50331647 2600:1900:4120:f732:0:12:: 61497 typ relay
2024-03-21T18:13:46.812576Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:16044905462687503897 1 udp 50331391 34.135.208.161 51676 typ relay
2024-03-21T18:13:46.812584Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:3436115692907268846 1 udp 50331647 2600:1900:4000:102d:0:12:: 51676 typ relay
2024-03-21T18:13:46.812593Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:17693589061372511779 1 udp 50331391 35.244.114.208 52574 typ relay
2024-03-21T18:13:46.812601Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:11970412396909905767 1 udp 50331647 2600:1900:40b0:1504:0:12:: 52574 typ relay
2024-03-21T18:13:46.812608Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:16044905462687503897 1 udp 50331391 34.135.208.161 56079 typ relay
2024-03-21T18:13:46.812615Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:3436115692907268846 1 udp 50331647 2600:1900:4000:102d:0:12:: 56079 typ relay
2024-03-21T18:13:46.812623Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:2077113276712493812 1 udp 50331391 34.102.20.7 54126 typ relay
2024-03-21T18:13:46.812630Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:4628041249016130852 1 udp 50331647 2600:1900:4120:f732:0:12:: 54126 typ relay
2024-03-21T18:13:46.812637Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:8371210897384904618 1 udp 50331391 35.247.245.189 61438 typ relay
2024-03-21T18:13:46.812644Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:14935958210108877476 1 udp 50331647 2600:1900:40f0:e339:0:13:: 61438 typ relay
2024-03-21T18:13:46.812651Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:1302718959553342767 1 udp 50331391 34.138.90.126 54557 typ relay
2024-03-21T18:13:46.812676Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:11011284213101745836 1 udp 50331647 2600:1900:4020:eb:0:12:: 54557 typ relay
2024-03-21T18:13:46.812684Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:1302718959553342767 1 udp 50331391 34.138.90.126 49448 typ relay
2024-03-21T18:13:46.812691Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Sending ICE candidate to client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:11011284213101745836 1 udp 50331647 2600:1900:4020:eb:0:12:: 49448 typ relay
2024-03-21T18:13:46.833533Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x2681BF556BB87615C3AC5743) method=refresh class=success response rtt=22.303095ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c0c2:59d4:9a21:d04b]:48597/udp base=[fd00::242:ac11:2]:48597 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.138.90.126:54557/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:12::]:54557/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.834119Z  INFO Eventloop::poll:decapsulate{from=34.138.90.126:3478 num_bytes=28}:handle_input{id=TransactionId(0x4DF855666AD48B86975505A1) method=refresh class=success response rtt=22.953122ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33217/udp base=172.17.0.2:33217 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.138.90.126:49448/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:12::]:49448/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.843030Z  INFO Eventloop::poll:decapsulate{from=34.135.208.161:3478 num_bytes=28}:handle_input{id=TransactionId(0x8BFF0EFC6762C0BAB858E120) method=refresh class=success response rtt=31.859966ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33217/udp base=172.17.0.2:33217 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.135.208.161:56079/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4000:102d:0:12::]:56079/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.845711Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0xCA1ECA9201A80A7F54C9E480) method=refresh class=success response rtt=34.543833ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c0c2:59d4:9a21:d04b]:48597/udp base=[fd00::242:ac11:2]:48597 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.135.208.161:51676/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4000:102d:0:12::]:51676/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.881020Z  INFO Eventloop::poll:decapsulate{from=34.102.20.7:3478 num_bytes=28}:handle_input{id=TransactionId(0x1A2BB022D6E8848A8C987C5F) method=refresh class=success response rtt=69.727027ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33217/udp base=172.17.0.2:33217 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.102.20.7:61497/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:12::]:61497/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.881082Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:4120:f732:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0xF0D7C090D72CECA1A86D2B22) method=refresh class=success response rtt=69.92076ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c0c2:59d4:9a21:d04b]:48597/udp base=[fd00::242:ac11:2]:48597 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.102.20.7:54126/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:12::]:54126/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.930280Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=28}:handle_input{id=TransactionId(0xE8CF503DCB5A1DE59A4E8327) method=refresh class=success response rtt=119.096077ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c0c2:59d4:9a21:d04b]:48597/udp base=[fd00::242:ac11:2]:48597 prio=1694498815)) relay_ip4=Some(Candidate(relay=35.247.245.189:65093/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:13::]:65093/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.930574Z  INFO Eventloop::poll:decapsulate{from=35.247.245.189:3478 num_bytes=28}:handle_input{id=TransactionId(0x3BA4C3BBA2453BFC9A3BA7FC) method=refresh class=success response rtt=119.402613ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33217/udp base=172.17.0.2:33217 prio=1694498559)) relay_ip4=Some(Candidate(relay=35.247.245.189:61438/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:13::]:61438/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:46.952016Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:8995630472168710366 1 udp 2130706431 2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390 53289 typ host
2024-03-21T18:13:46.952062Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(host=[2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390]:53289/udp prio=2130706431)
2024-03-21T18:13:46.952810Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:5419530295210720364 1 udp 2130706175 192.168.1.65 63785 typ host
2024-03-21T18:13:46.952840Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(host=192.168.1.65:63785/udp prio=2130706175)
2024-03-21T18:13:46.952960Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:8908444180100827448 1 udp 1694498559 107.197.104.68 63785 typ srflx
2024-03-21T18:13:46.952981Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(srflx=107.197.104.68:63785/udp prio=1694498559)
2024-03-21T18:13:46.953527Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:16044905462687503897 1 udp 50331391 34.135.208.161 54032 typ relay
2024-03-21T18:13:46.953554Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=34.135.208.161:54032/udp prio=50331391)
2024-03-21T18:13:46.953683Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:3436115692907268846 1 udp 50331647 2600:1900:4000:102d:0:12:: 54032 typ relay
2024-03-21T18:13:46.953704Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:54032/udp prio=50331647)
2024-03-21T18:13:46.955221Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:16044905462687503897 1 udp 50331391 34.135.208.161 62952 typ relay
2024-03-21T18:13:46.955247Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=34.135.208.161:62952/udp prio=50331391)
2024-03-21T18:13:46.955673Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:3436115692907268846 1 udp 50331647 2600:1900:4000:102d:0:12:: 62952 typ relay
2024-03-21T18:13:46.955700Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:62952/udp prio=50331647)
2024-03-21T18:13:46.973618Z DEBUG Eventloop::poll:decapsulate{from=34.138.90.126:3478 num_bytes=20}:handle_input{id=TransactionId(0xE6484A5ADBF2B5ED1E2036F6) method=channel bind class=success response rtt=20.611643ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:46.973813Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xB4AE61492873E9ED77BC42AB) method=channel bind class=success response rtt=20.810406ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:46.982937Z DEBUG Eventloop::poll:decapsulate{from=34.135.208.161:3478 num_bytes=20}:handle_input{id=TransactionId(0xD53552D019E136D1E6D8FE31) method=channel bind class=success response rtt=29.932786ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:46.985652Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xA455A53C19D8459E810E4FB4) method=channel bind class=success response rtt=32.650342ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:46.987397Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x9FA6CF23E6D201CAA7D72FEE) method=channel bind class=success response rtt=33.828438ms}: snownet::allocation: Bound channel channel=16390 peer=34.135.208.161:54032
2024-03-21T18:13:46.989371Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x2A7897F5879C55B7324454CA) method=channel bind class=success response rtt=35.654746ms}: snownet::allocation: Bound channel channel=16391 peer=[2600:1900:4000:102d:0:12::]:54032
2024-03-21T18:13:46.990847Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x4ACAA7A0791362C33C2330DC) method=channel bind class=success response rtt=35.589982ms}: snownet::allocation: Bound channel channel=16392 peer=34.135.208.161:62952
2024-03-21T18:13:46.992318Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x43A730D2ED2F8CC292BDD329) method=channel bind class=success response rtt=36.609363ms}: snownet::allocation: Bound channel channel=16393 peer=[2600:1900:4000:102d:0:12::]:62952
2024-03-21T18:13:47.011512Z  INFO Eventloop::poll:decapsulate{from=35.244.114.208:3478 num_bytes=28}:handle_input{id=TransactionId(0x797536E09F1D30B6D4611EC0) method=refresh class=success response rtt=200.285116ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33217/udp base=172.17.0.2:33217 prio=1694498559)) relay_ip4=Some(Candidate(relay=35.244.114.208:63641/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40b0:1504:0:12::]:63641/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:47.011610Z  INFO Eventloop::poll:decapsulate{from=[2600:1900:40b0:1504:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x99411EBCA7F9DD60B8CEC154) method=refresh class=success response rtt=200.449431ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c0c2:59d4:9a21:d04b]:48597/udp base=[fd00::242:ac11:2]:48597 prio=1694498815)) relay_ip4=Some(Candidate(relay=35.244.114.208:52574/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40b0:1504:0:12::]:52574/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-21T18:13:47.017594Z DEBUG Eventloop::poll:decapsulate{from=34.102.20.7:3478 num_bytes=20}:handle_input{id=TransactionId(0xFFC3AA4D3DF4A9B2049B8E27) method=channel bind class=success response rtt=64.593186ms}: snownet::allocation: Bound channel channel=16392 peer=107.197.104.68:63785
2024-03-21T18:13:47.018449Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:4120:f732:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xD30C6015D9478EEDEDE126CA) method=channel bind class=success response rtt=65.45617ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:47.071456Z DEBUG Eventloop::poll:decapsulate{from=35.247.245.189:3478 num_bytes=20}:handle_input{id=TransactionId(0x7D1E0E5B83C390E6B5BA5D2C) method=channel bind class=success response rtt=118.4552ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:47.073543Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xB5A6469E69781232ECF2CFCB) method=channel bind class=success response rtt=120.545466ms}: snownet::allocation: Bound channel channel=16396 peer=107.197.104.68:63785
2024-03-21T18:13:47.079977Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:8371210897384904618 1 udp 50331391 35.247.245.189 55127 typ relay
2024-03-21T18:13:47.080024Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=35.247.245.189:55127/udp prio=50331391)
2024-03-21T18:13:47.080694Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:14935958210108877476 1 udp 50331647 2600:1900:40f0:e339:0:13:: 55127 typ relay
2024-03-21T18:13:47.080730Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:55127/udp prio=50331647)
2024-03-21T18:13:47.113379Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:8371210897384904618 1 udp 50331391 35.247.245.189 59042 typ relay
2024-03-21T18:13:47.113425Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=35.247.245.189:59042/udp prio=50331391)
2024-03-21T18:13:47.113700Z DEBUG Eventloop::poll: firezone_gateway::eventloop: Adding ICE candidate from client client=f14aab87-2d08-4f02-b8be-251fc93f1c2c candidate=candidate:14935958210108877476 1 udp 50331647 2600:1900:40f0:e339:0:13:: 59042 typ relay
2024-03-21T18:13:47.113760Z  INFO Eventloop::poll:add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:59042/udp prio=50331647)
2024-03-21T18:13:47.151530Z DEBUG Eventloop::poll:decapsulate{from=35.244.114.208:3478 num_bytes=20}:handle_input{id=TransactionId(0xC46C11DA66B8C92A8DE04DC8) method=channel bind class=success response rtt=198.522293ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:47.151946Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40b0:1504:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x732DEFB336386AC92AF7BABA) method=channel bind class=success response rtt=198.950354ms}: snownet::allocation: Bound channel channel=16389 peer=107.197.104.68:63785
2024-03-21T18:13:47.207414Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390]:53289 num_bytes=148}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: Received handshake_initiation remote_idx=228896769
2024-03-21T18:13:47.207934Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390]:53289 num_bytes=148}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: Sending handshake_response local_idx=1852782337
2024-03-21T18:13:47.207952Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390]:53289 num_bytes=148}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: snownet::node: Updating remote socket from WG activity old=None new=Direct { source: [fd00::242:ac11:2]:48597, dest: [2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390]:53289 }
2024-03-21T18:13:47.215790Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x53B
D59E59FDB04DC81EF5010) method=channel bind class=success response rtt=135.753509ms}: snownet::allocation: Bound channel channel=16397 peer=35.247.245.189:55127
2024-03-21T18:13:47.217116Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x5919C6E5609C39B69ED6E65C) method=channel bind class=success response rtt=136.379414ms}: snownet::allocation: Bound channel channel=16398 peer=[2600:1900:40f0:e339:0:13::]:55127
2024-03-21T18:13:47.231839Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x356799C06BA65D35871A1C6F) method=channel bind class=success response rtt=118.396032ms}: snownet::allocation: Bound channel channel=16399 peer=35.247.245.189:59042
2024-03-21T18:13:47.232772Z DEBUG Eventloop::poll:decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x37D2BFE60BB706427686D36C) method=channel bind class=success response rtt=119.005263ms}: snownet::allocation: Bound channel channel=16400 peer=[2600:1900:40f0:e339:0:13::]:59042
2024-03-21T18:13:47.241918Z  INFO Eventloop::poll:handle_timeout{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: State change (got nomination, still trying others): Checking -> Connected
2024-03-21T18:13:47.284161Z DEBUG Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390]:53289 num_bytes=32}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: New session session=1852782337
2024-03-21T18:13:47.284191Z  INFO Eventloop::poll:decapsulate{from=[2600:1700:3ecb:2410:3c4e:e0f1:caaf:d390]:53289 num_bytes=32}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: snownet::node: Completed wireguard handshake duration_since_intent=472.988195ms
2024-03-21T18:13:56.812881Z DEBUG Eventloop::poll:handle_timeout{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise::timers: KEEPALIVE(PERSISTENT_KEEPALIVE)

@thomaseizinger
Copy link
Member Author

@thomaseizinger It just happened again, this time I think I got better logs. I think there's a clue -- it looks like the state quickly goes to Checking -> Connected, but the allocation with a Relay times out, which seems to block packets from flowing.

What maybe happens is that the first handshake flows over a relay and then flaps to another socket.

I wonder if #4164 would help with this.

@thomaseizinger
Copy link
Member Author

One more set of logs

Can you get logs from the gateway too?

@jamilbk
Copy link
Member

jamilbk commented Mar 21, 2024

@thomaseizinger All of these are from the staging gateway in AWS.

@thomaseizinger
Copy link
Member Author

@thomaseizinger All of these are from the staging gateway in AWS.

Ah yes, didn't look properly sorry 😅

/me sips coffee

@thomaseizinger
Copy link
Member Author

I've had a look at the logs but I can't identify anything useful. I think we need to further narrow down, when this happens. One thing we could try is restarting the gateway and check if it happens on a completely new connection.

Another interesting thing to know would be if we are actually sending data out and it is dropped by the gateway or whether we are not actually sending it. Activating wire should give us this information.

@jamilbk
Copy link
Member

jamilbk commented Mar 22, 2024

Tested with a fresh gateway restart, doesn't seem to affect the issue. In fact it never happens with a fresh gateway. Should we lengthen the WireGuard timeout to 25s to see if it's that? That would help distinguish WireGuard timeouts from str0m ones?

I wonder if it's reproducible in CI somehow.

I can enable the trace logs for the staging gateway.

@thomaseizinger
Copy link
Member Author

thomaseizinger commented Mar 23, 2024

I can enable the trace logs for the staging gateway.

I think we should first start with wire on the client. I am curious if the pings even leave the local device. If they do, then we can start blaming the gateway! Can we deploy a 2nd gateway that gets less traffic so we can enable wire there and test against it?

Should we lengthen the WireGuard timeout to 25s to see if it's that? That would help distinguish WireGuard timeouts from str0m ones?

I doubt this, str0m never interacts with our traffic, it is just a state machine that generates STUN messages.

We can see from the logs that we have a connection and we've handshaked the wireguard tunnel. The causes I can see are:

  • We don't receive the ICMP traffic on the TUN device: Very unlikely because it would show up more often.
  • We drop it because we fail to encapsulate it as a wireguard packet: Unless we've missed a spot, I would expect to see warnings for that.
  • boringtun accepts the packet but buffers it internally: Could be, we should be able to tell based on the wire logs of the client.
  • boringtun accepts the packet, but we drop it before we can send it: Possible, we should be able to tell based on the wire logs.
  • We send the encapsulated wireguard packet to the wrong socket and it gets lost in transit: Unlikely because that doesn't get fixed by an internal boringtun timer.
  • We send the ICMP request correctly over the tunnel but the gateway somehow looses the response. Maybe it is buffering something and only allows the responses to come through after the next WG keepalive?

The coupling with the wireguard keepalive makes me think it is a problem of WG buffering or rejecting our packet, either on the client or the gateway. It could also be that wireguard discards it? I'd have to look at the code again but I'd expect there to be logs for that.

@jamilbk
Copy link
Member

jamilbk commented Mar 24, 2024

@thomaseizinger I think your hypothesis that this is a client issue is correct. Just happened for me again, and I happened to have boringtun=debug. I did not have wire=trace unfortunately. But you can see the Checking -> Completed log about 10s after the first intent.

connlib	19:01:23.012358-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending connection intent
connlib	19:01:23.164334-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	request_connection
connlib	19:01:23.166675-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Added new TURN server  address=[2600:1900:40f0:e339:0:13::]:3478
connlib	19:01:23.167347-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Added new TURN server  address=34.102.20.7:3478
connlib	19:01:23.167958-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Added new TURN server  address=34.151.248.99:3478
connlib	19:01:23.168697-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Added new TURN server  address=[2600:1900:4120:f732:0:12::]:3478
connlib	19:01:23.169821-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Establishing new connection  duration_since_intent=152.599875ms
connlib	19:01:23.186115-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(host=[2600:1700:3ecb:2410:1cb9:759:2ffc:32c0]:53415/udp prio=2130706431)
connlib	19:01:23.187253-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Request failed, re-authenticating  error="Unauthorized"
connlib	19:01:23.188858-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(host=192.168.1.65:58780/udp prio=2130706175)
connlib	19:01:23.189534-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Request failed, re-authenticating  error="Unauthorized"
connlib	19:01:23.204274-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.102.20.7:50245/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:12::]:50245/udp prio=50331647)) srflx=Some(Candidate(srflx=[2600:1700:3ecb:2410:1cb9:759:2ffc:32c0]:53415/udp prio=1694498815))
connlib	19:01:23.205271-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.102.20.7:61789/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:12::]:61789/udp prio=50331647)) srflx=Some(Candidate(srflx=107.197.104.68:58780/udp base=192.168.1.65:58780 prio=1694498559))
connlib	19:01:23.350136-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Request failed, re-authenticating  error="Unauthorized"
connlib	19:01:23.352580-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Request failed, re-authenticating  error="Unauthorized"
connlib	19:01:23.354888-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Set remote credentials: IceCreds { ufrag: "y0UR", pass: "bVqo2rPDDsyUFkVDxtahf8" }
connlib	19:01:23.355343-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(srflx=107.197.104.68:58780/udp base=192.168.1.65:58780 prio=1686109951)
connlib	19:01:23.355704-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=34.102.20.7:61789/udp prio=37748479)
connlib	19:01:23.355978-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:61789/udp prio=37748735)
connlib	19:01:23.356247-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=34.102.20.7:50245/udp prio=37747967)
connlib	19:01:23.356501-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:50245/udp prio=37748223)
connlib	19:01:23.356802-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	State change (new connection): New -> Checking
connlib	19:01:23.359622-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Signalling protocol completed  duration_since_intent=342.521ms remote=3187959900fe63452eab7ca503dbbe610ea60a9a91c0d904eafbbe8c53820b15
connlib	19:01:23.362199-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:395968234903414854 1 udp 2130706431 2600:1700:3ecb:2410:1cb9:759:2ffc:32c0 53415 typ host gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.362520-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:5419530295210720364 1 udp 2130706175 192.168.1.65 58780 typ host gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.362802-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:8908444180100827448 1 udp 1694498559 107.197.104.68 58780 typ srflx gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.363075-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:2077113276712493812 1 udp 50331391 34.102.20.7 61789 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.363349-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:4628041249016130852 1 udp 50331647 2600:1900:4120:f732:0:12:: 61789 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.363600-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:2077113276712493812 1 udp 50331391 34.102.20.7 50245 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.363811-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:4628041249016130852 1 udp 50331647 2600:1900:4120:f732:0:12:: 50245 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.365087-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(host=172.17.0.2:51460/udp prio=2130706175)
connlib	19:01:23.365689-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(host=[fd00::242:ac11:2]:55959/udp prio=2130706431)
connlib	19:01:23.366245-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(srflx=[2600:1f18:2406:c402:ba7f:2439:2179:2c1c]:55959/udp prio=1694498815)
connlib	19:01:23.366926-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.367594-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.368294-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.135.227.232:55631/udp prio=50331391)
connlib	19:01:23.369016-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.369595-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.370265-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:55631/udp prio=50331647)
connlib	19:01:23.370970-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.371547-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.372097-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=104.196.49.112:52729/udp prio=50331391)
connlib	19:01:23.372689-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.373178-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.373728-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:4020:eb:0:12::]:52729/udp prio=50331647)
connlib	19:01:23.374253-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.374797-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.375345-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(srflx=3.231.55.21:51460/udp prio=1694498559)
connlib	19:01:23.375868-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.376405-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.376956-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.135.227.232:58086/udp prio=50331391)
connlib	19:01:23.377492-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.377978-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.378541-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:58086/udp prio=50331647)
connlib	19:01:23.379203-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.379801-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.380433-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.102.20.7:52741/udp prio=50331391)
connlib	19:01:23.381453-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:52741/udp prio=50331647)
connlib	19:01:23.382270-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.87.223.207:54362/udp prio=50331391)
connlib	19:01:23.382818-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.383363-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.384578-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16384 peer=[2600:1f18:2406:c402:ba7f:2439:2179:2c1c]:55959
connlib	19:01:23.385107-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16384 peer=[2600:1f18:2406:c402:ba7f:2439:2179:2c1c]:55959
connlib	19:01:23.385654-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16385 peer=34.135.227.232:55631
connlib	19:01:23.386146-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16385 peer=34.135.227.232:55631
connlib	19:01:23.386663-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16386 peer=[2600:1900:4000:102d:0:12::]:55631
connlib	19:01:23.387152-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16386 peer=[2600:1900:4000:102d:0:12::]:55631
connlib	19:01:23.387676-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16387 peer=104.196.49.112:52729
connlib	19:01:23.388389-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:40b0:1504:0:12::]:54362/udp prio=50331647)
connlib	19:01:23.388977-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.389543-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.390131-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=104.196.49.112:61962/udp prio=50331391)
connlib	19:01:23.390880-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.391434-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.392070-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:4020:eb:0:12::]:61962/udp prio=50331647)
connlib	19:01:23.392710-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.393266-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.393876-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.87.223.207:61902/udp prio=50331391)
connlib	19:01:23.394509-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.395004-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.395597-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:40b0:1504:0:12::]:61902/udp prio=50331647)
connlib	19:01:23.396198-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.396780-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.397370-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.151.248.99:59655/udp prio=50331391)
connlib	19:01:23.397964-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.398519-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.399085-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:59655/udp prio=50331647)
connlib	19:01:23.399662-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.400219-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.400846-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.102.20.7:62569/udp prio=50331391)
connlib	19:01:23.401735-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:62569/udp prio=50331647)
connlib	19:01:23.402604-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=34.151.248.99:64945/udp prio=50331391)
connlib	19:01:23.403256-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.403778-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.404438-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:64945/udp prio=50331647)
connlib	19:01:23.405136-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.405690-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	No allocation yet, buffering channel binding
connlib	19:01:23.407402-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16388 peer=[2600:1900:4020:eb:0:12::]:52729
connlib	19:01:23.407905-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16387 peer=104.196.49.112:52729
connlib	19:01:23.408432-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16389 peer=3.231.55.21:51460
connlib	19:01:23.408919-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16388 peer=[2600:1900:4020:eb:0:12::]:52729
connlib	19:01:23.409455-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16390 peer=34.135.227.232:58086
connlib	19:01:23.409934-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16389 peer=3.231.55.21:51460
connlib	19:01:23.410466-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16391 peer=[2600:1900:4000:102d:0:12::]:58086
connlib	19:01:23.410942-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16390 peer=34.135.227.232:58086
connlib	19:01:23.411462-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16392 peer=34.102.20.7:52741
connlib	19:01:23.411942-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16391 peer=[2600:1900:4000:102d:0:12::]:58086
connlib	19:01:23.412472-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16393 peer=[2600:1900:4120:f732:0:12::]:52741
connlib	19:01:23.412956-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16392 peer=34.87.223.207:54362
connlib	19:01:23.413476-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16394 peer=34.87.223.207:54362
connlib	19:01:23.413958-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16393 peer=[2600:1900:40b0:1504:0:12::]:54362
connlib	19:01:23.414480-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16395 peer=[2600:1900:40b0:1504:0:12::]:54362
connlib	19:01:23.414962-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16394 peer=104.196.49.112:61962
connlib	19:01:23.415477-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16396 peer=104.196.49.112:61962
connlib	19:01:23.415950-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16395 peer=[2600:1900:4020:eb:0:12::]:61962
connlib	19:01:23.416479-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16397 peer=[2600:1900:4020:eb:0:12::]:61962
connlib	19:01:23.416959-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16396 peer=34.87.223.207:61902
connlib	19:01:23.417476-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16398 peer=34.87.223.207:61902
connlib	19:01:23.417951-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16397 peer=[2600:1900:40b0:1504:0:12::]:61902
connlib	19:01:23.418467-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16399 peer=[2600:1900:40b0:1504:0:12::]:61902
connlib	19:01:23.419068-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16398 peer=34.151.248.99:59655
connlib	19:01:23.419682-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16400 peer=34.151.248.99:59655
connlib	19:01:23.420175-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16399 peer=[2600:1900:40f0:e339:0:13::]:59655
connlib	19:01:23.420700-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16401 peer=[2600:1900:40f0:e339:0:13::]:59655
connlib	19:01:23.421180-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16400 peer=34.151.248.99:64945
connlib	19:01:23.421689-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16402 peer=34.102.20.7:62569
connlib	19:01:23.422290-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16401 peer=[2600:1900:40f0:e339:0:13::]:64945
connlib	19:01:23.422823-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16403 peer=[2600:1900:4120:f732:0:12::]:62569
connlib	19:01:23.423327-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16404 peer=34.151.248.99:64945
connlib	19:01:23.423826-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16405 peer=[2600:1900:40f0:e339:0:13::]:64945
connlib	19:01:23.529577-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.151.248.99:56104/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:13::]:56104/udp prio=50331647)) srflx=Some(Candidate(srflx=107.197.104.68:58780/udp base=192.168.1.65:58780 prio=1694498559))
connlib	19:01:23.535770-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Updated candidates of allocation  lifetime=600s relay_ip4=Some(Candidate(relay=34.151.248.99:51594/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:13::]:51594/udp prio=50331647)) srflx=Some(Candidate(srflx=[2600:1700:3ecb:2410:1cb9:759:2ffc:32c0]:53415/udp prio=1694498815))
connlib	19:01:23.541996-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=34.151.248.99:56104/udp prio=37747455)
connlib	19:01:23.542503-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:56104/udp prio=37747711)
connlib	19:01:23.543097-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=34.151.248.99:51594/udp prio=37746943)
connlib	19:01:23.543613-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:51594/udp prio=37747199)
connlib	19:01:23.544744-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:1556540688565005902 1 udp 50331391 34.151.248.99 56104 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.544940-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:14935958210108877476 1 udp 50331647 2600:1900:40f0:e339:0:13:: 56104 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.545119-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:1556540688565005902 1 udp 50331391 34.151.248.99 51594 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.545300-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending ICE candidate to gateway  candidate=candidate:14935958210108877476 1 udp 50331647 2600:1900:40f0:e339:0:13:: 51594 typ relay gateway=b3d34a15-55ab-40df-994b-a838e75d65d7
connlib	19:01:23.593681-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	State change (got nomination, still trying others): Checking -> Connected
connlib	19:01:23.642337-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Updating remote socket  duration_since_intent=627.537375ms new=Direct { source: [2600:1700:3ecb:2410:1cb9:759:2ffc:32c0]:53415, dest: [2600:1f18:2406:c402:ba7f:2439:2179:2c1c]:55959 } old=None
connlib	19:01:23.643002-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(host=192.168.1.65:58780/udp prio=2130706175)
connlib	19:01:23.643721-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(srflx=107.197.104.68:58780/udp base=192.168.1.65:58780 prio=1686109951)
connlib	19:01:23.644062-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=34.102.20.7:61789/udp prio=37748479)
connlib	19:01:23.644407-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=[2600:1900:4120:f732:0:12::]:61789/udp prio=37748735)
connlib	19:01:23.644756-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=34.102.20.7:50245/udp prio=37747967)
connlib	19:01:23.645102-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=[2600:1900:4120:f732:0:12::]:50245/udp prio=37748223)
connlib	19:01:23.645443-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=34.151.248.99:56104/udp prio=37747455)
connlib	19:01:23.645791-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=[2600:1900:40f0:e339:0:13::]:56104/udp prio=37747711)
connlib	19:01:23.646128-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=34.151.248.99:51594/udp prio=37746943)
connlib	19:01:23.646471-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Local candidate to discard Candidate(relay=[2600:1900:40f0:e339:0:13::]:51594/udp prio=37747199)
connlib	19:01:23.651597-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending handshake_initiation
connlib	19:01:23.713285-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16384 peer=[2600:1900:40f0:e339:0:13::]:64945
connlib	19:01:23.714801-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16385 peer=34.151.248.99:64945
connlib	19:01:23.716043-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16386 peer=[2600:1900:40f0:e339:0:13::]:59655
connlib	19:01:23.717205-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16387 peer=34.151.248.99:59655
connlib	19:01:23.718307-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16388 peer=[2600:1900:40b0:1504:0:12::]:61902
connlib	19:01:23.719325-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16389 peer=34.87.223.207:61902
connlib	19:01:23.720273-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16390 peer=[2600:1900:4020:eb:0:12::]:61962
connlib	19:01:23.721405-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16391 peer=104.196.49.112:61962
connlib	19:01:23.722533-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16392 peer=[2600:1900:40b0:1504:0:12::]:54362
connlib	19:01:23.723464-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16393 peer=34.87.223.207:54362
connlib	19:01:23.724566-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16394 peer=[2600:1900:4000:102d:0:12::]:58086
connlib	19:01:23.725577-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16395 peer=34.135.227.232:58086
connlib	19:01:23.726450-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16396 peer=3.231.55.21:51460
connlib	19:01:23.727355-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16397 peer=[2600:1900:4020:eb:0:12::]:52729
connlib	19:01:23.728015-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16398 peer=104.196.49.112:52729
connlib	19:01:23.728677-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16399 peer=[2600:1900:4000:102d:0:12::]:55631
connlib	19:01:23.729432-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16400 peer=34.135.227.232:55631
connlib	19:01:23.730120-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16401 peer=[2600:1f18:2406:c402:ba7f:2439:2179:2c1c]:55959
connlib	19:01:23.731117-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	"Received handshake_response"  local_idx=2362199809 remote_idx=402485761
connlib	19:01:23.735095-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	"New session"  session=2362199809
connlib	19:01:23.735337-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Sending keepalive
connlib	19:01:23.735517-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Completed wireguard handshake  duration_since_intent=718.65775ms
connlib	19:01:23.736181-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16384 peer=[2600:1900:40f0:e339:0:13::]:64945
connlib	19:01:23.736766-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16385 peer=34.151.248.99:64945
connlib	19:01:23.737325-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16386 peer=[2600:1900:40f0:e339:0:13::]:59655
connlib	19:01:23.737874-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16387 peer=34.151.248.99:59655
connlib	19:01:23.738419-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16388 peer=[2600:1900:40b0:1504:0:12::]:61902
connlib	19:01:23.739101-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16389 peer=34.87.223.207:61902
connlib	19:01:23.739706-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16390 peer=[2600:1900:4020:eb:0:12::]:61962
connlib	19:01:23.740279-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16391 peer=104.196.49.112:61962
connlib	19:01:23.740820-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16392 peer=[2600:1900:40b0:1504:0:12::]:54362
connlib	19:01:23.741352-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16393 peer=34.87.223.207:54362
connlib	19:01:23.742320-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16394 peer=[2600:1900:4000:102d:0:12::]:58086
connlib	19:01:23.742927-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16395 peer=34.135.227.232:58086
connlib	19:01:23.743491-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16396 peer=3.231.55.21:51460
connlib	19:01:23.744045-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16397 peer=[2600:1900:4020:eb:0:12::]:52729
connlib	19:01:23.744587-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16398 peer=104.196.49.112:52729
connlib	19:01:23.745187-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16399 peer=[2600:1900:4000:102d:0:12::]:55631
connlib	19:01:23.745753-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16400 peer=34.135.227.232:55631
connlib	19:01:23.746304-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Bound channel  channel=16401 peer=[2600:1f18:2406:c402:ba7f:2439:2179:2c1c]:55959
connlib	19:01:33.691900-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	State change (no more possible to try): Connected -> Completed
connlib	19:01:34.356755-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	KEEPALIVE(PERSISTENT_KEEPALIVE)

@jamilbk
Copy link
Member

jamilbk commented Mar 24, 2024

So there is definitely an issue somewhere in connection setup. I left Firezone running overnight, came in and ran a ping, only this time it never established a connection. I waited about 20s.

The second time I started the ping it worked within 1s, so it must have taken quite a while for the connection to set up (maybe 30s?)

Perhaps a way to test this in CI is to expose our timers as a knob to adjust? Then we can advanced some of the timings and try to replicate it. I think it may have to do with connections that get "cleaned up"?

Here are the client (with wire=trace) and logs from gateway.
Archive.zip

@thomaseizinger
Copy link
Member Author

Here are the client (with wire=trace) and logs from gateway.
Archive.zip

Very interesting. There are a few things going on here.

  • For the first connection, the gateway seems to have lost the connection to the portal, evident from the following log line:
    2024-03-24T14:02:32.438567Z DEBUG phoenix_channel: Reconnecting to portal on transient client error: portal did not respond to our heartbeat backoff=457.269965ms max_elapsed_time=None
    
    I think because of that, we lost the answer for the connection from the gateway and thus the client got stuck. The timeout for that is 20s and it got hit here:
    connlib	07:02:53.051398-0700	FirezoneNetworkExtensionmacOS	dev.firezone.firezone	Connection setup timed out (no answer received)
    
  • For the second connection, we can see the ICMPs from the device:
     bytes=84 dest=10.0.32.101 from="device"
    
    Interestingly, they stopped at 07:02:57. Did you abort the ICMPs at that point? The log lines:
     dst=[2600:1f18:2406:c402:8cee:ca28:acf:c31]:39924 num_bytes=116 src=Some(2600:1700:3ecb:2410:bc55:459c:2aaf:df8) to="network"
    
    Indicate the encrypted packet being written out to the network. This makes me think that the problem isn't the client but the gateway.

@jamilbk
Copy link
Member

jamilbk commented Mar 25, 2024

Did you abort the ICMPs at that point?

Yeah I stopped after it started working.

So it seems the question is... why would the gateway's connection fail?

I'm confident the portal wasn't being deployed when this occurred.

Would it be possible this could be a portal bug? Maybe we should be pulling portal logs?

@jamilbk
Copy link
Member

jamilbk commented Mar 25, 2024

I should have mentioned the time between canceling the failed ping and starting the one that succeeded was maybe 10s

At '32 I started,

At around '57 I think I started again and it worked right away (we hit the 20s timeout from the first ping and resetup the connection in the meantime?)

Around '02 I stopped the ping.

@thomaseizinger
Copy link
Member Author

So it seems the question is... why would the gateway's connection fail?

I'm confident the portal wasn't being deployed when this occurred.

Would it be possible this could be a portal bug? Maybe we should be pulling portal logs?

I think I found some issues in the phoenix-channel that could be related. Those explain the first issue you hit in the above logs but they don't explain the other delay we have been seeing.

@thomaseizinger
Copy link
Member Author

See:

The above logs with wire unfortunately don't actually show the bug of this issue, yet they revealed different ones!

To further debug this specific issue, we need wire logs from client and gateway for when it happens.

github-merge-queue bot pushed a commit that referenced this issue Mar 25, 2024
Previously, we would lose one message to the portal upon failing to send
it. We now mitigate this in two ways:

1. We also check the error from `poll_ready` and don't even pop a
message off from our buffer.
2. If sending still fails, we re-queue it to the front of the buffer.

In certain scenarios as discovered in logs from #4058, this might have
caused a loss of the "answer" message from a gateway to the client,
resulting in a state mismatch where the gateway thinks the connection is
established and the client times out on waiting for the answer.
@jamilbk
Copy link
Member

jamilbk commented Mar 26, 2024

Hit it again this morning.

Adding another set of debug logs for the staging gateway. First line is the intent and last line is the KEEPALIVE_TIMEOUT that always seems to be when it works. I'm spinning up a local gateway with wire=trace and will try to reproduce.

2024-03-26T14:41:51.771217Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:4020:eb:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771287Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=35.247.219.172:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771313Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:4000:102d:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771337Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:4120:f732:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771359Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=34.73.26.201:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771382Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=34.94.116.195:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771406Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:40f0:e339:0:13::]:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771430Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=34.132.205.234:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771467Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=[2600:1900:40b0:1504:0:12::]:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771494Z DEBUG accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}:refresh{relay=35.244.110.209:3478}: snownet::allocation: Refreshing allocation
2024-03-26T14:41:51.771523Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Set remote credentials: IceCreds { ufrag: "AJrL", pass: "H4VlIssfcDpiXijTPytOOT" }
2024-03-26T14:41:51.771536Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(host=172.17.0.2:33841/udp prio=2130706175)
2024-03-26T14:41:51.771550Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(host=[fd00::242:ac11:2]:54753/udp prio=2130706431)
2024-03-26T14:41:51.771562Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(srflx=[2600:1f18:2406:c402:c110:bbb5:9e22:f9e7]:54753/udp base=[fd00::242:ac11:2]:54753 prio=1686110207)
2024-03-26T14:41:51.771574Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.73.26.201:54009/udp prio=37748479)
2024-03-26T14:41:51.771583Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:12::]:54009/udp prio=37748735)
2024-03-26T14:41:51.771597Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.247.219.172:56379/udp prio=37747967)
2024-03-26T14:41:51.771606Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:56379/udp prio=37748223)
2024-03-26T14:41:51.771616Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(srflx=3.231.55.21:33841/udp base=172.17.0.2:33841 prio=1686109951)
2024-03-26T14:41:51.771625Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.94.116.195:61881/udp prio=37747455)
2024-03-26T14:41:51.771635Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:61881/udp prio=37747711)
2024-03-26T14:41:51.771646Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.73.26.201:50401/udp prio=37746943)
2024-03-26T14:41:51.771654Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4020:eb:0:12::]:50401/udp prio=37747199)
2024-03-26T14:41:51.771683Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.244.110.209:63650/udp prio=37746431)
2024-03-26T14:41:51.771692Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40b0:1504:0:12::]:63650/udp prio=37746687)
2024-03-26T14:41:51.771705Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.132.205.234:56749/udp prio=37745919)
2024-03-26T14:41:51.771714Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:56749/udp prio=37746175)
2024-03-26T14:41:51.771725Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.244.110.209:50042/udp prio=37745407)
2024-03-26T14:41:51.771736Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40b0:1504:0:12::]:50042/udp prio=37745663)
2024-03-26T14:41:51.771746Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.94.116.195:54381/udp prio=37744895)
2024-03-26T14:41:51.771756Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:54381/udp prio=37745
151)
2024-03-26T14:41:51.771766Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=35.247.219.172:56127/udp prio=37744383)
2024-03-26T14:41:51.771775Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:56127/udp prio=37744639)
2024-03-26T14:41:51.771786Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=34.132.205.234:56258/udp prio=37743871)
2024-03-26T14:41:51.771795Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add local candidate: Candidate(relay=[2600:1900:4000:102d:0:12::]:56258/udp prio=37744127)
2024-03-26T14:41:51.771807Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: State change (new connection): New -> Checking
2024-03-26T14:41:51.772116Z  INFO accept_connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: snownet::node: Created new connection
2024-03-26T14:41:51.792533Z  INFO decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x6B4CC0C7E17205FC13290F81) method=refresh class=success response rtt=21.29472ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c110:bbb5:9e22:f9e7]:54753/udp base=[fd00::242:ac11:2]:54753 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.73.26.201:54009/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:12::]:54009/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.793326Z  INFO decapsulate{from=34.73.26.201:3478 num_bytes=28}:handle_input{id=TransactionId(0xFEB2FA8DCA47C214F1FFF0AA) method=refresh class=success response rtt=22.106533ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33841/udp base=172.17.0.2:33841 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.73.26.201:50401/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4020:eb:0:12::]:50401/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.802186Z  INFO decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x4462E554733437A1D22C559F) method=refresh class=success response rtt=30.93835ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c110:bbb5:9e22:f9e7]:54753/udp base=[fd00::242:ac11:2]:54753 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.132.205.234:56749/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4000:102d:0:12::]:56749/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.802407Z  INFO decapsulate{from=34.132.205.234:3478 num_bytes=28}:handle_input{id=TransactionId(0xB805EBB6285A6893BB048B48) method=refresh class=success response rtt=31.187651ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33841/udp base=172.17.0.2:33841 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.132.205.234:56258/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4000:102d:0:12::]:56258/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.840864Z  INFO decapsulate{from=[2600:1900:4120:f732:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0xB15B1307AEA20D1048D24C99) method=refresh class=success response rtt=69.616993ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c110:bbb5:9e22:f9e7]:54753/udp base=[fd00::242:ac11:2]:54753 prio=1694498815)) relay_ip4=Some(Candidate(relay=34.94.116.195:54381/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:12::]:54381/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.841132Z  INFO decapsulate{from=34.94.116.195:3478 num_bytes=28}:handle_input{id=TransactionId(0xE1CB411CC9682B6A521E319D) method=refresh class=success response rtt=69.892176ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33841/udp base=172.17.0.2:33841 prio=1694498559)) relay_ip4=Some(Candidate(relay=34.94.116.195:61881/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:4120:f732:0:12::]:61881/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.889203Z  INFO decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=28}:handle_input{id=TransactionId(0xAB427C708B87654D4A2AB028) method=refresh class=success response rtt=117.95702ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c110:bbb5:9e22:f9e7]:54753/udp base=[fd00::242:ac11:2]:54753 prio=1694498815)) relay_ip4=Some(Candidate(relay=35.247.219.172:56379/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:13::]:56379/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.889604Z  INFO decapsulate{from=35.247.219.172:3478 num_bytes=28}:handle_input{id=TransactionId(0xC7FA9A6D5A61F8ADB5EDBEB9) method=refresh class=success response rtt=118.383091ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33841/udp base=172.17.0.2:33841 prio=1694498559)) relay_ip4=Some(Candidate(relay=35.247.219.172:56127/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40f0:e339:0:13::]:56127/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.915415Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(host=192.168.1.173:64594/udp prio=2130706175)
2024-03-26T14:41:51.915875Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(host=[2600:1700:3ecb:2410:5cd5:2bd5:8e53:ca54]:54593/udp prio=2130706431)
2024-03-26T14:41:51.916414Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=34.94.116.195:60633/udp prio=50331391)
2024-03-26T14:41:51.918196Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:60633/udp prio=50331647)
2024-03-26T14:41:51.918894Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(srflx=107.197.104.68:64594/udp prio=1694498559)
2024-03-26T14:41:51.919671Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=34.94.116.195:61414/udp prio=50331391)
2024-03-26T14:41:51.919951Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:4120:f732:0:12::]:61414/udp prio=50331647)
2024-03-26T14:41:51.939418Z DEBUG decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x7F6765FAD7F3AA94C5219790) method=channel bind class=success response rtt=20.451422ms}: snownet::allocation: Bound channel channel=16406 peer=107.197.104.68:64594
2024-03-26T14:41:51.939503Z DEBUG decapsulate{from=34.73.26.201:3478 num_bytes=20}:handle_input{id=TransactionId(0x9735DA4015D9380A78751372) method=channel bind class=success response rtt=20.60344ms}: snownet::allocation: Bound channel channel=16398 peer=107.197.104.68:64594
2024-03-26T14:41:51.949552Z DEBUG decapsulate{from=[2600:1900:4000:102d:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xE287D831D25C7BBC46572CB7) method=channel bind class=success response rtt=30.156807ms}: snownet::allocation: Bound channel channel=16434 peer=107.197.104.68:64594
2024-03-26T14:41:51.949693Z DEBUG decapsulate{from=34.132.205.234:3478 num_bytes=20}:handle_input{id=TransactionId(0xD08130F34743CC0189F7F2B9) method=channel bind class=success response rtt=30.757372ms}: snownet::allocation: Bound channel channel=16398 peer=107.197.104.68:64594
2024-03-26T14:41:51.969832Z  INFO decapsulate{from=35.244.110.209:3478 num_bytes=28}:handle_input{id=TransactionId(0x080CBD62773DF27CA05A524D) method=refresh class=success response rtt=198.571912ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=3.231.55.21:33841/udp base=172.17.0.2:33841 prio=1694498559)) relay_ip4=Some(Candidate(relay=35.244.110.209:63650/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40b0:1504:0:12::]:63650/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.969939Z  INFO decapsulate{from=[2600:1900:40b0:1504:0:12::]:3478 num_bytes=28}:handle_input{id=TransactionId(0x711F10AD3FC8AF8A6A12DFE3) method=refresh class=success response rtt=198.72665ms}: snownet::allocation: Updated lifetime of allocation srflx=Some(Candidate(srflx=[2600:1f18:2406:c402:c110:bbb5:9e22:f9e7]:54753/udp base=[fd00::242:ac11:2]:54753 prio=1694498815)) relay_ip4=Some(Candidate(relay=35.244.110.209:50042/udp prio=50331391)) relay_ip6=Some(Candidate(relay=[2600:1900:40b0:1504:0:12::]:50042/udp prio=50331647)) lifetime=Lifetime(600s)
2024-03-26T14:41:51.982125Z DEBUG decapsulate{from=34.94.116.195:3478 num_bytes=20}:handle_input{id=TransactionId(0x7D5CDBA734364CEF28E47C98) method=channel bind class=success response rtt=65.546527ms}: snownet::allocation: Bound channel channel=16422 peer=34.94.116.195:60633
2024-03-26T14:41:51.982533Z DEBUG decapsulate{from=34.94.116.195:3478 num_bytes=20}:handle_input{id=TransactionId(0xDA5AA1E73FBE699DD36CE9B4) method=channel bind class=success response rtt=64.322196ms}: snownet::allocation: Bound channel channel=16423 peer=[2600:1900:4120:f732:0:12::]:60633
2024-03-26T14:41:51.983824Z DEBUG decapsulate{from=[2600:1900:4120:f732:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x58E3415B496F531B40B288BE) method=channel bind class=success response rtt=64.919915ms}: snownet::allocation: Bound channel channel=16398 peer=107.197.104.68:64594
2024-03-26T14:41:51.984145Z DEBUG decapsulate{from=34.94.116.195:3478 num_bytes=20}:handle_input{id=TransactionId(0x5C1AF98FB22784E1B7085174) method=channel bind class=success response rtt=65.243492ms}: snownet::allocation: Bound channel channel=16424 peer=107.197.104.68:64594
2024-03-26T14:41:51.984801Z DEBUG decapsulate{from=34.94.116.195:3478 num_bytes=20}:handle_input{id=TransactionId(0xA0E73707403AD9732C757EA2) method=channel bind class=success response rtt=65.122981ms}: snownet::allocation: Bound channel channel=16425 peer=34.94.116.195:61414
2024-03-26T14:41:51.985427Z DEBUG decapsulate{from=34.94.116.195:3478 num_bytes=20}:handle_input{id=TransactionId(0xCE83E201FFEE3901B3F0BA22) method=channel bind class=success response rtt=65.466632ms}: snownet::allocation: Bound channel channel=16426 peer=[2600:1900:4120:f732:0:12::]:61414
2024-03-26T14:41:52.036518Z DEBUG decapsulate{from=35.247.219.172:3478 num_bytes=20}:handle_input{id=TransactionId(0x2935C4EBFCDFD5A0C344690B) method=channel bind class=success response rtt=117.589271ms}: snownet::allocation: Bound channel channel=16398 peer=107.197.104.68:64594
2024-03-26T14:41:52.036650Z DEBUG decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xA3A73EACCD97648238E7013E) method=channel bind class=success response rtt=117.746574ms}: snownet::allocation: Bound channel channel=16414 peer=107.197.104.68:64594
2024-03-26T14:41:52.117004Z DEBUG decapsulate{from=35.244.110.209:3478 num_bytes=20}:handle_input{id=TransactionId(0x83441AA04C442529557148BB) method=channel bind class=success response rtt=198.076327ms}: snownet::allocation: Bound channel channel=16398 peer=107.197.104.68:64594
2024-03-26T14:41:52.118252Z DEBUG decapsulate{from=[2600:1900:40b0:1504:0:12::]:3478 num_bytes=20}:handle_input{id=TransactionId(0xB1D7BDC1ED187E81C614231A) method=channel bind class=success response rtt=199.322706ms}: snownet::allocation: Bound channel channel=16398 peer=107.197.104.68:64594
2024-03-26T14:41:52.133317Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=35.247.219.172:50380/udp prio=50331391)
2024-03-26T14:41:52.133757Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:50380/udp prio=50331647)
2024-03-26T14:41:52.134239Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=35.247.219.172:51225/udp prio=50331391)
2024-03-26T14:41:52.135807Z  INFO add_remote_candidate{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: Add remote candidate: Candidate(relay=[2600:1900:40f0:e339:0:13::]:51225/udp prio=50331647)
2024-03-26T14:41:52.250956Z DEBUG decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x79483A71EC7AB7C631560465) method=channel bind class=success response rtt=117.615439ms}: snownet::allocation: Bound channel channel=16415 peer=35.247.219.172:50380
2024-03-26T14:41:52.251698Z DEBUG decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x6A534A2EC1D775250210F601) method=channel bind class=success response rtt=117.932484ms}: snownet::allocation: Bound channel channel=16416 peer=[2600:1900:40f0:e339:0:13::]:50380
2024-03-26T14:41:52.252213Z DEBUG decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x914FDB7D6805A04801A58270) method=channel bind class=success response rtt=117.967371ms}: snownet::allocation: Bound channel channel=16417 peer=35.247.219.172:51225
2024-03-26T14:41:52.252815Z DEBUG decapsulate{from=[2600:1900:40f0:e339:0:13::]:3478 num_bytes=20}:handle_input{id=TransactionId(0x664451EF51FB9C40E5837121) method=channel bind class=success response rtt=117.00087ms}: snownet::allocation: Bound channel channel=16418 peer=[2600:1900:40f0:e339:0:13::]:51225
2024-03-26T14:41:52.789630Z DEBUG decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=152}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: Received handshake_initiation remote_idx=3694331137
2024-03-26T14:41:52.790049Z DEBUG decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=152}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: Sending handshake_response local_idx=2730009601
2024-03-26T14:41:52.790068Z DEBUG decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=152}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: snownet::node: Updating remote socket from WG activity old=None new=Relay { relay: [2600:1900:4020:eb:0:12::]:3478, dest: 107.197.104.68:64594 }
2024-03-26T14:41:52.822539Z  INFO handle_timeout{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: str0m::ice_::agent: State change (got nomination, still trying others): Checking -> Connected
2024-03-26T14:41:52.888126Z DEBUG decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=36}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: New session session=2730009601
2024-03-26T14:41:52.888150Z  INFO decapsulate{from=[2600:1900:4020:eb:0:12::]:3478 num_bytes=36}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: snownet::node: Completed wireguard handshake duration_since_intent=1.11689153s
2024-03-26T14:41:53.372635Z DEBUG decapsulate{from=[2600:1700:3ecb:2410:5cd5:2bd5:8e53:ca54]:54593 num_bytes=148}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: Received handshake_initiation remote_idx=3694331138
2024-03-26T14:41:53.373010Z DEBUG decapsulate{from=[2600:1700:3ecb:2410:5cd5:2bd
5:8e53:ca54]:54593 num_bytes=148}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: Sending handshake_response local_idx=2730009602
2024-03-26T14:41:53.373027Z DEBUG decapsulate{from=[2600:1700:3ecb:2410:5cd5:2bd5:8e53:ca54]:54593 num_bytes=148}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: snownet::node: Updating remote socket from WG activity old=Some(Relay { relay: [2600:1900:4020:eb:0:12::]:3478, dest: 107.197.104.68:64594 }) new=Direct { source: [fd00::242:ac11:2]:54753, dest: [2600:1700:3ecb:2410:5cd5:2bd5:8e53:ca54]:54593 }
2024-03-26T14:41:53.454795Z DEBUG decapsulate{from=[2600:1700:3ecb:2410:5cd5:2bd5:8e53:ca54]:54593 num_bytes=32}:connection{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise: New session session=2730009602
2024-03-26T14:41:56.319813Z DEBUG handle_timeout{id=e5732f6c-3f4a-46d1-a266-1b403cf3b9e2}: boringtun::noise::timers: KEEPALIVE(PERSISTENT_KEEPALIVE)
2024-03-26T14:42:01.772444Z DEBUG handle_timeout{id=f14aab87-2d08-4f02-b8be-251fc93f1c2c}: boringtun::noise::timers: KEEPALIVE(KEEPALIVE_TIMEOUT)

@jamilbk
Copy link
Member

jamilbk commented Mar 30, 2024

Have been seeing this much less lately.

Here's what I think might be an instance of this bug or a similar one that showed up as a flaky iperf3 test:

https://github.com/firezone/firezone/actions/runs/8487328603/job/23255094840?pr=4399#step:8:36

Notice the 10s it took the client to be Connected.

@conectado and I discovered that a race condition is possible if you start curl before the TUN device comes up fully: curl will use a socket opt to override the source IP of the outgoing packet based on the routing table at time of invocation. Maybe iperf3 does something similar. Perhaps not related to this issue but worth noting.

We could devise a large test matrix to try and replicate this in CI by erroring out if the connection takes longer than a second or so to establish. That should always happen in such a low latency environment like CI.

@thomaseizinger thomaseizinger changed the title Slow "cold-start" of connections to particular gateway Sometimes connections to a gateway are only established after 10s Apr 1, 2024
@jamilbk
Copy link
Member

jamilbk commented Apr 26, 2024

This seems to have been fixed, haven't seen it some time!

@jamilbk jamilbk closed this as completed Apr 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/connlib Firezone's core connectivity library area/gateway Issues involving the Firezone Gateway business_value/critical Required by 100% of our customer base kind/bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants