Project

General

Profile

NLSR Management » History » Revision 40

Revision 39 (Muktadir Chowdhury, 10/06/2017 11:09 AM) → Revision 40/44 (Muktadir Chowdhury, 10/06/2017 11:11 AM)

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> 
                                                             
                                                                                                                            \                                                  /\                                                       / 
                                                              
                                                                                                                                 -------------    -------------------     ---------------     -------------------- 
                                                                                
                                                                                                                                                   \/                                                    \/ 
                                                                
                                                                                                                                 Command Interest Extension       Components of Signed Interest 


 - ```<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 be ```prefix-update```. 
 - ```<command-verb>``` is the command to be executed. For this case this would be either ```withdraw``` or ```advertise```. 
 - ```<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``` or ```localhost/nlsr/prefix-update/withdraw``` 

 ## 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](https://www.ietf.org/rfc/rfc2616.txt)) 

 StatusCode    | 	 Description 
 ------------|------------------------------------ 
 200           | 		 OK 
 204           | Prefix is already advertised/withdrawn 
 400 	     | ControlParameters is incorrect 
 403 	     | Command Interest is not authorized 
 501 	     | Module or verb is not supported 
 503           | Feature is disabled