akmhoque | dbfd791 | 2014-01-31 20:15:39 -0600 | [diff] [blame^] | 1 | NLSR0.0 |
| 2 | ======= |
| 3 | |
| 4 | Named Data Link State Routing |
| 5 | |
| 6 | Installation: |
| 7 | |
| 8 | 1: Getting NLSR: |
| 9 | |
| 10 | git clone https://github.com/NDN-Routing/NLSR0.0 |
| 11 | git checkout nlsr-cpp |
| 12 | |
| 13 | 2: Compiling NLSR |
| 14 | a. Run ./configure |
| 15 | b. Run make |
| 16 | c. For installing run sudo make install |
| 17 | |
| 18 | Prerequisites: |
| 19 | i. You must have ndnx install in your machine |
| 20 | |
| 21 | ii. For smooth compilation you will need need autoconf-2.69 which can |
| 22 | be fethced from http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz |
| 23 | and automake-1.14 which can be fethed from |
| 24 | http://gnu.mirrorcatalogs.com/automake/automake-1.14.tar.gz |
| 25 | |
| 26 | Running NLSR: |
| 27 | |
| 28 | 1: Run ndnx daemon |
| 29 | |
| 30 | 2: Add '/ndn/keys' route to your neighboring testbed nodes. |
| 31 | This can be done by adding routes in your ccnd.conf to all neigbors, |
| 32 | e.g. |
| 33 | add /ndn/keys udp 10.0.XX.XX |
| 34 | add /ndn/keys udp 10.0.YY.YY ... |
| 35 | add /ndn/keys udp 10.0.ZZ.ZZ |
| 36 | |
| 37 | 3: Create your keys and publish them through repo. Please have |
| 38 | a look at https://github.com/named-data/ndn-testbed-key-suite for details. |
| 39 | |
| 40 | 4: create a nlsr configuration file, have a look at |
| 41 | macbook.conf and 'Configuration Parameters' section for details |
| 42 | |
| 43 | 7: start nlsr. You can find help for running nlsr with "-h" |
| 44 | |
| 45 | |
| 46 | Configuration Parameter: |
| 47 | |
| 48 | 1. router-name </name/prefix/of/the/router> |
| 49 | It is a required configuration parameter that is used to set the router name. |
| 50 | Name prefix of the router must start with `/ndn' and followed by a strict |
| 51 | hierarchical order of name components up to the hostname of the router. For |
| 52 | e.g. if router has a hostname host.dept.org.edu pollux.cs.memphis.edu then the |
| 53 | router name can be `/ndn/org.edu/dept/host.. |
| 54 | |
| 55 | 2. ccnneighbor </name/prefix/of/neighbor> [neighbor_ip_addrr] |
| 56 | This parameter is used to configure the neighboring router. Name prefix of a |
| 57 | neighbor must start with `/ndn. and followed by a strict hierarchical order of |
| 58 | name component as mentioned for router-name. If a router has a neighbor having |
| 59 | hostname `neighbor.dept.org.edu' then configuration command would be |
| 60 | `ccnneighbor /ndn/org.edu/dept/neighbor. The optional parameter, |
| 61 | [neighbor_ip_addrr], can be provided for explicitly connecting to a given |
| 62 | IP. This is useful if there is no entry of the hostname in the DNS. |
| 63 | |
| 64 | 3. ccnname </name/prefix/to/be/advertised> |
| 65 | ccnname is used to advertise the name prefix of the services hosted by the |
| 66 | router. Name prefix must follow the ccnx naming convention. |
| 67 | |
| 68 | 4. topo-prefix <name/prefix/of/repo/topo> |
| 69 | It is used to configure the topological prefix of the `sync. slice created for |
| 70 | nlsr in a repo. Prefix must follow the ccnx naming convention. Default value |
| 71 | for topo prefix is `/ndn/routing/nlsr' |
| 72 | |
| 73 | 5. slice-prefix <name/prefix/of/repo/slice> |
| 74 | This parameter is used to set the sync's slice prefix. All nlsr nodes `must' |
| 75 | have the same slice prefix and must follow the ccnx naming convention. Default |
| 76 | value for slice prefix is `/ndn/routing/nlsr/LSA' |
| 77 | |
| 78 | 6. lsa-refresh-time <sec> |
| 79 | It is the time in seconds, after which router will refresh its LSAs. Default |
| 80 | value = 1800 sec, Min = 240 sec |
| 81 | |
| 82 | 7. router-dead-interval <sec> |
| 83 | It is the time after which router will consider its neighbor dead if it does |
| 84 | not hear anything for that amount of time. If an LSA generated by neighbor has |
| 85 | a lifetime greater than router-dead-interval then router will simply discard |
| 86 | the LSA and update name prefix table, routing table and ccnd FIB accordingly. |
| 87 | Default value = 3600 sec, Min = 360 sec. |
| 88 | |
| 89 | 8. interest-retry <number> |
| 90 | interest-retry is maximum number of times a router will send same interest if |
| 91 | the interest is timed out. Default = 3, Min =1 and Max = 10 |
| 92 | |
| 93 | 9. interest-resend-time <sec> |
| 94 | When an interest is timed out, NLSR waits for `interest-resend-time. before |
| 95 | sending another interest. The interest is retransmitted up to the value of |
| 96 | `interest-retry.. If the interest doesn.t get satisfied during this time the |
| 97 | neighbor will be considered as dead. Default value = 15 sec, Min = 1 sec, Max = |
| 98 | 60 sec |
| 99 | |
| 100 | 10. max-faces-per-prefix <number> |
| 101 | By default NLSR calculates and add faces for all available faces to a prefix. |
| 102 | Number of faces can be restricted with this parameter, if this is configured |
| 103 | NLSR will add <number> or faces per prefixes in ccnd FIB. |
| 104 | |
| 105 | 11. debug <on/off> |
| 106 | Enable nlsr debugging by printing out detail messages on the standard output. |
| 107 | By default it is off. |
| 108 | |
| 109 | 12. logdir </directory/for/logging/> |
| 110 | NLSR will start writing log in logdir folder. If logdir is not configured NLSR |
| 111 | will create a log directory name nlsrLog in user home directory and write log |
| 112 | into that folder. |
| 113 | |
| 114 | 13. tunnel-type <udp | tcp> |
| 115 | This is used to specify the tunnel type that NLSR should create for building an |
| 116 | overlay network. By default NLSR creates udp tunnels. |
| 117 | |
| 118 | **Following Commands are only required for hyperbolic routing** |
| 119 | |
| 120 | 14. hyperbolic-routing <on|dry_run> |
| 121 | This option enables hyperbolic routing. With option on, link state routing |
| 122 | doesn't work while with dry_run option route is calculated by Link State |
| 123 | routing and hyperbolic routes are just recorded only in log file.Following |
| 124 | field is required if hyperbolic routing is on. |
| 125 | |
| 126 | 15. hyperbolic-cordinate <radius> <theta> |
| 127 | Polar coordinates of a node in a form of radius and theta. Currently, calculation |
| 128 | of the polar coordinates is an offline process and done by |
| 129 | the operator of a site. |
| 130 | |
| 131 | ** Hyperbolic Commands End here ** |
| 132 | |
| 133 | 16. keystore-path </path/to/keystore/file name(.ccnx_keystore)> |
| 134 | Path to the keystore. The keystore folder is usually created by |
| 135 | ccninitkeystore. Keys in this folder will be used by NLSR to sign the packets. |
| 136 | |
| 137 | 17. root-key-prefix </key/prefix> |
| 138 | Name prefix of the root key; the site key should be signed by this key. |
| 139 | e.g. root-key-prefix /ndn/keys |
| 140 | |
| 141 | 18. site-name </name/prefix/of/site> |
| 142 | Name of the site of which this router is a part. |
| 143 | |
| 144 | 19. network </name/of/network> |
| 145 | Name of the networks router belongs to |