# IPv6 Everywhere

Source: https://emule-qt.org/features/ipv6/

## A first-class peer on IPv6

The IPv4 address space ran out. Many ISPs now hand out IPv6-only or carrier-grade NAT connections where a public IPv4 address is simply not available — and on the classic ED2K network those users are permanently second-class. eMule Qt makes IPv6 a real transport rather than a footnote.

The client listens dual-stack and carries IPv6 through every layer that matters:

- **Client to client** — IPv6 capability and address are negotiated in the ordinary ED2K hello, and a peer that is LowID or firewalled on IPv4 can be dialled *directly* over IPv6, with no callback and no buddy.
- **Client to server** — IPv6 login and identification tags, server-reflected address, and IPv6 sources delivered inline in the normal source replies.
- **Source exchange** — an extended, self-describing record format that carries each source’s IPv6 address, user hash and obfuscation options.
- **ED2K links** — an `s6=` source token and bracketed IPv6 in server links.

### Additive and legacy-safe

Every IPv6 element is either a tag an old client skips by type or an optional block appended past the point a legacy parser stops reading. A classic eMule sees byte-identical traffic and never notices. eMule Qt also refuses to advertise an address it cannot actually be reached on — a candidate address is only published once it has been reflected by a server, set by the operator, or independently corroborated by several peers, so nobody can talk your client into announcing somebody else’s address.

One honest note: **Kademlia itself is still IPv4**. Only two payload tags cross the boundary, so IPv6 sources can be published and found through Kad while the DHT’s own transport and routing stay on IPv4 — deliberately, because self-assigned node IDs plus cheap IPv6 addresses would make the existing network easy to flood.

### Why it matters

If your ISP put you behind CGNAT, or gave you no IPv4 at all, you are no longer stuck at LowID with a shrunken source list. Where possible, connect to your server over IPv4 to keep HighID and let eMule Qt advertise your IPv6 alongside it — you get both worlds.

[Test your ports](https://emule-qt.org/test-ports/) · [Back to all features](https://emule-qt.org/features/)

---

Part of eMule Qt. Site index for agents: https://emule-qt.org/llms.txt
