Wi-Fi 6 OFDMA 测试报告

OFDMA 频谱图来源:Gjermund Raaen

我感觉自去年以来我一直在等待。

随着 2018 年的结束,广告支持的崩溃迫使我转向付费咨询。尽管这对我在财务上更有利,但主要关注咨询工作意味着在 2019 年几乎没有发布任何关于 SmallNetBuilder 的产品评论。

我一直在尽力改变这一点。但在努力制定新的 Wi-Fi 测试方法以替代之前侧重速度测试,进而转向以测量 Wi-Fi 产品的质量、稳健性和效率时,我一直遇到障碍。

在完成了 octoScope 平台上的TR-398 Wi-Fi 性能测试套件的自动化后,我一直试图证明 OFDMA,这是 Wi-Fi 6 的一个关键特性,可以产生更高的总吞吐量。简而言之:启用 OFDMA 后,我看到了更高的总吞吐量,但增益是高度可变的。

OFDMA 开始看起来很像 MU-MIMO

正如我在Wi-Fi 6 性能汇总:测试了五台路由器中指出的,测试 OFDMA 的主要障碍之一是迄今市场上的大多数消费级 Wi-Fi 6 产品都没有启用 OFDMA。一次又一次,我被告知新的启用 OFDMA 的固件将在一个月左右发布,但一个月过去了,固件并未更新。在没有要测试的东西时,很难制定测试方法。

截至 2019 年底,美国有四台启用 OFDMA 的 Wi-Fi 6 路由器,如表 1 所示。这是在几乎宣布了几十个 Wi-Fi 6 路由器或网状系统之中的情况。

表1:...

一文带你学懂 Thread

Thread® 是一种基于 IPv6 的网络协议,专为低功耗、Mesh 组网的 IoT 设备设计,基于 IEEE 802.15.4-2006 的无线 Mesh 网络,通常称为无线个域网(WPAN)。Thread 与其他 802.15 Mesh 网络协议(如 ZigBee、Z-Wave 和蓝牙低功耗)相似,但是独立无关。

Thread 的主要特点包括:

  • 简便性

    安装、启动和操作简单;

  • 安全性

    Thread 网络中的所有设备都经过身份认证,所有通信都经过加密;

  • 可靠性

    自愈合的 Mesh 网络,没有单点故障,并采用扩频技术以提高抗干扰性;

  • 高效性

    低功耗的 Thread 设备可以休眠并以电池供电运行多年;

  • 可扩展性

    Thread 网络可以扩展到数百台设备。

查看完整的规范,点击 Thread 协议规范下载。

在 Thread 网络中,按照节点是否参与参与消息转发被区分为两种转发角色:

Router 是一个节点,具有以下功能:

  • 为网络设备转发数据包;
  • 为试图加入网络的设备提供安全的 Commissioning 服务;
  • 始终保持其 RF 收发器开启。

End Device (ED) 是一个节点,具有以下功能:

  • 主要与单个 Router 通信;
  • 不会为其他网络设备转发数据包;
  • 可以关闭其 RF 收发器以减少功耗。

此外,节点还可以按照设备类型区分。

Full Thread Device (FTD) 始终保持其无线电开启,订阅所有 ...

跨源资源共享(CORS)

这里来聊聊跨源资源共享CORS(Cross Origin Resouce Share)。

开局一张图,很多人错误理解跨源资源共享就是浏览器在访问服务器A(domain-a.com)获取的资源如果包含跨源服务器B(domain-a.com)资源的时候那么此时就需要跨源资源共享,所以我们需要配置我们的访问控制策略Access-Control-Allow-Origin 运行所有站点访问。

但是为什么这里跨源资源共享是被服务器B控制的?

原来这里这里跨源资源共享是浏览器用来保护服务器B的,防止服务器A加载的资源伪造一个请求,但是此时浏览器已经记住了服务器B的Cookie认证,从而完一次对服务器B的攻击,这就是跨源请求伪造(Cross-site request forgery)。

假如浏览器没有CORS,会是怎样?我们需要举个栗子:

用户在浏览如上购物网站B(domain-b.com),此时已经完成认证,浏览器会自动将记住服务器B的Cookie,方便你继续浏览。此时我们在新的标签页开始浏览网页访问服务器A(domain-a.com),服务器A加载的JavaScript可以直接对服务器B发起了一次请求获取了你的购物信息。

所以此时服务器B的同源策略就一项非常重要的安全措施。

浏览器有CORS又会是怎样?

对于如上的跨源资源请求浏览器会区分是简单请求还是非简单请求。什么是简单请求?

使用下列方法之一:

ChatGPT 带你学习 iptables

对于 iptables 学习,反复看过 man iptables 命令,但是缺乏归纳总结,不用就忘了。现在好了,直接让 ChatGPT 帮我画一些系统框图辅助记忆。

这个图表演示了 iptables 中 5 个 Chain 处理的先后关系,其中:

  • INPUT Chain 用于处理进入本地计算机的网络数据包;
  • PREROUTING Chain 用于处理数据包路由前的操作,例如修改目标 IP 地址;
  • ROUTING Chain 用于处理数据包的路由过程,例如根据路由表进行转发;
  • FORWARD Chain 用于处理转发给其他计算机的网络数据包;
  • POSTROUTING Chain 用于处理数据包路由后的操作,例如修改源 IP 地址;
  • OUTPUT Chain 用于处理从本地计算机发出的网络数据包;
  • INPUT Chain:允许来自特定 IP 地址的 SSH 连接

  • PREROUTING Chain:将来自特定 IP 地址的数据包重定向到另一台计算机

  • ROUTING Chain:将来自特定 IP 地址的数据包标记为优先级 1

  • FORWARD Chain:允许从特定网卡转发特定端口的数据包

  • POSTROUTING Chain:将来自特定 IP 地址的数据包修改为指定 IP 地址并从指定网卡发出

  • OUTPUT Chain:允许从本地计算机发出到特定 IP 地址和端口的数据包

GCC 未使用函数、变量和文件优化策略

GCC 优化过于复杂,这里探索 GCC 对未使用的代码和变量以及文件的优化策略。

如下两个文件。

main.c 文件内容如下。

unused.c

  • 默认编译选项,通过可执行文件确定所有变量和函数都未优化。

  • -O1 -O2 -Os 选项,所有static 链接属性的变量和函数被用优化掉。

  • 为 static 链接属性的变量增加 __attribute__((used)) 属性。优化被抑制。

  • 增加 -Wl,--gc-sections 选项,所有的 unused.c 变量和函数,以及 main.c 中的变量全部被优化。

  • 同时使用 -Wl,--gc-sections 和 -O1。进一步优化掉 main.c 中的 static 函数,只剩下最后一个未使用的 extern 函数。

  • 同时使用 -Wl,--gc-sections 和 -O2 或者 -Os 。所有未使用的函数、变量全部被优化。

  • 或者额外指定 -ffunction-sections ,进一步把未使用的函数优化掉。

  • 对于--gc-sections ,通过设置 KEEP 链接抑制变量的优化。注意,并不能对函数使用属性。

Matter 系列之 Data Model

Matter 中的具有定义明确的设备数据模型 (Device Data Model),它是对设备功能的分层建模,在此模型最顶层的实体就是设备。

Matter 中所有的设备,包含手机,家庭语音助手的音箱都统称为 Nodes。Node 作为网络中节点,它是网络中唯一可识别和可寻址的资源,用户可以将其视为一个功能的整体。同样地,通信中原地址和目的地址也是描述 Node。

Node 是 Endpoint 的集合。每个 Endpoint 都包含一个特定功能集。例如,一个 Endpoint 与照明功能相关,而另一个与运动监测相关,再一个与系统(例如设备 OTA)相关。

一个 Endpoint 包含一个或者多个 Clusters。Cluster 是设备数据模型描述的另一个层次,它是特定设备功能分组,例如智能插座上的 On/Off Cluster,或者是可调光设备 Level Control Cluster 。

然而,不同 Endpoint 也可以一个相同功能的实例。例如,多键开关上面的开关独立控制,或者插板插座的需要对每一个插孔进行控制,而这里每一个开关或者插孔都可以是一个 Endpoint。

如下分层和包含关系,最后一级就是 Attributes。他是 Node 的一个状态集合。例如可调光灯的当前调光值。Attributes 可以有不同的数据类型, uint8, strings 或者 arrays。

除...

Matter 系列之 Device Attestation

设备认证特指 CSA Matter 认证产品的验证流程,也就是 Matter 设备在 Commissioning 过程需要向 Commissioner 证明其是一个合法的设备。该流程主要是利用设备在生成阶段烧录的 DAC 证书、私钥和和证书链。Commissioner 会在该阶段完成如下验证:

  • 是否是认证厂商生产制造;
  • 是否是合法设备;
  • 是否通过 Matter 兼容性测试;

在 Matter 开发阶段,开发者是可以在没有认证的前提下完成所有功能开发。一旦打算进入量产,那么需要联系 Matter 认证实验室完成认证,认证实验室会将认证状态同步到 DCL,保证 Commissioning 阶段能够完成 DAC 流程。

认证通过 Public Key Infrastructure (PKI) 系统构造根证书、中间证书和 DAC 的三级证书结构。这和我们常使用的 HTTPs 的认证体系是一致的。

DAC 是一个 X.509 v3 证书,包含一个公钥、以及证书撤销集 Certificate Revocation List (CRL),由RFC5280 完整定义,当然还包含如下其他信息。

  • Public Key
  • Issuer
  • Subject
  • Certificate Serial Number
  • Validity, where expiration can be indeterminate
  • Signature

其中 Vend...

Matter 系列之 Commissioning

Commissioning 在 Matter 特指给一个新设备分配 Fabric 操作凭据的一系列流程。该流程中区分两个不同的角色,Commissioner 作为该流程的操作者, Commissionee 即为该新设备。

通常地,手机 App 作为这里的 Commissioner ,而我们购买的智能硬件作为 Commissionee。如下流程指示 Commissioning 流程的关键步骤。

区分的不同的 Commissioning 方法和产品形态,这里的设备发现可以是 Commissioner 发现 Commissionee ,也可以是 Commissionee 发现 Commissioner。 对于 Matter 里面约定为:

  • Commissionable Node 发现

  • Commissioner 发现

当然在 Commissionee 成功加入 Fabric 后这里还包含 Operationnal 发现,对应如上图的倒数第二关键步骤。

在智能手机作为 Commissioner 的情形下通常是手机通过蓝牙或者基于 mDNS 的 DNS-SD 进行设备发现。是蓝牙还是 mDNS 取决于Commissioner 和 Commissionee 是否已经在同一个局域网,WiFi 设备通常需要是蓝牙,因为它还需要后续步骤配置用户家庭路由器的 SSID 和 Password,对于以太网设备插上网线即已...

Matter 系列之 Fabric

对于 Fabric ,字面意思为织网,这里不翻译。Matter 定义为同一安全域下 Node 的集合,在该安全域下 Node 能够彼此认证建立安全通信。一个 Fabric 共享同一证书机构(Certificate Authority (CA))的根证书(Root of Trust),同时约定一个 Fabric ID。

在 Commissioning 过程中会为需要加入 Fabric 的 Node 分配证书,也就是 NOC。

基于如上安全特性,通常一个生态可以描述一个 Fabric,如上的 Google Fabric。一个设备可以同时加入多个 Fabric,也就是同时被多个生态使用,取决于设备能力。在 Matter 里这个重要功能被定义为 Multi-admin。

这里详细介绍一个 Fabric 的 Operational 凭据。

  • Root of Trust

    即根证书, Commissioning 阶段会安装到设备上,之后可以通过管理员更新。通常一个生态为一个Trusted Root Certificate Authority (CA)。

  • Node Operational Identifier

    Operational Node ID,64位唯一数,在 Fabric 下设备唯一标识符。

  • Node Operational Certificate

    同一 Fabric 通信认证凭据,如下流程产生。

如上流程流...

Matter 系列之 什么是 Matter?

早在 CHIP 工作组成立之初,我在 开源 HomeKit ADK 文档中就表达对这新协议的兴奋。两年多时间一直在不间断跟踪学习,在其最后发布阶段。整理翻译了Google 关于 Matter 的初级读本系列开发文档。翻译为主,也谈了一些个人浅显理解。建议直接阅读原文和 Connected Home over IP Specification 以及阅读源码。

Matter 是一个智能家居协议的开放标准,基于该协议所有的 Matter 认证的智能硬件能够彼此通信,协同工作。Matter 标准来自由谷歌、苹果、亚马逊、ZigBee联盟等100多家组成的 CSA联盟共同制定,并且开源实现,connectedhomeip

对比如上的 TCP/IP OSI 4/7 层模型,Matter 协议的主要实现在应用层,但是选择了 WiFi、以太网、802.15.4 Thread 和 BLE 作为 媒介层、网络层和传输层,其中 BLE 主要是用以入网配置。

对于传统的无线技术 ZigBee、Bluetooth Mesh、Z-Wave 可以选择作为 Bridge 接入。

对于我们熟悉的 WiFi、BLE、ZigBee,以及在这之上的应用协议米家小米 IoT、苹果 HomeKit、亚马逊 AWS IoT 。...