Subject: Re: [rrg] Next topic: properties of identifiers

From: Christian Vogt <[email-masked]>
Date: Fri, 26 Jun 2009 10:24:03 -0700

Dear all -

I am catching up on folks' previous discussion on identifier properties.
This discussion is really useful; I wish I had participated earlier.

One thought that has been brought up is the inevitable coexistence of
multiple types of identifiers.  This makes sense given the variety of
things to be identified.  In fact, the multitudinousness of identifiers
is not new:  Many applications have their own identifiers already today.

But are all these identifier types essential elements of an Internet
architecture?  I would argue most of them are not -- they are useful
within the scope of a particular Internet application, but they are not
essential for the Internet per se to function.  In fact, I see only two
purposes for which the Internet architecture must have identifiers:

(1) service identification, identifying a piece of communication
     software that responds to incoming contact establishment attempts

(2) session identification, identifying the protocol state corresponding
     to a particular session after contact establishment

Individual Internet architecture solutions may use combinations of more
than one identifier for either of these two purposes.  For example,
service identification in the existing Internet is achieved by combining
a host identifier (DNS name, or IP address in its role as a host
identifier) and a host-local service identifier (well-known port
number).  So an Internet architecture may have more than two types of
identifiers.  But again, it seems that all of those identifiers would
serve only the above two purposes, after all.

Given the distinct identifier purposes, the properties of identifiers
may naturally be specific to a particular purpose.  For example, the
property of enabling session referrals clearly applies to only session
identification, but not to service identification.  On the other hand,
stability is a property that is more important for service
identification than for session identification, since two hosts engaged
in a session may be able to handle changes of session identifiers.

Thoughts?

- Christian

---

From: Toni Stoev <[email-masked]>
Date: Sat, 27 Jun 2009 03:29:42 +0300

Christian,

There is one more primary need for identification on the general network. That is the necessity of node identification.
A node has to have identifier in order to be distinguished from other nodes.
Node identification provides for efficient handling of node multihoming, possibly dynamic, and for stable mapping of human readable names.
One basic use of node identification is connection identification, which includes node identification. A complement to that use is the presence of node identification in connection initiation.
Node identification descends from the domain name system and is currently woven into unicast addressing. Extracting it from both is the evolution.

Toni

Christian Vogt wrote:
> _______________________________________________
> rrg mailing list
> [email-masked]
> http://www.irtf.org/mailman/listinfo/rrg
>

---

From: Toni Stoev <[email-masked]>
Date: Sun, 28 Jun 2009 05:14:07 +0300

Christian, thanks for waking us up.

Christian Vogt wrote:
> In fact, I see only two 

Service identification denotes a type of activity that a node would perform for a node. For example, check the time and return a timestamp. The activity is checking and returning, and when it is performed multiple times, those are distinct activities of the same type. Identified is the particular type of activity among all that a node would perform.

>      to a particular session after contact establishment

Do you mean connection identification?

> number).

Since the port number is well-known, the service identifier is not just host-local, but is meaningful to any host, that is, it is global.
And the combination with host identifier is service localization.

> So an Internet architecture may have more than two types of 

There exists node-local identification of connection instances, currently the socket "port". It serves the purpose of connection identification.

Agree?

Toni

---

From: Christian Vogt <[email-masked]>
Date: Mon, 29 Jun 2009 13:38:18 -0700

Toni -

I don't think that host identification is a necessary element of an
Internet architecture.  It is important which software process you
reach, not which hardware this software process runs on.  Load-balancing
mechanisms such as Akamai exploit just this.  Similarly, after contact
establishment, it is important to reach the protocol state for the
particular session at hand, not which hardware this state is currently
residing on.  Session mobility mechanisms exploit just this.  So host
identification is not a general requirement.

Of course, individual Internet architecture solutions may use host
identifiers as part of service or session identification.  Even the
existing Internet does this, as I mentioned in my previous email.  In
those cases, the host identifiers are used in composition with other,
typically host-local identifiers, so that the composition identifies
either a service or a session.

So again, we need identifiers for only two purposes: for the purpose of
service identification, and for the purpose of session identification.

- Christian

On Jun 26, 2009, Toni Stoev wrote:

> Christian,
>
> There is one more primary need for identification on the general
> network. That is the necessity of node identification. A node has to
> have identifier in order to be distinguished from other nodes. Node
> identification provides for efficient handling of node multihoming,
> possibly dynamic, and for stable mapping of human readable names. One
> basic use of node identification is connection identification, which
> includes node identification. A complement to that use is the presence
> of node identification in connection initiation. Node identification
> descends from the domain name system and is currently woven into  
> unicast
> addressing. Extracting it from both is the evolution.
>
> Toni

---

From: Christian Vogt <[email-masked]>
Date: Mon, 29 Jun 2009 13:43:36 -0700

Hi Toni -

Regarding your question on whether I mean "connection identification"  
when saying "session identification":  For data exchanges that use  
connection-oriented transport protocols, yes, the two terms are the  
same.  But note that "session" is a more general term because it also  
includes data exchanges that use connection-less transport protocols.

- Christian

On Jun 27, 2009, Toni Stoev wrote:

> Service identification denotes a type of activity that a node would  
> perform for a node. For example, check the time and return a  
> timestamp. The activity is checking and returning, and when it is  
> performed multiple times, those are distinct activities of the same  
> type. Identified is the particular type of activity among all that a  
> node would perform.
>
> Since the port number is well-known, the service identifier is not  
> just host-local, but is meaningful to any host, that is, it is global.
> There exists node-local identification of connection instances,  
> currently the socket "port". It serves the purpose of connection  
> identification.
>
> Agree?
>
> Toni

---

From: <[email-masked]>
Date: Tue, 30 Jun 2009 10:33:09 +0100

Is host identification most useful for fault finding? 

> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]] On 
> Behalf Of Christian Vogt
> Sent: 29 June 2009 21:38
> To: Toni Stoev
> Cc: IRTF RRG
> Subject: Re: [rrg] Next topic: properties of identifiers
> 
> Toni -
> 
> I don't think that host identification is a necessary element 
> of an Internet architecture.  It is important which software 
> process you reach, not which hardware this software process 
> runs on.  Load-balancing mechanisms such as Akamai exploit 
> just this.  Similarly, after contact establishment, it is 
> important to reach the protocol state for the particular 
> session at hand, not which hardware this state is currently 
> residing on.  Session mobility mechanisms exploit just this.  
> So host identification is not a general requirement.
> 
> Of course, individual Internet architecture solutions may use 
> host identifiers as part of service or session 
> identification.  Even the existing Internet does this, as I 
> mentioned in my previous email.  In those cases, the host 
> identifiers are used in composition with other, typically 
> host-local identifiers, so that the composition identifies 
> So again, we need identifiers for only two purposes: for the 
> purpose of service identification, and for the purpose of 
> session identification.
> 
> - Christian
> 
> 
> 
> > unicast addressing. Extracting it from both is the evolution.
> >
> > Toni
> 
> 
>

---

From: Patrick Frejborg <[email-masked]>
Date: Tue, 30 Jun 2009 16:13:24 +0300

Hi Christian,

I think service identification and session identification is belonging
to the transport layer in the IP reference model  - in the OS model
they are on separate layers. So in the IP model I would collapse them
under one identifier, I think that is what we have today. E.g a TCP
connection is identified by the five tuples; source and destination
addresses, source and destination ports and protocol. But here the
problems starts, a connection/session/association is identified by
elements from the network layer (source and destination addresses) -
thus the border between the network and transport layer gets very
blurred. I believe that this is the reason why we today need to have
global unique IP addresses, with global addresses we can identify
connections on hosts, security and NAT nodes - it is the only method
at the moment, right?

Adding a host identifier to the IP reference model wouldn't add much
value - unless it can decouple the dependency between network and
transport layer. If the host identifier could give an identity for a
connection without deep dependency to the network layer an new world
opens. I.e. a connection could be identified by some other mechanisms
than the network tuples. Then we could migrate from a single-level
address scheme to a multilevel address scheme and create a better
routing architecture without the need to have global unique addresses.
And mobility would be much easier to achieve, i.e. if connections are
identified by something else it doesn't matter when the underlying
network changes - the application will not be aware and doesn't care
about the network parameters.

SCTP goes in this direction but the current mainstream transport
protocol is TCP. Guess people will not move their applications to use
SCTP instead of TCP in order to improve the routing architecture of
Internet, right?
I think the only way is to fool TCP that underlying network is still
the same though it isn't - something is needed between the network and
transport layer that the applications aren't aware of. By having a new
layer we could change the underlying addressing scheme with backwards
compatibly to the current addressing scheme - not all stacks needs to
be upgraded since it is backwards compatible. This will not improve
mobility but mobility will be improved once people are starting to
move their applications to use the host identifier to identify
connections on the transport layer. Would people move their
applications to support mobility? I think it is matter of time, there
are so much mobile devices connected to Internet that enterprises will
see business opportunities to move applications to an infrastructure
that better supports mobility, this is long term vision but guess it
will happen.

So I think the identifier(s) should be designed to decouple the
transport layer from the network layer. Opponents will say that all
hosts must be upgraded, this is not true if the the new stack is made
backwards compatible with fallback mechanisms to the current
architecture.

-- patte

---

From: Christian Vogt <[email-masked]>
Date: Tue, 30 Jun 2009 12:50:37 -0700

> Is host identification most useful for fault finding?

Louise -

Absolutely.  In fact, there is a richness of purposes for which one may
need identifiers.  What I claim is that most of those purposes are
application-specific and not essential to an Internet architecture.  For
example, fault finding is the purpose of a debugging application.

An Internet architecture must be versatile enough to enable applications
to use their own identifiers.  But to do this, the Internet architecture
itself must incorporate identifiers for only two purposes:  to  
identify a
peer service for contact establishment, and to identify a session
instantiated during contact establishment.  On top of that, applications
can do what they want, such as providing a means to identify hosts for
fault finding.  Does this make sense?

- Christian

---

From: Christian Vogt <[email-masked]>
Date: Tue, 30 Jun 2009 13:14:56 -0700

Hi Patte -

You are absolutely right that decoupling services and sessions from
their location would be highly useful.  The current conflation of
identification and location certainly has serious disadvantages.  For
example, decoupling would mitigate the routing scalability problem.

But are you saying that using a host identity as part of service or
session identification is necessary to achieve this decoupling?

- Christian