From 8e349455d9515bb2bb591510e4e483f47fe7bf9a Mon Sep 17 00:00:00 2001 From: Kirill Andreev Date: Thu, 27 Aug 2009 19:56:46 +0400 Subject: [PATCH] Documenation fixes --- doc/MeshArchitecture.png | Bin 0 -> 68663 bytes src/devices/mesh/dot11s/dot11s.h | 50 ++++++++------ src/devices/mesh/mesh.h | 115 +++++++++++++++++++------------ 3 files changed, 99 insertions(+), 66 deletions(-) create mode 100644 doc/MeshArchitecture.png diff --git a/doc/MeshArchitecture.png b/doc/MeshArchitecture.png new file mode 100644 index 0000000000000000000000000000000000000000..4be05d98091079bf035464277ab8df74a58024ac GIT binary patch literal 68663 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 j_ZRE`IVi+u + * Authors: Kirill Andreev + * Aleksander Safonov + * Pavel Boyko * - * This is toplevel mesh module description + * This is top level mesh module description */ /** @@ -26,52 +28,77 @@ * * \brief MAC-layer mobile mesh networking. * \section MeshOverview Overview of Layer-2 Mesh networking protocols - * The main goal of this module is to provide an NS-3 model of MAC-layer routing - * protocols, which can be interfaced as plain network device by upper layer protocols. - * Also our model supports stations with multiple network devices handled by a single - * MAC-layer routing protocol, and this devices (called 'interfaces') are hidden from upper-layer protocols. * - * Current implementation provides 2 layers of MAC-layer routing stack. - * The upper layer is Mesh point device layer - it is an interface to upper-layer protocols and it implements - * routing itself. The main task of this layer is to aggregate multiple network devices working under the same MAC-layer - * routing protocol, to send, receive, and forward packets. - * The lower layer implements interaction with MAC-layer, because some routing protocols (like HWMP in IEEE802.11s) - * require their own management frames and some of this management frames may be MAC-specific. So, the main task - * of this layer is to handle MAC-specific management frames needed by routing protocols. + * The main goal of this module is to provide a MAC-layer routing functionality. + + * The main part of MAC-layer routing model is a special type of a network device -- + * ns3::MeshPointDevice. Being an interface to upper-layer protocols, it provides routing functionality, + * hidden from upper-layer protocols, by means of ns3::MeshL2RoutingProtocol. * - * At the moment two routing protocols are implemented in this module: - * - HWMP (default routing protocol for IEEE802.11s standard) + Peer management protocol (also described in 802.11s - * draft standard), which is required by HWMP to manage peer links (works like association mechanism in IEEE802.11). + * Our model supports stations with multiple network devices handled by a single + * MAC-layer routing protocol. So, ns3::MeshPointDevice serves as an umbrella to multiple + * network devices ("interfaces") working under the same MAC-layer routing protocol. + * + * Network devices may be of different types, each with a specific medium access method. + * So ns3::MeshL2RoutingProtocol consists of two parts: the one independent from the network device type, + * which we refer to as a routing protocol, and the other one depended on the network device type. which + * we refer to as a plug-in to the routing protocol. + * + * One can imagine a MAC-layer routing as a two-tiers model. ns3::MeshL2RoutingProtocol and ns3::MeshPointDevice + * belong to the upper tier. The task of ns3::MeshPointDevice is to send, receive, and forward frames, + * while the task of ns3::MeshL2RoutingProtocol is to resolve routes and keep frames waiting for route resolution. + * This functionality is independent from the type of underlying network devices ("interfaces"). + * + * The lower tier implements the part of MAC-layer routing, specific for underlying network devices + * and their medium access control methods. For example, HWMP routing protocol in IEEE802.11s + * uses its own specific management frames. + * + * At present, two routing protocols are implemented in this module: + * - HWMP (default routing protocol for IEEE802.11s standard) + Peer management protocol + * (also described in 802.11s standard draft) which is required by HWMP to manage peer links + * (works like association mechanism in IEEE802.11). * - FLAME (Forwarding LAyer for MEshing). - * While the former protocol works only with 802.11-MAC, the latter protocol works with all network devices, which support + + * While HWMP only works with 802.11-MAC, FLAME works with all types of network devices, which support * 48-bit MAC-addressing scheme. - * \subsection Architecture Architecture of MAC-layer routing stack - * According to said above, MAC-layer routing stack consists of two layers. - * The upper is a ns3::MeshPointDevice, which forwards packets using ns3::MeshL2RoutingProtocol, attached to it. - * Interface between MeshPointDevice and upper layers is inherited from ns3::NetDevice class. Interface between ns3::MeshPointDevice - * and ns3::MeshL2RoutingProtocol is the following: ns3::MeshPointDevice gives a packet with source and destination addresses, - * number of network device, from which it was received and a callback to be executed when the route is found. - * All routing queues are implemented inside a protocol. After the routing discovery procedure is done, protocol returns a - * packet back to ns3::MeshPointDevice and gives an index of network device, which the packet shall be sent to. All additional - * routing information is stored inside a packet using tags. After all this routine is done the packet goes to the lower layer. - * The lower layer is responsible for filling MAC-specific headers. At the moment we have implemented only lower layer - * for ns3::WifiNetDevice -- ns3::MeshWifiInterfaceMac, and ns3::MeshWifiInterfaceMacPlugin. The former is a new kind of WifiMac, which - * implements IEEE802.11s mesh interface or a simple ad hoc depending on whether beaconing is enabled or not. - * Also ns3::MeshWifiInterfaceMac supports beacon shifting (Beacon Collision Avoidance). - * The ns3::MeshWifiInterfaceMacPlugin is a lower part of L2Routing protocol. It handles all outgoing and all incoming frames, fills needed headers and - * decides, whether to drop a frame or not and it can add needed information elements to a beacon. - * See http://www.nsnam.org/wiki/index.php/Mesh for module architectural description. - * \subsection NewProtocol Adding a new protocol - * This model requires, that all network devices shall operate with ns3::Mac48Address type of addresses. - * To add a new protocol you need to define the following things: - * - Write a upper part of the protocol. - * - If your protocol works only with 802.11 MAC -- write a lower part, inherited from ns3::MeshWifiInterfaceMacPlugin - * - If your protocol works with other type of Network devices - write your own lower part of protocol (interface for - * communication with other types of network devices is not implemented) if needed. * - * When you implement a protocol, you must remember, that when you are at MeshPointDevice level, you work with a packet - * without LLC header, and when you are at plugin-level using ns3::MeshWifiInterfaceMacPlugin, the LLC header is already attached (by WifiNetDevice) - * \attention Note, when you work with ns3::MeshWifiInterfaceMac, you have an ability to install multiple plugins. + * \subsection Architecture Architecture of MAC-layer routing stack + * As already mentioned, MAC-layer routing consists of two tiers. + * An ns3::MeshPointDevice which forwards frames by using an attached ns3::MeshL2RoutingProtocol forms + * the upper tier. The interface between ns3::MeshPointDevice and the upper-layer protocols is inherited + * from ns3::NetDevice class. The ns3::MeshPointDevice interacts with ns3::MeshL2RoutingProtocol as follows: + * ns3::MeshPointDevice gives to ns3::MeshL2RoutingProtocol a frame with the source and destination addresses, + * the network device index which the frame is received from, and a callback to be executed when the route is found. + * The callback is needed because all routing queues are implemented inside ns3::MeshL2RoutingProtocol. + * When the route is resolved, ns3::MeshL2RoutingProtocol returns the frame back to ns3::MeshPointDevice with the + * network device index which the packet shall be sent to. All additional routing information is stored inside + * the frame by means of tags. In the end, when all these routines are done, the frame goes to the lower tier. + + * The lower tier is responsible for filling MAC-specific headers. At present, we have only implemented the + * lower tier which is specific for ns3::WifiNetDevice. This tier is implemented as two base classes: + * ns3::MeshWifiInterfaceMac and ns3::MeshWifiInterfaceMacPlugin. The former is a new kind of WifiMac. If beacon + * generation is enabled or disabled, it implements IEEE802.11s mesh functionality or a simple ad hoc functionality + * of the MAC-high part of the WiFi model, respectively. The latter is a plug-in to L2Routing protocol. + * It handles all outgoing and incoming frames, fills headers and make decisions to drop a frame or not. Also, it + * adds information elements to a beacon specific to given L2Routing protocol, if needed. + * \image html MeshArchitecture.png "Overview of the Mesh MAC-layer routing system" + * + * \subsection NewProtocol Adding a new protocol + * This module requires all the network devices operates with ns3::Mac48Address addressing scheme. + * + * To add a new L2Routing protocol, one needs to define the following: + * - Write an upper part of the protocol inherited from ns3::MeshL2Routing. + * - If the protocol works only with 802.11 MAC -- write a plug-in inherited from ns3::MeshWifiInterfaceMacPlugin + * - If the protocol works with other types of network devices -- write your own plug-in (interface for + * communication with other types of network devices is not implemented). + * + * When you implement a L2Routing protocol, remember that when you are at L2Routing tier, + * you work with a frame without an LLC header, and when you are at plug-in tier using + * ns3::MeshWifiInterfaceMacPlugin, an LLC header is already attached (by WifiNetDevice) + * + * \attention Note, when you use ns3::MeshWifiInterfaceMac, multiple plug-ins may be installed. + * * \subsection Statistics - * Each routing protocol has a statistic structure, Report and ResetStats methods. This gives an opportunity to write statistic to an *.xml file periodically. Because you can reset statistics, you can adjust a period of report. + * Each L2Routing protocol has a structure to capture statistics, Report and ResetStats methods. + * This gives an opportunity to collect statistic to an *.xml file periodically. */