《EN18031测试方法全解》
第4章 链路层协议测试

4、链路层协议测试:帧结构验证、MAC地址过滤、重传机制测试

链路层是物联网设备通信的基石,直接决定了数据在物理介质上的可靠传输。本模块聚焦于 帧结构验证、MAC地址过滤 与 重传机制测试 三大核心测试项,确保设备在复杂电磁环境下的合规性与鲁棒性。

4.1 帧结构验证

帧结构验证旨在确认设备发送/接收的链路层帧是否符合 IEEE 802.15.4 / 802.11 等标准规范。测试内容包括前导码、帧起始分隔符(SFD)、帧长度、帧控制字段、地址域、序列号、帧载荷及 FCS 校验。

前导码 SFD 帧长度 帧控制 地址域 序列号 载荷 FCS 4字节 1字节 1字节 2字节 2~8字节 1字节 可变 2字节

图4-1 标准链路层帧结构示意(IEEE 802.15.4 典型格式)

测试项验证点通过标准
前导码完整性前导码序列是否连续、无毛刺前导码长度误差 < 1%
帧控制字段帧类型、安全使能、ACK请求位与协议规范完全一致
FCS校验CRC-16/32 计算与验证误帧率 < 0.01%

4.2 MAC地址过滤

MAC地址过滤是物联网设备安全的第一道防线。测试验证设备能否正确识别白名单/黑名单中的MAC地址,并拒绝未授权设备的接入请求。

发送设备 MAC过滤引擎 白名单 / 黑名单 接收设备 ✗ 拒绝接入

图4-2 MAC地址过滤流程示意

测试用例示例

  • 白名单测试:配置白名单包含 MAC_A、MAC_B,发送设备使用 MAC_C 尝试连接 → 预期:拒绝。
  • 黑名单测试:配置黑名单包含 MAC_D,发送设备使用 MAC_D 尝试连接 → 预期:拒绝。
  • 广播帧处理:广播地址 (FF:FF:FF:FF:FF:FF) 是否被过滤 → 预期:根据策略允许或拒绝。

4.3 重传机制测试

重传机制是链路层可靠性的核心保障。测试验证设备在丢包、冲突、ACK超时等场景下,能否按照协议规定的退避算法(如 CSMA/CA)进行重传,并最终完成数据交付。

t0 t1 t2 t3 发送方 接收方 数据帧 (Seq=1) ACK (丢失) 重传帧 (Seq=1, 退避时间=20ms) ACK (成功)

图4-3 重传机制时序图(ACK丢失后触发退避重传)

测试场景注入条件预期行为
ACK超时模拟ACK丢失设备在超时后执行退避,重传相同序列号帧
最大重传次数连续注入丢包达到最大重传次数(默认3次)后丢弃帧并上报上层
退避算法连续冲突退避时间呈指数增长(如 2^n * 单位时隙)

重传参数验证代码示例

// 伪代码:重传机制测试脚本
uint8_t retry_count = 0;
uint8_t max_retry = 3;
uint32_t backoff_base = 20; // ms

while (retry_count < max_retry) {
    send_frame(seq_num);
    if (wait_for_ack(backoff_base * (1 << retry_count))) {
        break; // ACK 收到,传输成功
    }
    retry_count++;
    log("重传第 %d 次,退避时间 %d ms", retry_count, backoff_base * (1 << retry_count));
}
if (retry_count == max_retry) {
    log("达到最大重传次数,丢弃帧");
    report_error();
}

📌 测试要点总结:链路层协议测试需结合协议分析仪与模拟干扰环境,重点验证帧格式的合规性、MAC地址过滤的严格性以及重传机制的时效性。建议使用自动化测试脚本进行批量回归,确保固件升级后链路层行为不变。