## 3 Countermeasure to Suppression Attack
### Overview of Multicast Protocol  
Multicast protocol for low power and lossy networks, also referred to as MPL [4], is a IPv6 multicast forwarding protocol in resource-constrained networks. The MPL disseminates messages to all the nodes within the same MPL domain without the need of constructing or maintaining any multicast forwarding topology. To exchange control-plane and data-plane messages in a highly robust, energy efficient, and scalable manner, the MPL relies on the Trickle Algorithm [37]. The basic idea of Trickle Algorithm is to optimize the message transmission frequency based on network conditions. Specifically, the frequency is increased whenever an inconsistent network information is received, and decreased in the opposite case.  
When a source node has a data message to send within an MPL domain, it generates a message that includes the MPL domain address as a destination address. Here, the MPL domain is a scope zone in which nodes subscribe to the same MPL domain address and also participate in the dissemination of MPL data and control messages. The source node also piggybacks its identifier, a newly generated sequence number, and the payload in the data message. It then schedules a multicast of data message using the Trickle Algorithm, which is completed without any prior indication that the neighboring nodes have received the data message. After transmitting the data message a limited number of times, the source node terminates the transmission process of data message.  
When the node that subscribes to the same MPL domain address has received the data message, it extracts the source node identifier and sequence number to determine whether or not the data message has been received. If the sequence number is less than the minimum sequence number maintained in the Seed Set, or equal to the sequence number stored in the Buffered Message Set, the receiving node discards the data message because it believes that it has received the data message before. In the MPL, a Seed Set records a sliding window that is used to determine the sequence number of data message that the node is willing to receive. The Seed Set consists of three components: the identifier of source node, the minimum sequence number that the node is willing to receive, and the lifetime of the Seed Set entry. Additionally, a Buffered Message Set records recently received data messages that have a sequence number greater than the minimum sequence number in the Seed Set. The Buffered Message Set is composed of three components: the identifier of source node, the sequence number of data message, and the payload of data message. If the sequence number is equal to the minimum sequence number in the Seed Set, the receiving node updates the minimum sequence number to one greater than the received data message's sequence number. At this point, it deletes any data message that has a sequence number less than the updated minimum sequence number from the Buffered Message Set. If the sequence number is greater than the minimum sequence number in the Seed Set, but not stored in the Buffered Message Set, the receiving node adds the received data message into the Buffered Message Set. Then, the receiving node multicasts the received data message using the Trickle Algorithm to all neighbor nodes that subscribe to the same MPL domain. Here, an overall information flow of normal node that receives a data message is shown in Figure 1.  
Nodes that subscribe to the same MPL domain also periodically exchange a MPL control message using the Trickle Algorithm to discover new data messages that have not been received, where MPL  
Figure 1: An information flow of a normal node that receives a data message. Here, \(SS\) and \(BS\) denote Seed Set and Buffered Message Set, respectively.  
control message contains the information of Seed Set and Buffered Message Set. If a node discovers a neighbor node that has not received certain data messages, it multicasts those data messages using the Trickle Algorithm.