docs: Enabling sphinx-based documentation and styling docs closer to named-data.net
Change-Id: Id80e0a4ba6f307159d4dcfdd7796189316a0c566
Refs: #1251
diff --git a/docs/manpages/ndn-autoconfig.rst b/docs/manpages/ndn-autoconfig.rst
new file mode 100644
index 0000000..07233a5
--- /dev/null
+++ b/docs/manpages/ndn-autoconfig.rst
@@ -0,0 +1,104 @@
+ndn-autoconfig
+==============
+
+Synopsis
+--------
+
+::
+
+ ndn-autoconfig
+
+
+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 a 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 <http://redmine.named-data.net/attachments/download/23/CertificationArchitecture.pptx>`_.
+
+Request
++++++++
+
+The end host loads the default user identity (eg. ``/ndn/edu/ucla/cs/afanasev``), and converts it to DNS format.
+
+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
+----------------
+
+Stage 1
+^^^^^^^
+
+Send a multicast discovery Interest.
+
+If this Interest is answered, connect to the HUB and terminate auto-discovery.
+
+Stage 2
+^^^^^^^
+
+Send a DNS query with default suffix.
+
+If this query is answered, connect to the HUB and terminate auto-discovery.
+
+Stage 3
+^^^^^^^
+
+* Load default user identity, and convert it to DNS format; if either fails, the auto-discovery fails.
+
+* Send a DNS query to find home HUB.
+ If this query is answered, connect to the home HUB and terminate auto-discovery. Otherwise, the auto-discovery fails.