Subject: RE: Persistent applications-level identifiers, the DNS, and RFC 2428

From: "Michel Py" <[email-masked]>
Date: Wed, 1 Oct 2003 14:48:29 -0700

John,

> John C Klensin wrote:
> It seems appropriate to ask whether 2428 should be opened
> and given at least the capability of passing DNS names
> and maybe some syntax that would permit clean extension
> to future identifiers.

It seems to me that this does not buy us much if it is limited to FTP.
Do you have in mind generalizing the mechanism of passing names instead
of addresses to other apps, and at which layer would the address-to-name
mapping occur?

If I understood you correctly:

The way it works today is:
- You pass a name to the app.
- The app looks up the name and maps an address to it.
- The app opens a TCP connection to the address.

Is what you are proposing:
- You pass a name to the app.
- The app opens a TCP connection to the name.
- The TCP layer manages the mapping.

-or-

- You pass a name to the app.
- The app opens a connects the session layer by name.
- The session layer maps an address to the name and opens a TCP
connection to the address.

-or-

Something else?

Michel.

---

From: John C Klensin <[email-masked]>
Date: Wed, 01 Oct 2003 20:24:22 -0400

--On Wednesday, 01 October, 2003 14:48 -0700 Michel Py 
<[email-masked]> wrote:

> It seems to me that this does not buy us much if it is limited
> to FTP. Do you have in mind generalizing the mechanism of
> passing names instead of addresses to other apps, and at which
> layer would the address-to-name mapping occur?

My ambitious in raising these questions are _very_ limited and, 
in particular, I don't see this as a back door to solving the 
non-DNS, topology-independent, persistent identifier problem. 
(It seems to me that needs to be solved through the front door, 
or not at all.).

Remember that FTP is a bit special -- it is the only major 
(widely deployed and used) application protocol we have that 
uses two TCP connections, one for a dialogue about what is to be 
done and one to actually move data.  That means it must have 
mechanisms for one or the other machine to tell the other one 
"set up a data channel to port X on machine Y"

We've also had a few IESG statements from time to time that have 
provide guidance/instructions to applications writers to get the 
explicit addresses out of the apps whenever possible.  As Keith 
notes, there is controversy as to whether that goal is 
realistic, at least given present our tools and identifier 
collection.

But, given those IESG statements, the character of  "set up a 
data channel to port X on machine Y", and some of the edge cases 
for which it has been used, it would seem at least superficially 
sensible to be able to specify Y as a DNS name or other 
identifier or, as was pointed out to me in a private note, to be 
able to specify the X and Y combination with a URI of some sort. 
I've got no particular interest in prohibiting the use of an IP 
address in Y (others can fight that war, I hope somewhere far 
away, if they want to), only some interest in exploring whether 
it is rational to have capability for a name as an additional 
option.  I do, architecturally and aesthetically, have an 
interest in not having to introduce a new pair of FTP command 
verbs each time someone figures out a different way to talk 
about (or identify) a host.  And that interest is why I got 
concerned when I noticed that 2428 had no provision for a name, 
or expansion of the syntax to accept a name, DNS or otherwise.

> - The app opens a TCP connection to the address.

yes.

> connection to the address.

Both of those alternatives go down the "Stable, non-DNS, 
identifier" that Keith and others are concerned about.   For the 
purpose of this discussion/ question, I'm not -- I am purely 
worried about how to handle this unusual situation with FTP. 
Coming back to your first scenario, we have

- You pass a name to the app.
- The app looks up the name and maps an address to it.
- The app opens a TCP connection to the address, establishing 
the command channel
- Either the app or the host at the remote end of the connection 
obtains a name or address, somehow.  In the most common case, it 
will be its own target, so it makes sense for it to obtain its 
own address (or the address of the adapter from which the TCP 
connection was opened), but there are some other cases.
- It passes that address or name to the remote host, along with 
a port number.
- If it passes a name, the remote host looks up the name, maps 
an address to it, and opens a TCP connection to it, establishing 
the data channel.

   john