Was CLNP Really Broken?

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.

As always, the answer is “it depends” (aka “we’re both right” ;).

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 network 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. Using IS-IS in TRILL or 802.1aq is a totally different story, as those environments don’t propagate IP addresses or subnets in IS-IS LSPs.

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).

6 comments:

  1. A while ago, I was going through a summary of a talk by another networking legend - Dr. Radia Perlman. She seems to suggest that we would not be in this IPv4 address shortage mess that we are in today had IETF accepted a proposal to use CLNP addressing for TCP/IP way back in 1993 when the size of the Internet was quite small and manageable. I went digging and found an RFC to support her statement as well - RFC 1561: Use of ISO CLNP in TUBA Environments.

    The egos and politics in IETF probably got in the way and here we are 22 years later struggling to 'transition' from 32 bits to 128 bits. I believe CLNP offers variable length addressing up to 20 octets - much larger than the IPv6 address space.

    Better products or standards don't always win, there's market timing, money power, politics and egos of standards bodies etc. always come in the way.
    Replies
    1. See

      http://blog.ipspace.net/2010/12/can-we-go-back-to-clnp.html
      http://blog.ipspace.net/2010/12/clnp-and-multihoming-myths.html
      http://blog.ipspace.net/2010/09/ipv6-experts-strike-again.html
    2. For years I was designer and administrator for an 18.000 router network running IS-IS and CLNP.
      This stands for me like the Rolls Royce of networking.

      I believe the networking world would have been a lot better of going CLNS/CLNP instead of IP.
  2. Thanks for pointing me to older blog posts. Very good reads!! Learning from networking history definitely provides new perspective...

    -netfabric
  3. TRILL switches utilize 16-bit addresses and run level-1 IS-IS.

    TRILL routing table contains full 16-bit host routes to all switches in TRILL network.

    However, this does not affect IP forwarding in any way, since TRILL IS-IS is totally isolated from IS-IS for IP routing.
  4. Given that IS-IS can carry IP addresses, would it be feasible for a VM to use ES-IS to ‘register’ its IP address with a data centre router?
Add comment
Sidebar