IP Address Assignment

MANETconf

Distributed mutual exclusion algorithm to check the uniqueness of the address.

Assigning an address to a new node requires an agreement from all the known nodes in the network.

  • Each node has a global address allocation table maintaining currently-in-use addresses.

  • Node (requester) broadcasts a NEIGH_REQ message to one-hop neighbors.

  • Each neighbor answers back to the requester (NEIGH_REP).

  • The Requester node selects one of its neighbors as its agent, which performs address allocation on behalf of the requester.

    • It then sends a REQUESTER_REQ to the agent to request an address.

    • The agent picks a currently unused address from its table and floods an ADDR_REQ to obtain an agreement from all other configured nodes in the network.

    • Each node in the network sends an ADDR_REP reply back to the agent.

    • If the agent receives a reply from all the other nodes, it assigns the address to the requester by sending ADDR_ALLOC.

PyMesh Addressing

Ad-hoc communication network over raw-LoRa.

Multi-gateway (Border Routers) Nodes that connect Mesh-internal data with the Cloud.

Each Node uses LBS - Listen Before Talk.

Security on multiple levels.

Any LoRa device (Lopy4/Fipy) can have any of the Pymesh Node Roles: Leader, Router, Child, or Border Router.

Declare the Border Router network address prefix, for example, 2001:dead:beef:cafe::/64.

The network address prefix is then sent to the Leader.

All the nodes will be assigned a random IPv6 unicast address with this network prefix (for example 2001:dead:beef:cafe:1234:5678:9ABC:DEF0).

If a node sends data to an IPv6 that is external (prefix from non-existent networks in Pymesh), then the UDP datagram will be routed to the Border Router.

This UDP packet will have as a source the random IPv6 from the BR network address.

PyMesh Addressing and Communication

The Border Router will receive the external UDP datagrams with an appended header, which contains:

  • MAGIC byte: 0xBB.

  • IPv6 destination as a byte array (16 bytes).

    • bytearray([source, encoding, errors]).

    • Returns the byte array of the bytes array passed in.

  • port destination as 2 bytes (1-65535 values).

  • The IPv6 destination is important because it means that the Border Router can route (forward) the UDP datagram content to the correct interface (Wifi/BLE/cellular).

Comparison

AODV pros and cons.

  • Low overhead.

  • Slow discovery and recovery.

OLSR pros and cons.

  • Medium overhead.

  • Fast discovery and recovery.

  • MPRs automation.

LAR pros and cons.

  • Medium overhead.

  • How to discover the location of the destination?

Batman's pros and cons.

  • Medium-high overhead

  • Fast discovery and recovery.

Last updated