2026-06-20
RFC: RFC 5201
Published: 2008
Authors: Robert Moskowitz, Pekka Nikander, Petri Jokela, Thomas Henderson
The internet has a foundational design flaw that we've papered over for forty years: an IP address means two completely different things at once. It is both where you are (a routing locator) and who you are (an endpoint identifier). TCP connections are bound to IP addresses, so when you change networks — laptop closes, phone hops from Wi-Fi to LTE — your "identity" changes, and every connection breaks. RFC 5201 introduces the Host Identity Protocol (HIP), a serious attempt to surgically separate these two roles at the protocol layer.
HIP inserts a new namespace between the network layer and the transport layer: the Host Identity (HI), which is a public key. From the HI, you derive a fixed-length Host Identity Tag (HIT), a 128-bit value formatted to look exactly like an IPv6 address (it lives in the 2001:20::/28 ORCHID prefix). Transport sockets bind to HITs, not IP addresses. The kernel maintains a mapping from HIT to the host's current set of IP locators, and that mapping can change without TCP ever noticing.
The handshake is where the cryptographic elegance lives. HIP uses a four-packet base exchange — I1, R1, I2, R2 — that performs a Diffie-Hellman key agreement and authenticates both peers via their HIs. But it has a clever wrinkle: the responder embeds a cryptographic puzzle in R1 that the initiator must solve before R2 will be accepted. The responder keeps no state until the puzzle solution arrives in I2. This makes HIP resistant to DoS state-exhaustion attacks in a way that TLS only later approximated with HelloRetryRequest cookies in TLS 1.3.
Key design decisions worth appreciating:
Why didn't HIP take over the world? The honest answer is deployment economics. Every host needs a HIP stack, applications need to learn that 2001:20::/28 "addresses" aren't routable, and DNS needs HIP RR records (RFC 5205) to bootstrap discovery. QUIC eventually solved the most painful symptom — connection survival across address changes — using connection IDs at the transport layer, requiring no kernel or network changes. HIP solved the deeper problem; QUIC solved the urgent one.
But HIP did not disappear. It runs in industrial networks, in Boeing's avionics, and inside some 3GPP mobility architectures. More importantly, its identifier/locator split idea is the conceptual ancestor of LISP, ILNP, WireGuard's static-key peers, and the cryptographic identity model in modern overlay networks like Tailscale and Nebula. Anyone designing a zero-trust mesh today is, knowingly or not, reinventing pieces of HIP.
