From b3c886111b848e229ffb84dbcdff472608dd2fbc Mon Sep 17 00:00:00 2001 From: Alberto Gallegos Ramonet Date: Tue, 10 Dec 2024 16:58:08 +0900 Subject: [PATCH] zigbee: Update documentation (Mesh routing) --- doc/models/Makefile | 11 ++- src/zigbee/doc/figures/manyToOne.dia | Bin 0 -> 2510 bytes src/zigbee/doc/figures/manyToOne.png | Bin 7749 -> 0 bytes src/zigbee/doc/figures/mesh.dia | Bin 0 -> 3885 bytes .../doc/{ => figures}/zigbeeStackArch.dia | Bin src/zigbee/doc/zigbee.rst | 90 +++++++++++++++--- 6 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 src/zigbee/doc/figures/manyToOne.dia delete mode 100644 src/zigbee/doc/figures/manyToOne.png create mode 100644 src/zigbee/doc/figures/mesh.dia rename src/zigbee/doc/{ => figures}/zigbeeStackArch.dia (100%) diff --git a/doc/models/Makefile b/doc/models/Makefile index e0ba0ba31..77e6ff463 100644 --- a/doc/models/Makefile +++ b/doc/models/Makefile @@ -372,8 +372,9 @@ SOURCEFIGS = \ $(SRC)/energy/doc/figures/liion.png \ $(SRC)/energy/doc/figures/nicd.png \ $(SRC)/energy/doc/figures/nimh.png \ - $(SRC)/zigbee/doc/figures/manyToOne.png \ - $(SRC)/zigbee/doc/zigbeeStackArch.dia + $(SRC)/zigbee/doc/figures/zigbeeStackArch.dia \ + $(SRC)/zigbee/doc/figures/manyToOne.dia \ + $(SRC)/zigbee/doc/figures/mesh.dia # specify figures from which .png and .pdf figures need to be # generated (all dia and eps figures) @@ -495,7 +496,9 @@ IMAGES_EPS = \ $(FIGURES)/lte-test-rlf-two-enb.eps \ $(FIGURES)/lena-radio-link-failure-one-enb.eps \ $(FIGURES)/lena-radio-link-failure-two-enb.eps \ - $(FIGURES)/zigbeeStackArch.eps + $(FIGURES)/zigbeeStackArch.eps \ + $(FIGURES)/manyToOne.eps \ + $(FIGURES)/mesh.eps # rescale pdf figures as necessary $(FIGURES)/testbed.pdf_width = 5in @@ -559,6 +562,8 @@ $(FIGURES)/assoc-manager.pdf_width = 12cm $(FIGURES)/emlsr-dl-txop.pdf_width = 12cm $(FIGURES)/emlsr-ul-txop.pdf_width = 12cm $(FIGURES)/zigbeeStackArch.pdf_width = 8cm +$(FIGURES)/manyToOne.pdf_width = 8cm +$(FIGURES)/mesh.pdf_width = 8cm IMAGES_PNG = ${IMAGES_EPS:.eps=.png} IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf} diff --git a/src/zigbee/doc/figures/manyToOne.dia b/src/zigbee/doc/figures/manyToOne.dia new file mode 100644 index 0000000000000000000000000000000000000000..dbda09eebec4f012cfbe50274b7c788ba2f25b82 GIT binary patch literal 2510 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 )^kl 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 Z9zFT)Bia4RaJ%*>u$w8hxk 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 literal 0 HcmV?d00001 diff --git a/src/zigbee/doc/zigbeeStackArch.dia b/src/zigbee/doc/figures/zigbeeStackArch.dia similarity index 100% rename from src/zigbee/doc/zigbeeStackArch.dia rename to src/zigbee/doc/figures/zigbeeStackArch.dia diff --git a/src/zigbee/doc/zigbee.rst b/src/zigbee/doc/zigbee.rst index 30bd407a7..428d9ad11 100644 --- a/src/zigbee/doc/zigbee.rst +++ b/src/zigbee/doc/zigbee.rst @@ -16,7 +16,7 @@ This module is presented here with no guarantees of any kind and it has no assoc CSA or Zigbee (TM) products. -The source code for the new module lives in the directory ``src\zigbee``. +The source code for the new module lives in the directory ``src/zigbee``. .. _fig-ZigbeeStackArch: @@ -24,7 +24,8 @@ The source code for the new module lives in the directory ``src\zigbee``. Zigbee Stack Architecture in ns-3 -The Zigbee stack implementation is meant to be use on top of an existing |ns3| ``LrWpanNetDevice`` (IEEE 802.15.4-2011 PHY & MAC stack). +The Zigbee stack implementation is meant to be use on top of a |ns3| NetDevice with a valid lr-wpan MAC layer implementation. +This is in essence, a Netdevice that contains a ``LrWpanMacBase`` object which enforces a IEEE 802.15.4-2011 compliant MAC. The current scope of the project includes **only the NWK layer in the Zigbee stack**. However, the project can be later extended to support higher layers like the Application Sublayer (APS) and the Zigbee Cluster Library (ZCL). @@ -37,10 +38,10 @@ Scope and Limitations - Source routing and Tree routing are not implemented. - Zigbee Stack profile 0x01 (used for tree routing and distributed address assignment) is not supported. - A few NIB attributes setting and NWK constants are not supported by the |ns3| attribute system. -- Traces are not yet implemented. +- Traces are not implemented yet. - Data broadcast do not support retries or passive acknowledgment. - Data broadcast to low power routers is not supported as the underlying lr-wpan netdevice has no concept of energy consumption. -- The following Zigbee layers are not yet supported yet: +- The following Zigbee layers are not supported yet: - Zigbee Application Support Sub-Layer (APS) - Zigbee Cluster Library (ZCL) - Zigbee Device Object (ZDO) @@ -98,12 +99,6 @@ From these routing protocols, the current |ns3| implementation only supports the **Many-To-One Routing** -.. _fig-manyToOne: - -.. figure:: figures/manyToOne.* - - Many-To-One routing - In Zigbee networks, it's common for multiple nodes to need to communicate with a single node, often referred to as a concentrator. If all nodes perform a Mesh route discovery for this single point in the network, it can lead to an overwhelming number of route request messages, which may degrade network performance. Under these circumstances, Many-to-One routing is typically more efficient than Mesh routing. @@ -115,8 +110,14 @@ The general procedure for Many-to-One routing is as follows: 2. Devices receiving this broadcast store a reverse route into their routing table pointing to the path towards the concentrator. 3. If we are receiving the RREQ for the first time or the accumulated pathcost is better to the route stored in the routing table, the RREQ is re-broadcasted. +.. _fig-manyToOne: + +.. figure:: figures/manyToOne.* + + Zigbee Many-To-One routing + There can be multiple concentrator nodes in the network and it is possible to run Many-To-One routing along Mesh routing. -In |ns3|, Many-To-One routing is achieved by using the ``NLME-ROUTE-DISCOVERY.request`` primitive::: +In |ns3|, Many-To-One routing is achieved by using the ``NLME-ROUTE-DISCOVERY.request`` primitive:: // zstack is an instance of a ZigbeeStack object installed in node that will // become the concentrator node. @@ -128,10 +129,75 @@ In |ns3|, Many-To-One routing is achieved by using the ``NLME-ROUTE-DISCOVERY.re zstack->GetNwk()->NlmeRouteDiscoveryRequest(routeDiscParams); Important: The process described above assumes that devices have already joined the network. -A route discovery request before a device is part of the network (join process) will result in failure. +A route discovery request issued before a device is part of the network (join process) will result in failure. **Mesh Routing** +Mesh routing in Zigbee is often attributed to the mechanisms used by the AODV routing protocol (`RFC 3561 `_). +Although Zigbee mesh routing and the AODV protocol share some similarities, there are significant differences between them that directly influence performance. + +Firstly, AODV was designed for IP-based networks, whereas Zigbee operates without the concept of IP addresses, thus eliminating their associated overhead. +Additionally, unlike AODV, Zigbee employs several distinct tables (such as the RREQ table, routing table, neighbor table, and discovery table) to manage route discovery and storage. +The use of these tables allows Zigbee to implement various storage and update policies based on the type of information they hold. +For instance, entries for neighboring nodes are typically updated frequently and have a short lifespan. +In contrast, entries in routing tables are usually long-lived or do not expire but may be replaced by new entries when space is limited. +The RREQ and discovery tables, on the other hand, are used exclusively during the route discovery process to optimize this process and facilitate the early detection of errors and loops. + +In addition to these differences, Zigbee incorporates detailed policies, such as packet retransmissions, which come with defined default values to enhance consistency across various Zigbee implementations. +For more information on the implementation details and policies that govern Zigbee, please refer to the Zigbee specification. + +The primary goal of mesh routing is to establish the shortest path to a specific destination within the network. +While hop count is the most commonly used metric for calculating path cost, Zigbee can also utilize the link quality indicator (LQI) to determine the shortest route to the destination (the default option). +The general procedure for mesh routing is as follows: + +1. The source node broadcasts a route request (RREQ) to its neighboring nodes, specifying the desired destination. +2. Upon receiving the RREQ, the device calculates the link cost and adds it to the path cost already present in the RREQ. +3. The device then searches for a valid route to the destination, first in its neighbor table, followed by its discovery table and routing table. +4. If the destination is found, the device issues a route reply (RREP). If not, the RREQ is re-broadcasted only if it is the first time that a RREQ for that destination is sent from this location, or if a better path cost has been obtained. +5. When the RREQ reaches the destination or a neighboring node that knows the destination, an RREP is sent back to the source, using the information contained in the discovery table. +6. If there is no existing entry in the routing table, a new entry is created with the details of the most optimal path. + +.. _fig-mesh: + +.. figure:: figures/mesh.* + + Zigbee Mesh routing + +Routing table entries are created only when an RREP is received, and only for the destination specified in the route discovery request. +A separate route discovery request must be issued for each destination that needs to be recorded in the source device. + +In |ns3|, Mesh routing is achieved by using the ``NLME-ROUTE-DISCOVERY.request`` primitive:: + + // zstack is an instance of a ZigbeeStack object installed in node that is the + // source of the route discovery request. + // Only a destination address parameter is necessary to be specified. + // Parameters destination address mode = UCST_BCST and radius = 0 are the default values and + // do not need be explicitly written. + // Note: As specified by Zigbee, when a radius is set to 0, the radius used is equal to + // nwkMaxDepth(5) * 2. + NlmeRouteDiscoveryRequestParams routeDiscParams; + routeDiscParams.m_dstAddr = Mac16Address("BE:EF"); + routeDiscParams.m_dstAddrMode = UCST_BCST; + routeDiscParams.m_radius = 0; + zstack->GetNwk()->NlmeRouteDiscoveryRequest(routeDiscParams); + +Alternatively, a Mesh route discovery can be performed along a data transmission request by using the +``NLDE-DATA.request`` primitive with the ``ENABLE_ROUTE_DISCOVERY`` option:: + + // zstack is an instance of a ZigbeeStack object installed in node that is the + // source of the data transmission request. + // The data transmission can be sent with either the ENABLE_ROUTE_DISCOVERY option (default) or the + // SUPPRESS_ROUTE_DISCOVERY option. + NldeDataRequestParams dataReqParams; + Ptr p = Create(5); + dataReqParams.m_dstAddrMode = UCST_BCST; + dataReqParams.m_dstAddr = Mac16Address("BE:EF"); + dataReqParams.m_discoverRoute = ENABLE_ROUTE_DISCOVERY; + zstack->GetNwk()->NldeDataRequest(dataReqParams, p); + +Important: The process described above assumes that devices have already joined the network. +A route discovery request issued before a device is part of the network (join process) will result in failure. + Usage -----