## 4 Multicast Routing Approaches in DTN
### Buffer-Efficient Multicast Routing in DTN
#### 4.2.1 Buffer Management  
Sociality-based Buffer Management for Multicast Routing: Sociality-based Buffer Management for Multicast Routing (SBMR) [43] includes a buffer management strategy to assist social centrality-based distributed multicast routing. Nodes with a higher social centrality score are selected as forwarding nodes. This method results in a heavier transmission workload on the selected nodes, which now must drop messages more often when the storage is full. When there is an incoming message upon encountering some node, the node will first check if its available buffer is enough to accommodate the message. When the buffer is sufficient, it will accept the message and store it into the buffer. On the contrary, SBMR drops messages with the most copies (i.e., highest replication number) in the network whenever the storage is fully loaded. Consequently, storage space is saved for messages with fewer numbers of copies, and the messages are not well-distributed in the network. Sociality-based Comprehensive Buffer Management for Multicast Routing: A new metric, message Time-To-Live (TTL), is introduced in their extended work on Sociality-based Comprehensive Buffer Management for Multicast Routing (SCBMR) [44] to remove messages with more replicas and with shorter TTL in the network. For example, when node i encounters node j and node i wants to forward message t\({}_{\text{m}}\) node j after the social centrality comparison between two nodes, node j will proceed to check if it has enough buffer to accommodate message \(\mathbf{t}_{m}\), as shown in Algorithm 1. The \(MNT_{m}\) value is computed from the replication number and the \(TTL\) value of the message as follows:  
\[MNT_{m}=a^{*}M\mathit{N}^{i}_{m}-b^{*}TTL_{m},a+b=1 \tag{1}\]  
where \(M\mathit{N}^{i}_{m}\) is the replication number of message \(m\) for multicast and \(TTL_{m}\) is the \(TTL\) value for message \(m\). The values of \(a\) and \(b\) are the tunable parameters to decide the weight of the replication number and \(TTL\) value. Both schemes improve the message delivery ratio without compromising the transmission cost and delivery latency. ```
1:Require: Node i forwards message \(\mathbf{t}_{m}\) to node j
2:if (Node j's free buffer size \(<\mathbf{t}_{m}\) size) then
3: Msg = message with maximum \(\mathrm{MNT}_{m}\) value in Node j's buffer;
4: Node j removes message Msg from its buffer;
5:endif
6: Node j caches incoming message in its buffer;
```  
**Algorithm 1** Buffer management algorithm in SCBMR [44]. Quota-Based Multicast Routing: Quota-Based Multicast Routing (QBMR) [45] exploits contact behavior in selecting relay nodes to multicast messages in DTNs. This scheme is extended from Dynamic Quota-Based Routing (DQBR) [46], which considers only DTN unicast routing. QBMR adopts a quota replication scheme to dynamically generate a different number of message replicas based on the present condition of the network. QBMR reduces the redundant message replicas in the network and results in a higher delivery rate and lower latency. The authors further added a probability-based method to QBMR to remove obsolete messages. Each node maintains an i-list table to record the number of receivers for a multicast message based on the responses from multicast destinations. They will compute the average multicast group size from the table as the threshold to remove multicast messages from the buffer. When the number of receivers for a multicast message exceeds the average group size, this message has a higher probability to be removed if the buffer is full. It will be marked as a frozen message and moved to the temporal region of the buffer. This is to ensure any multicast receiver who join later is able to receive a multicast message from a high contact probability node after a long period. Any incoming message is stored in the normal region and the oldest message will be moved to the temporal region as a frozen message by the drop policy if the normal region is full.