热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

无线射频专题《无线局域网排错,第二层重传问题8@隐藏节点》

空闲信道评估(CCA)是指无线节点在物理层倾听802.11射频传输媒介,并在传输前要求媒介必须保持空闲。物理载波侦听的问题在于并非所有节点

空闲信道评估(CCA)是指无线节点在物理层倾听802.11射频传输媒介,并在传输前要求媒介必须保持空闲。物理载波侦听的问题在于并非所有节点都可以互相侦听到对方。请时刻牢记无线传输媒介的半双工特性,在任何给定的时间,只有一个无线射频卡可以发送帧。如果一个客户端在执行完CCA后,并没有侦听到其他正在传输的无线节点,会发生什么事情哪?如果无线节点在执行CCA的过程中没有检测到任何射频能量,它便会开始传输。两个节点同时传输的结果就是帧发生碰撞破坏,重传将会发生。当某客户端被接入点听到,但没有被BSS中的其他客户端听到,就会出现隐藏节点(hiddnen node)问题。客户端互相听不到对方,因此会同时传输。接入点如果听到两路相互干扰的传输信号,入向的传入就会失败。

图12-12显示了接入点的覆盖范围。请注意,一堵厚墙位于某客户端和所有其他客户端之间,这些客户端均与接入点关联。即使所有节点都可以听到接入点发出的传输信号,但这个单独的客户端的传输信号不能被所有其他节点“听到”,这个不能被“听到”的无线节点就是隐藏节点。每次隐藏节点传输信号,而其他节点之一也同时传输时就会发生冲突。隐藏节点会持续与在空闲信道评估过程中没有探测到该隐藏节点的所有节点发生碰撞。持续的冲突导致第2层重传,最终结果是吞吐量下降。隐藏节点可能使重传率达15%-20%,甚至更高。重传当然也会影响吞吐量,产生延迟和抖动等问题。(至此,我要纠正很多初学者认为“工作站只与路由接入点单点通讯”的误区,各个工作站之间也是有相应的协议互相协调工作)

拙劣的无线局域网设计或因为障碍物(如新建墙体或新安装的书架等)的影响都可能会导致隐藏节点问题。用户移动到某障碍物之后可能会导致隐藏节点问题。VowiFi电话往往也会成为隐藏节点,因为用户会考虑去安静的角落或地区接听电话,而在那些地方电话的射频信号无法被其他客户端侦听到。台式机用户通常将无线网卡置于金属桌子的底部,这很容易将诊无线网卡转换成不为所知的隐藏节点。

隐藏节点在两个客户端位于RF覆盖蜂窝的两端时,有时也会发生,因为它们互相听不到对方,如图12-13所示。这在接入点发射功率过大导致更大的覆盖范围时经常发生。通常推荐禁用接入点2.4GHz射频卡的1Mbps和2Mbps数据传输率以满足无线接入容量的目的。禁用这些数据速率的另一个原因是2.4GHz的1Mbps和2Mbps的覆盖蜂窝相当大,通常会导致隐藏节点。如果隐藏节点问题发生,可能需要RTS/CTS机制。

你是如何解决隐藏节点问题的?如果终端用户抱怨吞吐量下降,可能的原因之一就是隐藏节点。协议分析仪在确定隐藏节点问题时,是一个很有用的工具。如果协议分析仪显示某客户端比其他客户端重传率更高,隐藏节点就很可能存在。某些协议分析仪甚至可以基于重传阈值产生隐藏节点警报。

另一种方法是使用请求发送/清除发送顿(RTSCTS)来诊断问题。为此可以尝试降低RTS/CTS阈值到约500字节。这个数值可以根据通信类型进行调整。例如,如果部署在仓库环境中的终端仿真应用存在隐藏节点问题,此时RTS/CTS阈值应设置为更小的值,如50字节。协议分析仪可用来确定这一阙值。图12-15描述的是隐藏节点启用RTS/CTS交换的过程。

障碍物另一边的无线终端可能听不到隐藏节点发出的RTS顿,但可以听到AP发出的CTS帧。接收到CTS帧的无线终端将重置其NAV值,确保这段时间隐藏节点可以传输数据顿并接收ACK帧,在隐藏节点上执行RTS/CTS可以预留传输媒介并强制所有其他无线节点暂停传输,碰撞和重传将会因此减少。隐藏节点导致的碰撞和重传将使吞叶量降低。启用RTS/CTS机制通常也会降低吞吐量。但是,如果在被怀疑的隐藏节点上执行RTS/CTS,吞吐量有可能因为碰撞和重传的减少而增加1。如果被怀疑的隐藏节点在启用RTSCTS后吞吐量反而增加,证明隐藏节点确实存在。RTS/CTS通常不应被视为解决隐藏节点的方法,RTS/CTS只能临时解决隐藏节点问题,通常只用于诊断。但针对点到多点桥接(PIMP)是个例外。 PMP方案中的非根网桥因为相隔很远,互相不能听到对方,RTS/CTS应该部署在非根网桥上以消除因不能听到对方而产生的隐藏节点问题带来的冲突。

解决隐藏节点问题的方法:

  • 使用RTS/CTS诊断隐藏节点问题

使用协议分析仪或RTS/CTS进行隐藏节点问题诊断。 RTS/CTS还可用作临时解决隐藏节点问题的方法。

  • 增加所有无线客户端的功率

大多数客户端具备固定的传输功率。但是,如果客户端的输出功率可以调整,增大发射功率可以增加客户端的传输范围。客户端互相听到对方的可能性就会随之增加。但是这不是推荐的解决方案,最佳实践是要求BSS中的所有无线节点具备相同的传输功率。

  • 消除障碍物

如果确定某种形式的障碍物阻止客户端互相听到对方,简单的消除障碍物就可以解决这个问题。很明显,你不能随意拆除一堵墙,但如果障碍物是一张金属桌子或一个文件柜,可以将它简单换个地方就可以解决这个问题。

  • 移动隐藏节点

如果一个或两个无线终端无法被其他节点侦听到,只需将其移动到其他节点的传输范围内,就可以解决这个问题。

  • 添加新的接入点

添加新的接入点是解决隐藏节点问题最好的办法。如果无法移动隐藏节点,那么就在隐藏节点所在区域添加一个新的接入点即可纠正这个问题。

 

 

 

 

 

 

 


推荐阅读
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文档介绍了如何使用ESP32开发板在STA模式下实现与TCP服务器的通信,包括环境搭建、代码解析及实验步骤。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ... [详细]
  • 汇编语言标识符和表达式(四)(表达式与符号定义语句)
    7、表达式表达式是程序设计课程里的一个重要的基本概念,它可由运算符、操作符、括号、常量和一些符号连在一起的式子。在汇编语言中,表达式分为:数值表达式和地址表达式。(1)进制伪指令R ... [详细]
  • HDFS数据读写流程详解
    本文详细解析了HDFS(Hadoop分布式文件系统)中的数据读写过程,包括从客户端发起请求到最终完成数据传输的每一个关键步骤。 ... [详细]
  • 本文介绍了如何使用 Python 的 Pyglet 库加载并显示图像。Pyglet 是一个用于开发图形用户界面应用的强大工具,特别适用于游戏和多媒体项目。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文详细介绍了如何在 Windows 10 操作系统中安全地卸载 CUDA 9.0,同时避免影响 NVIDIA 图形驱动和其他相关组件。 ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
author-avatar
pan2502851807
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有