Project

General

Profile

KITE » History » Version 10

Davide Pesavento, 12/02/2020 12:34 PM

1 1 Davide Pesavento
# KITE
2
3 10 Davide Pesavento
The **KITE protocol** allows building forwarding paths for prefixes using *authenticated* Interest-Data exchanges between a Mobile Producer (MP) and a trusted Rendezvous Server (RV).
4 1 Davide Pesavento
5 10 Davide Pesavento
An MP sends a **KITE request** (a signed Interest), which is forwarded to the RV because the RV announces a prefix of the name. The KITE request leaves traces in the stateful forwarding plane (PIT entries) of the traversed routers, constructing a reverse forwarding path for Data to be sent back to the MP. The RV will verify the information carried in the KITE request (primarily the signature, hence the phrase "authenticated Interest-Data exchange") and will respond to legitimate requests with a **KITE acknowledgment** (a Data packet). The KITE acknowledgment sent by the RV will trigger intermediate routers to save the reversed forwarding path for Data as Interest forwarding information, for a prefix specified by the name of the Interest-Data exchange.
6 1 Davide Pesavento
7 7 Zhongda Xia
## KITE Request
8 1 Davide Pesavento
9 10 Davide Pesavento
A **KITE request** is a [signed Interest](https://named-data.net/doc/NDN-packet-spec/0.3/signed-interest.html) that carries both a timestamp and a nonce to prevent replay attacks. A KITE request is signed and sent by an MP and verified by an RV.
10 1 Davide Pesavento
11 2 Zhongda Xia
An Interest packet that satisfies the following requirements is a KITE request:
12
13 10 Davide Pesavento
* Conforms to the signed Interest specification.
14
* With the trailing `ParametersSha256DigestComponent` removed, the remaining (leading) part of the name conforms to KITE request name specification (see below).
15
* Optionally, the `ApplicationParameters` element contains the expiration period for the forwarding path. This must be a TLV element of type `ExpirationPeriod` (see [[nfd:ControlCommand]]).
16 1 Davide Pesavento
17 10 Davide Pesavento
KITE request name specification:
18 2 Zhongda Xia
19 10 Davide Pesavento
* Starts with an *RV prefix*, i.e., a prefix announced by an RV.
20
* Followed by a "`32=KITE`" keyword name component.
21
* Ends with a *producer suffix*, i.e., one or more arbitrary name components. The concatenation of an RV prefix and a producer suffix in the same KITE request name is the **producer prefix** specified in this name. The forwarding path to be set up is for the producer prefix.
22 6 Zhongda Xia
23 10 Davide Pesavento
For example, given RV prefix `/RV` and producer suffix `/Alice`, thus making the producer prefix `/RV/Alice`, the full name of the corresponding KITE request should be:
24 6 Zhongda Xia
~~~
25 10 Davide Pesavento
  /RV/32=KITE/Alice/<ParametersSha256DigestComponent>
26 6 Zhongda Xia
~~~
27 7 Zhongda Xia
28 2 Zhongda Xia
## KITE Acknowledgment
29 9 Zhongda Xia
30 10 Davide Pesavento
A **KITE acknowledgment** is a Data packet sent by the RV for an Interest (a KITE request) that passes verification. A KITE request that passes the verification is supposed to be sent by the owner of the specified producer prefix for which the forwarding path is set up.
31 2 Zhongda Xia
32
A Data packet that satisfies the following requirements is a KITE acknowledgement (note that a KITE acknowledgment is always generated in response to a KITE request):
33 1 Davide Pesavento
34 10 Davide Pesavento
* Has the same name as the KITE request.
35
* `ContentType` is 6 (KITE Acknowledgment).
36
* Carries a *prefix announcement* (PA) object as payload (see [[nfd:PrefixAnnouncement]]). The "announced prefix" indicated by the PA object must be the same as the producer prefix specified in the name (refer to KITE request specification for determining the producer prefix).