tailscale / tailscale/tailscale-rs

ts_control, ts_transport_derp: periodic DERP latency checking

Open
#27 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement performance
Dominant language
Rust
Stars
1.2k
Forks
61
Avg merge
2d 13h
Merged PRs (30d)
22

Description

Currently, we only check latencies to DERP regions once on startup, and cut off the latency checking after we reach a threshold of responses or a certain amount of time has expired. This cut-off is necessary to keep startup time reasonable - depending on distance and network weather, some DERP regions can take seconds to respond.

Once we're up and connected, tailscale-rs needs to periodically re-check all DERP region latencies, change DERP home regions if necessary, and report new latencies/new home region to the control plane. As we're not constrained by startup time after the first latency check, there shouldn't be a problem reporting all latencies, as we're not in a rush.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the ts_control and ts_transport_derp components named in the issue and read how the initial DERP latency check and control-plane reporting work. Trace the existing home-region selection and latency lifecycle before deciding where periodic checks belong. Done means all DERP regions are rechecked after startup, the home region can change, and updated latencies and home-region information reach the control plane.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.