tailscale/wgengine/magicsock
Brad Fitzpatrick 75a03fc719 wgengine/magicsock: use learned DERP route as send path of last resort
If we get a packet in over some DERP and don't otherwise know how to
reply (no known DERP home or UDP endpoint), this makes us use the
DERP connection on which we received the packet to reply. This will
almost always be our own home DERP region.

This is particularly useful for large one-way nodes (such as
hello.ts.net) that don't actively reach out to other nodes, so don't
need to be told the DERP home of peers. They can instead learn the
DERP home upon getting the first connection.

This can also help nodes from a slow or misbehaving control plane.

Updates tailscale/corp#26438

Change-Id: I6241ec92828bf45982e0eb83ad5c7404df5968bc
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2025-03-07 05:37:24 -08:00
..
batching_conn_default.go wgengine/magicsock: refactor batchingUDPConn to batchingConn interface (#13042) 2024-08-06 09:00:28 -07:00
batching_conn_linux_test.go wgengine/magicsock: refactor batchingUDPConn to batchingConn interface (#13042) 2024-08-06 09:00:28 -07:00
batching_conn_linux.go wgengine/magicsock: don't upgrade to linuxBatchingConn on Android (#13161) 2024-08-15 14:54:25 -07:00
batching_conn.go wgengine/magicsock: refactor batchingUDPConn to batchingConn interface (#13042) 2024-08-06 09:00:28 -07:00
blockforever_conn.go wgengine/magicsock: improve don't fragment bit set/get support 2023-09-21 04:17:12 -07:00
cloudinfo_nocloud.go wgengine/magicsock: use cloud metadata to get public IPs 2024-08-02 16:05:14 -04:00
cloudinfo_test.go wgengine/magicsock: use cloud metadata to get public IPs 2024-08-02 16:05:14 -04:00
cloudinfo.go wgengine/magicsock: use cloud metadata to get public IPs 2024-08-02 16:05:14 -04:00
debughttp.go all: use iterators over slice views more 2024-11-11 13:22:34 -08:00
debugknobs_stubs.go wgengine/magicsock: allow a CSV list for pretendpoint 2024-07-10 09:57:28 -07:00
debugknobs.go wgengine/magicsock: allow a CSV list for pretendpoint 2024-07-10 09:57:28 -07:00
derp_test.go net/netcheck,wgengine/magicsock: align DERP frame receive time heuristics 2024-04-05 13:04:42 -07:00
derp.go wgengine/magicsock: use learned DERP route as send path of last resort 2025-03-07 05:37:24 -08:00
discopingpurpose_string.go wgengine/magicsock: implement probing of UDP path lifetime (#10844) 2024-01-23 09:37:32 -08:00
endpoint_default.go all: adjust some build tags for plan9 2023-08-24 15:42:35 -07:00
endpoint_stub.go all: adjust some build tags for plan9 2023-08-24 15:42:35 -07:00
endpoint_test.go wgengine/magicsock: implement probing of UDP path lifetime (#10844) 2024-01-23 09:37:32 -08:00
endpoint_tracker_test.go all: use Go 1.22 range-over-int 2024-04-16 15:32:38 -07:00
endpoint_tracker.go wgengine/magicsock: only cache N most recent endpoints per-Addr 2023-08-15 14:06:42 -07:00
endpoint.go wgengine/magicsock: use learned DERP route as send path of last resort 2025-03-07 05:37:24 -08:00
magicsock_default.go wgengine/magicsock: disable raw disco by default; add envknob to enable 2024-09-16 11:06:33 -07:00
magicsock_linux_test.go wgengine/magicsock: actually use AF_PACKET socket for raw disco 2024-09-03 12:50:09 -04:00
magicsock_linux.go wgengine/magicsock: disable raw disco by default; add envknob to enable 2024-09-16 11:06:33 -07:00
magicsock_notplan9.go wgengine/magicsock: refactor maybeRebindOnError 2025-01-07 10:46:37 -08:00
magicsock_notwindows.go wgengine/magicsock: disable SIO_UDP_NETRESET on Windows 2024-08-15 12:11:33 -04:00
magicsock_plan9.go wgengine/magicsock: refactor maybeRebindOnError 2025-01-07 10:46:37 -08:00
magicsock_test.go all: add Node.HomeDERP int, phase out "127.3.3.40:$region" hack [capver 111] 2025-01-14 12:27:14 -08:00
magicsock_unix_test.go all: update copyright and license headers 2023-01-27 15:36:29 -08:00
magicsock_windows.go wgengine/magicsock: disable SIO_UDP_NETRESET on Windows 2024-08-15 12:11:33 -04:00
magicsock.go feature/capture: move packet capture to feature/*, out of iOS + CLI 2025-01-24 17:52:43 -08:00
peermap.go wgengine/magicsock: allow disco communication without known endpoints 2024-04-11 09:29:49 -07:00
peermtu_darwin.go wgengine/magicsock: improve don't fragment bit set/get support 2023-09-21 04:17:12 -07:00
peermtu_linux.go wgengine/magicsock: improve don't fragment bit set/get support 2023-09-21 04:17:12 -07:00
peermtu_stubs.go magicsock: mute noisy expected peer mtu related error (#10870) 2024-01-19 20:04:22 -05:00
peermtu_unix.go wgengine/magicsock: replace CanPMTUD() with ShouldPMTUD() 2023-09-21 04:17:12 -07:00
peermtu.go magicsock: mute noisy expected peer mtu related error (#10870) 2024-01-19 20:04:22 -05:00
rebinding_conn.go wgengine/magicsock: refactor batchingUDPConn to batchingConn interface (#13042) 2024-08-06 09:00:28 -07:00