# Routing Protocols for Delay Tolerant Networks:
## 2 Reference Architecture
### Basic Components  
The internal architecture of a DTN node is shown in Figure 1. Upon contact, a node exchanges a summary of the information necessary to update its knowledge (_i.e._, a local view) on the environment in which it operates. As an example, it can exchange the list of messages in the queue or the list of prior encountered nodes. This knowledge drives all of the subsequent actions and is used by queue management (QM) to assign a rank to the messages in the queue. If the queue is full, queue management applies a suitable eviction policy to make room for new incoming messages. The forwarding policy (FW) selects the messages to be forwarded, which are possibly duplicated (Replication (R) in order to improve the effectiveness of the protocol. Figure 1: Node architecture. Queue Management (QM)_ defines a total ordering on the messages in the queue on the basis of the node's knowledge. QM orders all of the messages, also those ones that will not be taken into consideration as possible candidates to be forwarded. When new messages must be accommodated in the queue and there is no room, the eviction policy selects the messages to be discarded according to that ordering. The intrinsic delay of DTN applications implies that messages can be enqueued for a long time. Due to the limited buffer size of DTN nodes, an efficient queuing management policy must be adopted to avoid the eviction of important messages. In some cases, more than one queuing policy is combined to produce more efficient message ordering [29]. In the following, we briefly discuss the main QM policies:  
* First-In-First-Out (FIFO) is the default QM policy. * Destination independent, where QM uses only parameters that are not related to the destination, such as message hop count [29], forward transmission count and message size [25], and other types listed in [30]. * Destination dependent: In this case, QM uses parameters dependent on the destination. In [29], the cost to reach the destination is computed using Dijkstra, while [18] estimates the delay. The work in [6] uses the message fault tolerance, which is an indicator of the importance of the fact that a message reaches its destination (this is related to the redundancy of the message). Forwarding (FW) selects the subset of messages in the queue to be forwarded. In most cases, the messages are selected on the basis of the same ordering defined by the QM, but in some cases [18; 29], a new ordering among messages can be employed. Contrary to what happens for QM, this new ordering is defined only with respect to the current contact and lasts only for the contact time (_i.e._, the time the two nodes can communicate). In other words, the new ordering is only used to define a priority on the messages to be forwarded to the current contact. Briefly, the main FW policies are:  
* Direct-delivery: The message is only delivered to the destination (_i.e._, no intermediate nodes are employed). * Always: Upon contact, the message is always forwarded. This policy requires low computational power, but can lead to a very high number of transmissions. * Knowledge based: Messages are forwarded based on the current knowledge in terms of contextual, historical or social information. Contextual information regards the knowledge that can be inferred by the node only based on its current status, such as battery level, speed, direction, _etc._ Historical information is obtained over time and is used to evaluate future behaviors of the network; inter-contact time, history of encounters, age of encounters and contact time are examples of such information. Finally, considering that in many DTN scenarios, nodes are carried by humans, social information is used to describe the relationships among the users in order to predict social behaviors that can be used to improve the effectiveness of the forwarding policy. Replication (R) controls and bounds the number of copies of a message in the network and is used to increase the robustness of the protocols.