# A Performance Analysis of Internet of Things Networking Protocols: Evaluating MQTT, CoAP, OPC UA
## 3 An Overview on IoT Communication Protocols and Frameworks
### Information-Centric Networking Approaches in IoT
#### 3.7.1 Named Data Networking for IoT  
NDN brings in several advantages in the context of IoT scenarios, such as its expressive naming space, support for data fragmentation, intrinsic consumer mobility support, name-based routing [22]. In NDN, consumers express interest on data via sending Interest packets, whose status is kept in routers along the paths traversed, and producers reply with Data packets that match received Interest packets. Data packets traverse the path of Interest packets, following a breadcrumb approach.  
Figure 1 provides a simple illustration for the NDN IoT operation, where C is a device with an application wanting to obtain the temperature from A and B. C first sends an Interest packet with the name prefix _/ndn/temperature_. A and B reply with Data packets with the requested information.  
NDN follows the ICN _store-and-forward_ principle and hence, any node in the network is an NDN router, and holds three different data structures: the _Forwarding Information Base (FIB)_; _Pending Interests Table (PIT)_; _Content Store (CS)_. The FIB holds aggregated name prefixes for data objects matching outgoing Faces (interface abst  
Figure 1: One hop NDN IoT Example, where 2 sensors (**A**), (**B**) publish temperature values, and gateway (**C**) subscribes that information.  
a consumer sends an Interest packet to the network containing the name of the required content. When an NDN node receives an Interest message, it first queries matching data in its local CS. If the data are locally available, a matching Data packet is sent back to the consumer through the same Face. Otherwise, the node updates its PIT table with the Interest packet's name prefix, associated to the incoming Face.  
If there is no match in the PIT, then the node forwards the Interest packet further over the recorded outgoing interface(s) in the FIB. When the Interest packet reaches a potential data provider or a node with a matching Data packet in its CS, a Data packet is generated and sent back via the path bread-crumbed by the respective Interest packet(s). During the forwarding process, each node replicates the Data packet to all recorded incoming interfaces in the matching PIT entry and keep a copy in the local CS, and then deletes the related PIT record. Thus, NDN traffic is self-regulated, and in each link, for the same object, there is at most one Data and one Interest packet.  
The operation of NDN is therefore based on a pull-model, where consumers first express interest about a specific object. Nevertheless, NDN supports a second model, push-based model, derived from applications where data can be directly pushed to multiple consumers, without having these specifically expressing an interest before. As NDN is a network layer solution, push-based models can be implemented by applications in a variety of ways [24].  
Furthermore, in large-scale scenarios NDN supports Interest packet aggregation within the PIT structure (aggregation of multiple Interest requests onto a single aggregate request). In-network caching allows consumers to retrieve cached content from intermediate routers, and not necessarily from producers. The different forwarding strategies (e.g., anycast) allow NDN to take into consideration availability and restrictions of devices.