AntOM is a multilayer overlay. From the perspective of establishing and removing of neighbour relations, it can be viewed as multiple individual overlays. For each layer, the following operations relating to neighbourhood relations can happen: connecting to bootstrapping nodes (SDBOOT), actively establishing neighbour relation to another node (AESTNB), passively accepting an establishment request from another node (PESTNB), actively removing neighbour relation with another node (ARMNB), passively accepting a removal request with another node (PRMNB), etc.
Each node maintains a set of neighbour relation tables; each of which corresponds to a layer. Because all above mentioned operations will change the contents of these tables, their concurrency must be regulated to avoid inconsistency. It is implemented by an authorisation system in AntOM.
In AntOM, all operations that might change the neighbour relation tables must be authorised before execution. Whether or not an operation can be authorised depends on what other operations are on-going within current node at the moment. Suppose there are N possible operations that must be authorised, a table t recording the occurrence count of these operations as well as a permission checklist p are defined in each node. For an authorisation request from operation o(i) (1 < i < N), the system first examines all on-going operations o(j) (1 < j < N) by reading table t. For each o(j), the system finds in p to check if it blocks o(i). If none of o(j) blocks o(i), it will be authorised. In the same time, the occurrence count of o(i) will be increased by 1 in t.
The occurrence counts of o(j) in table t are reduced when an operation is finished. For example, for operation AESTNB, the operation starts before the node sends out a neighbour relation request to the other node, and ends after it has received a response and sends the an acknowledgement. Occurrence counts are also reduced if the time out of on-going operation expire. The latter mechanism is necessary in unreliable networks.