Jan 23, 1978 Danny Cohen IEN: 23 Notebook Section 2.3.3.7 On Names, Addresses and Routings -------------------------------- DESTINATIONs and SOURCEs of communication have names. These destinations and sources are processes which exist outside the communication subnet (e.g., in HOSTs) or inside it (e.g., in GATEWAYs, NET-NODEs, etc). Names are not necessarily unique to destinations. Certain processes may have more than a single name. There are two kinds of names, names which specify a unique process and names which specify a set of processes (e.g., by capability). A name tells WHO (or WHAT) the process is. It is conceivable the names are arbitrary alphanumeric string suited for human readability. In addition to names, processes have addresses which indicate WHERE they are. Again, it is possible that several different names share the same address, and also that the same name has several addresses. In order to move messages from sources to destinations, not only the address of the destination (i.e., where it is) has to be known, but also HOW-TO-GET-THERE. This knowledge is the ROUTING. It is, obviously, possible that the same address can be reached by more than one route. These beautiful definitions of NAMEs (what), ADDRESSes (where) and ROUTING (how-to-get-there) are borrowed from John Shoch. To summarize: destinations and sources have names. Names are "converted" into addresses, and addresses into routings. However, none of the above mappings is a one-to-one correspondence. Names have to be unambiguous within a certain environment. From outside of this environment, the environment, too, has to be specified in order to complete the name specification i.e., to disambiguate it completely. This is the essence of hierarchical naming. A very similar argument holds for addresses. Within a certain environment addresses are unique, outside of it, the environment has to Page 2 be specified ("addressed") too. Obviously, environments have names/addresses which are unique within some bigger super-environment, out of which, the super-environment has to be specified, too. And so on. Note that in general address (and names) are hierarchical. The non-hierarchical case (or the "flat" situation) is a special case of hierarchy, with depth equal to one, and width equal to the total number of addresses. The mapping of names to addresses cannot be computed, and can be resolved only by reference to directories. Hence names from which addresses can be computed are not names in the true sense, but addresses in disguise. These directories may be implemented in various ways, ranging from off-line distributed directories (like paper based telephone directories) to online centralized services (like 411) even by or utilizing some broadcasting techniques. The sole purpose of addressing is to support routing. The address which tells where the destination is, is only important for determining the routing (i.e., how to get there). The key question is who performs the mapping of addresses into routing. Several avenues can be pursued. (1) Sources supplying the entire routing from source to destination (source-routing), or (2) source supplying only the name (or address) of the destination, and the communication subsystem performing the routing (communication-routing), and (3) a hybrid of the above, by the source supplying some intermediate destinations along the route, such that the communication subsystem can perform the routing between these given destinations. Note that (3) is a generalization of both (1) and (2). If done right, it should have the advantages of both, else it may have their combined disadvantages. There are too many (obvious) problems associated with a complete source-routing, (1), which are amplified in dynamically changed networks. Basically, the user is faced with the need to specify completely the routing whenever a message is sent. Since most of the information needed for finding the routing is originated in the communication subsystem, this is an undue burden which should be minimized. On the other hand the other extreme, the communication-routing, (2) , is not problem-free either. In the case of flat address-spaces too much knowledge has to be maintained, with all the problems associated with this requirement. Therefore, it is preferred to implement hierarchical addressing and hierarchical routing, which matches it in a unique way. As a matter of Page 3 fact, it seems that the most "natural" avenue is to follow the well-debugged paradigm of the telephone system, and have both hierarchical names, which are uniquely mapped into hierarchical addresses. One of the bigger drawbacks of this scheme is that it will not support an application of INTERnet fast facilities in order to expedite INTRAnet traffic, like using satellite links (which belong to SATnet) in order to expedite internal coast-to-coast ARPAnet traffic. Since the flat address space is a special case of the hierarchical one, we would like to treat all address spaces as hierarchical ones, and consider the argument of flat vs. hierarchical as optimizing the depth/width combination. The disadvantage of a big flat name/address subspace (as opposed to a hierarchical one) is that it requires that large table of addresses be maintained, that names/addresses be cleared before being put into use and that everyone knows about everyone, a requirement which is not feasible to fulfill when the dimension of this space keeps increasing. An example for a very flat name space is the social security number, as opposed to telephone numbers and mailing addresses. Note that this space is a subspace of a bigger space which includes also SSNs (or other unique IDs) of people in other countries. Note that both telephone numbers and mailing addresses are a kind of routing of the 3rd flavor. It is supplied by the source, and may have as much (or as little) information to get to the environment where the next piece of routing is nonambiguous. An example of source-routing, (1), is calling from a centrex system to a centrex system in another area code. An example of communication-routing, (2), is the interHOST traffic within the ARPAnet. An example of user-assisted-routing, (3), is an operator-assisted person to person call without knowing the number. For example, one has to tell the communication subsystem (here, a sequence of operators) that the other person is (a) in Massachusetts, (b) in Cambridge, (c) at MIT, and finally (d) the final destinations name. In this case the source supplied the sub-destination "Masachusetts" (or 617) but the communication system was free to choose the optimal route there. Another example is a call which is placed from a military base to another. Normally the AUTOVON system is used, but many times at the discretion of the individuals, they use the AUTOVON system to get outside to the commercial network, and back to the destination base, where the AUTOVON system is used again for the terminal contact. This is a example of an INTRAnet (AUTOVON) call which for quality, convenience and similar reasons, uses INTERnet facilities. Page 4 Another interesting observation about the telephone systems. Telephone addresses are of variable length. This does not mean only that different addresses may have different lenghts, but that the same address may have several lenghts, depending from where it is refered to. For example inside most organizations extensions may be reached by dialing about 4 digits only. from outside the organization, but still in the neighborhood 7 digits are usually needed, from a larger neighborhood it is 8, then 10, and so on. This is to be expected since telephone numbers are the basis for the hybrid routing used. Telephone numbers are parsed sequentially, and can traverse hierarchies up and down because of the prefixes used to indicate the "up" direction (like the 9 for outside, and the 1 for area code). It seems to me that we might like to implement a very similar structure for addressing. One way to implement such a user assisted routing is to implement a special FORWARDER process (on a well-known PORT), whose function is to receive messages, retrieve the "next-address" from its data and resubmit it for transportation to the next sub-destination, while doing the right things to acknowledgments, duplicates and the like. These processes do not have to be implemented on all systems, but only on a certain subset, where this capability is needed. This would eliminate the need for making all processes able to handle variable length multilevel addressing. SUMMARY The address space should be hierarchical, because it is more general than the flat space, and mainly because it may be not practical to have everyone knowing about all the other participants in this space. The format of the ADDRESS should be made more general (extensible). Routing which follows the hierarchy of the address space has difficulties in utilizing internet resources for intranet traffic. The distribution of all the knowledge needed to support routing which is entirely performed by the communication subsystem may also turn out to be impractical. Relying always on the source to supply the entire routing has its obvbious problems. Therefore we highly recommend that the hybrid approach will be used. ACKNOWLEDGMENT Recent discussions with John Shoch and David Boggs were a very educational experience for me, and helped me to understand these issues better. This note and John Shoch's note on the same subject (both are prepared for the same January 1978 TCP meeting) cover similar issues, and are basically in agreement about most issues. However, minor differences between the them seem to justify their existance separately.