这个图解用最简单的拓扑、场景来显示IP – 以太网 多播地址的配置、转换、洪泛、接受、丢弃的过程。案例有两个版本:仿真、图解。图解版本是从仿真截图,并加标注解释,说明步骤的演进。
- 背景:IP用多播IP地址在第三层多播,一个multicast IP address 可以有多个成员,多播数据包会被路由器转发到所有的成员。以太网在第二层也有多播MAC地址,网卡接口除了一个固定的硬件地址 (Unicast MAC), 还可以有几个多播MAC地址 (multicast MAC address)。由于以太网有广播的属性,数据包会被洪泛到所有的以太网接口,网卡接口在收到一个数据包时,把数据包的目的地址和自己的MAC地址比较,有一个相同,就接受此包,否则丢弃。如果几个接口都有同一个多播MAC地址,它们在收到多播包时,都会接受此包,产生了多播的效果。
- IP-Ethernet 多播地址的关系。IP地址是个逻辑地址,多播数据包会被路由器转发送到多播地址成员所在的子网,如果子网是个以太网,里面有几个节点都是这个多播地址的成员,怎么能够把数据包送到每一个成员呢?这得靠以太网的多播MAC地址机制。但以太网的多播地址是怎么配置的?这个IP多播地址和以太网多播地址是什么关系?
这个图解介绍几个相关知识点并用OSPF Hello的案例把它们联系起来:IP多播地址转换到MAC多播地址,以太网洪泛,以太网接口怎么接受、丢弃所收到的数据包。
- 预备知识:以太网单播MAC地址 (Ethernet unicast MAC)。
- 多播地址仿真: 这个图解教程是根据 Multicast仿真创作。仿真用动画显示,读者可以互动的检查数据包内容,观察数据包 – OSPF邻居表之间第二层和第三层的因果关系。
拓扑
1. 拓扑:局网中有四台路由器经以太网线相连,R2, R3, R4运行OSPF (蓝色),R1没有运行OSPF。
2. 配置OSPF: 用OSPF multicast IP 地址生成 multicast MAC 地址:OSPF路由器各有两个MAC地址,一个是硬件地址,另一个是OSPF多播MAC地址 MAC.OSPF。在路由器上配置OSPF时,会把OSPF 多播IP地址224.0.0.5 转换为一个多播MAC地址 MAC.OSPF ()
转换步骤是:1)把IP地址224.0.0.5 (AllSPFRouters)的32位用二进制表现,然后抽出最右边的23位,叫做A。
2) 把IEE定义的组播prefix 01:00:5e作为B. B有24位。
3) 合成相应的MAC组播地址如下:
连接 B, 0, A 形成一个多播MAC地址 (Hex)01:00:5e:00:00:05。在这个案例,我们用MAC.OSPF表示。
3. R2 多播Hello
OSPF路由器一开始都不知道自己的邻居是谁,R2 先发送OSPH Hello。这是一个多播包,它的目的MAC地址是MAC.OSPF.
4. Hello被洪泛到R1, R3, R4. R1丢弃Hello, R3, R4 接受Hello.
以太网是个广播媒介,Hello被洪泛到网内所有的接口。路由器的接口收到Hello时,把它的目的MAC地址 (MAC.OSPF) 和自己的MAC地址比较,若相同就接受,否则丢弃。
R1 的MAC地址 (MAC.R1) 和 MAC.OSPF不一样,就把Hello丢弃。
R3 的MAC地址 (MAC.R3, MAC.OSPF) 有一个和 MAC.OSPF一样,就接受Hello,并把R2添加到邻居表。。
R4 的MAC地址 (MAC.R4, MAC.OSPF) 有一个和 MAC.OSPF一样,就接受Hello,并把R2添加到邻居表。。
【注】若要观察 Hello 在以太网中洪泛,被路由器接受、丢弃的过程,可运行IP-Ethernet 多播地址仿真。
5. R3 发送 Hello. R2, R4接受hello, R1丢弃Hello.
R3 发送的Hello 被以太网洪泛到 R1, R2, R4的接口。R1 丢弃Hello, R2, R4接受Hello, 并把R3添加到邻居表。
6. R4 发送 Hello. R2, R3接受Hello, R1丢弃Hello.
R4 发送的Hello 被以太网洪泛到 R1, R2, R4 的接口。R1 丢弃Hello, R2, R3接受Hello, 并把R3添加到邻居表。
经过三轮Hello, 局网中的三台路由器已经知道了彼此是邻居,可以进行下一步的OSPF工作了。
本场景动画过程请见IP-Ethernet 多播地址仿真
参考资料:
Visualland ,以太网仿真目录, IP-Ethernet 多播地址仿真
谢希仁 计算机网络第五版 3.4.3 MAC层
Wikepedia Multicast http://en.wikipedia.org/wiki/Multicast, MAC address http://en.wikipedia.org/wiki/MAC_address
Multicast IP – MAC地址转换 http://www.firewall.cx/multicast-intro.php