Naming Examples UUID (universal unique ID) – 128 bit numbers, locally generated, guaranteed globally unique Uniform Resource Identifier (URI) URL (uniform resource locator) – location dependent E.g., http://www.w3c.org/addressing Name resolution via DNS (Domain Name Service): URI IP URN (uniform resource names) – location independent E.g., urn:isbn:0-390-343221-1
Naming Principles Network entities (by Saltzer) Naming issues: Services (and data) Hosts (endpoints) Network attachment points Paths (routing paths) Naming issues: Mobility Multi-homing Replication Security Scalability
Host Identity Protocol (HIP) 128-bit host identity tag (HIT) Process Process Transport <IPaddr, port> Transport <HIT, port> IP Layer HIP Layer <IPaddr> <HIT> IP Layer <IPaddr> HIT replaces IP address as a name of a system
How It Works? Client app Client app DNS library DNS Transport HIT DNS request Client app Client app DNS library DNS DNS reply = pubkey (P) send(HIT) HIT=hash(P) IPaddr Transport Transport HIP daemon 4-way authentication HIP daemon HIT HIP Layer IPaddr, P HIP layer send(IPaddr) IPsec IPsec
Layered Naming Architecture (LNA) Process Process SID↔EID <SID> Transport <IPaddr, port> Transport <EID, port> IP Layer EID↔IP <IPaddr> <EID> IP Layer <IPaddr> Should name each individually: Service identifiers (SIDs) name services/data Endpoint identifiers (EIDs) name hosts IP addresses name attachment points Ignore paths (router involvement)
How It Works? “DNS” Client app Client app SID↔EID SID↔EID LNA daemon DNS request “DNS” Client app Client app DNS reply = sid send(sid) SID↔EID eid = get(sid) SID↔EID put(sid, eid) put(eid, IP) LNA daemon DHT send(eid) Transport IP = get(eid) Transport send(eid) EID↔IP EID↔IP Intermediary (IPi) send(IPi) IP IP
Take Away Don’t bind to lower-level IDs prematurely Host mobility and renumbering (HIP) Service and data migration Resolution (binding) of name need not point to object itself, but can point to its delegate Resolution can point to intermediaries who process packets on behalf of the named target Examples HIP: one layer; IDs identify machines LNA: two layers EIDs identify machines SIDs identify everything else
UIA Naming Flat (personal group level) Resolution Routing: User can put “a user friendly” name to each device iPod.Alice, Camera.Bob Each “personal” device has a unique ID (EID) Resolution Mapping (user name EID via log records) is disseminated whenever connectivity is available Local resolution (assuming full replication) Routing: Routing packets to the EID node?? Source routing using a P2P overlay network
Service Discovery Lots of services dispersed across the network How to find who has what services? Example systems: Jini, JXTA, SLP, UPnP, Bonjour Salutation, INS, Twine, etc..
Directory Information
Directory Architecture
Query Expressiveness
Query Routing Application level routing Network level communication DHT-based Twine, Chord, CAN, Pastry Loosely-consistent DHT JXTA, Freenet Flooding Gnutella Network level communication Unicast communication with a Central server Web-services, Napster, INS, Jini, SLP Multicast communication Jini, SLP, UPnP