Title: Naming
1Naming
2Naming
- Names play an important role in all computer
systems. - E.g., they can be used to share resources, to
uniquely identify entities, to refer to
locations, and so on. - An important issue with naming is that a name can
be resolved to the entity it refers to. - In a distributed system, the implementation of a
naming system is itself often distributed to
achieve efficiency and scalability of the naming
system. Three major issues covered in this part - The organisation and implementation of
human-friendly names (e.g., file names and WWW
URLs). - How to use location-independent names (or
identifiers) to locate mobile entities. - How to use naming system to support automatic
collection of unreferenced objects (garbage
collection).
3Names, identifiers, and addresses
- A name in a distributed system is a string of
bits or characters that is used to refer to an
entity - e.g., a host, printer, file, process, user,
network connection, etc. - An entity may have multiple access points.
- An access point is yet another special kind of
entity. - The name of an access point is called an address.
- An entity may have a unique identifier, which is
a special kind of name that has the following
properties - An identifier refers to at most one entity.
- Each entity is referred to by at most one
identifier. - An identifier always refers to the same entity
(i.e., it is never reused). - Addresses and identifiers are represented in
machine-readable form-- bit strings (e.g.,
Ethernet, IP, and RAM addresses) - Human-friendly names (e.g. file, DNS names and
URLs) are represented as a character string.
4Name Spaces (1)
Names are organised into a name space, which can
be represented as a labeled, directed graph with
leaf and directory nodes.
- A general naming graph with a single root node.
5Name Spaces (2)
- The general organization of the UNIX file system
implementation on a logical disk of contiguous
disk blocks.
6Name resolution Linking and Mounting (1)
- Name spaces offer a convenient mechanism for
storing and retrieving information about entities
by means of names. - The process of looking up a name is called name
resolution. - An alias is another name for the same entity,
which can be implemented by - multiple absolute paths (hard links in Unix), or
- multiple leaf nodes storing absolute path names
(symbolic links in Unix)
- The concept of a symbolic link explained in a
naming graph.
7Linking and Mounting (2)
- Name resolution can be used to merge different
name spaces in a transparent way. - To mount a foreign name space, we can let a
directory node store the identifier (e.g. URL) of
a directory node (normally the root) from the
foreign name space.
- Mounting remote name spaces through a specific
process protocol.
8Linking and Mounting (3)
- Organization of the DEC Global Name Service
9Name Space Distribution (1)
- An example partitioning of the DNS name space,
including Internet-accessible files, into three
layers.
10Name Space Distribution (2)
- A comparison between name servers for
implementing nodes from a large-scale name space
partitioned into a global layer, an
administrational layer, and a managerial layer.
11Implementation of Name Resolution (1)
- The principle of iterative name resolution.
12Implementation of Name Resolution (2)
- The principle of recursive name resolution.
13Implementation of Name Resolution (3)
- Recursive name resolution of ltnl, vu, cs, ftpgt.
Name servers cache intermediate results for
subsequent lookups.
14Implementation of Name Resolution (4)
- The comparison between recursive and iterative
name resolution with respect to communication
costs.
15The DNS Name Space
- The most important types of resource records
forming the contents of nodes in the DNS name
space.
16DNS Implementation (1)
- An excerpt from the DNS database for the zone
cs.vu.nl.
17DNS Implementation (2)
- Part of the description for the vu.nl domain
which contains the cs.vu.nl domain.
18The X.500 Name Space (1)
- A simple example of a X.500 directory entry using
X.500 naming conventions.
19The X.500 Name Space (2)
- Part of the directory information tree.
20The X.500 Name Space (3)
- Two directory entries having Host_Name as RDN.
21Naming versus Locating Entities
- Direct, single level mapping between names and
addresses. - T-level mapping using identities.
22Simple solutions Broadcasting and Multicasting
- A location service accepts an identifier as input
and returns the current address of the identified
entity. - Simple solutions exist to work in a local area
network. - Address Resolution Protocol (ARP) to map the IP
address of a machine to its data-link address,
which uses broadcasting. - Multicasting can be used to locate entities in
point-to-point networks (such as the Internet). - Each multicasting address can be associated with
multiple replicated entities.
23Forwarding Pointers (1)
- The principle of forwarding pointers using
(proxy, skeleton) pairs.
24Forwarding Pointers (2)
- Redirecting a forwarding pointer, by storing a
shortcut in a proxy.
25Home-Based Approaches
- The principle of Mobile IP.
26Hierarchical Approaches (1)
- Hierarchical organisation of a location service
into domains, each having an associated directory
node.
27Hierarchical Approaches (2)
- An example of storing information of a
(replicated) entity having two addresses in
different leaf domains.
28Hierarchical Approaches (3)
- Looking up a location in a hierarchically
organised location service.
29Hierarchical Approaches (4)
- An insert request is forwarded to the first node
that knows about entity E. - A chain of forwarding pointers to the leaf node
is created.
30Pointer Caches (1)
- Caching a reference to a directory node of the
lowest-level domain in which an entity will
reside most of the time.
31Pointer Caches (2)
- A cache entry that needs to be invalidated
because it returns a nonlocal address, while such
an address is available.
32Scalability Issues
- The scalability issues related to uniformly
placing subnodes of a partitioned root node
across the network covered by a location service.
33The Problem of Unreferenced Objects
- An example of a graph representing objects
containing references to each other.
34Reference Counting (1)
- The problem of maintaining a proper reference
count in the presence of unreliable communication.
35Reference Counting (2)
- Copying a reference to another process and
incrementing the counter too late - A solution.
36Advanced Referencing Counting (1)
- The initial assignment of weights in weighted
reference counting - Weight assignment when creating a new reference.
37Advanced Referencing Counting (2)
- Weight assignment when copying a reference.
38Advanced Referencing Counting (3)
- Creating an indirection when the partial weight
of a reference has reached 1.
39Advanced Referencing Counting (4)
- Creating and copying a remote reference in
generation reference counting.
40Tracing in Groups (1)
- Initial marking of skeletons.
41Tracing in Groups (2)
- After local propagation in each process.
42Tracing in Groups (3)