# Information Centric Networks

#### Problems with today's Networks

* URLs and IP addresses are overloaded with locator and identifier functionality.
* No consistent way to keep track of *identical copies*.
* Information dissemination is inefficient.
  * Cannot benefit from existing copies
  * Can lead to problems like Flash-Crowd effect and Denial of service
* Can't trust a copy received from an un-trusted node
  * Security is host-Centric
  * Based on *securing channels* (encryption) and trusting servers (authentication)
* Application and content providers are independent of each other
  * CDNs focus on web content distributions for major players

![img](/lectures/acn/img/i.png)

**Important requirements for ICNs** (Information Centric Networks)

1. Accessing named resources - not hosts
2. Scalable distribution through replication and caching
3. Good control of resolution / routing and access

## Content-based Routing for ICNs

Apart from routing protocols that use direct identifiers of nodes, networking can take place based directly on content.

* Content can be **collected** from the network, **processed** in the network and **stored** in the network.
* The goal is to provide a network infrastructure capable of providing services better suited to today's application requirements
  * Content distribution and mobility
  * More resilience to disruption and failures

#### Network Evolution

**Traditional networking**

- Host-Centric communications, addressing and end-points

**ICNs**

- Data-Centric communications addressing information
- Decoupling in space - neither sender nor receiver need to know their partner.
- Decoupling in time - *answer* not necessarily directly triggered by a *question*. **asynchronous communication**.

#### Approach

* Named Data Objects (NDOs)
* In-network caching/storage
* Multi-party communication through replication
* Senders decoupled from receivers

### Dissemination Networking

* Data is requested by name, using any and all means available (IP, VPN tunnels, multi-cast, proxies etc)
* Anything that hears the request and has a valid copy of the data can respond.
* The returned data is signed, and optionally secured, so its integrity & association with name can be validated (data-Centric security)

![ICN Stack](img/j.png)

* Change of network abstraction from **named host** to **named content** (content chunks).
* Security is built in - **secures content** and **not the hosts**.
* **Mobility** is present by design.
* Can handle **static** and **dynamic** content.

#### Naming Data

###### Solution 1 - Name the data

- **Flat** - non human readable identifiers
  - `1HJKRH535KJH252JLH3424JLBNL`
- **Hierarchical** - meaningful structured names
  - `/nytimes/sport/baseball/mets/game0224143`

###### Solution 2 - Describe the data

- With a set of tags
  - `baseball, new york, mets`
- With schema that defines attributes, values and relations among attributes

##### Using Names in CCNs (Content Centric Networks)

- The hierarchical structure is used to do *longest match look-ups* which guarantees $$log(n)$$ state scaling for globally accessible data.
- Although CCN names are longer than IP identifiers, their **explicit structure** allows look-ups as efficient as IP's.

### ICN Forwarding

* Consumer *broadcasts* and *interest* over all available communication media
* Interest identifies a *collection of data* whose name has the interest as a prefex.
* Anything that hears the interest and has an element of the collection can respond with that data.

### ICN Transport

* Data that matches an interest, *consumes* it.
* Interest must be re-expressed to get new data.
  * Controlling re-expressions allows for traffic management and congestion control.
* Multiple (distinct) interests in the same collection may be expressed 

### ICN Caching

* Storage and caching are integral part of the ICN service
* All nodes potentially have caches. Requests for data can be satisfied by any node holding a copy in it's cache.
* ICN combines caching at the network edge with in-network caching.
