Project

General

Profile

LocalControlHeader » History » Revision 4

Revision 3 (Alex Afanasyev, 01/31/2014 11:43 PM) → Revision 4/26 (Alex Afanasyev, 02/05/2014 04:26 PM)

# NFD local control header 

 NFD local control header can be used between application and local forwarding daemon to exchange various NFD-specific local information that is not part of Interest and Data packet. 
 For example, the control header allows applications to request bypassing the Interest forwarding strategy by directly specify FaceId to which the Interest should be forwarded. 

 NFD local control header is not enabled by default and requires explicit request from the client to enable. 
 This request is in form of [[Signed_Interests|Signed Interest]] and have the following structure: 

     /localhost/nfd/control-header/<command-verb>/<timestamp>/<SignatureInfo>/<SignatureValue> 
    
     \                              / \             / \                                            / 
      ------------    ------------       ----    -----     --------------------    -------------------- 
                  \/                       \/                              \/ 
        NFD Control Command           "enable" or         Signed Interest related information 
                                     "disable" 


 ## LocalControlHeader 

 If command to enable LocalControlHeader is authorized by NFD, all subsequent communication from NFD will include LocalControlHeader as defined below. 
 The authorized application will also be able to include LocalControlHeader in communication to NFD---until specifically enabled, all specified LocalControlHeaders should be ignored by NFD. 

     LocalControlHeader ::= LOCAL-CONTROL-HEADER-TYPE TLV-LENGTH 
                              LocalControlInfo 
                              (Interest | Data) 

     LocalControlInfo     ::= LOCAL-CONTROL-INFO-TYPE TLV-LENGTH 
                              (IncomingFaceId | 
                               OutgoingFaceId | 
                               TapInfo) 

     IncomingFaceId       ::= INCOMING-FACE-ID-TYPE TLV-LENGTH 
                               nonNegativeInteger 

     OutgoingFaceId       ::= INCOMING-FACE-ID-TYPE TLV-LENGTH 
                               nonNegativeInteger 

     TapInfo              ::= TAP-INFO-TYPE TLV-LENGTH 
                              ... 
                              (TBD) FaceId? 


 ## TLV-TYPE assignments 

 Type                                          | Assigned value      | Assigned value (hex) 
 ------------------------------------------- | ----------------- | -------------------- 
 LocalControlHeader                            | 109                 | 0x6d 
 LocalControlInfo                              | 110                 | 0x6e 
 IncomingFaceId                                FaceId                                        | 111 105                 | 0x6f 0x69 
 OutgoingFaceId                                | 112                 | 0x70 
 TapInfo                                       | 113                 | 0x71