PROTOCOL NOTES / 10
03 · NDP through IPv6, TLS, greeting and hello
Participants: Aware, Android, Runtime, Engine
Implemented software · Physical qualification pending
Starting state
Validated desired discovery peer and an available request slot; responder discovery session exists.
Ordered events
- Aware → Android
requestNetwork with peer and passphrase
- Android → Aware
onAvailable/onLinkPropertiesChanged expose Network and scoped IPv6
- Aware → Runtime
addNetwork carries request, session, incarnation and expected peer
- Runtime → Aware
installed acknowledgment follows socket installation
- Runtime → Runtime
Bind sockets; TCP connect; TLS 1.3 peer proof; exchange greeting
- Runtime → Engine
Attach TLS identity/exporter and send/verify hello
Fields and messages
networkHandle,requestId,sessionGeneration,incarnation,localAddress,interfaceIndex,remoteAddress,remoteControlPort,outgoing,expectedPeer,handoffAttempt; greeting transportVersion/mediaPort/outgoing/attempt.
Authorization and invariants
Every socket binds its Network; outgoing peer key is pinned; hello token matches ride. Binding+scope+address+UDP port disambiguates peers. Native installation acknowledgment is required.
Timers
TLS/greeting 5 s; engine hello 5 s; native setup failure is generation-scoped.
Resource lifetime
Request owns registration; Network owns routing; endpoint groups local address; TLS link owns peer/hop keys. None is a synonym for NDI count.
What the rider sees
Connection stage advances only on actual callbacks/installation; no premature connected state.
Failure branches
Stale callback cannot install/release newer incarnation. Ambiguous UDP source drops. Failure closes exact peer/request, retaining unrelated shared listener owners.
Resulting state
Authenticated hello-complete direct link exists in admission or standby role, with negotiated UDP endpoint.
Evidence boundary
Real IPv6 TLS/UDP loopback and shared-binding tests; JVM installation policy. Physical NDP callback aggregation unqualified.
Authority: RWCP v2 reviewed scenario catalogue, scenario 03. Public examples are synthetic. This guide is maintained against the private implementation; it does not imply access to its source.