Subject: Re: [arch-d] On identifiers: what is virtual and what is global (was Re: thoughts)

From: [email-masked] (Noel Chiappa)
Date: Thu, 23 Nov 2006 13:12:13 -0500 (EST)

> From: John Day <[email-masked]>

    >> At 13:04 +0200 2006/11/23, Pekka Nikander wrote:

Generally, I'm in agreement with all you both say. I few comments:

    > in the past we have used "name" for this as the most general form of
    > label. And always reserved "identifier" for things that we saw as short
    > and probably numeric. But that was really a fairly informal convention.

Yes, but it's a useful one - and remember, if one person writes "identifier"
and means "generic name", and someone else reads "short and probably numeric
name", it could be confusing, so if it's OK I'd like to suggest we stick
with those usages.

    > When a name is defined, sorry identifier, one must also define what it
    > names, the name space from which the names are taken, and the scope of
    > the name.

To be pedantic, one might also define the "context" (which basically means
"directory") in which it is looked up. Context is similar to scope, but not
exact. A slightly contrived example will make this clear (and my apologies in
advance to all to whom the following is already completely clear).

Assume we have two towns, A and C, with a third, B, in the middle. We have
two companies, both named "Clean Pipes Plumbing" (CPP) - one in A, one in C.
Both are willing to do work in town B; in other words, their "scopes"
overlap. In the U.S.A., there are now competing "Yellow Pages" - i.e. phone
directories organized by the kind of service they provide, and businesses
have to pay to be listed. So I can imagine that in B we might have two
different Yellow Pages books, Y and Z, and one has a listing for A's CPP, and
the other has a listing for C's. So if you live in B, and a friend recommends
CPP as being a good company, and you look in your Yellow Pages to call them
up to hire them, which one you get depends on whether you look in the Y or
the Z Yellow Pages.

    >> An identifier is virtual iff there is a separate context, different
    >> from the "usual" context, in which we will interpret the identifier.

    > I would prefer not to use this. ... In this sense, virtual is only
    > virtual ;-) in the sense that higher layers of naming represent a
    > higher level of abstraction than lower ones.

Yes, I'm not too happy with this definition of "virtual" either.

To me, the important quality about "virtual" comes from the thing that's
being named, *not* the name itself. Moreover, I find that "virtual" is
usually applied to a second class of instances of something, where the
initial class is somehow "real", the second class is less real, i.e.
"virtual". And usually the names for the two classes of things are
syntactically identical.

One good example is "virtual memory". There's real memory, which is actual
memory cells, each with an individual, permanent, unchangeable name. Virtual
memory refers to a different class of "virtual" instatations of the same
basic concept; the names look the same (32 bits or whatever), but they refer
to a different "level" of reality.

Another is phone numbers, now that we have number portability in many
countries. The phone number that your friends now memorize, or record in
their phone, is now not really a "real" phone number, but a "virtual" phone
number, which the telephone infrastructure maps to your "real" phone number
(and phone "line") when someone calls it.

I haven't said this quite as elegantly as your definition, but I think this
is closer to the true nature of "virtual".

	Noel

_______________________________________________
Architecture-discuss mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/architecture-discuss

---

From: Pekka Nikander <[email-masked]>
Date: Thu, 23 Nov 2006 22:25:36 +0200

> "virtual". And usually the names for the two classes of things are

I agree.  What I was missing, at minimum, in the above definition is  
that a name being "virtual" seems to require another layer of  
indirection.  Hence, in addition to being looked up in a separate  
context, the *entities* referred to by that separate context are  
"virtual" in the sense that they  point to the "real" entities only  
_indirectly_, either through the "virtual entities" being mapped  
directly to the "real entities", or by the mapping taking place  
through first mapping the "virtual entities" to "real names".  I  
believe the latter case is more usual.

But maybe I'm still missing here something.

> is closer to the true nature of "virtual".

I don't know how to say it elegantly :-), but at minimum the case  
seems to be the following:

  1. There is only one name space, S.

  2. There are two or more naming contexts, each mapping
     the names in S into a different entity space E_i.

  3. One entity space is considered "real", others "virtual".

  4. There is at least one extra layer of indirection from
     "virtual names" to "real entities", compared to mapping
     "real names" to "real entities".

There are obvious benefits and drawbacks stemming from the (re)use of  
the single name space.

The next interesting question is what is the exact difference between  
virtualisation and delegation, both being examples of indirection,  
and both typically taking place within a single name space.  (No, I  
don't have an answer to that right now here, but it's 10pm over here.)

--Pekka Nikander

---

From: John Day <[email-masked]>
Date: Thu, 23 Nov 2006 19:20:03 -0500

>name", it could be confusing, so if it's OK I'd like to suggest we stick

Good.  (This is what we have definitions for!)  We should really try 
to get a set of definitions that while we may not all agree with ;-) 
we at least  try to use.

>up to hire them, which one you get depends on whether you look in the Y or

Hmmm, Good example.  This is the problem that humans run into and why 
we are able to make things work without getting too formal.  Trouble 
is machines aren't that smart.  So we really need to have a  more or 
less formal system.

>Yes, I'm not too happy with this definition of "virtual" either.

Yea, I only used as analogy so people would have some idea what was I 
was talking about.  It is more logical than virtual, but even that 
isn't really right.  The point is that we need both levels of 
addressing just like we needed them in computers.

>(and phone "line") when someone calls it.

Well, actually it is an application name.  And if it is cellular, the 
phone also has a distinct node address and a point of attachment 
address.  When you leave your area you are assigned a different node 
address but keep the same application name, i.e. your number.  And of 
course the point of attachment is the cell tower.

>is closer to the true nature of "virtual".

  Awww, shucks.

Take care,
John