LocalControlHeader » History » Version 24
Junxiao Shi, 03/22/2014 03:29 PM
1 | 18 | Alex Afanasyev | # NFD Local Control Header |
---|---|---|---|
2 | 3 | Alex Afanasyev | |
3 | 24 | Junxiao Shi | NFD LocalControlHeader is 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, LocalControlHeader allows applications to specify FaceId to which the Interest should be forwarded. |
||
5 | 1 | Junxiao Shi | |
6 | 24 | Junxiao Shi | ## Enabling and disabling LocalControlHeader |
7 | 1 | Junxiao Shi | |
8 | 24 | Junxiao Shi | LocalControlHeader is not enabled initially. |
9 | Application can invoke [[FaceMgmt#Enable a LocalControlHeader feature|faces/enable-local-control]] command to enable a LocalControlHeader feature, |
||
10 | and invoke [[FaceMgmt#Disable a LocalControlHeader feature|faces/disable-local-control]] command to disable a LocalControlHeader feature, |
||
11 | 1 | Junxiao Shi | |
12 | 24 | Junxiao Shi | NFD MUST NOT deliver packets with LocalControlHeader to an application unless the application has enabled at least one LocalControlHeader feature. |
13 | NFD SHOULD ignore a LocalControlHeader field if the corresponding feature is not enabled. |
||
14 | An enable or disable command MAY NOT take effect immediately. |
||
15 | Packets scheduled for transmission before processing the enable or disable command could be delivered or processed in the old state. |
||
16 | 16 | Junxiao Shi | |
17 | 24 | Junxiao Shi | ## LocalControlHeader structure |
18 | 16 | Junxiao Shi | |
19 | 8 | Alex Afanasyev | LocalControlHeader ::= LOCAL-CONTROL-HEADER-TYPE TLV-LENGTH |
20 | 16 | Junxiao Shi | IncomingFaceId? |
21 | 8 | Alex Afanasyev | NextHopFaceId? |
22 | 1 | Junxiao Shi | ...? |
23 | 12 | Alex Afanasyev | (Interest | Data) |
24 | 3 | Alex Afanasyev | |
25 | IncomingFaceId ::= INCOMING-FACE-ID-TYPE TLV-LENGTH |
||
26 | nonNegativeInteger |
||
27 | 15 | Alex Afanasyev | |
28 | 1 | Junxiao Shi | NextHopFaceId ::= NEXT-HOP-FACE-ID-TYPE TLV-LENGTH |
29 | 3 | Alex Afanasyev | nonNegativeInteger |
30 | 1 | Junxiao Shi | |
31 | 24 | Junxiao Shi | Although all fields before `(Interest | Data)` in LocalControlHeader are marked optional, at least one of them must be present. |
32 | 1 | Junxiao Shi | |
33 | 24 | Junxiao Shi | ## IncomingFaceId feature |
34 | |||
35 | This feature allows application to learn the incoming face of each Interest and Data packet. |
||
36 | |||
37 | If this feature is enabled, |
||
38 | when an incoming Interest or Data is delivered to application, |
||
39 | the packet is encapsulated in LocalControlHeader, with IncomingFaceId field is set to the incoming FaceId. |
||
40 | However, Datas from the ContentStore won't have a IncomingFaceId field. |
||
41 | |||
42 | ## NextHopFaceId feature |
||
43 | |||
44 | This feature allows application to pick a nexthop for its Interest. |
||
45 | |||
46 | If this feature is enabled, |
||
47 | application can encapsulate an Interest in LocalControlHeader, and set NextHopFaceId field to the desired nexthop. |
||
48 | |||
49 | **ClientControl strategy** SHOULD be [[StrategyChoice|chosen]] as the effective strategy on the Interest's namespace. |
||
50 | It will honor NextHopFaceId field, and forward Interest to the desired nexthop. |
||
51 | If other strategy is being used, NextHopFaceId has no effect. |
||
52 | 21 | Alex Afanasyev | |
53 | 1 | Junxiao Shi | ## TLV-TYPE assignments |
54 | |||
55 | Type | Assigned value | Assigned value (hex) |
||
56 | ------------------------------------------- | ----------------- | -------------------- |
||
57 | 23 | Alex Afanasyev | LocalControlHeader | 80 | 0x50 |
58 | IncomingFaceId | 81 | 0x51 |
||
59 | NextHopFaceId | 82 | 0x52 |