Project

General

Profile

ControlCommand » History » Version 29

Davide Pesavento, 02/13/2017 11:59 AM

1 13 Junxiao Shi
# Control Command
2 1 Junxiao Shi
3 29 Davide Pesavento
**Control Command** is a mechanism of [[Management|NFD Management protocol]]. This mechanism is useful for altering the state of the forwarder.
4 28 Davide Pesavento
This document defines the request and response format of such commands, and how they should be signed and authenticated.
5 1 Junxiao Shi
6
## Request format
7 9 Anonymous
8 26 Junxiao Shi
Control commands are [[ndn-cxx:CommandInterest|Command Interests]] under a NFD management prefix.
9 1 Junxiao Shi
10 22 Junxiao Shi
The Name for a request Interest has the following form:
11 1 Junxiao Shi
12 26 Junxiao Shi
    /<prefix>/<management-module>/<command-verb>/<control-parameters>/<command-interest-components>
13 1 Junxiao Shi
14 23 Junxiao Shi
* *prefix* is a NFD management prefix.
15
  Unless otherwise noted, all commands use `/localhost/nfd` prefix.
16
  Each individual command MAY specify additional prefixes under which that command could be accepted.
17 22 Junxiao Shi
* *management-module* is the name of management module to which the command needs to be dispatched.
18
* *command-verb* is the command to be executed.
19
* *control-parameters* is a ControlParameters TLV block wrapped in a NameComponent.
20 26 Junxiao Shi
* *command-interest-components* are four additional components defined by [[ndn-cxx:CommandInterest|Command Interest]] spec.
21 1 Junxiao Shi
22 13 Junxiao Shi
### ControlParameters
23 1 Junxiao Shi
24 13 Junxiao Shi
ControlParameters block contains arguments to the command.
25 1 Junxiao Shi
26 14 Junxiao Shi
    ControlParameters   ::= CONTROL-PARAMETERS-TYPE TLV-LENGTH
27
                              Name?
28
                              FaceId?
29 1 Junxiao Shi
                              Uri?
30 14 Junxiao Shi
                              Origin?
31 19 Junxiao Shi
                              Cost?
32 1 Junxiao Shi
                              Flags?
33 26 Junxiao Shi
                              Mask?
34 17 Junxiao Shi
                              Strategy?
35
                              ExpirationPeriod?
36 24 Junxiao Shi
                              FacePersistency?
37 1 Junxiao Shi
    
38 24 Junxiao Shi
    ; Name is defined in NDN packet format specification
39 13 Junxiao Shi
    
40 14 Junxiao Shi
    FaceId              ::= FACE-ID-TYPE TLV-LENGTH
41
                              nonNegativeInteger
42 13 Junxiao Shi
    
43 14 Junxiao Shi
    Uri                 ::= URI-TYPE TLV-LENGTH
44
                              RFC3986 URI in UTF-8 encoding
45 13 Junxiao Shi
    
46 19 Junxiao Shi
    Origin              ::= ORIGIN-TYPE TLV-LENGTH
47 17 Junxiao Shi
                              nonNegativeInteger
48 1 Junxiao Shi
    
49
    Cost                ::= COST-TYPE TLV-LENGTH
50
                              nonNegativeInteger
51 17 Junxiao Shi
    
52 1 Junxiao Shi
    Flags               ::= FLAGS-TYPE TLV-LENGTH 
53
                              nonNegativeInteger
54
    
55 26 Junxiao Shi
    Mask                ::= MASK-TYPE TLV-LENGTH 
56
                              nonNegativeInteger
57
    
58 17 Junxiao Shi
    Strategy            ::= STRATEGY-TYPE TLV-LENGTH
59
                              Name
60
    
61
    ExpirationPeriod    ::= EXPIRATION-PERIOD-TYPE TLV-LENGTH
62 1 Junxiao Shi
                              nonNegativeInteger  
63 24 Junxiao Shi
64 26 Junxiao Shi
    ; FacePersistency is defined in FaceMgmt section
65 24 Junxiao Shi
66 1 Junxiao Shi
This definition exhausts all possible fields used in existing commands.
67 13 Junxiao Shi
68 1 Junxiao Shi
Each individual command MUST specify:
69 13 Junxiao Shi
70
* a list of required fields: those fields MUST be present
71
* a list of optional fields: those fields MAY be present
72 28 Davide Pesavento
* the semantics of each required and optional field
73 13 Junxiao Shi
74 1 Junxiao Shi
A field that is neither required nor optional for a command MUST NOT be present in a ControlParameter given to that command.
75
76 17 Junxiao Shi
Each individual command MAY impose additional constraints on certain fields.
77 1 Junxiao Shi
78
## Response format
79
80
A response from the command interface is a Data that matches the request Interest.
81 13 Junxiao Shi
The payload of this Data is a ControlResponse block.
82 1 Junxiao Shi
83
    ControlResponse ::= CONTROL-RESPONSE-TYPE TLV-LENGTH
84
                          StatusCode
85
                          StatusText
86 26 Junxiao Shi
                          <body>
87 1 Junxiao Shi
    
88
    StatusCode      ::= STATUS-CODE-TYPE TLV-LENGTH
89
                          nonNegativeInteger
90
    
91 13 Junxiao Shi
    StatusText      ::= STATUS-TEXT-TYPE TLV-LENGTH
92 2 Junxiao Shi
                          string in UTF-8
93 1 Junxiao Shi
    
94 20 Junxiao Shi
    <body>          ::= zero or more arbitrary TLV blocks
95 1 Junxiao Shi
96 13 Junxiao Shi
### StatusCode
97 2 Junxiao Shi
98 28 Davide Pesavento
StatusCode loosely follows the HTTP semantics described in [RFC 7231](https://tools.ietf.org/html/rfc7231#section-6).
99 16 Junxiao Shi
100 28 Davide Pesavento
* Codes between 100 and 399 represent a success.
101
* Codes between 400 and 499 represent a client error.
102
* Codes between 500 and 599 represent a server error.
103 16 Junxiao Shi
104 13 Junxiao Shi
Common codes include:
105 1 Junxiao Shi
106
StatusCode | Description
107
-----------|------------------------
108 13 Junxiao Shi
200        | OK
109 2 Junxiao Shi
400        | ControlParameters is incorrect
110 16 Junxiao Shi
403        | Command Interest is not authorized
111 28 Davide Pesavento
404        | Resource (e.g., face, prefix, ...) not found
112 19 Junxiao Shi
501        | Module or verb is not supported
113
503        | Service not available
114 1 Junxiao Shi
115
Each individual command MAY define additional codes.
116 13 Junxiao Shi
117 1 Junxiao Shi
### \<body>
118 13 Junxiao Shi
119 2 Junxiao Shi
Additional elements are allowed at the end of ControlResponse.
120 13 Junxiao Shi
121 1 Junxiao Shi
Each individual command MAY define the type and meaning of \<body>.
122 14 Junxiao Shi
123 1 Junxiao Shi
Unless otherwise defined by an individual command,
124 14 Junxiao Shi
\<body> is the ControlParameters passed into this command for all successful responses,
125
and \<body> is empty for all failure responses.
126 1 Junxiao Shi
127
## TLV-TYPE assignments
128 13 Junxiao Shi
129 1 Junxiao Shi
Type                                        | Assigned value    | Assigned value (hex)
130 13 Junxiao Shi
------------------------------------------- | ----------------- | --------------------
131 1 Junxiao Shi
ControlParameters                           | 104               | 0x68
132 13 Junxiao Shi
FaceId                                      | 105               | 0x69
133 1 Junxiao Shi
Uri                                         | 114               | 0x72
134 13 Junxiao Shi
Origin                                      | 111               | 0x6f
135 19 Junxiao Shi
Cost                                        | 106               | 0x6a
136 1 Junxiao Shi
Flags                                       | 108               | 0x6c
137 26 Junxiao Shi
Mask                                        | 112               | 0x70
138 5 Alex Afanasyev
Strategy                                    | 107               | 0x6b
139 1 Junxiao Shi
ExpirationPeriod                            | 109               | 0x6d
140 24 Junxiao Shi
ControlResponse                             | 101               | 0x65
141 5 Alex Afanasyev
StatusCode                                  | 102               | 0x66
142 13 Junxiao Shi
StatusText                                  | 103               | 0x67
143 26 Junxiao Shi
(reserved, formerly LocalControlFeature)    | 110               | 0x6e