Skip to content

Add Network::probe_address for non-disruptive reachability + identity probing - #75

Merged
aschran merged 1 commit into
mainfrom
aschran/probe-address
Jun 24, 2026
Merged

aschran merged 1 commit into
mainfrom
aschran/probe-address

Conversation

@aschran

@aschran aschran commented Jun 23, 2026 •

Copy link
Copy Markdown

Summary

Adds Network::probe_address(addr, expected_peer_id) -> ProbeOutcome: a short-lived QUIC+TLS connection that verifies reachability + identity, then closes. It bypasses the connection manager (and its peer-id dedup) entirely.

Probes are identified with a dedicated probe server-name (SNI), anemo-probe.

Tests

New unit tests cover identity match, identity mismatch, unreachable address, and — most importantly — that probing a peer with an existing connection does not disrupt it (no LostPeer event, peer stays connected, RPC still works).

@aschran
aschran requested a review from bmwill June 23, 2026 22:14
@aschran
aschran marked this pull request as ready for review June 23, 2026 22:14
@aschran
aschran merged commit 68adc31 into main Jun 24, 2026
4 checks passed
@aschran
aschran deleted the aschran/probe-address branch June 24, 2026 14:06
aschran added a commit to MystenLabs/sui that referenced this pull request Jul 14, 2026
…27124)

## Description

Validators have no signal today when a peer advertises an unreachable
address (e.g. a wrong external address gossiped via discovery), which
silently degrades connectivity. This adds a prober that runs on
validators and periodically checks whether each trusted peer's
advertised P2P and consensus addresses are actually reachable, exposing
the results as Prometheus metrics plus an admin endpoint that dumps full
per-address detail for operators to act on.

Bumps `anemo` to MystenLabs/anemo#75 for the non-disruptive
`Network::probe_address` the P2P check uses.

## Test plan

New `discovery_tests` sim tests cover the core differential (a
validator's real address probes reachable, its bad gossiped address does
not), plus no-false-positives and reconfiguration cleanup cases.

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes):
- [ ] gRPC:
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] Indexing Framework:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants