![](https://csdnimg.cn/release/download_crawler_static/4181018/bg6.jpg)
• The architecture should facilitate user choice and competition where possible. Although not a relevant
factor in the original Internet design, global deployment has taught us that “architecture is not neutral.”
NDN makes a conscious effort to empower end users and enable competition [17].
2.2 The NDN Architecture
Communication in NDN is driven by the receiving end, i.e., the data consumer. To receive data, a
consumer sends out an Interest packet, which carries a name that identifies the desired data (see Figure 1).
For example, a consumer may request /parc/videos/WidgetA.mpg. A router remembers the interface from
which the request comes in, and then forwards the Interest packet by looking up the name in its Forwarding
Information Base (FIB), which is populated by a name-based routing protocol. Once the Interest reaches a
node that has the requested data, a Data packet is sent back, which carries both the name and the content
of the data, together with a signature by the producer’s key (Figure 1). This Data packet traces in reverse
the path created by the Interest packet back to the consumer. Note that neither Interest nor Data packets
carry any host or interface addresses (such as IP addresses); Interest packets are routed towards data
producers based on the names carried in the Interest packets, and Data packets are returned based on the
state information set up by the Interests at each router hop (Figure 2).
1
NDN routers keep both Interests and Data for some period of time. When multiple Interests for the same
data are received from downstream, only the first Interest is sent upstream towards the data source. The
router then stores the Interest in the Pending Interest Table (PIT), where each entry contains the name of
the Interest and a set of interfaces from which the matching Interests have been received. When the Data
packet arrives, the router finds the matching PIT entry and forwards the data to all the interfaces listed in
the PIT entry. The router then removes the corresponding PIT entry, and caches the Data in the Content
Store, which is basically the router’s buffer memory subject to a cache replacement policy. Data takes the
exact same path as the Interest that solicited it, but in the reverse direction. One Data satisfies one Interest
across each hop, achieving hop-by-hop flow balance.
An NDN Data packet is meaningful independent of where it comes from or where it may be forwarded to,
thus the router can cache it to satisfy potential future requests. This enables NDN to automatically support
various functionality without extra infrastructure, including content distribution (many users requesting the
same data at different times), multicast (many users requesting the same data at the same time), mobility
(users requesting data from different locations), and delay-tolerant networking (users having intermittent
connectivity). For example, consider a consumer who is watching a streaming video in a moving vehicle.
The consumer may request some data but then move to a new local network. Though the Data will arrive at
the old location and be dropped, it is cached along the path. When the consumer retransmits the Interest,
it will likely pull the Data from a nearby cache, making the interruption minimal. Data cached close to
consumers improves packet delivery performance and reduces dependency on a particular data source
that may fail due to faults or attacks.
Below we describe each major element of the NDN architecture in detail, identifying benefits of the
design choices and presenting the challenges.
2.2.1 Names
NDN names are opaque to the network, i.e., routers do not know the meaning of a name (although they
know the boundaries between components in a name). This allows each application to choose the naming
scheme that fits its needs and allows the naming schemes to evolve independently from the network.
NDN design assumes hierarchically structured names, e.g., a video produced by PARC may have the
name /parc/videos/WidgetA.mpg, where ’/’ indicates a boundary between name components (it is not part
of the name). This hierarchical structure is useful for applications to represent relationships between pieces
of data. For example, segment 3 of version 1 of the video might be named /parc/videos/WidgetA.mpg/1/3.
The hierarchy also allows routing to scale. While it may be theoretically possible to route on flat names [13],
it is the hierarchical structure of IP addresses that enables aggregation which is essential in scaling to-
day’s routing system. Common structures necessary to allow programs to operate over NDN names can be
1
NDN supports all existing applications, including those that “push” content. For example, to send an email, the client first sends
an Interest to the server to solicit server’s interest in receiving the email. If the server is interested, it will send an Interest to the client
and the client can then send Data packets to the server.
3