NLSR Management¶
NLSR Management provides:
- command to add(advertise) routes to name prefix list
 - command to remove(withdraw) routes from name prefix list
 
1. Control Commands¶
1.1 Add a name prefix¶
command-verb: advertise¶
This command adds a name prefix to the name prefix list. This command can be accepted on ndn:/localhost/nlsr/prefix-update prefix.
Control Parameters¶
- Name (required)
 
1.2 Remove a name prefix¶
command-verb: withdraw¶
This command removes a name prefix from the name prefix list. This command can be accepted on ndn:/localhost/nlsr/prefix-update prefix.
Control Parameters¶
- Name (required)
 
2. Request format¶
NLSR control commands are command interests (https://redmine.named-data.net/projects/ndn-cxx/wiki/CommandInterest), whose name has the following form:
  /<prefix>/<management-module>/<command-verb>/<control-parameters>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue>
<prefix>is/localhost/nlsr. Each individual command may specify additional prefixes under which that command could be accepted.<management-module>is the name of management module to which the command needs to be dispatched. For example, the name of the management module in this case would beprefix-update.<command-verb>is the command to be executed. For this case this would be eitherwithdraworadvertise.<control-parameters>is a ControlParameters TLV block wrapped in a NameComponent.<timestamp>is interest's timestamp that is used to prevent replay attack.<random-value>aka Nonce that ensures the uniqueness of an interest.<SignatureInfo>and<SignatureValue>are additional components defined by [ndn-cxx:SignedInterest|Signed Interest] spec.
So, putting everything together, the complete name of a command interest would be
          /localhost/nlsr/prefix-update/advertise/<control-parameters>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue> 
or
          /localhost/nlsr/prefix-update/withdraw/<control-parameters>/<timestamp>/<random-value>/<SignatureInfo>/<SignatureValue>
3. Response Format¶
A response from the command interface is a Data that matches the request Interest. The payload of this Data is a ControlResponse block.
StatusCode¶
StatusCode loosely follows the HTTP semantics described in RFC2616 section 10 (RFC2616)
| StatusCode | Description | 
|---|---|
| 200 | OK | 
| 204 | Prefix is already advertised/withdrawn | 
| 205 | Save or delete a prefix from the configuration file | 
| 400 | ControlParameters is incorrect | 
| 403 | Command Interest is not authorized | 
| 406 | Prefix is already saved or deleted from the configuration file. | 
| 501 | Module or verb is not supported | 
| 503 | Feature is disabled | 
Updated by Saurab Dulal almost 7 years ago · 44 revisions