ff00::/8 的结构
IPv6 用组播承担了 IPv4 里广播的全部职责。组播地址第 1 字节固定 ff,第 2 字节拆成两半:高 4 位是标志位(含 R 会合点、P 前缀、T 临时地址),低 4 位是范围,决定这组流量最远能被送到哪里。范围值是硬约束,e 是全球,2 就是链路本地。
基本信息
| 地址前缀 | ff00::/8,无“广播地址”概念 |
|---|---|
| 第 2 字节 | 高 4 位标志(0/R/P/T),低 4 位范围 |
| 范围取值 | 1 接口、2 链路、4 管理域、5 站点、8 组织、e 全球 |
| 地址构成 | ff0X:: + 组标识,常见组标识为保留常量 |
| 节点行为 | 节点必须加入 ff02::1 与每个地址对应的 solicited-node 组 |
常用组播地址
| 地址 | 含义 | 范围 |
|---|---|---|
| ff01::1 / ff02::1 | 所有节点(All-Nodes) | 接口 / 链路 |
| ff01::2 / ff02::2 | 所有路由器(All-Routers) | 接口 / 链路 |
| ff02::1:2 | 所有 DHCPv6 服务器与中继 | 链路 |
| ff02::5 / ff02::6 | OSPFv3 AllSPFRouters / AllDRouters | 链路 |
| ff02::a / ff02::d | EIGRP / PIM 路由器 | 链路 |
| ff05::1:3 | 所有 DHCP 服务器(含跨中继) | 站点 |
常用操作
常用操作
# 列出本机加入的组播组(IPv4 与 IPv6 一起看)
ip -6 maddr show dev eth0
# 对链路本地组播必须带 %网卡,否则内核不知道从哪张网卡发出
ping -6 ff02::1%eth0 # 所有节点都会应答,注意输出可能很长
ping -6 ff02::2%eth0 # 只有路由器应答,可用来判断本段有无路由器
# 抓包确认 RS/RA 交互
tcpdump -ni eth0 'icmp6 and (ip6[40] == 133 or ip6[40] == 134)'典型使用场景
- 新网段上线先 ping ff02::2,确认本链路段有路由器应答,再怀疑上层路由
- 排查邻居发现失败:确认网卡是否加入了同一 solicited-node 组播组
- 设计 IPv6 组播应用时按范围选地址,跨站点用 5,跨互联网用 e,避免误用 ff02 导致不出网段
- 防火墙放行策略必须针对 ff02::/16 与 solicited-node 前缀放行,而不是笼统禁 ICMPv6
- 路由协议排障时核对 OSPFv3 是否能看到 ff02::5 的报文
标志位含义
| 标志 | 置位含义 |
|---|---|
| T(Transient) | 非 IANA 永久分配的临时组播地址 |
| P(Prefix) | 基于单播前缀派生,见 RFC 3306 |
| R(Rendezvous) | 地址内嵌会合点,供 SSM 之外使用 |
| 全部为 0 | IANA 永久分配、含义固定的组播地址 |
ff02::/16 属链路本地范围,路由器不转发;跨网段通告必须换成站点或全球范围地址,否则只能在本段自娱自乐。