1.3 组播数据包
如前所述,组播这种通信方式可以只通过一条数据流,将消息送到多个接收方。在运行Internet协议(IP)的以太网环境中,构成网络基础设施的设备主要是路由器和交换机,它们负责将单个数据包复制为多个数据包或消息,并高效地将这些数据包分发给有意接收这些消息的设备。
现在我们需要简要回顾开放式系统互联(OSI)模型,并解释组播在不同层中的应用。表1-1中列出了OSI模型的组成部分。
组播应用通常使用IP上的用户数据报协议(UDP)。因此需要使用传输层,使用了传输层就不能没有网络层运行的IP协议。路由器提供的主要功能也是在IP层。以太网交换机会在数据链路层上,使用MAC地址复制子网中的组播流量。
你必须完全理解OSI模型,这样才能了解IP组播技术,以及各层之间的相互作用。
注释
我们把数据帧称为二层消息,在这里我们关注的是源和/或目的MAC地址。我们把数据包称为三层消息,它包含源和目的IP地址。
学习组播一定要理解路由器到底是如何构建组播路由信息库(MRIB)的,以及路由器是如何通过使用单播路由信息库(RIB)来确保转发路径中不出现环路的。从数学的角度说,使用树形结构是路由设备或交换设备确保无环拓扑的最佳方式。组播路由器和交换机就是构建树形结构的专家,本书后文中将更详细地介绍相关内容。
1.3.1 组播源是什么
当说到组播时,总是涉及两种类型的主机:组播源和组播接收方。组播源可以是网络中拥有IP地址的任意设备。要想成为源设备,主机只需要向组播组(Multicast Group)IP地址发送一个消息。在图1-8中,3个发送方都在向同一个组播目的地址239.1.1.1发送消息。
组播源设备在发出一个组播消息前,不需要说明它想把这个消息发送给一个组。任何启用了IP的设备(包括路由器和交换机)都可以把数据包发往组播组。当IP组播路由器在处理一个目的地是组播组的消息时,它会建立一个新的转发条目。这个新的转发条目是“源,组”条目,被称为“源组”,简写为(S, G)。图1-8中发送方A的(S, G)条目应该是(192.168.0.2, 239.1.1.1)。
(S, G)条目指的是源IP地址和目的组地址,中间以逗号相隔。图1-8中的发送方IP地址就是源(S)地址,目的组播组IP地址就是(G)地址。注意图中的3台设备都向同一个组地址发送消息。这会引发问题吗?在继续阅读的过程中想着这个问题。
1.3.2 组播接收方是什么
组播接收方是指启用了组播的设备,并且它表达过对某个组播组或者某个(S, G)对感兴趣。除非组播是在链路本地(不会由任何路由器在网络中转发,比如224.0.0.2这个表示“所有路由器”的IPv4组)传输的,否则IP设备要想成为某个组播组的接收方,必须由管理员或某项应用向那个组播组进行注册。注册后,这个组播接收方就会侦听去往这个组播组目的地址的数据包,比如图1-8中的组播组239.1.1.1。
组播注册的过程是由Internet组播消息协议(IGMP)进行管理的。路由器收到或发起针对某个组或某些组的接收方注册行为时,路由器会在MRIB中添加(, G)条目。(, G)条目表示路由器对这个组感兴趣。
注释
组播转发信息库(MFIB)和组播路由信息库(MRIB)是用来解释Cisco路由器中组播流的术语。
MRIB负责维护组播协议生成的路由信息。这些信息会反馈到MFIB中,MFIB负责转发组播数据包,并且负责收集组播流的状态统计信息。