分片阈值是什么
分片阈值(Fragmentation Threshold)是发送端的一个本地参数:当 MAC 帧体长度超过该阈值时,802.11 会把它拆成多个分片逐个发送、逐个确认,只有出错的那一片需要重传,不必整帧重发。代价是每一片都带独立的前导、帧头、ACK 与帧间隔,开销随片数成倍上升,因此现代高速网络几乎都保持默认(即不分片)。
基本信息
| 参数对象 | 单播数据帧的 MAC 帧体长度(不含物理层前导与帧头) |
|---|---|
| 常见默认值 | 2346 字节(部分厂商写 2347),取最大值等于关闭分片 |
| 取值范围 | 多数厂商为 256 ~ 2346 字节 |
| 生效方式 | 发送端本地参数,不由 Beacon/Probe Response 下发 |
| 不适用对象 | 广播与组播帧不分片 |
| 与聚合关系 | 802.11n 起分片与 A-MPDU 聚合互斥 |
| 配置位置 | AP 或网卡驱动,各家命令名不同 |
典型使用场景
- 强干扰环境做链路验证:把帧切小、单片出错概率降低,用来判断丢包来自干扰还是设备本身
- 长距离点对点桥接:噪声抬升、链路余量不足时临时启用,改善链路可用性
- 隐藏节点场景:配合 RTS/CTS 缩短单次信道占用来降低碰撞概率
- 兼容性测试:验证某款终端或 AP 在分片开启后能否正常关联与转发
- 故障隔离:大帧总是失败、小帧正常时,可用分片验证是否为干扰引发的帧长相关性丢包
- 常规办公与家庭网络:不做分片,维持默认值
查看与设置示例
查看与设置示例
# Linux 客户端(iw,nl80211)
iw dev wlan0 info # 确认接口名与工作模式
iw phy phy0 info | grep -i frag # 查看驱动上报的分片能力
iw dev wlan0 set frag 1500 # 临时设为 1500 字节做验证
iw dev wlan0 set frag 2346 # 恢复最大值,等价于关闭分片
# 接入点 hostapd.conf
fragm_threshold=2346 # 取最大值即不启用分片
rts_threshold=2347 # 与分片同管,默认同样等于关闭
# Cisco IOS 无线 AP
fragment-threshold 1500 # 调小;改回 2346 恢复默认阈值取值与效果
| 阈值设置 | 发送行为 | 适用场景 | 代价 |
|---|---|---|---|
| 2346(默认上限) | 不分片,整帧发送 | 链路干净、追求吞吐 | 大帧出错需整帧重传 |
| 约 1500 | 仅超长帧被切成两片 | 轻微丢包、想压低重传代价 | 开销小幅上升 |
| 512 | 一帧切成多片 | 强干扰、窄带、远距离链路 | 帧数与 ACK 成倍增加,吞吐明显下降 |
| 256(常见下限) | 最细粒度分片 | 只用于定位问题 | 协议开销最大,吞吐最低 |
阈值是发送端的本地参数,不通过 Beacon 或 Probe Response 下发。只改 AP 时终端仍按自己的设置发大帧,需要两端一致就必须分别配置,并抓包核对实际帧长。
分片与聚合是相反方向:11n 起的 A-MPDU 聚合与分片互斥,11n/ac/ax 环境里分片基本不生效;先把链路确认在传统模式下,再谈分片的效果。
广播与组播帧不分片,所以用分片去解决组播视频卡顿是无效的,那类问题要回到组播速率、前导类型与信道质量上找原因。