Project

General

Profile

FaceMgmt » History » Version 108

Davide Pesavento, 03/02/2020 01:15 PM

1 20 Junxiao Shi
# Face Management
2 1 Junxiao Shi
3 82 Davide Pesavento
{{>toc}}
4 38 Alex Afanasyev
5 20 Junxiao Shi
**Face Management** is a module of [[Management|NFD Management protocol]].
6
It provides:
7 1 Junxiao Shi
8 100 Davide Pesavento
* commands to create, modify, and destroy faces
9
* a dataset containing the description of all active faces and their counters
10
* a dataset containing the description of all active channels
11
* a notification stream for face events
12 1 Junxiao Shi
13 45 Junxiao Shi
Face Management commands, datasets, and notifications are available under namespace `ndn:/localhost/nfd/faces`.
14 12 Alex Afanasyev
15
16 20 Junxiao Shi
## FaceUri
17 1 Junxiao Shi
18 27 Junxiao Shi
A FaceUri represents the underlying protocol and address used by a Face.  
19
Every Face has two FaceUris: one for local endpoint, and the other for remote endpoint.
20 1 Junxiao Shi
21 27 Junxiao Shi
### UDP
22 9 Junxiao Shi
23 30 Junxiao Shi
`udp[4|6]://<IP-or-host>[:<port>]`  
24 2 Alex Afanasyev
25 9 Junxiao Shi
Examples:
26 1 Junxiao Shi
27 20 Junxiao Shi
* `udp4://192.0.2.1:6363` (canonical form)
28
* `udp6://[2001:db8::1]:6363` (canonical form)
29 71 Alex Afanasyev
* `udp6://[fe80::1068:dddb:fe26:fe3f%en0]:6363` (canonical form for link-local IPv6 addresses)
30
* `udp6://[fe80::1068:dddb:fe26:fe3f%25en0]:6363` (equivalent, but not canonical, version of the above FaceUri)
31 1 Junxiao Shi
* `udp://192.0.2.1` (remote-port defaults to 6363)
32
* `udp://example.net:6363`
33
* `udp4://example.net:6363` (resolve hostname to IPv4 address only)
34 9 Junxiao Shi
* `udp6://example.net:6363` (resolve hostname to IPv6 address only)
35 27 Junxiao Shi
* `udp4://224.0.23.170:56363` (multicast, canonical form)
36 1 Junxiao Shi
37 103 Davide Pesavento
LocalUri of a netdev-bound UDP face has the form:
38 61 Davide Pesavento
39 103 Davide Pesavento
`udp[4|6]+dev://<interface-name>:<port>`
40 61 Davide Pesavento
41 1 Junxiao Shi
This is only used in face dataset.
42 61 Davide Pesavento
43 51 Junxiao Shi
Examples:
44
45 60 Junxiao Shi
* `udp4+dev://eth1:6363`
46
* `udp6+dev://en0:6363`
47 51 Junxiao Shi
48 1 Junxiao Shi
### TCP
49
50 30 Junxiao Shi
`tcp[4|6]://<IP-or-host>[:<port>]`
51 1 Junxiao Shi
52
Examples:
53
54 20 Junxiao Shi
* `tcp4://192.0.2.1:6363` (canonical form)
55
* `tcp6://[2001:db8::1]:6363` (canonical form)
56 71 Alex Afanasyev
* `tcp6://[fe80::1068:dddb:fe26:fe3f%en0]:6363` (canonical form for link-local IPv6 addresses)
57
* `tcp6://[fe80::1068:dddb:fe26:fe3f%25en0]:6363` (equivalent, but not canonical, version of the above FaceUri)
58 1 Junxiao Shi
* `tcp://192.0.2.1` (remote-port defaults to 6363)
59
* `tcp://example.net:6363`
60 9 Junxiao Shi
* `tcp4://example.net:6363` (resolve hostname to IPv4 address only)
61 1 Junxiao Shi
* `tcp6://example.net:6363` (resolve hostname to IPv6 address only)
62
63
### UNIX stream
64
65 9 Junxiao Shi
`unix://<path>`
66 1 Junxiao Shi
67
Examples:
68
69 61 Davide Pesavento
* `unix:///var/run/nfd.sock` (note that there are three forward-slashes after 'unix:')
70 1 Junxiao Shi
71 84 Davide Pesavento
### File descriptor
72 30 Junxiao Shi
73
`fd://<file-descriptor>`
74
75
Examples:
76
77
* `fd://6`
78
79 1 Junxiao Shi
### Ethernet
80 27 Junxiao Shi
81 42 Junxiao Shi
`ether://[<MAC>]`
82 1 Junxiao Shi
83
Examples:
84 42 Junxiao Shi
85
* `ether://[08:00:27:01:01:01]`
86 1 Junxiao Shi
* `ether://[33:33:01:01:01:01]` (multicast)
87
88 84 Davide Pesavento
### Network device
89 1 Junxiao Shi
90 61 Davide Pesavento
`dev://<interface-name>`
91 30 Junxiao Shi
92
Examples:
93
94 1 Junxiao Shi
* `dev://eth0`
95
96 103 Davide Pesavento
### Underlying protocol and FaceUri schemes
97 1 Junxiao Shi
98 67 Junxiao Shi
Underlying protocol     | Remote FaceUri scheme            | Local FaceUri scheme
99 1 Junxiao Shi
----------------------- | -------------------------------- | --------------------------
100 67 Junxiao Shi
IPv4 UDP unicast        | udp4                             | udp4
101
IPv6 UDP unicast        | udp6                             | udp6
102 103 Davide Pesavento
IPv4 UDP multicast      | udp4 (multicast group)           | udp4
103
IPv6 UDP multicast      | udp6 (multicast group)           | udp6
104
IPv4 UDP netdev-bound   | udp4                             | udp4+dev
105
IPv6 UDP netdev-bound   | udp6                             | udp6+dev
106 67 Junxiao Shi
IPv4 TCP                | tcp4                             | tcp4
107
IPv6 TCP                | tcp6                             | tcp6
108
UNIX stream             | fd (file descriptor on NFD side) | unix (socket path)
109
Ethernet unicast        | ether                            | dev
110
Ethernet multicast      | ether                            | dev
111
WebSocket               | wsclient                         | ws
112 46 Junxiao Shi
113 108 Davide Pesavento
## Face Properties
114 46 Junxiao Shi
115
**FaceScope** indicates whether the face is local for [[ScopeControl|scope control]] purposes.
116
117
* non-local(=0)
118
* local(=1)
119
120
**FacePersistency** indicates whether the face is persistent.
121
122
* on-demand(=1), face closes if it remains idle for some time
123
* persistent(=0), face remains open until it's explicitly destroyed or there's a transport failure
124
* permanent(=2), face remains open until it's explicitly destroyed; transport failures will be recovered internally
125
126
**LinkType** indicates the type of communication link.
127
128
* point-to-point(=0), communication with one peer
129
* multi-access(=1), communication with a multicast group
130 75 Davide Pesavento
* ad-hoc(=2), communication over a wireless ad hoc network
131 52 Junxiao Shi
132
**LocalFieldsEnabled** indicates whether the face allows [[NDNLPv2]] NextHopFaceId, CachePolicy, IncomingFaceId fields.
133
134
* yes(=1), allows these fields; this is valid only if FaceScope=local
135
* no(=0), disallows these fields
136
137 74 Eric Newberry
**LpReliabilityEnabled** indicates whether the face has the [[NDNLPv2]] reliability feature enabled.
138 69 Eric Newberry
139
* yes(=1), enables this feature
140
* no(=0), disables this feature
141 1 Junxiao Shi
142 74 Eric Newberry
**CongestionMarkingEnabled** indicates whether the face has congestion marking based upon send queue length enabled.
143
144
* yes(=1), enables this feature
145
* no(=0), disables this feature
146
147
**BaseCongestionMarkingInterval** indicates the base marking interval for congestion marking.
148
149 102 Davide Pesavento
* The value of this attribute is the base marking interval in nanoseconds, which is used to compute the interval at which congested packets will be marked.
150 74 Eric Newberry
151
**DefaultCongestionThreshold** indicates the default congestion threshold if the face does not support retrieving the send queue capacity.
152
153 102 Davide Pesavento
* The value of this attribute is the default congestion threshold in bytes.
154 74 Eric Newberry
155 85 Eric Newberry
**Mtu** contains a user-specified MTU to override the automatic MTU of the transport.
156
157 107 Eric Newberry
* The value of this attribute is the override MTU of the transport in bytes. The face will use the lesser of this value and the automatic MTU of the transport.
158 85 Eric Newberry
159 52 Junxiao Shi
### Flags and Mask
160
161
Some attributes are collected as inclusive OR into a **Flags** field in commands and datasets.
162
These attributes are: (bit 0 is the least significant bit)
163
164
* bit 0: LocalFieldsEnabled
165 1 Junxiao Shi
* bit 1: LpReliabilityEnabled
166 74 Eric Newberry
* bit 2: CongestionMarkingEnabled
167 55 Junxiao Shi
168 1 Junxiao Shi
## Control Commands
169
170 20 Junxiao Shi
[[ControlCommand]] **management-module**: `faces`
171 41 Junxiao Shi
172
### Create a face
173 1 Junxiao Shi
174
**command-verb**: `create`
175 46 Junxiao Shi
176
ControlParameters fields:
177 1 Junxiao Shi
178
* **Uri** (required): canonical remote FaceUri of the face to create.
179 72 Davide Pesavento
* **LocalUri** (optional): canonical local FaceUri of the face to create; e.g., FaceUri of the local interface for an Ethernet unicast face.
180 108 Davide Pesavento
* **FacePersistency** (optional): either *persistent* or *permanent*; creating *on-demand* faces is not permitted. The default is *persistent*. See "face properties" for more information.
181
* **BaseCongestionMarkingInterval** (optional): see "face properties".
182
* **DefaultCongestionThreshold** (optional): see "face properties".
183
* **Mtu** (optional): see "face properties".
184
* **Flags** (optional): see "face properties".
185 83 Davide Pesavento
* **Mask** (optional): MUST be specified if *Flags* is present, and omitted if *Flags* is omitted.
186 1 Junxiao Shi
187 65 Davide Pesavento
This command allows the creation of UDP unicast, Ethernet unicast, and TCP faces only.  
188 50 Junxiao Shi
If the command succeeds, the \<body> of the ControlResponse block contains the ControlParameters describing the current properties of the created face:
189 1 Junxiao Shi
190 64 Alex Afanasyev
* **FaceId**
191 1 Junxiao Shi
* **Uri**
192 64 Alex Afanasyev
* **LocalUri**
193 1 Junxiao Shi
* **FacePersistency**
194 78 Eric Newberry
* **BaseCongestionMarkingInterval** (optional)
195
* **DefaultCongestionThreshold** (optional)
196 85 Eric Newberry
* **Mtu** (optional)
197 90 Eric Newberry
* **Flags**: contains effective values for the *LocalFieldsEnabled*, *LpReliabilityEnabled*, and *CongestionMarkingEnabled* bits.
198 66 Davide Pesavento
199 97 Davide Pesavento
If this creation would conflict with an existing face (e.g., same underlying protocol and remote endpoint), the command fails with StatusCode 409, and the \<body> of the ControlResponse block contains the ControlParameters describing the existing face, with the same fields as above.
200 52 Junxiao Shi
201 1 Junxiao Shi
If the request attempts to create a face other than UDP unicast, Ethernet unicast, or TCP, or if a static property specified in the request is not acceptable, the command fails with StatusCode 406.
202 79 Eric Newberry
203 1 Junxiao Shi
If face creation fails due to a socket error (e.g. TCP connection timeout), the command fails with StatusCode 504.
204
205 88 Eric Newberry
If *BaseCongestionMarkingInterval* or *DefaultCongestionThreshold* are omitted from the ControlParameters sent with the creation command, the omitted static properties are left at their implementation-defined default values.
206 1 Junxiao Shi
207 107 Eric Newberry
If *Mtu* is omitted from the ControlParameters sent with the creation command, no override MTU is specified and the automatic MTU of the transport will be used. A forwarder MAY impose an implementation-defined minimum to the override MTU specified during face creation. The current minimum in NFD is 64 bytes. In the response, the *Mtu* field in ControlParameters contains the effective MTU of the face (in bytes), capped at a maximum of `MAX_NDN_PACKET_SIZE` (8800 bytes), even if the MTU of the underlying transport is infinite. If *Mtu* is omitted from the response, the face and/or forwarder does not support MTU reporting.
208 85 Eric Newberry
209 84 Davide Pesavento
### Update the static properties of a face
210 1 Junxiao Shi
211 52 Junxiao Shi
**command-verb**: `update`
212 1 Junxiao Shi
213
ControlParameters fields:
214 64 Alex Afanasyev
215
* **FaceId** (optional)
216 108 Davide Pesavento
* **FacePersistency** (optional): one of *on-demand*, *persistent*, or *permanent*. See "face properties" for more information.
217
* **BaseCongestionMarkingInterval** (optional): see "face properties".
218
* **DefaultCongestionThreshold** (optional): see "face properties".
219
* **Mtu** (optional): see "face properties".
220
* **Flags** (optional): allows *LocalFieldsEnabled*, *LpReliabilityEnabled*, and *CongestionMarkingEnabled* only. See "face properties" for more information.
221 81 Davide Pesavento
* **Mask** (optional): MUST be specified if *Flags* is present, and omitted if *Flags* is omitted.
222 52 Junxiao Shi
223 101 Davide Pesavento
If *FaceId* is omitted or is set to zero, it is implied to be that of the requesting face (self-update).
224
If the face does not exist, the command fails with StatusCode 404.
225 1 Junxiao Shi
226 101 Davide Pesavento
The static properties of the face are updated as indicated.
227 81 Davide Pesavento
If an optional property field is omitted or a bitfield is zero in *Mask*, that static property remains unchanged.
228 1 Junxiao Shi
If no static properties are changed, this command does nothing, but is still considered successful.
229 55 Junxiao Shi
230 1 Junxiao Shi
If the command succeeds, \<body> in ControlResponse block contains ControlParameters describing the current properties of the face:
231
232
* **FaceId**
233
* **FacePersistency**
234 78 Eric Newberry
* **BaseCongestionMarkingInterval** (optional)
235
* **DefaultCongestionThreshold** (optional)
236 106 Eric Newberry
* **Mtu** (optional)
237 81 Davide Pesavento
* **Flags**: contains effective values for *LocalFieldsEnabled*, *LpReliabilityEnabled*, and *CongestionMarkingEnabled* bits.
238 1 Junxiao Shi
239
If any of the requested changes is invalid, none of the changes should be performed, and this command fails with StatusCode 409.
240 81 Davide Pesavento
The \<body> in ControlResponse block contains ControlParameters that includes only invalid fields; if some of the bit fields chosen in *Flags*+*Mask* is invalid, the \<body> block should also contain a *Mask* field indicating which bits are invalid, and echo back the original *Flags* field.
241
If the request had been sent without those fields (or bitfields in *Mask*), it would have been successful.
242 20 Junxiao Shi
243 1 Junxiao Shi
### Destroy a face
244 20 Junxiao Shi
245 26 Junxiao Shi
**command-verb:** `destroy`
246 20 Junxiao Shi
247 39 Junxiao Shi
ControlParameters fields:
248 1 Junxiao Shi
249 64 Alex Afanasyev
* **FaceId** (required)
250 39 Junxiao Shi
251 1 Junxiao Shi
If the specified face does not exist, this command does nothing, but is still considered successful.
252
253 40 Junxiao Shi
## Face Dataset
254 1 Junxiao Shi
255
Description and counters of all active faces are published as a [[StatusDataset|Status Dataset]] at `ndn:/localhost/nfd/faces/list`.
256 39 Junxiao Shi
257
Each face is represented by a **FaceStatus** block:
258 1 Junxiao Shi
259 39 Junxiao Shi
    FaceStatus      ::= FACE-STATUS-TYPE TLV-LENGTH
260
                          FaceId
261 99 Davide Pesavento
                          Uri
262 39 Junxiao Shi
                          LocalUri
263 1 Junxiao Shi
                          ExpirationPeriod?
264
                          FaceScope
265
                          FacePersistency
266
                          LinkType
267 78 Eric Newberry
                          BaseCongestionMarkingInterval?
268 1 Junxiao Shi
                          DefaultCongestionThreshold?
269 85 Eric Newberry
                          Mtu?
270 1 Junxiao Shi
                          NInInterests
271 67 Junxiao Shi
                          NInData
272 39 Junxiao Shi
                          NInNacks
273 67 Junxiao Shi
                          NOutInterests
274 49 Junxiao Shi
                          NOutData
275
                          NOutNacks
276 46 Junxiao Shi
                          NInBytes
277 1 Junxiao Shi
                          NOutBytes
278 96 Alex Afanasyev
                          Flags
279 46 Junxiao Shi
280
    Uri             ::= URI-TYPE TLV-LENGTH
281 39 Junxiao Shi
                          FaceUri in UTF-8 encoding
282 46 Junxiao Shi
283 1 Junxiao Shi
    LocalUri        ::= LOCAL-URI-TYPE TLV-LENGTH
284 46 Junxiao Shi
                          FaceUri in UTF-8 encoding
285 1 Junxiao Shi
    
286
    ; other TLVs have nonNegativeInteger as value
287
288 40 Junxiao Shi
* **Uri** is a FaceUri representing remote endpoint.
289 39 Junxiao Shi
* **LocalUri** is a FaceUri representing local endpoint.
290 40 Junxiao Shi
* **ExpirationPeriod** is the remaining lifetime of this face.
291 46 Junxiao Shi
  If this field is omitted, the face has infinite lifetime.
292 40 Junxiao Shi
  Currently, this is applicable to on-demand datagram faces only.
293 46 Junxiao Shi
* **FaceScope** indicates whether the face is local for [[ScopeControl|scope control]] purposes.
294 108 Davide Pesavento
  See "face properties" for more information.
295 40 Junxiao Shi
* **FacePersistency** indicates whether the face is persistent.
296 108 Davide Pesavento
  See "face properties" for more information.
297 52 Junxiao Shi
* **LinkType** indicates the type of communication link
298 108 Davide Pesavento
  See "face properties" for more information.
299 77 Eric Newberry
* **BaseCongestionMarkingInterval** indicates the base interval used to compute the interval at which congested packets will be marked (in nanoseconds).
300 108 Davide Pesavento
  See "face properties" for more information.
301 76 Davide Pesavento
* **DefaultCongestionThreshold** indicates the default threshold for congestion if the face does not support retrieving the send queue capacity (in bytes).
302 108 Davide Pesavento
  See "face properties" for more information.
303 94 Davide Pesavento
* **Mtu** contains the effective MTU of the face (in bytes), capped at `MAX_NDN_PACKET_SIZE` (8800 bytes), even if the MTU of the underlying transport is infinite. If this field is omitted, the forwarder and/or face does not support MTU reporting.
304 108 Davide Pesavento
  See "face properties" for more information.
305 46 Junxiao Shi
* **NInInterests**: number of incoming Interest packets since the face is established.
306 67 Junxiao Shi
* **NInData** counts the number of incoming Data packets since the face is established.
307 46 Junxiao Shi
* **NInNacks** counts the number of incoming Nack packets since the face is established.
308 1 Junxiao Shi
* **NOutInterests** counts the number of outgoing Interest packets since the face is established.
309 67 Junxiao Shi
* **NOutData** counts the number of outgoing Data packets since the face is established.
310 37 Junxiao Shi
* **NOutNacks** counts the number of outgoing Nack packets since the face is established.
311
* **NInBytes** counts the number of bytes of link layer packets received via this face.
312
  This counter is initialized to zero when the face is established, and can wrap around after overflowing unsigned 64-bit integer range.
313 1 Junxiao Shi
* **NOutBytes** counts the number of bytes of link layer packets sent via this face.
314
  This counter is initialized to zero when the face is established, and can wrap around after overflowing unsigned 64-bit integer range.
315 98 Davide Pesavento
* **Flags** contains these bitfields: *LocalFieldsEnabled*, *LpReliabilityEnabled*, *CongestionMarkingEnabled*.
316 108 Davide Pesavento
  See "face properties" for more information.
317 37 Junxiao Shi
318 84 Davide Pesavento
### Query operation
319 1 Junxiao Shi
320 37 Junxiao Shi
The query operation allows one to retrieve a subset of face dataset that contains faces satisfying a filter.
321
322
To run a query, the consumer should express an Interest with Name: `ndn:/localhost/nfd/faces/query/<filter>`, where `<filter>` is a **FaceQueryFilter** block that specifies zero or more conditions.
323
324
    FaceQueryFilter ::= FACE-QUERY-FILTER-TYPE TLV-LENGTH
325 40 Junxiao Shi
                          FaceId?
326
                          UriScheme?
327
                          Uri?
328 37 Junxiao Shi
                          LocalUri?
329
                          FaceScope?
330 1 Junxiao Shi
                          FacePersistency?
331 37 Junxiao Shi
                          LinkType?
332
    
333
    UriScheme       ::= URI-SCHEME-TYPE TLV-LENGTH
334
                          string in UTF-8
335
336 40 Junxiao Shi
* **FaceId** permits a face if its FaceId equals the value
337
* **UriScheme** permits a face if the scheme part of its local FaceUri or remote FaceUri equals the value
338
* **Uri** permits a face if its remote FaceUri equals the value
339 1 Junxiao Shi
* **LocalUri** permits a face if its local FaceUri equals the value
340
* **FaceScope** permits a face if its *FaceScope* attribute equals the value
341 39 Junxiao Shi
* **FacePersistency** permits a face if its *FacePersistency* attribute equals the value
342 37 Junxiao Shi
* **LinkType** permits a face if its *LinkType* attribute equals the value
343
344
A face must satisfy ALL conditions to satisfy the filter.
345 1 Junxiao Shi
Faces that satisfy the filter are represented by **FaceStatus** blocks, and published as a [[StatusDataset]] under the Interest Name (a Data packet's Name would be `ndn:/localhost/nfd/faces/query/<filter>/<version>/<segment>`).
346 37 Junxiao Shi
347 41 Junxiao Shi
Examples of filters:
348 1 Junxiao Shi
349 75 Davide Pesavento
* a specific face: `FaceId=260`
350
* a specific TCP tunnel: `Uri=tcp4://192.0.2.1:6363`  
351
  (note: FaceUri must precisely match the canonical form: use either "tcp4" or "tcp6" instead of "tcp", use IP address instead of domain name, include port number)
352
* all TCP tunnels: `UriScheme=tcp`  
353
  (note: "tcp" permits both "tcp4" and "tcp6", "udp" permits both "udp4" and "udp6")
354
* all UDP multi-access faces: `UriScheme=udp` && `LinkType=multi-access`
355
* all Ethernet faces: `UriScheme=ether`  
356
  (note: UriScheme matches against both local and remote FaceUri, "dev" also works)
357 1 Junxiao Shi
* all faces: no condition  
358 75 Davide Pesavento
  (note: this is equivalent to face dataset, and face dataset should be preferred for this purpose)
359 33 Junxiao Shi
360
## Channel Dataset
361
362 20 Junxiao Shi
Description of all active channels is published as a [[StatusDataset|Status Dataset]] at `ndn:/localhost/nfd/faces/channels`.
363 1 Junxiao Shi
364
Each channel is represented by a **ChannelStatus** block:
365 20 Junxiao Shi
366
    ChannelStatus    := CHANNEL-STATUS-TYPE TLV-LENGTH
367 21 Alex Afanasyev
                          LocalUri
368 20 Junxiao Shi
369 83 Davide Pesavento
* **LocalUri** is a FaceUri representing the channel's local endpoint.
370 21 Alex Afanasyev
371 37 Junxiao Shi
## Face Status Change Notification
372
373
Face status change events are published as a [[Notification|Notification Stream]] at `ndn:/localhost/nfd/faces/events`.
374 1 Junxiao Shi
Notifications of all faces are sent into the same notification stream.
375 37 Junxiao Shi
376 83 Davide Pesavento
The Content of each notification Data packet is a **FaceEventNotification** block:
377 23 Alex Afanasyev
378 37 Junxiao Shi
    FaceEventNotification ::= FACE-EVENT-NOTIFICATION-TYPE TLV-LENGTH
379 40 Junxiao Shi
                                FaceEventKind
380
                                FaceId
381
                                Uri
382 25 Junxiao Shi
                                LocalUri
383 23 Alex Afanasyev
                                FaceScope
384
                                FacePersistency
385 58 Eric Newberry
                                LinkType
386 25 Junxiao Shi
                                Flags
387 23 Alex Afanasyev
    
388 9 Junxiao Shi
    FaceEventKind         ::= FACE-EVENT-KIND-TYPE TLV-LENGTH
389
                                nonNegativeInteger
390
391 1 Junxiao Shi
**FaceEventKind** indicates the kind of event. Its possible values are:
392 34 Junxiao Shi
393 83 Davide Pesavento
* 1 = face is created
394
* 2 = face is destroyed
395
* 3 = face goes UP (from DOWN state)
396
* 4 = face goes DOWN (from UP state)
397 32 Junxiao Shi
398 20 Junxiao Shi
## TLV-TYPE assignments
399
400
Type                                        | Assigned value    | Assigned value (hex)
401 39 Junxiao Shi
------------------------------------------- | ----------------- | --------------------
402 40 Junxiao Shi
FaceStatus                                  | 128               | 0x80
403
LocalUri                                    | 129               | 0x81
404
ChannelStatus                               | 130               | 0x82
405 75 Davide Pesavento
UriScheme                                   | 131               | 0x83
406 1 Junxiao Shi
FaceScope                                   | 132               | 0x84
407
FacePersistency                             | 133               | 0x85
408
LinkType                                    | 134               | 0x86
409 74 Eric Newberry
BaseCongestionMarkingInterval               | 135               | 0x87
410 1 Junxiao Shi
DefaultCongestionThreshold                  | 136               | 0x88
411 85 Eric Newberry
Mtu                                         | 137               | 0x89
412 67 Junxiao Shi
NInInterests                                | 144               | 0x90
413 48 Junxiao Shi
NInData                                     | 145               | 0x91
414 1 Junxiao Shi
NInNacks                                    | 151               | 0x97
415 67 Junxiao Shi
NOutInterests                               | 146               | 0x92
416 1 Junxiao Shi
NOutData                                    | 147               | 0x93
417
NOutNacks                                   | 152               | 0x98
418
NInBytes                                    | 148               | 0x94
419 39 Junxiao Shi
NOutBytes                                   | 149               | 0x95
420 1 Junxiao Shi
FaceQueryFilter                             | 150               | 0x96
421
FaceEventNotification                       | 192               | 0xc0
422
FaceEventKind                               | 193               | 0xc1
423
(reserved, formerly FaceFlags)              | 194               | 0xc2