Project

General

Profile

HubDiscovery » History » Version 5

Alex Afanasyev, 03/05/2014 08:35 AM

1 3 Junxiao Shi
# NDN hub discovery procedure
2 1 Alex Afanasyev
3 3 Junxiao Shi
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/).
4 1 Alex Afanasyev
5 3 Junxiao Shi
## Overview
6 1 Alex Afanasyev
7 3 Junxiao Shi
This procedure contains three methods to discover a NDN router:
8 1 Alex Afanasyev
9 3 Junxiao Shi
1.  Look for a local NDN router by multicast.  
10
    This is useful in a home or small office network.
11
2.  Look for a local NDN router by DNS query with default suffix.  
12
    This allows network administrator to configure a NDN router for a large enterprise network.
13
3.  Connect to the home NDN router according to user certificate.  
14
    This ensures connectivity from anywhere.
15 1 Alex Afanasyev
16 3 Junxiao Shi
## Stage 1: multicast discovery
17 1 Alex Afanasyev
18 3 Junxiao Shi
### Request
19 1 Alex Afanasyev
20 3 Junxiao Shi
The end host sends an Interest over a multicast face.
21 1 Alex Afanasyev
22 3 Junxiao Shi
Interest Name is `/localhop/ndn-autoconf/hub`.
23 1 Alex Afanasyev
24 3 Junxiao Shi
### Response
25 1 Alex Afanasyev
26 3 Junxiao Shi
A producer app on the HUB answer this Interest with a Data packet that contains TLV-encoded `Uri` block.
27
The value of this block is the URI for the HUB, preferrably a UDP tunnel.
28 1 Alex Afanasyev
29 3 Junxiao Shi
## Stage 2: DNS query with default suffix
30 1 Alex Afanasyev
31 3 Junxiao Shi
### Request
32 1 Alex Afanasyev
33 3 Junxiao Shi
The end host sends a DNS query that is equivalent to this command:
34
35
    dig +search +short +cmd +tries=2 +ndots=10 _ndn._udp srv
36
37
### Response
38
39
The DNS server should answer with an SRV record that contains the hostname and UDP port number of the NDN router.
40
41
## Stage 3: find home router
42
43 4 Alex Afanasyev
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
44
45 3 Junxiao Shi
### Request
46 1 Alex Afanasyev
47 4 Alex Afanasyev
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).
48 1 Alex Afanasyev
49 5 Alex Afanasyev
(To get default identity: ``KeyChain::getDefaultIdentity()`` method in ndn-cpp-dev library.)
50
51 4 Alex Afanasyev
If either loading default user identity or converting to DNS format, the phase finishes with error code.
52
53
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`.
54 3 Junxiao Shi
55
### Response
56
57
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.
58
59
## Client procedure
60
61
1.  Send a multicast discovery Interest.
62
    If this Interest got answered, connect to the HUB and abort these steps.
63
2.  Send a DNS query with default suffix.
64
    If this query got answered, connect to the HUB and abort these steps.
65
3.  Extract the site-specific part from the default certificate of the user; fail if this cannot complete.
66
    Send a DNS query to find home HUB.
67
    If this query got answered, connect to the home HUB. Otherwise, fail.