One of my readers sent me this question after listening to the podcast with Douglas Comer:
Professor Comer mentioned that IP choose a network attachment address model over an endpoint model because of scalability. He said if you did endpoint addressing it wouldn’t scale. I remember reading a bunch of your blog posts about CNLP (I hope I’m remembering the right acronym) and I believe you liked endpoint addressing better than network attachment point addressing.
CLNP or CLNS? CLNS is Connection-Less (= datagram) Network Service, CLNP is Connection-Less Network Protocol (the protocol used to implement CLNS). I’ll use CLNP throughout this blog post.
Host-based addressing definitely doesn’t scale beyond a very limited local domain. As every networking designer knows, aggregating at multiple boundaries is the only way to go if you want to build large-scale networks, and both CLNP and IP use aggregation to scale. Even more, after total failure of IDRP, they both use BGP for inter-domain routing (available on Cisco IOS and Junos).
The “only” difference between the two is the micro-level behavior. CLNP routers track adjacent hosts (with ES-IS protocol) and advertise host ID of every host within an area in the intra-area routing protocol (level-1 IS-IS), whereas IP routers don’t care about individual hosts (unless they have to forward traffic to those hosts) and advertise only the subnets with IP routing protocols. Beyond the local domain (IP subnet or CLNP area), IP and CLNP routing protocols advertise prefixes, and IP and CLNP routers use longest-prefix matching rules to forward traffic.
The IP forwarding model doesn’t change when you use IS-IS for IP routing – IS-IS routers don’t advertise host prefixes but IP subnets in the LSPs. TRILL or 802.1aq environments might be an exception, if that’s the case please write a comment.
Another history lesson
IPv4 was designed in the days when hosts had a single interface connected to thick coaxial cables, and the whole IPv4/IPv6 forwarding model reflects the world in which hosts could talk directly to each other, and use default gateway only when trying to get out of the local network.
CLNP’s roots are older than that – host-based addressing goes back to early DECnet days when the minicomputers were connected by a haphazard mesh of point-to-point leased lines, and having interface addresses instead of host addresses made absolutely no sense. CLNP retained two important DECnet principles – host-based addressing and host-to-router protocol (ES-IS). These properties allow:
- A host to find an adjacent router (mission impossible in early IP networks – does anyone remember the fun of manual configuration);
- Automatic failover between multiple first-hop routers (which came to IP way later with introduction of first-hop redundancy protocols);
- Host discovery and liveliness detection on first-hop routers (decades later IP implementations hacked ARP/ND to get the same functionality);
- Anyone in the network to build a network-to-MAC address table (no more RARP kludges on hypervisor switches);
- Unlimited host mobility within the local domain;
The host-based addressing used by CLNP and the idea that hosts and routers discover each other made it an easy fit to any network topology, whereas the rigid IP subnet model (made worse by fixed classful boundaries) started breaking down the moment we replaced coaxial cables with bridges (anyone remembers the beauties of Local Area Mobility?), resulting in the nightmares we have to deal with in the data center environments to support VM mobility.
Not surprisingly, the networking industry started reinventing the wheel (there are only so many ways to get a job done) and rediscovered the CLNP principles when trying to make IP work better, first with anycast first-hop gateways to bypass the problems of fixed first-hop gateway, later with host routing (Cisco’s DFA, EVPN) based on ARP/ND snooping, and finally full-blown layer-3-only networks (Enterasys Fabric Routing, Cumulus Networks’ Redistribute ARP).