组播靠范围约束传播
IPv4 组播没有子网概念,224.0.0.0 到 239.255.255.255 里每一个地址都天然覆盖一段可指定的范围。约束手段有两层:一层是地址本身,224.0.0.0/24 被保留为链路本地范围,标准硬性规定其 TTL 为 1 且路由器不转发;另一层是报文里的 TTL,发送方用它限定这份流量最远能被送到哪里。这也是 224.0.0.1 永远出不了本网段的原因。
基本信息
| 链路本地段 | 224.0.0.0/24,TTL 固定为 1,不被路由器转发 |
|---|---|
| 互联网控制段 | 224.0.1.0/24,用于 NTP 等跨域协议 |
| SSM 段 | 232.0.0.0/8,源特定组播,需要指定源地址 |
| 管理范围段 | 239.0.0.0/8,企业内部按组织划分,边界路由器负责封堵 |
| 实验段 | 233.252.0.0/24,供测试与文档使用 |
| TTL 作用 | 每经一个路由器减 1,减到 0 即丢弃并返回 ICMP 超时 |
TTL 阈值含义
| TTL 取值 | 可传播范围 | 典型用途 |
|---|---|---|
| 1 | 本链路段,不出路由器 | 路由协议、ARP 类发现、SSDP 之外的本段通告 |
| 小于 32 | 同一园区或同一站点 | 园区内的视频分发 |
| 小于 64 | 同一地区 | 跨园区但同城 |
| 小于 128 | 同一大洲 | 跨国企业区域分发 |
| 小于 255 | 全球范围 | 互联网组播分发 |
观察与验证
观察与验证
# 查看网卡已加入的组播组
ip maddr show dev eth0 | head -20
# 抓包看组播目标与 TTL(-v 显示 TTL)
tcpdump -ni eth0 -vv 'ip multicast and ip[8] < 2'
# 观察路由协议链路本地组播
ping -c 2 -t 1 224.0.0.2 # 所有路由器,TTL 设为 1 只在本段生效典型使用场景
- 排障时用 ping 224.0.0.2 与 TTL=1 判断本段是否有路由器应答,快速区分链路问题与路由问题
- 设计内部视频分发时按覆盖面选择 TTL 阈值,园区内用 16 或 32,避免流量跑出边界
- 用 239.x.x.x 段做企业内部服务发现,边界路由器封堵该段即可防止泄漏到其他站点
- 核对抓包时先看 TTL:TTL 为 1 就说明发送方刻意限定在本段,不该期待跨网段可达
- SSM 应用必须落在 232.0.0.0/8,用普通组播地址无法享受源过滤带来的路径优化
224.0.0.0/24 的 TTL=1 是协议规范而非配置建议:即便手工把 TTL 调大,规范也要求路由器不转发该范围的组播报文。