You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
utils.StringFlagEnv(fs, &cfg.IdentityPath, "identity-path", "./.portal-certs", "directory path for relay identity, policy state, and keyless materials", "IDENTITY_PATH")
105
107
utils.StringFlagEnv(fs, &cfg.Bootstraps, "bootstraps", "", "bootstrap relay API URLs; merged with bootstrap relays when discovery is enabled", "BOOTSTRAPS")
utils.IntFlagEnv(fs, &cfg.WireGuardPort, "wireguard-port", overlay.DefaultListenPort, utils.ParsePortNumber, "public and listen UDP port for relay overlay", "WIREGUARD_PORT")
108
112
109
113
utils.IntFlagEnv(fs, &cfg.APIPort, "api-port", 4017, utils.ParsePortNumber, "Admin/API server port", "API_PORT")
Copy file name to clipboardExpand all lines: docs/src/routes/architecture/+page.md
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -174,7 +174,7 @@ UDP client
174
174
-`/sdk/register` is authenticated by a SIWE challenge/response flow using the SDK identity secp256k1 key. On success, the relay issues a lease-scoped ES256K JWT access token signed by the relay identity key and used for the rest of the lease lifecycle.
175
175
- Relay URLs must use `https://`.
176
176
- HTTP/2 stays disabled on the admin/API TLS listener. Keyless TLS certificate sharing and `/sdk/connect` both depend on the current HTTP/1.1-only transport contract.
177
-
-WireGuard, when enabled, is relay-to-relay overlay transport only. It carries multi-hop relay forwarding and overlay discovery, but it is not used for direct tenant TLS termination, public UDP ingress, or `/sdk/*` control-plane traffic.
177
+
-IVNP, when enabled, is the preferred relay-to-relay overlay. It owns I2P peer reachability and internal path construction while Portal authenticates discovery descriptors and hop route tokens. WireGuard remains a direct relay fallback during migration. Neither overlay is used for direct tenant TLS termination, public UDP ingress, or tunnel-client reverse backhaul.
178
178
179
179
### Reverse Session Protocol
180
180
@@ -291,14 +291,16 @@ Result: raw public UDP exposure with an internal QUIC datagram backhaul. UDP and
291
291
292
292
<Mermaidcode={udpQuicDiagram} />
293
293
294
-
## WireGuard Overlay and Discovery
294
+
## Relay Overlay and Discovery
295
295
296
296
- Discovery bootstraps from public HTTPS relay URLs, then expands through relay-to-relay `/discovery` polling and periodic self-announces to bootstrap relays through `/discovery/announce`.
297
297
- SDK exposures consume relay discovery results to choose relays, but they do not announce themselves and do not serve `/discovery`.
298
-
- Discovery descriptors are signed relay self-descriptions. They bind relay routing metadata such as `api_https_addr`, `supports_overlay`, `wireguard_public_key`, and `wireguard_port` to the relay identity. Lease access tokens remain separate and authorize tenant lease operations only.
298
+
- Discovery descriptors are signed relay self-descriptions. They bind relay routing metadata such as `api_https_addr`, `supports_overlay`, `ivnp_destination`, and optional WireGuard metadata to the relay identity. Lease access tokens remain separate and authorize tenant lease operations only.
299
299
-`/discovery/announce` accepts only signed relay descriptors. Loopback or localhost relay descriptors are rejected because they cannot join the public discovery mesh.
300
-
- The overlay peer API is plain HTTP on the WireGuard network, not public Internet HTTP. It serves the same discovery payload shape used by public `/discovery`.
301
-
- Overlay failure affects inter-relay discovery, mesh synchronization, and multi-hop relay forwarding. Direct tenant TLS routing, keyless TLS, register/renew/connect, and public UDP ingress do not depend on the WireGuard transport path.
300
+
- The overlay peer API serves the same Portal-owned discovery payload as public `/discovery`. With IVNP it is carried on the relay's persistent I2P application destination; Portal does not put relay descriptors into I2P NetDB records.
301
+
- IVNP discovery runs at a slower cadence than public HTTPS polling, and its latency is not recorded as public relay ingress RTT for MOLS ranking.
302
+
- Authenticated hop streams prefer IVNP when both relays advertise destinations and fall back to the direct WireGuard path while migration is in progress.
303
+
- Overlay failure affects inter-relay discovery and multi-hop relay forwarding. Direct tenant TLS routing, keyless TLS, register/renew/connect, and public UDP ingress do not depend on the relay overlay.
302
304
303
305
## Control Plane Flow
304
306
@@ -361,7 +363,7 @@ The relay signs handshake digests via `/v1/sign` but never receives tenant TLS t
361
363
- One canonical raw TCP reverse transport
362
364
- Dedicated TCP port allocation for non-TLS services with raw TCP bridging
363
365
- Raw public UDP exposure with an internal QUIC datagram backhaul
364
-
- Optional WireGuard relay overlay for relay discovery, peer synchronization, and multi-hop relay forwarding
366
+
- Optional IVNP relay overlay for NAT-independent relay discoveryand authenticated relay-to-relay forwarding, with WireGuard direct fallback during migration
365
367
- SNI-based routing with root-host fallback
366
368
- End-to-end tenant TLS with relay-backed keyless signing
367
369
- Traffic-triggered detect-only MITM self-probing for probable relay-side TLS termination
Copy file name to clipboardExpand all lines: docs/src/routes/configuration/+page.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -55,6 +55,7 @@ A value that cannot be parsed is a startup error rather than a silent fallback:
55
55
|`API_PORT`|`4017`| int | Admin/API server listen port |
56
56
|`SNI_PORT`|`443`| int | TCP SNI router listen port; non-standard values are intended for local testing, while the bundled public deployment requires `443`|
57
57
|`WIREGUARD_PORT`|`51820`| int | Public and listen UDP port for relay discovery overlay |
58
+
|`IVNP_CONFIG`|`IDENTITY_PATH/ivnp.conf`| string | Embedded IVNP router configuration path when the IVNP overlay is enabled |
58
59
59
60
### Transport
60
61
@@ -70,6 +71,7 @@ A value that cannot be parsed is a startup error rather than a silent fallback:
0 commit comments