Distributed Systems Principles and Paradigms Chapter 04 Naming Naming Entities • Names, identifiers, and addresses • Name resolution • Name space implementation 04 – 1 Naming/4.1 Naming Entities Naming Essence: Names are used to denote entities in a distributed system. To operate on an entity, we need to access it at an access point. Access points are entities that are named by means of an address. Note: A location-independent name for an entity E, is independent from the addresses of the access points offered by E. 04 – 2 Naming/4.1 Naming Entities Identifiers Pure name: A name that has no meaning at all; it is just a random string. Pure names can be used for comparison only. Identifier: A name having the following properties: - P1 Each identifier refers to at most one entity - P2 Each entity is referred to by at most one identifier - P3 An identifier always refers to the same entity (prohibits reusing an identifier) Observation: An identifier need not necessarily be a pure name, i.e., it may have content. Question: Can the content of an identifier ever change? 04 – 3 Naming/4.1 Naming Entities Name Space (1/2) Essence: a graph in which a leaf node represents a (named) entity. A directory node is an entity that refers to other nodes. Note: A directory node contains a (directory) table of (edge label, node identifier) pairs. 04 – 4 Naming/4.1 Naming Entities Name Space (2/2) Observation: We can easily store all kinds of attributes in a node, describing aspects of the entity the node represents: • • • • • Type of the entity An identifier for that entity Address of the entity’s location Nicknames ... Observation: Directory nodes can also have attributes, besides just storing a directory table with (edge label, node identifier) pairs. 04 – 5 Naming/4.1 Naming Entities Name Resolution Name Resolution - the process of looking up a name Problem: To resolve a name we need a directory (initial) node. How do we actually find that initial node? Closure mechanism: The mechanism to select the implicit context from which to start name resolution: Question: Why are closure mechanisms always implicit? Observation: A closure mechanism may also determine how name resolution should proceed 04 – 6 Naming/4.1 Naming Entities Name Linking (1/2) Hard link: What we have described so far is a path name: a name that is resolved by following a specific path in a naming graph from one node to another. Soft link: Allows a node O to contain a name of another node: • First resolve O’s name (leading to O) • Read the content of O, yielding name • Name resolution continues with name Observations: • The name resolution process determines that we read the content of a node, in particular, the name in the other node that we need to go to. • One way or the other, we know where and how to start name resolution given name 04 – 7 Naming/4.1 Naming Entities Name Linking (2/2) Observation: the path name /home/steen/keys, which refers to a node containing the absolute path name /keys, is a symbolic link to node n5. 04 – 8 Naming/4.1 Naming Entities Merging Name Spaces (1/3) Problem: We have different name spaces that we wish to access from any given name space. Solution 1: Introduce a naming scheme by which pathnames of different name spaces are simply concatenated (URLs). 04 – 9 Naming/4.1 Naming Entities Merging Name Spaces (2/3) Solution 2: Introduce nodes that contain the name of a node in a “foreign” name space, along with the information how to select the initial context in that foreign name space. Mount point: (Directory) node in naming graph that refers to other naming graph Mounting point: (Directory) node in other naming graph that is referred to. 04 – 10 Naming/4.1 Naming Entities Merging Name Spaces (3/3) Solution 3: Use only full pathnames, in which the starting context is explicitly identified, and merge by adding a new root node (DCE’s Global Name Space). Note: In principle, you always have to start from the new root 04 – 11 Naming/4.1 Naming Entities Name Space Implementation (1/2) Basic issue: Distribute the name resolution process as well as name space management across multiple machines, by distributing nodes of the naming graph. Consider a hierarchical naming graph and distinguish three levels: Global layer: Consists of the high-level directory nodes. Main aspect is that these directory nodes have to be jointly managed by different administrations Administrational layer: Contains mid-level directory nodes that can be grouped in such a way that each group can be assigned to a separate administration. Managerial layer: Consists of low-level directory nodes within a single administration. Main issue is effectively mapping directory nodes to local name servers. 04 – 12 Naming/4.1 Naming Entities Name Space Implementation (2/2) 04 – 13 Naming/4.1 Naming Entities Iterative Name Resolution • resolve(dir, [name1,…, nameK]) is sent to Server0 responsible for dir • Server0 resolves resolve(dir, name1) → dir1, returning the identification (address) of Server1, which stores dir1. • Client sends resolve(dir1,[name2,…, nameK]) to Server1 • etc. 04 – 14 Naming/4.1 Naming Entities Recursive Name Resolution • resolve(dir,[name1,…,nameK]) is sent to Server0 responsible for dir • Server0 resolves resolve(dir, name1) → dir1, and sends resolve(dir,[name2,…,nameK]) to Server1, which stores dir1. • Server0 waits for the result from Server1, and returns it to the client 04 – 15 Naming/4.1 Naming Entities Caching in Recursive Name Resolution • Also see Figure 4-11 for the comparison between recursive and iterative name resolution with respect to communication costs. 04 – 16 Naming/4.1 Naming Entities Example 1: Internet Domain Name System (DNS) - used for looking up IP addresses of hosts and mail servers in Internet - comparable to a telephone book (white pages) for looking up phone numbers - DNS name space is hierarchically organized as a rooted tree - The contents of a node is formed by a collection of resource records - Multiple (primary, secondary, etc.) DNS servers are usually deployed for an organization to increase availability - nslookup is a utility for querying DNS service 04 – 17A Naming/4.1 Naming Entities DNS Resource Records Type of record Associated entity Description SOA Zone Holds information on the represented zone A Host Contains an IP address of the host this node represents MX Domain Refers to a mail server to handle mail addressed to this node SRV Domain Refers to a server handling a specific service NS Zone Refers to a name server that implements the represented zone CNAME Node Symbolic link with the primary name of the represented node PTR Host Contains the canonical name of a host HINFO Host Holds information on the host this node represents TXT Any kind Contains any entity-specific information considered useful Figure 4-12. The most important types of resource records forming the contents of nodes in the DNS name space. 04 – 17B Naming/4.1 Naming Entities Sample DNS Records Figure 4-13. An excerpt from the DNS database for the zone cs.vu.nl. 04 – 17C Example 2: X.500 Directory Service (1) - ITU standard for directory services - provides directory service based on a description of properties instead of a full name (e.g., yellow pages in telephone book) - an X.500 directory entry is comparable to a resource record in DNS - Each record is made up of a collection of (attribute, value) pairs - The collection of all entries is called Directory Information Base (DIB) - Each entry in a DIB can be looked up using a sequence of naming attributes, which forms a globally unique name called Distinguished Name (DN). Each naming attribute is called Relative Distinguished Name (RDN) - e.g., /C=KR/O=POSTECH/OU=Dept. of CSE is analogous to the DNS name cse.postech.ac.kr - X.500 also forms a hierarchy of the collection of entries called Directory Information Tree (DIT) 04 – 18A Naming/4.1 Naming Entities X.500 Directory Entry Example Attribute Abbr. Value Country C NL Locality L Amsterdam Organization O Vrije Universiteit OrganizationalUnit OU Math. & Comp. Sc. CommonName CN Main server Mail_Servers -- 130.37.24.6, 192.31.231,192.31.231.66 FTP_Server -- 130.37.21.11 WWW_Server -- 130.37.21.11 A simple example of a X.500 directory entry using X.500 naming conventions. 04 – 18B Naming/4.1 Naming Entities A Part of Directory Information Tree 04 – 18C Naming/4.1 Naming Entities Two directory entries having Host_Name as RDN Attribute Value Attribute Value Country NL Country NL Locality Amsterdam Locality Amsterdam Organization Vrije Universiteit Organization Vrije Universiteit OrganizationalUnit Math. & Comp. Sc. OrganizationalUnit Math. & Comp. Sc. CommonName Main server CommonName Main server Host_Name star Host_Name zephyr Host_Address 192.31.231.42 Host_Address 192.31.231.66 04 – 18D Naming/4.1 Naming Entities Example 2: X.500 Directory Service (2) - DIT is usually partitioned and distributed across multiple servers known as Directory Service Agents (DSA) - Clients are known as Directory User Agents (DUA) - Directory Access Protocol (DAP) is used between DUA and DSA to insert/lookup/modify/delete entries in DSA - traditionally implemented using OSI protocols - Lightweight Directory Access Protocol (LDAP) - implemented on top of TCP - parameters of operations are passed as strings - has become a de facto standard for Internet-based directory services for various applications 04 – 18E Naming/4.1 Naming Entities