1)什么是IP组播?

协议层常需要和组群打交道,进行发现、通知、查询等工作。IP用组播IP地址在第三层组播,一个multicast IP address 可以有多个成员,组播数据包会被IP层路由器转发到组群成员所在的路由器,然后用以太网的组播功能把数据包送到组播成员的网卡接口。例,OSPF 用Hello来发现局域网中的OSPF邻居,HSRP发送Hello组播包把自己的状态通知其它的HSRP路由器。

2) 以太网怎么组播的 (multicast)?

以太网具有广播属性,一个节点发送的数据包会被以太网洪泛,导致每一个以太网网卡接口都会收到这个数据包。接口收到数据包后,并不马上交给节点CPU处理,而是进行MAC地址比较,如果数据包的目的MAC地址和接口的MAC地址一样,它才接受,把数据包交给计算机,否则就把数据包丢弃。组群成员的网卡接口除了硬件MAC地址 (unicast MAC),还有组播MAC地址 (multicast MAC)。接口收到组播包,会把此包的目的MAC地址 (是个组播MAC)和自己的MAC地址比较,如果组播地址相同,就会接受此包。这样,局网内这个组群的所有成员,都会收到送往该组群的组播包。但是,IP的组播地址和以太网接口的组播MAC地址是什么关系呢?不用急,下面立刻解说

3) IP的组播地址和以太网的组播地址有什么关系?

许多MAC组播地址是从IP组播地址转换而来。

例,OSPF IP组播地址是224.0.0.5, 转换为相应的MAC组播地址如下:

1) 把IP地址(32位)用二进制表现 1110000: 00000000: 00000000: 00000101

2) 然后抽出最右边的23叫做A 0000000: 00000000: 00000101

3) 把IEE定义的组播01:00:5e作为B. B有24位 (二进制是 00000001:00000000:01011110)

4) 合成相应的MAC组播地址如下:

连接 B,0,A: B有24位,在左边; 0是一位,在中间,A有23位,在右边。共48位

二进制是 00000001:00000000:01011110:000000000: 00000000: 00000101

十六进制是 01:00:5e:00:00:05