Project

General

Profile

HubDiscovery » History » Revision 5

Revision 4 (Alex Afanasyev, 03/05/2014 07:57 AM) → Revision 5/8 (Alex Afanasyev, 03/05/2014 08:35 AM)

# NDN hub discovery procedure 

 When an end host starts up, or detects a change in its network environment, it MAY use this procedure to discover a local or home NDN router, in order to gain connectivity to [the NDN research testbed](http://named-data.net/ndn-testbed/). 

 ## Overview 

 This procedure contains three methods to discover a NDN router: 

 1.    Look for a local NDN router by multicast.   
     This is useful in a home or small office network. 
 2.    Look for a local NDN router by DNS query with default suffix.   
     This allows network administrator to configure a NDN router for a large enterprise network. 
 3.    Connect to the home NDN router according to user certificate.   
     This ensures connectivity from anywhere. 

 ## Stage 1: multicast discovery 

 ### Request 

 The end host sends an Interest over a multicast face. 

 Interest Name is `/localhop/ndn-autoconf/hub`. 

 ### Response 

 A producer app on the HUB answer this Interest with a Data packet that contains TLV-encoded `Uri` block. 
 The value of this block is the URI for the HUB, preferrably a UDP tunnel. 

 ## Stage 2: DNS query with default suffix 

 ### Request 

 The end host sends a DNS query that is equivalent to this command: 

     dig +search +short +cmd +tries=2 +ndots=10 _ndn._udp srv 

 ### Response 

 The DNS server should answer with an SRV record that contains the hostname and UDP port number of the NDN router. 

 ## Stage 3: find home router 

 This stage assumes that user has configured default certificate using http://ndncert.named-data.net/ as described in http://redmine.named-data.net/attachments/download/23/CertificationArchitecture.pptx 

 

 ### Request 

 The end host loads the default user identity (e.g., ``/ndn/edu/ucla/cs/afanasev``) and converts it to DNS format (see https://github.com/named-data/ndnx/blob/master/csrc/util/ndn-name-dnsifier.py as a reference implemenation). 

 (To get default identity: ``KeyChain::getDefaultIdentity()`` method in ndn-cpp-dev library.) 

 If either loading default user identity or converting to DNS format, the phase finishes with error code. 

 The end host sends a DNS query for an SRV record of name `_ndn._udp.` + user identity in DNS format + `_homehub._autoconf.named-data.net`. 

 

 ### Response 

 The DNS server should answer with an SRV record that contains the hostname and UDP port number of the home NDN router of this user's site. 

 ## Client procedure 

 1.    Send a multicast discovery Interest. 
     If this Interest got answered, connect to the HUB and abort these steps. 
 2.    Send a DNS query with default suffix. 
     If this query got answered, connect to the HUB and abort these steps. 
 3.    Extract the site-specific part from the default certificate of the user; fail if this cannot complete. 
     Send a DNS query to find home HUB. 
     If this query got answered, connect to the home HUB. Otherwise, fail.