0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LoRaWAN网络服务器算法--下行路径选择算法对比与仿真(下)

利尔达科技集团 2024-02-19 12:22 次阅读

LoRaWAN 网络是典型的星型架构网络,但单节点的广播数据也可以同时被多个网关收到并同时上报NS服务器,对于此消息有下行需求时,需要通过NS服务器的下行网关选择算法,选择合适网关进行下行。

一个健全的算法需要考虑到不同网关的网络延时、空口负载、信号质量及任务队列选择最优网关进行下行,确保下行消息可靠送达并使整体网络负载趋于均衡。

利尔达的下行选择算法也随着NS服务器的更新在不断迭代升级,我们在上篇中对两种常用的算法进行分析描述,今天将继续通过仿真一起看看各种算法在实际应用场景中是如何表现的。

现有算法缺陷及优化算法提出

算法一:信号质量优先法

算法简化流程图如下:

6be3c124-cede-11ee-9118-92fbcf53809c.png

缺陷:

1、该算法仅以信号质量作为选择标准,NS可以选择出距离节点最近的网关,但是没有考虑网关网络延迟,若选择的网关为4G网关,网络波动严重,将产生大量下行丢包。

2、未考虑网关上行负载情况,遇到第三章中所述的负载问题时也无法进行有效处理。

算法二:影响因子得分加权法

算法简化流程图如下:

6c5d9fc6-cede-11ee-9118-92fbcf53809c.png

缺陷:

1、遇到第三章中所述的上下行链路不对等问题时,算法可能因为其他网关的网络延迟及通信负载较好而选择极远处网关下行而导致丢包

2、经过模拟测试,网关网络延迟大于450ms时,任何下行数据都将失败,使用权重来考虑该因素并不合理。

3、其实该算法的几个权重值都很难定夺,任何的影响因子出现较为极限的情况时,都会使最终得分有失合理性,很难通过权重值平衡各种极限情况。

算法三:利尔达Unicore 3.0 下行选择算法
考虑到现有算法的缺点并结合实际应用场景可能遇到的问题,现提出一种新的解决办法,由于核心部分涉及公司机密,故简单介绍其特点如下:
1、充分进行网络负载均衡,保证网络内所有网关的下行负载处于健康状态,面对个别网关网络拥堵的状况时可以很好地将任务均分给附近网关。
2、网关的下行充分考虑下行质量,所有的下行保证处于安全边际内,不会因为个别因素的影响而选择信号质量在安全边际外的网关下行。保证上下行链路双向可达。
3、可以处理较大的网络波动,保证选择的下行网关不受网络波动影响。

算法仿真

基于Python实现上述三种算法并对实际应用场景进行图形化建模,用以分析算法的执行情况。效果图如下:

6c816794-cede-11ee-9118-92fbcf53809c.png

该算法仿真基于以下原理与假设:

1、在1*1的正交坐标轴内以随机生成或手动指定的方式确定网关数量及坐标位置。网关位置以红色三角进行标注

2、网关属性包含上行负载及下行负载,每个网关的上行负载可手动设定,且为静态值,与下行负载没有任何直接联系。网关的下行负载在仿真算法中动态计算,网关每处理一个下行请求都会累加下行负载

3、坐标轴1*1区域内以均匀分布的方式随机生成指定数量的坐标点,代表有下行需求的节点,坐标点与网关的距离代表上行信息的信号质量,距离越远信号质量越差。

4、无需考虑实际环境中建筑、树林等遮挡物带来的信号衰减,因为坐标轴内的点位置即代表上行信号质量,并非现实中的节点位置。

5、每随机生成一个下行需求点,运行指定的下行选择算法,选择出最优网关下行后,该网关下行负载增加,并将该点以该网关对应的颜色标注在坐标轴内。

6、不考虑下行速率及TOA时间,将网关的上下行通信占空比抽象为简单的数值,每有一个下行请求,网关下行负载+0.1。

7、假定下行点数量即为周期时间内整个系统需要处理的下行请求,且网关计算动态负载的周期与这个周期时间一致。因此增加点数量即为模拟更高频次的下行请求,且代码中动态负载只需累加即可无需循环计算。

8、为简化算法模拟过程,假定周期时间都所有网关的网络延时均正常。

8、处理完所有点的下行请求后坐标轴内会显示大量着色节点,代表单位时间内对应网关处理的下行请求。

9、代码运行结束后各网关的上下行负载情况会以表格的形式打印出来。

算法对比

手动设定网关位置及各网关上行负载,模拟出常规及各种特殊情况,对比三种不同算法的表现,验证算法效果。

算法一:信号质量优先法

算法二:影响因子得分加权法

算法三:利尔达Unicore 3.0 下行选择算法


【常规情况】

条件:下行请求数量1000 / 网关数量3 / 随机分布 / 网关上行轻负载

6c96684c-cede-11ee-9118-92fbcf53809c.png

结果:算法一无负载均衡;算法二负载均衡效果差;算法三负载均衡效果佳

结果分析:

算法一算法二在网关分布均匀且个网关上行负载无明显差距的情况下,呈现的效果类似,基本是按照就近原则择优,图上可以看到明显的三条明显的分界线,即网关两两连线的中垂线。最终的网关上下行负载都不是很均匀。

算法三中无明显边界线,距离网关较近处的节点选择下行时较为灵活,点位分布存在交叉区域,而较偏远的点则选择了信号质量最好的网关下行。网络负载也做到了很理想的均衡。

【部分网关位置较偏远】

条件:下行请求数量1000 / 网关数量3 / 随机分布 / 网关上行轻负载 / 网关分布不均匀

6cc98470-cede-11ee-9118-92fbcf53809c.png

结果:算法一无负载均衡;算法二负载均衡效果差、部分下行可能丢包;算法三下行质量可靠、负载均衡效果尚可。

结果分析:

该情况下选取的三个网关位置中,两个的位置较偏远。由于下行行请求散点是均匀分布,难以按照设想随意调整分布密度,因此改变网关位置其实相当于改变下行请求的分布情况。该情况下下行请求主要集中于中央网关的附件,下面看下三种算法对于这种情况的处理。

算法一由于仅判断信号质量,在下行请求分布不均匀时,下行负载严重不均衡。

算法二可以注意带红圈标注处的情况,由于网关负载在加权求和的算法中占有一定权重,因此当右上角网关负载较小时,得分较高。红圈内的绿色点即是因此原因被分配给了该网关来下行。然而这么偏远位置的节点本身信号质量已经很差,还要选择非最近网关下行,很可能遇到第三章所述的上下行不对等问题,而导致下行失败。且由最终的下行负载情况可以看出负载分布也是差距悬殊。若调整网关负载所占的得分权重,调大则上下行不对等问题更加明显,调小则负载分布更加不均匀。存在一定的局限性。

算法三中右上角网关自身附近的下行请求较少,但是算法给他分配了大量中间网关附近的下行请求,最大程度地帮助整个系统分担下行负载。并且该网关仅响应自己安全边际内的下行,对于偏远点全部交由最近的网关处理以保障通信成功率。最终的下行负载情况虽然没有做到完全均衡,但是优于前两者。

【某网关负载较重情况】

条件:下行请求数量1000 / 网关数量5 / 随机分布 / 单网关上行重负载 / 网关分布较均匀

6ceb6978-cede-11ee-9118-92fbcf53809c.png

结果:算法一无负载均衡;算法二负载均衡效果差;算法三负载均衡效果好。

结果分析:

这是一种较为常见的情况,区域内分布了五台网关,最右侧网关覆盖的节点较多,且上行负载较大,设定值为17.5%,主要关注各算法对这个高负载网关的处理。

算法一仅判断信号质量,不判断负载情况,最右处网关在已有17.5%的上行负载时依然需要处理26.9%的下行负载。

算法二在上一个模拟场景中暴露出负载权重过大的缺陷,本场景中未改变负载权重。可以看出相对于算法一,算法二由于网关负载在加权求和的算法中占有一定权重,已经起到了一定效果,将网关4的下行负载降低了一些,但是在该场景下,相对于上个场景反而显得负载的权重太小,无法处理好大负载网关。

算法三中可以看到左侧的网关都向右分担了更多的下行任务,最终网关4的下行负载仅为12.9%,相比于其他算法有明显提升。

总结

综合以上仿真结果——

算法一由于为考虑网关负载情况,在负载均衡的处理上完全由节点与网关的位置决定,虽然能保证从信号最优网关下行,但是缺点在于无法做到负载均衡。

算法二在将考虑到了各类影响因素,设定不同的权重进行加权求和,看似可以通过权重因子的调节灵活地调整算法以应对各种情况,但是在仿真的模拟情况二和情况三中,使用相同的权重,却暴露出相反方向的问题,也就是说权重因子无论如何调节都无法同时处理这两种情况。并且在负载均衡方面算法二也仅是相对于算法一有一点点提升。

算法三在上述模拟情况及其余大量随机测试中没有暴露出问题,算法从设计角度已经保证了远处节点可以得到最佳网关的响应,并且在负载均衡方面拿出近处节点灵活分配,最大程度的做到负载均衡。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82509
  • 网络服务器
    +关注

    关注

    0

    文章

    30

    浏览量

    10794
  • lorawan
    +关注

    关注

    3

    文章

    290

    浏览量

    23647
收藏 人收藏

    评论

    相关推荐

    服务器操作系统有几种?

    、Linux、Unix等等,而人们常常应用的大部 分全是Windows和Linux系统软件。今日,小编就简单的给大伙儿介绍一这两种常见的网络服务器电脑操作系统。 一、网络服务器Windows电脑操作系统
    发表于 03-29 16:59

    dns网络服务器未响应是什么原因

    DNS网络服务器未响应是指在使用域名解析服务时,用户的计算机或设备无法获取到有效的响应。通常情况下,这可能是由于以下原因导致的。 DNS服务器故障:DNS服务器可能出现故障或维护,导致
    的头像 发表于 01-11 10:39 7714次阅读

    怎么判断MCU是否连接到了网络服务器

    有什么办法可以测试MCU是否正常连接到了网络服务器
    发表于 10-12 07:38

    LoRaWAN网关与常见网络服务器的协议

    LoRaWAN网关与ChirpStack之间的协议LoRaWAN网关与ChirpStack(以前称为LoRaServer)服务器之间的通信协议是基于ChirpStack的网络服务器
    的头像 发表于 09-15 08:22 451次阅读
    <b class='flag-5'>LoRaWAN</b>网关与常见<b class='flag-5'>网络服务器</b>的协议

    IzoT 网络服务器数据表

    IzoT 网络服务器数据表
    发表于 07-04 20:05 0次下载
    IzoT <b class='flag-5'>网络服务器</b>数据表

    用作代理的单元是否也可以是将信息中继到浏览网络服务器

    Raspberry pi 上),但是我可以将代理作为服务器访问,以将信息放在我的 android 手机的访问浏览上。 换句话说,用作代理的单元是否也可以是将信息中继到浏览网络服务器
    发表于 06-05 07:42

    有没有办法将espalexa和elegantOTA开始命令与网络服务器开始结合起来​​?

    我正在运行最新的 Arduino IDE,所有板和库都已完全更新。我正在为 esp12E 板编程。 是否可以同时运行网络服务器、espalexa 和 elegantOTA?我正在尝试这样做,但是当我
    发表于 06-02 06:32

    是否可以从设置为网络服务器的ESP8266发送嵌入式图像?

    是否可以从设置为网络服务器的 ESP8266 发送嵌入式图像(使用 WeMos D1 mini)?如果可以,有没有限制。我想要一个存储在闪存中的背景图像。
    发表于 05-23 06:08

    ESP8266支持大文件以GET请求方式发送到HTTP网络服务器

    ESP8266 支持大文件 [500KB] 以 GET 请求方式发送到 HTTP 网络服务器...?有可能如何编写代码来发送数据。任何示例代码都可以发送大 file.txt GET 方法来发布..
    发表于 05-19 06:55

    两个网络服务器可以在同一个esp8266板上共存吗?

    是使用 Arduino IDE,另一种是使用网络服务器。我对任何一种方式都持开放态度,但是我也在运行一个网络服务器以满足其他需求,两个网络服务器可以在同一个 esp8266 板上共存吗?
    发表于 05-15 08:30

    ESP8266如何将其用作微型网络服务器

    我创建了一个公共网站,我将其托管在 ESP8266 上,以演示如何将其用作微型网络服务器, 我通过创建反向代理并使用 Cloudflare 隐藏 IP 地址并防止 DDoS 来实现这一点攻击。我正在
    发表于 05-11 08:19

    esp + 全球定位系统 + 网络服务器使用的最简单的技术栈是什么?

    我打算用 esp 和 gps 做一个小项目。这个想法是让 esp 作为一个访问点,运行一个网络服务器,然后显示一个网页的速度,位置等。 我可以在那里使用的最简单的技术栈是什么(我对 esp 几乎
    发表于 05-11 08:10

    ESP-Now-with-sensor网络服务器和中继的疑问求解

    。其次,ESP32 是接收和发送的组合;托管异步网络服务器。使用网络服务器“GET”请求“相机视图”调用函数“relayOn”将 ESP-Now struct_message 发送
    发表于 05-11 07:42

    如何从一个网页控制多个网络服务器

    在另一个论坛上有一个关于如何从一个网页控制多个网络服务器的问题。 解决方法很简单。 网络服务器软件可用作控制 LED、继电器、电机等的框架。 网页大多托管在 ESP8266 或 ESP32 本身
    发表于 04-28 07:32

    如何用ESP8266构建网络服务器

    我正在开始一个关于用 ESP8266 构建网络服务器的系列文章 第一个故事是构建一个带有一些文本字段的网页。 将文本放入字段并将其发送到 ESP。
    发表于 04-28 07:21