无线通信——Mesh体系结构

Mesh体系结构

了解Mesh的体系结构有利于我们后期的理解!这里有些简单的知识点以及解释

WMN:WMN就是无线mesh网络,我们一般提到WMN其实特指就是Mesh网络的整个体系结构

STA:客户工作站,这个东西就是用户的设备端,我们使用的设备都可以称之为STA,通过AP访问网络。AP(无线访问接入点设备,它是我们用无线网络上网的接入点。)

MP:MP是Mesh节点,它表示加入一个Mesh网络中的设备。因为Mesh的多节点性,因此每个Mesh网络中的设备都能成为中心节点并和其它Mesh节点进行交流。当我们启动具备Mesh网络的设备时,Mesh节点会自动寻找其它Mesh节点。

MAP:它是具备AP功能的Mesh节点,也就是说,这种Mesh节点可以与我们的STA进行连接并提供接入的功能。

MPP:这种Mesh节点可以提供向外部网络设备转发数据的能力,它还具备一定的路由功能。一般的,它是WMN和有线设备的网关。当WMN需要与非Mesh网络设备或有线设备转发数据时,我们就需要用到它。

无线Mesh的拓扑分为三类:基于客户使用的拓扑结构、基于基础设备的拓扑结构和混合型结构,我认为我不用太多的解释,无非就是一种为客户服务,一种为基础设施提供服务,一种是多用途服务。这只是在使用功能上的一个分类。对于网络拓扑来说的话,Mesh网络支持多种拓扑,因为具有动态调节的能力。

 Mesh的帧和运作过程

 

在数据链路层,Mesh有相应的帧封装在内部,这些帧就是区别是否为支持Mesh的设备的特征。下面就来研究Mesh的帧格式,也就是它的结构。

Mesh技术要实现的是多跳(无线连接)网络。在基于802.11的协议上,802.11s的主要变化有扩展了Mesh头和引入多跳Action管理帧的概念。

1 Mesh帧格式

Mesh头:通过引入了Mesh帧头以封装完成Mesh,如下图所示

前面都是各种已有的报头,他们控制着该报文的其他部分,可以看出,身为新技术的Mesh被放在了帧头的后方(我习惯从左往右数)。

多跳Action帧:Mesh支持的多跳Action帧格式包括Mesh帧头和Action类型以及最后一位Last所表示的一个或多个制定的信息单元。

他们有什么用呢?Mesh帧头的表达了我具备Mesh网络的性质了,而多跳Action帧自然是Mesh组网特有的多跳的性质了,它需要这个多跳Action帧作为可多跳的依据。

Mesh Profile:一个Mesh设备若要加入Mesh网络,至少应配置一个Mesh profile。Mesh Profile包括如下Mesh网络的基本组成元素:(Mesh标识、Mesh选路协议标识和Mesh路径开销标识)。这些信息通过携带在管理帧中的Mesh标识信元和Mesh配置信元进行传递和协商

上面这段话抽象起来了,我们来分析解读一下。假如我是一个依靠Mesh运作的设备,我需要有一个Mesh Profile(网络轮廓)所有设备通过这个网络轮廓才能识别出我是不是一台Mesh。它由Mesh标识、Mesh选路协议和Mesh路径开销组成。Mesh标识代表在一个网络区间中唯一标识一台网络设备,就好比我要有一个不跟大家重复的名字,这样大家才能认识我;除此之外,Mesh还要具备选路协议,Mesh可以根据当前环境的动态变化而及时进行拓扑变化,Mesh选路协议在这时具有了作用;再然后,拓扑变化后,通信时还要在其中选出最优的路径以多跳方式传输数据,那么Mesh用根路径开销来对比哪条路更优。

2 Mesh建立过程

如果你学过OSPF等网络协议,你会对Mesh运作过程非常清晰。

(1) Mesh邻居发现/网络扫描

Mesh发现是Mesh网络建立过程中的第一步,首先它们会启用probe request(探测请求)和probe reponse(探测回应)进行探测Mesh网络的存在,当发出的request收到回应时,证明周围存在Mesh设备节点。发出的request探测帧中包含着Mesh ID标识、Mesh配置等诸多信息。当对方收到你的Mesh ID标识及配置等信息后会用response回应你,其中里面包含了它的Mesh ID标识以及它的Mesh配置等信息。

Mesh也可以通过侦听Beacon(信标)帧来收集邻居信息,加强了Mesh邻居发现的能力。

注:我在Probe帧或Beacon帧中携带有Mesh ID标识、Mesh配置与安全认证等信息,但是我在邻居发现时候,先进行的是Mesh ID标识的识别,后续我是否要维护这个关系就要协商其他参数。(我先知道你的名字认识你这个人了,之后才会再和你对话并考虑要不要与你维持邻居关系)

(2)邻居关系维护

紧接上面的邻居发现,当Mesh节点从接收到的Beacon或Probe Response帧中解析发送端Mesh节点的Mesh profile信息,与本端Mesh profile信息进行匹配。只有当扫描双方的Mesh profile匹配时,双方才可以建立邻居关系。

也就是说,虽然在上述探测帧和侦听帧的过程中我发现了Mesh帧的存在,但我仍然要进行详细的Mesh Profile来判断是否我要接受或匹配这个帧,以此判断我们是否有建立通信的能力。

3 Mesh的连接过程

(1)Mesh连接管理

Mesh连接管理包括Mesh连接建立和Mesh连接拆除两个过程,采用PeerLinkOpen/Confirm/Close三种Mesh连接管理Action帧交互实现,

PeerLinkOpen:对等链接打开

confirm:确认

Close:关闭

(2)Mesh连接建立

当Mesh节点发现邻居后,可以与之发起Mesh连接建立过程。协商Mesh连接的双方需要确保使用相同的Mesh节点。每个MP可以根据需要建立一条或多条Mesh连接,Mesh连接建立后,需要继续进行后续认证和安全协商,之后Mesh连接才可以参与Mesh数据转发。

(3)Mesh连接拆除

Mesh连接双方中任一方,均可以主动向对方发送Peer Link Close消息,以关闭双方间的Mesh连接,收到Peer Link Close消息的Mesh节点,需要向对方MP回应一个Peer Link Close消息。

4 Mesh 选路

Mesh网络的任何一个源和目的地之间会存在多条可用的Mesh链路,并且这些Mesh链路的传输质量会随着周边环境实时变化。因此,非常有必要在Mesh网络支持选路协议,确保数据帧能始终通过最优的链路传输,这个没有什么好说的,之前我们都知道Mesh拥有根据网络现状动态调整拓扑的能力,不过选路协议是不一样的,各个厂家和设计者都可以按照自己的预想和方案调整选路规则。

Mesh网络中的所有MP对数据帧均在二层进行标准的桥转发,这句话简单来讲就是Mesh网络主要是依靠数据链路层进行数据帧转发,还需要依靠类似交换机的工作模式完成转发数据。对于目的MAC为单播地址的数据帧,首先查找转发表项。若查到匹配表项,则将数据帧由该表项对应的Mesh链路发送出去;若未匹配任何表项,则将该数据帧从所有非接收端的端口泛洪出去(也就是全部发一遍)。对于目的MAC为组播或广播地址的数据帧,Mesh节点也是用泛洪的方式发送。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/107019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《软件方法》2023版第1章(09)基本共识上的沟通,SysML

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.3 UML 1.3.2 使用UML的理由 1.3.2.5 基本共识上的沟通 符号标准并不是随便哪个人拍脑袋定下来,然后毫无道理地强迫大家接受。符号背后往往隐含着我们对某个学科的一些…

使用 Kubernetes 简化平台工程

平台工程在现代应用程序开发和部署中发挥的作用至关重要。随着软件应用程序变得越来越复杂和分散,对稳健且可扩展的基础设施的需求变得越来越重要。这就是平台工程的作用所在,它是支持整个软件开发生命周期的支柱。让我们深入探讨平台工程在创建和维护应…

【SA8295P 源码分析】105 - QNX MISC分区读写、切换A/B启动槽、读取开机次数命令 swdl_utils 介绍 及 祼分区读写 代码实现

【SA8295P 源码分析】105 - QNX MISC分区读写、切换A/B启动槽、读取开机次数命令 swdl_utils 介绍 及 祼分区读写 代码实现 一、切换 A/B 槽启动分区二、读取开机次数三、写 MISC 信息四、Dump Misc 信息五、misc 祼分区读写 代码实现系列文章汇总见:《【SA8295P 源码分析】00…

收集Stream流

Stream流的收集操作 收集Stream流的含义:就是把Stream流操作后的结果数据 转回 到 集合 或者 数组 中去。Stream流:方便操作 集合 / 数组 的 手段。集合 / 数组:才是开发中的 目的 。 Stream流的收集方法 R collect(Collector co…

[Python进阶] 操纵键盘:PyAutoGUI

6.5 操纵键盘:PyAutoGUI 6.5.1 keyDown、keyUp 按下或弹起某个按键。在按下时不会释放。 参数: key(str): 要按下的键。有效的名称列在KEYBOARD_KEYS。 logScreenshot:是否要截图并保存在当前文件夹下。 import pyautoguipyautogui.keyDown(f) # 模拟…

SpringAOP是什么?为什么要有SpringAOP?

SpringAOP是什么?为什么要有SpringAOP? 原文:SpringAOP是什么?为什么要有SpringAOP? 一、有SpringAOP之前 简单的开发场景,只需要写简单的业务逻辑,比如CRUD 但是在执行具体的逻辑之前&…

Golang安装和配置指南:从零开始的高效开发之旅

Golang(又称Go)是一种快速、可靠且高效的编程语言,由Google开发并在开源社区广泛应用。Golang的设计目标是通过简洁的语法和强大的并发模型提供高效的开发体验。在本文中,我们将指导您如何安装和配置Golang,以便开始您…

Python中兔子递归函数的例子

本文将详细介绍Python中兔子递归函数的例子,展示递归函数的基本实现方法及其原理。 一、递归函数的概念 递归函数是指在函数内部调用自身的函数。通过递归函数,可以将复杂问题分解成简单的子问题来解决。 这种过程是有限的,当子问题足够小…

【大数据Hive】hive select 语法使用详解

目录 一、前言 二、Hive select 完整语法树 三、Hive select 操作演示 3.1 数据准备 3.1.1 创建一张表 3.1.2 将数据load加载到t_usa_covid19表 3.1.3 再创建一张分区表 3.1.4 使用动态分区插入数据 3.2 select 常用语法 3.2.1 查询所有字段或者指定字段 3.2.2 查询…

kafka安装和使用的入门教程

这篇文章简单介绍如何在ubuntu上安装kafka,并使用kafka完成消息的发送和接收。 一、安装kafka 访问kafka官网Apache Kafka,然后点击快速开始 紧接着,点击Download 最后点击下载链接下载安装包 如果下载缓慢,博主已经把安装包上传…

使用匿名函数在Golang中的好处

发挥Golang中无名代码块的潜力 匿名函数,也被称为lambda函数或闭包,是Golang中的一个强大功能,提供了许多好处。这些无名代码块为开发人员在设计和构建其代码时提供了更大的灵活性和模块化。在本节中,我们将探讨使用匿名函数可以…

《Python基础教程》专栏总结篇

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:为什么Java代码可以实现…

国外的跨境物流有什么学习的地方

国外的跨境物流的学习点可以从以下几个方面入手: 跨境物流的技术与流程:学习国外跨境物流的技术和流程,了解国外先进的物流设备和仓储管理系统。 国际贸易政策和法规:熟悉国际贸易政策和法规,包括出口清关流程、运输协…

python - 内存池的机制

内存池是一中用于管理内存分配的机制,它可以提高内存分配和释放的小路,内存池通常由一块预先分配好的内存区域和一个空闲列表组成,当需要内存分配内存时,内存会重空闲列表中取出来医疗空闲的内存,当释放内存时&#xf…

头部品牌集体扑街!2023年9月京东平板电视TOP10品牌排行榜出炉

鲸参谋监测的京东平台9月份平板电视市场最新销售数据已出炉! 根据鲸参谋平台的数据显示,9月份,京东平台大家电品类——平板电视的整体销售呈现下滑。具体地,9月平板电视的销量为62万,环比降低约18%,同比降低…

oracle 同一张表同时insert多条数据 mysql 同一张表同时insert多条数据

oracle 同一张表同时insert多条数据 在Oracle数据库中,你可以使用INSERT ALL语句同时向同一张表插入多条数据。INSERT ALL语句允许你一次执行多个插入操作,可以提高插入的效率和速度。 以下是使用INSERT ALL语句插入多条数据的示例: INSERT…

线程安全问题 的小案例

package Thread_api_test;public class ThreadSafety {//模拟线程安全问题public static void main(String[] args) {//1:创建一个账户对象 代表两个人的共享账户Account accnew Account("ICBC",10000);//创建两个线程 分别两个人 再去同一个账户里取钱10000new Draw…

【Python机器学习】零基础掌握HDBSCAN聚类

如何在大量数据中识别出有用的模式或群体? 在我们日常生活和工作中,数据无处不在。但,在大量数据中找到有用的信息却并非易事。特别是对于那些不具备数据科学背景的人来说,这一任务更加艰巨。那么有没有一种方法,不仅高效还易于理解,能帮助我们从复杂的数据中提取有用的…

细说晶振元件HC49U的功能、应用及性能特点 | 百能云芯

在电子领域,晶振(Crystal Oscillator)是一种重要的元件,用于产生稳定的时钟信号。HC49U是一种常见的晶振型号,具有广泛的应用范围。云芯将带您深入探讨HC49U晶振的功能、应用领域,以及其性能特点&#xff0…