The best way I’ve found in order to understand the differences between CLNS and CLNP was to step back a bit and briefly go over some of the networking fundamentals including basic data network communication whilst at the same time trying to correlate any of these ISO terms to the little I know about TCP/IP.
In that way, with some luck, I could create a mental link between the two and hopefully facilitate the learning process. Haven’t we looked at the OSI and TCP/IP models for ages now in an attempt to break down the more complex parts of data communication in bits so we can digest and understand? Well, let’s give it a go.
If you think back without a doubt you will remember of topics such as networking models and its different layers; data encapsulation and how different headers are added by a specific layer providing a service to the layer above it–something called adjacent-layer interaction.
As it turned out, the ISO and IETF were trying to solve similar problems including data communication and related protocols, but somehow with different approaches and speeds (Rada, 1995).
Data communication or data transport services between networked devices can be either connection-oriented or connectionless.
As the name suggests, connection-oriented protocols require a setup of a connection along a specific path between nodes whereas connectionless does not.
When it comes to the OSI model, connection-oriented communication is referred to as Connection Oriented Network Services (CONS) and connectionless communication are referred to as Connectionless Network Services (CLNS).
That being so, when thinking of CLNS, think of it as a data transport mechanism allowing the network layer to provide connectionless service to the transport layer.
The Connectionless Network Protocol (CLNP) on the other hand can be seen as approximate to IP, but instead of providing connectionless service to the TCP/IP transport layer protocols, CLNP provides connectionless service (CLNS) to the OSI transport layer protocols allowing user data to be transferred between two devices.
Here’s a figure to help illustrate the concept.
In a CLNS environment, CLNP would use an additional protocol called End System-to-Intermediate System or ES-IS in order to deliver data to end hosts connected to the same segment. It offers similar services to CLNP as ICMP, ARP and DHCP do to IP. Where IS-IS allows router-to-router communication, ES-IS allows router-to-host. Although ES-IS has no relevance when it comes to Integrated IS-IS (IP) and it’s only used by CLNP to form adjacencies between end hosts and routers (Carroll & Doyle, 2006), I’ve found ES-IS is automatically enabled when IS-IS is configured on Cisco routers running as a background process and apparently supports IS-IS when it comes to point-to-point adjacencies (router-to-router) even in IP environments (Martey, 2002).
It’d interesting to carry out some testing in attempt to support this finding; either, kill the ES-IS process if possible–not integrated into the IS-IS process that is– or to implement some sort of VLAN maps in attempt to filter ES-IS PDUs altogether and see whether a point-to-point adjacency would still form between two routers. Some packet capturing would still be in order.
One distinct and important difference between CLNP and IP to keep in mind is that, IP is the only layer 3 protocol of the TCP/IP providing connectionless service and everything else, routing and applications, are encapsulated within IP packets.
In contrast, CLNP is not the only layer 3 protocol and coexists alongside ES-IS and IS-IS all of which are distinct Layer 3 protocols defined to support the ISO connectionless (CLNS) environment.
These protocols, CLNP, ES-IS and IS-IS, do not rely on any other layer 3 protocol, as OSPF relies on IP for example, and are encapsulated directly into data-link frames (Pepelnjak, 2009).
So what’s the confusion? Well, the way I put it is, CLNS is ISO’s attempt to make a clear distinction between adjacent-layer interaction services–the network layer providing connectionless service to the transport layer– and the protocols used to implement it such as CLNP and IS-IS (Pepelnjak, 2008).
This might lead to some initial confusion as there’s no such distinction in the TCP/IP.
The IETF wizards were not too bothered with such fine semantic. They referred to data communication as either connection-oriented or connectionless. Anything else they stuff inside an IP packet and move on with their lives.
A similar confusion at times can be seen when people is learning about MPLS labels. They keep asking: “Where does it fit in?” And when you try to explain that it’s more of a Layer 2.5 than anything else you can see their eyes rolling. I guess we probably conditioned our brain at an early stage saying ‘every protocol must fit exactly within a specific layer’–not true– that we forgot that these are called reference models. Nothing more. Nothing less.
When it comes to data communication we essentially have connection-oriented and connectionless. ISO refers to these as CONS and CLNS respectively.
The process of two layers working together, with the lower layer providing services to the higher layer, thus helping transport user data between devices is called adjacent-layer interaction, i.e. CLNS–providing connectionless services to the ISO transport layer protocols.
In contrast to IP, CLNP is not the only Layer 3 protocol and it sits alongside ES-IS and IS-IS supporting the ISO CLNS environment.
ES-IS in used to support router to host communication in a similar fashion ICMP, ARP and DHCP support IP. These protocols, however, are independent and are encapsulated directly into data-link frames.