summaryrefslogtreecommitdiffstats
path: root/docs/source/1-architecture.md
blob: 8f3cfc78abd2e377f1a5a28dd1f661cc81a3145b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Data identifiers and locators

Hybrid ICN makes use of data identifiers to name the data produced by an end
host. Data identifiers are encoded using a routable name prefix and a non
routable name suffix to provide the ability to index a single IP packet in an
prefix is unambigous manner. A full data name is composed of 160 bits. A
routable name prefix in IPv4 network is 32 bits long while in IPv6 is 128 bits
long. A name prefix is a valid IPv4 or IPv6 address. The 32 rightmost bits are
used by the applications to index data within the same stream.

A data source that is using the hicn stack is reacheable through IP routing
where a producer socket is listening as the producer name prefix is IP routable.

Locators are IP interface identifiers and are IPv4 or IPv6 addresses. Data
consumers are reacheable through IP routing over their locators.

For requests, the name prefix is stored in the destination address field of the
IP header while the source address field stored the locator of the consumer.


# Producer/Consumer Architecture
Applications make use of the hicn network architecture by using a Prod/Cons API.
Each communication socket is connection-less as a data producer makes data
available to data consumer by pushing data into a named buffer. Consumers are
responsible for pulling data from data producers by sending requests indexing
the full data name which index a single MTU sized data packet. The core

# Packet forwarding
Packet forwarding leverages IP routing as requests are forwarded using name
prefixes and replies using locators.

# Relay nodes
A relay node is implemented by using a packet cache which is used to temporarily
store requests and replies. The relay node acts as a virtual proxy for the data
producers as it caches data packets which can be sent back to data consumer by
using the full name as an index. Requests must be cached and forwarded upstream
towards data producers which will be able reach back the relay nodes by using
the IP locators of the relays. Cached requests store all locators as currently
written in the source address field of the request while requests forwarded
upstream will get the source address rewritten with the relay node locator. Data
packets can reach the original consumers via the relay nodes by using the
requence of cached locators.