• 基于无线Mesh网络OLSR路由协议的MATLAB仿真


    目录

    一、理论基础

    二、核心程序

    三、测试结果


    一、理论基础

            无线Mesh网络是一种基于无线传感器网络的协议,它使用多个节点组成一个网络,节点之间相互通信,从而形成一个具有自组织和自修复能力的网络。在无线Mesh网络中,OLSR(Optimized Link State Routing)路由协议是一种非常重要的协议,它主要被用于MANET(Mobile Ad hoc network)网络。

    OLSR路由协议的原理

           OLSR路由协议的核心思想是MPR(Multicast Protocol Routing,多播协议路由)。在OLSR中,每个节点都可以作为路由器和终端设备使用。节点之间通过广播和单播的方式进行通信,数据可以从源节点通过多个中间节点传输到目的节点。

    OLSR路由协议的数学原理

    1. 邻居节点:如果节点可以监听到节点X,则节点X是节点的邻居节点。
    2. 跳邻居:通过邻居节点监听到的节点是2跳邻居节点,可以包含节点自身以及某些1跳邻居节点。
    3. 严格2跳邻居:即不是节点自身或其邻居节点,而是严格通过邻居节点监听到的节点。
    4. 孤立两跳邻节点:指仅通过一个邻节点同目标节点相连的两跳邻节点。
    5. 主要地址:在OLSR中,被定义为OLSR接口地址。
    6. 链路:两个不同OLSR节点接口之间相互监听形成链路。
    7. 对称链路:两个OLSR接口之间已经认证的双向链路。

    OLSR路由协议的实现方式

           OLSR路由协议有很多种实现方式,最常见的包括Zigbee、Bluetooth Mesh、Thread等。其中,Zigbee是一种开放标准的Mesh组网协议,它采用了低功耗无线通信技术,具有自组织、低成本和低功耗等优点。而Bluetooth Mesh则是一种基于蓝牙技术的Mesh组网协议,它可以连接数百个设备,支持多种传输模式,包括广播、多播和单播等。

           总的来说,OLSR路由协议是一种非常高效的路由协议,它通过多跳的方式来进行数据的传输,从而增强了网络的稳定性和可靠性。同时,它也具有自组织和自修复的能力,这使得网络更加健壮和可靠。

            无线Mesh网络其也可以称为无线网状网络或者无线多跳网络,其具有动态自组织、自配置、易于维护等优点,同时还具备成本较低,系统运行稳定的优势。无线Mesh网络将移动节点和固定节点通过无线链路进行相互链接,组成一个多跳移动的自组无线网络。无线Mesh网络的构建是基于Ad Hoc无线网络之上的,因此,在其拓扑结构上和Ad Hoc无线网络具有较多的相似点。无线Mesh网络能够灵活快速的实现各种场合的组网,因此具有极其广泛的应用前景。无线Mesh网络结构的基本示意图如下图所示:

           对于OLSR路由协议,通过Dijkstra算法计算无线Mesh网络G中的N个sd的路径,主要步骤如下所示:

           Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。选择特殊路径长度最短的路径,将其连接的V-S中的顶点加入到集合S中,同时更新数组dist。一旦S包含了所有顶点,dist[]就是从源到所有其他顶点的最短路径长度。
    (1)数据结构。 设置地图的带权邻接矩阵为map[][],即如果从源点u到顶点i有边,就令map[u][i]=的权值,否则map[u][i]=∞;采用一维数组dist[i]来记录从源点到i顶点的最短路径长度:采用一维数组p[i]来记录最短路径上i顶点的前驱。
    (2)初始化。令集合S={u},对于集合V-S中的所有顶点x,初始化dist[i]=map[u][i],如果源点u到顶点i有边相连,初始化p[i]=u(i的前驱是u),否则p[i]=-1
    (3)找最小。在集合V-S中依照贪心策略来寻找使得dist[j]具有最小值的顶点t,即dist[t]=min,则顶点t就是集合V-S中距离源点u最近的顶点。
    (4)加入S战队。将顶点t加入集合S,同时更新V-S
    (5)判结束。如果集合V-S为空,算法结束,否则转6
    (6)在(3)中已近找到了源点到t的最短路径,那么对集合V-S中所有与顶点t相邻的顶点j,都可以借助t走捷径。

    二、核心程序

    1. ..............................................................
    2. %节点分布范围
    3. Nnode = 100;
    4. SCALE = 500;%
    5. %初始节点能量
    6. E0 = 1;
    7. %通信半径
    8. Radius= 100;%
    9. %节点最大移动速度
    10. Vmax = 1;%
    11. %数据发送包速率
    12. Smax = 20;%
    13. %数据发送包长度
    14. SLen = 2000;%
    15. %节点通信阈值
    16. LRad = 87;
    17. %电路能耗系数
    18. Eelec = 5e-8;
    19. %信道传播模型的能耗系数
    20. Efs = 1e-11;
    21. %信道传播模型的能耗系数
    22. Emp = 1.3e-15;
    23. %压缩比
    24. u = 0.5;%
    25. %初始变异概率
    26. P = 0.5;%
    27. %发送率
    28. Trans = 1.5;
    29. %%
    30. %构造一个多跳传输测试网络系统,OLSR协议的改进
    31. X = rand(1,Nnode)*SCALE;
    32. Y = rand(1,Nnode)*SCALE;
    33. %定义随机带宽
    34. Bw = 100*rand(Nnode,Nnode);
    35. %顶级随机的丢包率
    36. Db = rand(Nnode,Nnode)/20;
    37. %network topology
    38. dmatrix0= zeros(Nnode,Nnode);
    39. Fmatrix0= zeros(Nnode,Nnode);
    40. Cmatrix0= zeros(Nnode,Nnode);
    41. for i = 1:Nnode
    42. for j = 1:Nnode
    43. Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2);
    44. %距离因素
    45. dmatrix0(i,j) = Dist;
    46. end;
    47. end;
    48. %计算归一化值的最大值
    49. for i = 1:Nnode
    50. for j = 1:Nnode
    51. Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2);
    52. %网络优先级参数
    53. Fmatrix0(i,j) =((Bw(i,j)-min(min(Bw)))/min(min(Bw)) + (max(max(dmatrix0))-dmatrix0(i,j))/max(max(dmatrix0)) + (1-Db(i,j)))/3;
    54. %视频传输能力——即节点之间的传输损耗,用简化模型替代
    55. if i == j
    56. Cmatrix0(i,j) = 0;
    57. else
    58. Cmatrix0(i,j) = 20*log10(Dist);
    59. end
    60. end;
    61. end;
    62. MAX_dmatrix = max(max(dmatrix0));
    63. MAX_Fmatrix = max(max(Fmatrix0));
    64. MAX_Cmatrix = max(max(Cmatrix0));
    65. matrix = zeros(Nnode,Nnode);
    66. dmatrix = zeros(Nnode,Nnode);
    67. Fmatrix = zeros(Nnode,Nnode);
    68. Cmatrix = zeros(Nnode,Nnode);
    69. for i = 1:Nnode
    70. for j = 1:Nnode
    71. Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2);
    72. %a link;
    73. if Dist <= Radius & Dist > 0
    74. matrix(i,j) = 1;
    75. %距离因素
    76. dmatrix(i,j) = Dist;
    77. %网络优先级参数
    78. Fmatrix(i,j) = ((Bw(i,j)-min(min(Bw)))/min(min(Bw)) + (max(max(dmatrix0))-dmatrix0(i,j))/max(max(dmatrix0)) + (1-Db(i,j)))/3;
    79. %视频传输能力——即节点之间的传输损耗,用简化模型替代
    80. Cmatrix(i,j) = 20*log10(Dist);
    81. else
    82. matrix(i,j) = inf;
    83. %距离因素
    84. dmatrix(i,j) = inf;
    85. %网络优先级参数
    86. Fmatrix(i,j) = inf;
    87. %视频传输能力——即节点之间的传输损耗,用简化模型替代
    88. Cmatrix(i,j) = inf;
    89. end;
    90. end;
    91. end;
    92. %归一化处理
    93. dmatrix = dmatrix/MAX_dmatrix;
    94. Fmatrix = Fmatrix/MAX_Fmatrix;
    95. Cmatrix = Cmatrix/MAX_Cmatrix;
    96. %路由优化算法的改进
    97. Tmatrix = (dmatrix + Fmatrix + Cmatrix)/3;
    98. %定义通信起始节点和终止节点
    99. tmp = randperm(Nnode);
    100. for i = 1:Nnode
    101. distA(i) = sqrt((X(i))^2 + (Y(i))^2);
    102. distB(i) = sqrt((X(i)-SCALE)^2 + (Y(i)-SCALE)^2);
    103. end
    104. [Va,Ia] = max(distA);
    105. [Vb,Ib] = max(distB);
    106. Sn = Ia;
    107. En = Ib;
    108. [paths,costs] = func_dijkstra(Sn,En,Tmatrix);
    109. %通过遗传优化算法去搜索OLSR协议的最小MRP集
    110. if isempty(paths) == 0
    111. flags = 1;
    112. end
    113. end
    114. path = func_find_best_MRPset(paths,X,Y,Tmatrix,Nnode);
    115. path_distance=0;
    116. ds=0;
    117. for d=2:length(paths)
    118. path_distance= path_distance + MAX_dmatrix*dmatrix(paths(d-1),paths(d));
    119. ds(d)=MAX_dmatrix*dmatrix(paths(d-1),paths(d));
    120. end
    121. %hop数量
    122. path_hops = length(paths);
    123. %根据OSLR协议所建立的网络路径进行视频的传输
    124. ...............................................

    三、测试结果

     A12-29

  • 相关阅读:
    AJAX请求及解决跨域问题
    用DIV+CSS技术设计的个人电影网站(web前端网页制作课作业)
    calc方法和vue中calc不生效踩坑
    计算机毕业设计springboot+vue基本微信小程序的驾校宝典系统-驾照考试系统
    TDengine+OpenVINO+AIxBoard,助力时序数据分类
    Android 组件化 组件上下依赖关系实现
    k8s笔记26--快速实现prometheus监控harbor
    MIT 6.S081学习笔记(第二章)
    黑马React18: 基础Part II
    rust元组
  • 原文地址:https://blog.csdn.net/ccsss22/article/details/127781313