Geolocation: add location and timing fields to signed TWAMP replies for paired probing#3194
Merged
Geolocation: add location and timing fields to signed TWAMP replies for paired probing#3194
Conversation
snormore
reviewed
Mar 6, 2026
snormore
approved these changes
Mar 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves: #3190
Summary of Changes
MeasurementSlot,Lat,Lng,SinceLastRxNs,RttNs) and embed DZDLocationOffsetblobs, enabling inbound geolocation probing for TEE-based targets that cannot measure timeSinceLastRxNs) as a proxy RTTParseOffsetInfoto extract location/timing data from Borsh-encodedLocationOffsetblobs without importing the full geoprobe packageRelated: RFC16 — Geolocation Verification
Diff Breakdown
~60% of the diff is test coverage; core logic is concentrated in 4 files.
Key files (click to expand)
controlplane/telemetry/cmd/geoprobe-target-sender/main.go— Rewrite probe loop to send paired probes; add probe signature verification logging; add--formatflag for text/JSON output with new location and timing fieldstools/twamp/pkg/signed/reflector_linux.go— AddpairSourceIPIP-binding, pair-based rate limiting,SinceLastRxNsinter-arrival timing, andLocationOffsetembedding in repliestools/twamp/pkg/signed/packet.go— ExtendReplyPacketwith five new signed fields; addParseOffsetInfofor Borsh-encoded offset extractiontools/twamp/pkg/signed/reflector_test.go— Add tests for IP-binding rejection, corrupted second-probe signature rejection, and pair-based rate limitingtools/twamp/pkg/signed/packet_test.go— Add tests for new reply fields,ParseOffsetInfo, byte layout, and tamper detectioncontrolplane/telemetry/cmd/geoprobe-target-sender/main_test.go— Update test fixtures for new paired-probe output fieldsrfcs/rfc16-geolocation-verification.md— Document inbound paired-probing flow and updated reply packet formatTesting Verification
tools/twamp/pkg/signed/...tests pass (38 tests), including new tests for IP-binding rejection, second-probe signature rejection, pair-based rate limiting withSinceLastRxNsassertions, andParseOffsetInfofield-skip validationcontrolplane/telemetry/cmd/geoprobe-target-sender/...tests pass with updated paired-probe output formatgeoprobe-agentbinary builds cleanly