局域网设计/IGMP 嗅探
外观
< 局域网设计
桥接以不同的方式转发帧,具体取决于目标 MAC 地址的类型
- 单播 帧:由于过滤数据库,它们仅在通往单个目标的端口上发送;
- 广播 帧:它们始终以泛洪方式在所有端口上发送,因为目标是网络中的所有主机;
- 组播 帧:它们始终以泛洪方式在所有端口上发送,即使目标只是网络中的部分主机。
如果桥接知道连接到其端口的哪些多播组站属于,则桥接可以将发送到特定多播组的帧仅转发到连接到该多播组注册的主机的端口,以减少泛洪发送的流量。
GMRP 允许一个站与其多播组的成员资格通知桥接。
但是,GMRP 几乎没有使用,因为利用现有的、常用的技术(即 IGMP)优先于添加新的网络协议。
IGMP 允许一个站与其多播组的成员资格通知 IP 网络上的路由器
- 主机成员资格查询 消息:路由器向所有主机发送一个 IGMP 消息,询问他们是否对注册到某个多播组感兴趣;
- 主机成员资格报告 消息:主机发送一个 IGMP 消息,接受对多播组的注册请求。
除了路由器之外,主机成员资格报告消息还会到达 LAN 上的所有其他站→所有对多播组感兴趣的其他站,同时知道 LAN 上至少有一个站已注册到该组,可以避免发送主机成员资格报告消息给路由器,因为与该多播组相关的流量会退出路由器接口并传播到整个 LAN。
每个 IGMP 消息都有
- 目标 IP 地址:它是被查询或报告的多播组的 IP 地址,始终以 '1110' 位开头;
- 目标 MAC 地址:它派生自多播 IP 地址
24 | 25 | 48 |
01:00:5E | 0 | 来自多播 IP 地址的最后 23 位 |
'224.0.0.x' 样式的多播 IP 地址是无需 IGMP 的“众所周知”地址(例如,网络层路由协议发送的多播数据包)。
IGMP 嗅探 功能允许桥接通过观察通过桥接本身的 IGMP 消息来了解连接到其端口的哪些多播组站注册到。
- 主机成员资格查询消息:桥接记录它来自的端口作为通往路由器的端口,并以泛洪方式将其发送到所有其他端口;
- 主机成员资格报告消息:桥接记录它来自的端口作为通往感兴趣站点的端口,并仅将其发送到通往路由器的端口(即主机成员资格查询来自的端口)。
桥接不会将其发送到其他端口,因为否则主机在接收时会禁用发送主机成员资格报告消息,从而阻止桥接了解哪些主机对该多播组感兴趣; - 以组播发送的帧:桥接分析其目标 MAC 地址以识别其多播组[1]
- 如果是“众所周知”的多播地址,则以泛洪方式将其转发到所有其他端口;
- 如果是动态多播地址,则仅将其发送到连接到已注册到该多播组的站点的端口。
- 缺点
IGMP 嗅探违反了 OSI 模型:桥接需要识别数据链路层帧是否封装了 IP 数据包,IP 数据包又封装了 IGMP 消息→桥接不再独立于网络层工作:不支持 IPv6 协议的桥接可能会丢弃多播数据包,因为它们无法识别它们。
- ↑ 实际上,单个多播 MAC 地址对应于 25 个 IP 地址 = 25 个多播组。