Project

General

Profile

Actions

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.

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 Certification Architecture.

Request

The end host loads the default user identity (eg. /ndn/edu/ucla/cs/afanasev), and converts it to DNS format (reference implementation: ndn-name-dnsifier.py).

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. For example

_ndn._udp.afanasev.cs.ucla.edu.ndn._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. Load default user identity (ndn-cpp-dev KeyChain::getDefaultIdentity()), and converts to DNS format; if either fails, this step fails. Send a DNS query to find home HUB. If this query got answered, connect to the home HUB. Otherwise, fail.

Updated by Junxiao Shi over 6 years ago · 8 revisions