NetherNet is a peer-to-peer networking transport layer for Minecraft built on WebRTC. It uses an HTTP signaling server to bridge the gap between the Minecraft client and the game host.
The connection lifecycle follows these steps:
- SDP Gathering: The Minecraft client gathers a complete SDP offer (including all ICE candidates).
- Signaling: The client sends this offer to a partner's signaling server via a single HTTP POST.
- Negotiation: The signaling server relays the offer to the host and returns the host's SDP answer to the client.
- P2P Connection: Once the client receives the answer, WebRTC ICE connectivity checks run directly between the client and host.
- Data Flow: Once connectivity is established, SCTP data channels open, and game traffic flows peer-to-peer (DTLS + SCTP).
Note: The signaling server is only involved during the initial SDP exchange. All subsequent game traffic flows directly between the client and host.
┌──────────────┐ HTTPS ┌──────────────────────┐
│ │ ─────────────────────► │ │
│ Minecraft │ POST /v1/join/{id} │ Partner Signaling │
│ Client │ Body: SDP offer │ Server │
│ │ ◄───────────────────── │ │
│ │ 200 OK │ │
│ │ Body: SDP answer │ │
└──────┬───────┘ └──────────────────────┘
│
│ WebRTC P2P (DTLS + SCTP)
│
▼
┌──────────────┐
│ Partner │
│ Host │
│ (WebRTC) │
└──────────────┘