PAA OLSR-plugin

Figure: The PAA-plugin.

The role of the PAA-plugin is illustrated in figure 12.11.

As mentioned earlier, the PAA design is based on the fact that in a proactive routing protocol such as OLSR, nodes will eventually have heard of close to all IP addresses currently used in the MANET. This can be used as a way of generating an IP address that has a much larger possibility of being unused than a random address. But rather than checking for free IP addresses by looking up all internal tables of the routing daemon, an IP cache ``pool'' of used addresses is maintained. This way IP addresses can also be cached for a longer periods than they would stay in the routing daemons internal tables. Upon receiving any kind of known routing control traffic, the plugin adds all the IP addresses listed in the message to the IP cache with a given timeout. This period is set to 30 seconds in the implementation. This also goes for PAA traffic. The address contained in Address Test messages is updated in the IP cache as well as addresses offered by this node as response to Address Request messages from the PAA-server.

The PAA-plugin needs to be able to hear all incoming OLSR traffic to update its IP cache. To do this, a function is registered with the message parser using the special PROMISCUOUS message type declared in src/praser.h. When registering a message parsing function with this type, all incoming packets are sent to the function. Bi-directional IPC also has to be maintained between the plugin and the PAA-server. This is done by registering the IPC socket and a parsing function with the olsrd socket parser.

To locate a free address, the routing daemon selects a random address in the net-range that the MANET uses or uses a possible preferred address provided by the PAA-server. When using IPv6, a MAC address must be provided in an Address Request, and this address is used to generate an IPv6 address. The address is then checked against the IP cache. If the address is already registered in the cache, a random IPv4 address is created within the MANETs net-range or an IPv6 address is generated for another net-range. This address is then checked against the cache. This process is repeated until an assumed free address is located or the process has been executed for a predefined maximum of times. If a generated address is not found in the cache, it is considered free and will be sent to the PAA-server that will offer it to the remote PAA-client, which again will perform DAD on the address.

Upon receiving an Address Test message from the PAA-server, the routing daemon encapsulates the Address Test message in a routing protocol message. This message is then flooded throughout the MANET by the flooding mechanism provided by the routing protocol. In the implementation, this means that the Address Test message is encapsulated in a regular OLSR message packet (figure 3.1), and flooded using the MPR scheme as described in section 3.4. Upon receiving an encapsulated Address Test message carried by the routing protocol, the routing daemon decapsulates the packet and forwards it to the PAA-server. This is done in addition to forwarding the encapsulated message according to the MPR scheme.

Andreas 2004-07-29