A Spreading Factor Congestion Status-Aware Adaptive Data Rate Algorithm
Abstract
:1. Introduction
- (i)
- To modify the Adaptive Data Rate algorithm to consider congestion statuses of data rates during the data rate optimization process to improve the collision probabilities of end devices’ traffic in Long-Range Wide Area Networks.
- (ii)
- To use simulations to evaluate the effectiveness of the proposed modifications to the Adaptive Data Rate algorithm in mitigating the occurrence of traffic collisions in Long-Range Wide Area Networks.
2. Adaptive Date Rate Algorithms in LoRaWAN
2.1. Adaptive Date Rate Overview
- If the Nstep = 0, the transmission parameters are already optimal, so the algorithm terminates.
- If the Nstep > 0, the algorithm starts by reducing the SF to its lowest possible value, and then it reduces the TP to its lowest possible value.
- If the Nstep < 0, the algorithm increases the TP to its highest possible value. Nothing is done to the SF at this stage since LoRa end devices already have automatic data rate decay.
2.2. Related Adaptive Date Rate Algorithms
3. Spreading Factor Congestion-Aware ADR
| Algorithm 1: Spreading Factor Congestion-Aware Adr Approach | ||||
| Inp.: Outp.: Steps: 1: | Signal-to-noise ratio and spreading factor values of the uplink messages. An optimized spreading factor value for the end device that requested ADR. snrList ← 0 | |||
| 2: | sfList ← 0 | |||
| 3: | uplinkCnt ← 0 | |||
| 4: | optimizedSF ← 12 | |||
| 5: | defaultMargin ← 10 | |||
| 6: | snrLimit ← [7: −7.5, 8: −10, 9: −12.5, 10: −15, 11: 17.5, 12: −20] | |||
| 7: | sfUsageIndex ← associative array of spreading factors and their usage indexes | |||
| 8: | ||||
| 9: | function optimizeDataRate(uplinkSNR, uplinkSF) | |||
| 10: | snrList[uplinkCnt] ← uplinkSNR | |||
| 11: | sfList[uplinkCnt] ← uplinkSF | |||
| 12: | uplinkCnt ← uplinkCnt + 1 | |||
| 13: | if uplinkCnt = 20 then | |||
| 14: | maxSNR ← max(snrList) | |||
| 15: | maxSF ← sfList[indexOf(maxSNR)] | |||
| 16: | minSF ← minSpreadingFactor(maxSNR, maxSF) | |||
| 17: | optimizedSF ← optimizeSpreadingFactor(minSF, maxSF) | |||
| 18: | uplinkCnt ← 0 | |||
| 19: | else | |||
| 20: | exit | |||
| 21: | end if | |||
| 22: | return optimizedSF | |||
| 23: | end function | |||
| 24: | ||||
| 25: | function minSpreadingFactor(maximumSNR, maximumSF) | |||
| 26: | margin ← maximumSNR − snrLimit[maximumSF] − defaultMargin | |||
| 27: | steps ← round (margin / 3) | |||
| 28: | SF ← maximumSF | |||
| 29: | while steps > 0 and SF > sfMin do | |||
| 30: | SF ← SF − 1 | |||
| 31: | Steps ← steps − 1 | |||
| 32: | end while | |||
| 33: | return SF | |||
| 34: | end function | |||
| 35: | ||||
| 36: | function optimizeSpreadingFactor(minimumSF, maximumSF) | |||
| 37: | optSF ← minimumSF | |||
| 38: | counterSF ← minimumSF | |||
| 39: | while counterSF <= maximumSF do | |||
| 40: | if sfUsageIndex[optSF] > sfUsageIndex[counterSF] then | |||
| 41: | optSF ← counterSF | |||
| 42: | end if | |||
| 43: | counterSF ← counterSF + 1 | |||
| 44: | end while | |||
| 45: | sfUsageIndex[optSF] = sfUsageIndex[optSF] + 1 | |||
| 46: | return optSF | |||
| 47: | end function. | |||
- snrList: a list of SNR values to be used in determining the best data rate. The list is initially empty and is updated each time the end device sends an uplink to the network server.
- sfList: a list of SFs that corresponds to the collected SNR values. The list is also initially empty and is updated each time the end device sends an uplink to the network server.
- uplinkCnt: a counter to keep track of the number of uplinks that the end device has sent to the network server since the ADR was requested.
- optimizedSF: the SF that will represent the optimized data rate. This variable stores the value that the algorithm will calculate once enough data has been collected.
- defaultMargin: the device-specific margin. This value is given in the devices’ datasheets. A value of 10 is used in this experiment as it is generally the value for most devices.
- snrLimit: a list of limits required for each SF for the receiver to be able to demodulate the received signal. These values are used in determining the margin required for optimizing the data rate.
- sfUsageIndex: a list of stored values representing the number of devices using each SF. The values will be used to determine the SF with the fewest devices using it. This list is one of the most important pieces required by the algorithm.
- optimizeDataRate function: The optimizeDataRate function is the main entry point to the algorithm. It accepts the uplink SNR value as well as the uplink SF, stores them in their respective lists, and then updates the counter. Just like in the native ADR, once the counter has reached 20 uplink messages, the algorithm starts to calculate the optimized data rate. In the optimizeDataRate function, the maximum SNR value and the maximum SF are computed. The results are then passed in as parameters to the minSpreadingFactor function.
- minSpreadingFactor function: As the name suggests, this function is used to determine the lowest value of the SF that the end device can support while being able to reach the gateway. This SF is what will represent the optimized data rate. To compute this value, the function first calculates the margin and the number of steps the algorithm needs to run from the passed in parameters and the default margin using Equations (3) and (4) respectively:margin = maximumSNR − snrLimit[maximumSF] − defaultMarginwhere snrLimit[maximumSF] is the SNR limit from the SNR limit list that corresponds with the value stored in the maximumSF variable and the defaultMargin is the device-specific margin given in the device datasheet. And the “round” in Equation (4) represents the integer part of the resulting calculated value. From here, the function then loops from the calculated value of steps until the value reaches zero and tries to minimize the value of the SF to its possible optimal value. Once the loop exits, the remaining value of the SF is considered as the lowest value that the end devices can support. This value is returned to the main function and stored in the minSF variable. Once the mainFunction has the value of the minimum SF, the optimized SF can be computed. To do this, the optimizeSpreadingFunction function is called by passing in the minimum SF and the maximum SF values to it as parameters.steps = round (margin/3)
- optimizeSpreadingFunction function: Using these values (i.e., minimum SF and the maximum SF), the function runs a loop from the minimum SF to the maximum SF and tries to find the least utilized SF value using the SF usage indexes stored in the sfUsageIndex list. If the least utilized SF is found, it’s returned. If not, the minimum SF value is returned instead. This ensures that the returned value is optimized even when the least utilized SF is not found. The optimized SF is then returned to the main function and stored in optimizedSF variable, and the counter is then reset. The value stored in the optimizedSF variable is then sent down as part of the response to the end device the next time the device sends an uplink.
4. Evaluation Setup
5. Results
- (1)
- How can a modified Adaptive Data Rate algorithm be developed to efficiently manage and reduce signal interferences in Long-Range Wide Area Networks?
- (2)
- How effective are the proposed modifications to the Adaptive Data Rate algorithm in reducing signal interferences in Long-Range Wide Area Networks?
6. Discussion
6.1. Data Extraction Rate
6.2. Energy Consumption
7. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- Li, S.; Raza, U.; Khan, A. How Agile is the Adaptive Data Rate Mechanism of LoRaWAN? In Proceedings of the 2018 IEEE Global Communications Conference (GLOBECOM), Abu Dhabi, United Arab Emirates, 9–13 December 2018; pp. 206–212. [Google Scholar] [CrossRef] [Green Version]
- De Carvalho Silva, J.; Rodrigues, J.J.; Alberti, A.M.; Solic, P.; Aquino, A.L. LoRaWAN—A low power WAN protocol for Internet of Things: A review and opportunities. In Proceedings of the 2017 2nd International Multidisciplinary Conference on Computer and Energy Science (SpliTech), Split, Croatia, 12–14 July 2017. [Google Scholar]
- LoRa Alliance, LoRaWAN, What Is It: A Technical Overview of LoRa and LoRaWAN. Available online: https://lora-alliance.org/resource_hub/what-is-lorawan/ (accessed on 21 June 2021).
- Lehong, C.; Isong, B.; Lugayizi, F.; Abu-Mahfouz, A.M. A Survey of LoRaWAN Adaptive Data Rate Algorithms for Possible Optimization. In Proceedings of the 2020 2nd International Multidisciplinary Information Technology and Engineering Conference (IMITEC), Kimberley, South Africa, 25–27 November 2020. [Google Scholar]
- Semtec. Understanding the Lora Adaptive Data Rate; Semtec Corporation: Camarillo, CA, USA, 2019. [Google Scholar]
- Garlisi, D.; Tinnirello, I.; Bianchi, G.; Cuomo, F. Capture Aware Sequential Waterfilling for LoRaWAN Adaptive Data Rate. IEEE Trans. Wirel. Commun. 2020, 20, 2019–2033. [Google Scholar] [CrossRef]
- Cuomo, F.; Campo, M.; Caponi, A.; Bianchi, G.; Rossini, G.; Pisani, P. EXPLoRa: Extending the performance of LoRa by suitable spreading factor allocations. In Proceedings of the 2017 IEEE 13th International Conference on Wireless and Mobile Computing, Networking and Communications (WiMob), Rome, Italy, 9–11 October 2017. [Google Scholar]
- Abdelfadeel, K.Q.; Cionca, V.; Pesch, D. Fair Adaptive Data Rate Allocation and Power Control in LoRaWAN. In Proceedings of the 2018 IEEE 19th International Symposium on “A World of Wireless, Mobile and Multimedia Networks” (WoWMoM), Chania, Greece, 12–15 June 2018; pp. 14–15. [Google Scholar] [CrossRef] [Green Version]
- Kim, S.; Yoo, Y. Contention-Aware Adaptive Data Rate for Throughput Optimization in LoRaWAN. Sensors 2018, 18, 1716. [Google Scholar] [CrossRef] [PubMed] [Green Version]
- L.A.T. Committee. LoRaWAN 1.1 Specification. Version no. 1.1.; L.A.T. Committee: Beaverton, CA, USA, 2017. [Google Scholar]
- Semtec. LoRaWAN—Simple Rate Adaptation Recommended Algorithm: Common Class A/B/C Specification; Semtec Corporation: Camarillo, CA, USA, 2016. [Google Scholar]
- Bor, M.C.; Roedig, U.; Voigt, T.; Alonso, J.M. Do LoRa Low-Power Wide-Area Networks Scale? In Proceedings of the MSWiM ‘16: The 19th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems, Malta, Malta, 13–17 November 2016; pp. 59–67. [Google Scholar] [CrossRef] [Green Version]
- Reynders, B.; Meert, W.; Pollin, S. Power and spreading factor control in low power wide area networks. In Proceedings of the presented at the 2017 IEEE International Conference on Communications (ICC), Paris, France, 21–25 May 2017. [Google Scholar]
- LoRa Alliance, LoRaWANTM 1.1 Regional Parameters. Available online: https://lora-alliance.org/resource_hub/lorawan-regional-parameters-v1-1ra/ (accessed on 21 June 2021).



| Challenges Addressed | Proposed Solutions | Critical Analysis |
|---|---|---|
| Reduction in network throughput when the ADR is employed [9] | A contention-aware ADR with restricted usage of data rates. | The proposed algorithm used the gradient projection method to determine distribution ratios that minimize contention in each data rate and maximizes network throughput. |
| The increase in collisions in ADR-enabled LoRa networks [7] | An EXPLoRa-SF algorithm that creates orthogonal channels to avoid network collisions. | EXPLoRa-SF divides the network into channels and then assigns a data rate to each. The channels are orthogonal and therefore, collisions cannot occur between traffic from the different channels. |
| The increase in collisions and unfairness amongst network traffic [7] | An EXPLoRa-AT algorithm that promotes fairness amongst network traffic. | EXPLoRa-AT extends EXPLoRa-SF to include the intelligence to equalize airtimes for all traffic in different transmission channels and to enforce channel usage fairness and thus reduce network collisions. |
| Collision unfairness between end devices that are near and far from the gateway [8]. | A fair adaptive data rate algorithm that promotes data extraction fairness at the gateway. | The authors used mathematical modelling to derive the fairest data rate distribution ratios and set up the ADR to use these ratios to make data rate optimization decisions. |
| Parameter | Value |
|---|---|
| Carrier Frequency | 868 MHz |
| Bandwidth | 125 KHz |
| Coding Rate | 4/5 |
| Transmission Powers | 2 dBm to14 dBm |
| Spreading Factor | 7 to 12 |
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |
© 2021 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Lehong, C.; Isong, B.; Lugayizi, F.; Abu-Mahfouz, A. A Spreading Factor Congestion Status-Aware Adaptive Data Rate Algorithm. J. Sens. Actuator Netw. 2021, 10, 70. https://doi.org/10.3390/jsan10040070
Lehong C, Isong B, Lugayizi F, Abu-Mahfouz A. A Spreading Factor Congestion Status-Aware Adaptive Data Rate Algorithm. Journal of Sensor and Actuator Networks. 2021; 10(4):70. https://doi.org/10.3390/jsan10040070
Chicago/Turabian StyleLehong, Charles, Bassey Isong, Francis Lugayizi, and Adnan Abu-Mahfouz. 2021. "A Spreading Factor Congestion Status-Aware Adaptive Data Rate Algorithm" Journal of Sensor and Actuator Networks 10, no. 4: 70. https://doi.org/10.3390/jsan10040070
APA StyleLehong, C., Isong, B., Lugayizi, F., & Abu-Mahfouz, A. (2021). A Spreading Factor Congestion Status-Aware Adaptive Data Rate Algorithm. Journal of Sensor and Actuator Networks, 10(4), 70. https://doi.org/10.3390/jsan10040070

