组播数据报文的结构与单播报文类似
但对于目的地址,组播数据报文与单播报文有很大差异:
1)DST IP Address:为组播网络地址,地址范围从 224.0.0.0 到 239.255.255.255 止;
2)DST MAC Address:为组播物理地址,Multicast MAC Address 由 Multicast IP Address 映射而来
IPv4组播报文的 SRC-IPAddress 字段为 IPv4 单播地址,可使用 A、B、C 类地址,不能是D类、E类地址。
组播网络地址
IPv4 地址空间分为五类(Class A – Class E),其中 Class D 地址为 IPv4 组播地址,范围是从 224.0.0.0~239.255.255.255,用于标识组播组,且仅能作为组播报文的目的地址使用,不能作为源地址使用。
IANA 对 Class D 地址做出进一步的定义,几种主要的组播地址如下表所示:
1)224.0.0.0—224.0.0.255:为路由协议预留的永久组地址
2)224.0.1.0—231.255.255.255,233.0.0.0—238.255.255.255:ASM,Any-Source 临时组播组地址(Any-Source,即任何人都可以发送数据)
3)232.0.0.0—232.255.255.255:SSM,Source-Specific 临时组播组地址(指定设备才能发送组播)
4)239.0.0.0—239.255.255.255:本地管理的 Any-Source 临时组播组地址(企业网内部,类似私有地址)
一个组播地址就表示一个点到多点的数据流,比如IPTV数据流,语音会议数据流。大多数情况下,同一个组播网络里不同的业务(比如,IPTV,语音会议)就需要使用不同的组播IP地址。
在网络层上,加入同一组播组的所有用户主机能够识别同一个 IPv4 组播组地址。一旦网络中某用户加入该组播组,则此用户就能接收以该组地址为目的地址的IP组播报文。
组播物理地址
以太网传输IPv4单播报文的时候, DST-MACAddress 使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址。
IANA 规定,IPv4 Multicast MAC Address:
1)高 24 位为 0x01005e;
2)第 25 位为 0;
3)低 23 位为 IPv4 Multicast Address 的低 23 位;
例如,组播组地址 224.0.1.1 对应的 Multicast MAC Address 为 01-00-5e-00-01-01。
关于 5 bit 丢失
IPv4 Multicast Address 的前 4 位是固定的1110,对应 MAC Multicast Address 的高25位,后 28 位中只有23位被映射到 MAC 地址,因此丢失 5-bit 地址信息。这导致直接结果是有 32 个 IPv4 Multicast Address 映射到同一 MAC 地址上。
例如 IPv4 Multicast Address 为 224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1 等的 MAC Multicast Address 都为 01-00-5e-00-01-01。
1110 xxxx.x yyyyyyy.yyyyyyyy.yyyyyyyy 1110 0000.0 0000001.00000001.00000001 == 224.1.1.1 1110 0000.1 0000001.00000001.00000001 == 224.129.1.1 225.1.1.1 225.129.1.1 ... 239.129.1.1
IETF 认为同个局域网中两个或多个组地址生成相同的 MAC Address 的几率非常低,不会造成太大的影响。
但网络管理员在分配地址时,必须考虑这种情况。总的来说:
1)只要后 23-bit 不同,则不会出现相同 MAC Multicast Address,那就没有问题;