LocalControlHeader » History » Version 12
Alex Afanasyev, 02/05/2014 09:01 PM
| 1 | 1 | Junxiao Shi | # NFD local control header |
|---|---|---|---|
| 2 | 3 | Alex Afanasyev | |
| 3 | 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. |
||
| 4 | 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. |
||
| 5 | |||
| 6 | NFD local control header is not enabled by default and requires explicit request from the client to enable. |
||
| 7 | This request is in form of [[Signed_Interests|Signed Interest]] and have the following structure: |
||
| 8 | |||
| 9 | 8 | Alex Afanasyev | /localhost/nfd/control-header/<control-module>/command-verb>/<timestamp>/<SignatureInfo>/<SignatureValue> |
| 10 | 1 | Junxiao Shi | |
| 11 | 8 | Alex Afanasyev | \ / \ / \ / |
| 12 | ------------ ------------ ------------ ------------- -------------------- -------------------- |
||
| 13 | \/ \/ \/ |
||
| 14 | NFD Control Command "in-faceid" "enable" or Signed Interest related information |
||
| 15 | "out-faceid" "disable" |
||
| 16 | 1 | Junxiao Shi | |
| 17 | 8 | Alex Afanasyev | Control modules: |
| 18 | 1 | Junxiao Shi | |
| 19 | 8 | Alex Afanasyev | * ``in-faceid`` Enable/disable ability to receive information about incoming FaceId for each received Interest and Data packet |
| 20 | |||
| 21 | After successful enable, subsequent packets will be encapsulated in within LocalControlHeader, as defined below. And vice versa, after successful disable, subsequent packets will not be encapsulated. |
||
| 22 | |||
| 23 | Note that the command may not be immediate. Packets that were scheduled for transmission before the command arrival will be received without (or with) LocalControlHeader present. |
||
| 24 | |||
| 25 | * ``out-faceid`` Enable/disable ability to specify outgoing FaceId. |
||
| 26 | |||
| 27 | After this command, NFD will accept incoming Interests encapsulated in LocalControlHeader that specifies outgoing FaceId to forward this Interest. |
||
| 28 | |||
| 29 | Note that this will affect only Interest for namespaces that is managed by special ``ClientControl`` strategy. If FIB entry for the Interest uses any other strategy, information specified in LocalControlHeader will be ignored. |
||
| 30 | 1 | Junxiao Shi | |
| 31 | 12 | Alex Afanasyev | <!-- |
| 32 | 8 | Alex Afanasyev | * ``sniffer`` Enable/disable sniffing on all or specific Faces. The format of this command is actually is a little bit different and requires one more option: ``<face-id>``: |
| 33 | |||
| 34 | /localhost/nfd/control-header/sniffer/(enable|disable)/<face-id>/<timestamp>/<SignatureInfo>/<SignatureValue> |
||
| 35 | |||
| 36 | 1 | Junxiao Shi | To snif on all faces, ``<face-id>`` should be 0. |
| 37 | 12 | Alex Afanasyev | --> |
| 38 | 8 | Alex Afanasyev | |
| 39 | 3 | Alex Afanasyev | ## LocalControlHeader |
| 40 | |||
| 41 | If command to enable LocalControlHeader is authorized by NFD, all subsequent communication from NFD will include LocalControlHeader as defined below. |
||
| 42 | 1 | Junxiao Shi | 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. |
| 43 | |||
| 44 | 3 | Alex Afanasyev | LocalControlHeader ::= LOCAL-CONTROL-HEADER-TYPE TLV-LENGTH |
| 45 | 4 | Alex Afanasyev | LocalControlInfo |
| 46 | (Interest | Data) |
||
| 47 | 1 | Junxiao Shi | |
| 48 | LocalControlInfo ::= LOCAL-CONTROL-INFO-TYPE TLV-LENGTH |
||
| 49 | 8 | Alex Afanasyev | (IncomingFaceId | |
| 50 | 12 | Alex Afanasyev | NextHopFaceId+) |
| 51 | 4 | Alex Afanasyev | |
| 52 | 1 | Junxiao Shi | IncomingFaceId ::= INCOMING-FACE-ID-TYPE TLV-LENGTH |
| 53 | 4 | Alex Afanasyev | nonNegativeInteger |
| 54 | 1 | Junxiao Shi | |
| 55 | NextHopFaceId ::= NEXT-HOP-FACE-ID-TYPE TLV-LENGTH |
||
| 56 | nonNegativeInteger |
||
| 57 | |||
| 58 | 12 | Alex Afanasyev | |
| 59 | <!-- |
||
| 60 | SnifferInfo) |
||
| 61 | 1 | Junxiao Shi | SnifferInfo ::= SNIFFER-INFO-TYPE TLV-LENGTH |
| 62 | 8 | Alex Afanasyev | ... |
| 63 | 1 | Junxiao Shi | (TBD) |
| 64 | 12 | Alex Afanasyev | --> |
| 65 | 4 | Alex Afanasyev | |
| 66 | 3 | Alex Afanasyev | ## TLV-TYPE assignments |
| 67 | |||
| 68 | Type | Assigned value | Assigned value (hex) |
||
| 69 | 1 | Junxiao Shi | ------------------------------------------- | ----------------- | -------------------- |
| 70 | LocalControlHeader | 109 | 0x6d |
||
| 71 | LocalControlInfo | 110 | 0x6e |
||
| 72 | 4 | Alex Afanasyev | IncomingFaceId | 111 | 0x6f |
| 73 | 8 | Alex Afanasyev | NextHopFaceId | 112 | 0x70 |
| 74 | 12 | Alex Afanasyev | Reserved | 113 | 0x71 |