Project

General

Profile

FaceMgmt » History » Version 119

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