aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CLAUDE.md14
1 files changed, 14 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 32c4e8b..c2895f5 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -101,6 +101,18 @@ Scope: `hub`, `node`, `common`, or omitted for cross-cutting
- Argon2id `memory_cost`: currently 65536 (64 MB, 78ms) — increase to 262144 (256 MB) before prod
to target ~500ms on typical home server hardware. Implement a `calibrate` CLI command.
+## NAT traversal — résultats empiriques (demo-v2)
+
+SFR résidentiel Fedora 44 → meshbay.org OVH VPS :
+- **IPv6** : adresse publique présente MAIS entrant bloqué par la box → skippé
+- **NAT type** : **Port-Restricted Cone** (pas Address-Restricted comme supposé en Spike 4)
+- **Mécanisme validé** : `QuicChunkServer.punch_nat(peer_ip, peer_port)` envoie la probe
+ depuis le socket QUIC interne (`_transport.sendto()`). Le client DOIT se connecter
+ depuis le même port (local_port=QUIC_PORT dans QuicChunkClient).
+- **UPnP** : désactivé sur box SFR → skippé
+- **Handshake QUIC** : 12.7s (demo) → < 500ms attendu en prod (gap probe↔connect réduit + 0-RTT)
+- **Scripts** : `QE/demo-v2/` — run_node.py / download.py / nat.py / setup_demo.py
+
## Key modules — où trouver quoi
| Besoin | Module | Fichier |
@@ -112,6 +124,8 @@ Scope: `hub`, `node`, `common`, or omitted for cross-cutting
| Double Ratchet (chat) | `meshbay_common.ratchet` | `ratchet.py` |
| AES-GCM (navigateur) | `meshbay_common.webcrypto` | `webcrypto.py` + `static/crypto.js` |
| Keystore node | `meshbay_node.keystore` | `keystore.py` |
+| NAT traversal | `QE/demo-v2/nat.py` | non versionné — résultats dans devel-phases.md |
+| QUIC NAT punch | `meshbay_node.transport.quic_server` | `QuicChunkServer.punch_nat()` |
| Scripts de démo opérationnels | — | `QE/demo-v1/*.py` (non versionné) |
## meshbay.org server (état cible)