## 4 Classification of Auto-Configuration Protocols
### Stateless Protocols  
#### 4.2.1 Process of Duplicated Address Detections  
_Duplicate Address Detection_ (DAD) is a process which uses the protocols to check the uniqueness of IP addresses. This process takes a relatively long time to complete, so several solutions have been implemented to reduce it. There are three kinds of DAD processes:  
* _Strong Duplicate Address Detection (SDAD)_[20]: Is the base of the Stateless protocols. It consists of a simple mechanism whereby the node chooses two IP addresses: temporary and tentative. It will only use the temporary address for the initialization while it detects if the tentative one is unique or not. The detection method consists of sending a message ICMP destined directly to this address. If it receives a response, this IP address is being used so the process will be resumed. If it does not receive a response, the message will be sent a certain number of times to make sure that the address is unique. By being a very simple mechanism, it does not ensure the uniqueness of the IP address since the process limits itself to only the phase of initialization, and it would not work for temporary disconnections or losing of the network. Moreover, when the network is long and only a few free IP addresses remain, it increases the overhead until it finds a unique IP address. * _Weak Duplicate Address Detection (WDAD)_[21]: It establishes the idea of tolerating the duplicated address in the network for a period of time. For that, every node when it is being initiated itself will create a key that it will always send along with its IP address. When a node receives a message, it will check whether this IP address is already assigned in its table and will look whether the keys coincide, if they do not coincide, it will mark that address as invalid and actions will be taken so that they are unique (these actions are not defined in WDAD). This process has to support the identification of a node by means of a key-IP pair and depends completely on the routing protocol. It will only work with the proactive one that updates the routes constantly, but with a reactive one there will be nodes that could never detect the duplicity of IP addresses. It does not add additional overhead to the routing protocol, but on the other hand, it really adds to the overhead by sending always the key along with the IP address. * _Passive Duplicate Address Detection (PDAD)_[22]: The idea is based on sending control information instead of detecting or solving duplicated IP addresses, every node investigates and deduces whether a duplicated address exits by events that would never happen if all the IP addresses were unique. Three passive detections are proposed, which are necessary for correct functioning of the detection:  
* _Sequence Numbers (PDAD-SN)_: This system is based on the idea that the routing protocols use sequence numbers in its messages to update the routes. Using these sequence numbers, and the idea that two nodes with a distance between them of two-hops do not have the same neighborhood, some conflicts are solved. Also, it has taken into consideration the possibility that these sequence numbers reach the maximum and numbers start from zero again. * _Locality Principle (PDAD-LP)_: Lower power than the previous one, is based on the frequency of updating the route tables. On the basis of this frequency it can detect duplicate addresses by taking a time threshold to display the status of the route tables. It's necessary to take into account the protocol routing used. We must consider different thresholds, since it can be the case that two messages with the same source are confused with a duplicate address, if the time is too short and, therefore, the protocol modifies the routes too fast. * _Neighborhood (PDAD-NH)_: Taking into account that a node knows its neighbours, and they have sent a package of the state of its link, it differs if there is conflict or not depending on whether it is in a package, the source of this message is a neighbour, and contains the address.