12.1 组播技术基础
在IPv4中有三种通信方式:单播、组播、广播。但因为广播非常容易造成网络资源的浪费,所以在IPv6中取消了广播,以前通过广播实现的功能由组播代替。
如上图所示,Server是一台多媒体服务器,PC1、PC2、PC3都期望实时的收看Server播放的视频。
采取单播方式:Server需要在本地分别为三台PC发送数据包,接收者不能随意的离开或变更IP。当接收者规模比较庞大时,尤其会对Server接入的网络线路和Server自身产生巨大的负担。
采取广播方式:所有的接收者必须和Server在同一广播域,且广播域中的所有设备都会收到此类广播数据包,此方案不现实并且会造成带宽浪费。
以上为组播方式:Server每次只需要向R1发送一份组播报文,R1会将数据进行拷贝并发送给R2和R3。随后R3并不会将组播报文拷贝转发给R5,只是将组播报文转发给PC2。而R2则需要将组播数据拷贝后分别发向PC1和R4。
12.1.1 组播网络架构
组播网络中的几个角色:
组播源(Multicast Source):组播流量的发送源。
组播接收者(Multicast Receiver):期望接收到组播流量的设备。
组播组(Multicast Group):采用一个特定组播IP地址标识的群组。
组播路由器(Multicast Router):激活了组播路由功能的路由器。(许多交换机、防火墙等产品也支持组播路由)
典型的组播网络架构的三个部分:
第一部分:由组播源和第一跳路由器构成。组播源无需运行任何组播协议,组播报文在传输层采用UDP协议,在网络层采用IP封装。
第二部分:由组播组中所有的组播路由器构成。需要通过组播路由协议来维护组播路由表,常见的组播协议由PIM、MOSPF、MBGP等,组播路由协议的主要任务是生成一个组播分发树(Multicast Distribution Tree)。
第三部分:由组播组中的最后一跳路由器和接收者构成。通过IGMP(Internat Group Management Protocol)协议最后一跳路由器可以查询和发现本地直连网段中是否由组播组的其他成员,以决定是否将组播流量从这个接口发出。
12.1.2 组播IP地址
组播IP地址与单播IP地址不同,其中D类IP地址是用户组播的IP地址,范围是224.0.0.0-239.255.255.255。
组播地址的分类见下图:
12.1.3 组播MAC地址
数据帧的产生过程,应用层产生数据——封装TCP/UDP头部——封装IP头部——封装以太网帧头和帧尾(以太网环境下)。
与IP地址一样,以太网帧头中的目的MAC地址也有单播MAC地址、组播MAC地址和组播MAC地址。MAC地址总共48bit,也就是6个八位组,其中第一个八位组的最低位标识着MAC地址类型,其中“0”为单播MAC地址、“1”为组播MAC地址,广播被当作特殊的组播。也就意味着组播MAC地址数量为2^47,数量达到了所有MAC地址容量的一半。
当组播IP报文在数据链路层传播时,需要被封装为组播数据帧。在这个组播数据帧中,目的组播MAC地址要和IP报头中的目的IP地址对应。如下图,组播MAC地址的高24bit时固定的,其中第25个比特位为0(标识组播MAC数据帧),后23bit与IP地址的后23bit一一对应。
注意:由上图可以看出,组播IP地址有5bit被丢弃,这就会导致每2^5个IP地址会共享一个组播MAC地址,在进行网络规划时需要特别注意。