虽然组播平时很少在调试设备中直接用到,但是有大量的上层控制协议的协议报文交互用到组播,而平时割接出问题,协议协商起不来,大半个晚上找不到症结所在,事后复盘发现他娘的又是组播出了问题,前一段时间一个大割接,两个机房的思科FP大二层网络合并、600多个VLAN网关割接,底层互联链路OSPF邻居死都起不来,最后不得不回退,事后复盘排查发现,因为FP网络的组播单播单独建树分流转发的机制导致OSPF邻居之间组播来回路径不一致导致OSPF邻居起不来。
闲话不扯言归正传开始科普组播。
组播协议主要分为组成员管理协议(IGMP)、组播路由协议(PIM)和成员关系协议,组成员管理协议一般运行在路由器和客户端之间,组播协议一般在路由器之间运行。
区域内组播路由协议主要有PIM-DM和PIM-SM两种,它们是运行在一个组播区域内的路由协议,区域间路由协议主要是MSDP,它们是在不同组播域之间运行的路由协议。以上都是运行在三层设备上的组播路由协议,二层的组播路由协议有IGMP
Snooping、CGMP等,二层组播路由协议的意义在于抑制组播数据在数据链路层的扩散。
组播的别名有多播和多址广播,组播和单播的区别在于一台主机在于与多台主机同时通信时,只需要对一个地址发送数据包。组播通过以点到多点的数据传输方式节约了网络资源。
组播地址
组播IP地址分为三个部分:分配给路由协议的部分:224.0.0.0~224.0.0.255;分配给网络中所有设备的全网通用组播地址:224.0.1.0~238.255.255.255;私用组播地址:239.0.0.0~239.255.255.255。
常用的预留组播地址如下:
224.0.0.0 基准地址
224.0.0.1 所有主机的地址
224.0.0.2 所有组播路由器的地址
224.0.0.3 不分配,224.0.0.4dvmrp
224.0.0.5 ospf路由器
224.0.0.6 ospf指定路由器
224.0.0.7 st路由器
224.0.0.8 st主机
224.0.0.9 rip-2路由器
224.0.0.10 Eigrp路由器
224.0.0.11 活动代理
224.0.0.12 dhcp服务器/中继代理
224.0.0.13 所有pim路由器
224.0.0.14 rsvp资源预留协议
224.0.0.15 所有cbt 路由器
224.0.0.16 指定sbm子网带宽管理
224.0.0.17 所有sbms
224.0.0.18 vrrp虚拟路由器冗余协议
239.255.255.255 SSDP协议使用
MAC组播地址:
一个组播MAC地址对应32个组播IP地址,原因是组播IP地址转换成组播MAC地址时只映射后23位,而前四位又是固定的1110,所以存在中间5位的可变性。具体映射关系如图所示。
IGMP
IGMP协议运行于主机和与主机直接相连的组播路由器之间,主机通过IGMP向组播路由器发送加入消息,告诉路由器主机需要加入的组播组,同时路由器会周期性的发送查询消息,来确定在一定周期后还有活跃的组成员存在于这个组播组中,实现组成员关系的信息收集和维护。
IGMP有三个版本,IGMPv1,IGMPv2和IGMPv3,目前我们使用的是IGMPv2,而它们之间的区别就是每个版本都比前一个版本更好,v2版本比v1版本增加了组成员快速离开机制,v3版本还没有被定义。所以这里只介绍IGMP的前两个版本。
IGMPv1通过发送查询消息给组成员,根据组成员的回复信息来管理组成员。
在一个网段中如果存在多个组成员,那么它们在加入组的时候都要发送加入消息,这样明显是不合理的,所以IGMPv1中就定义了,同一个网段中的多个组成员需要选举一台查询器,由查询器代表这个网段中的组成员发送数据。
在IGMPv1中当同一个网段中存在多个组播路由器时,组播路由协议选定的DR将成为该网段中IGMP的查询器。
IGMPv2 与IGMPv1对比:
首先,所有路由器都会认为自己就是查询器,会向网络中发送查询消息即Genera Query报文;
然后,同一个网段中的路由器收到其他路由器的查询信息后,与查询信息中所携带的源地址与自己的IP地址进行对比,地址最小的最终会成为查询器;
最后,在查询器选举完成后,如果这个查询器失效了,那么其他路由器就会在查询器定时器超时后重新选举新的查询器。
离开组机制:
IGMPv1在组成员离开组时不会发送任何消息给路由器,所以IGMPv1只能通过查询器发送查询消息来确定是否存在组成员,而IGMPv2的组成员离开机制,在一个组成员离开某个组播组时有以下过程:
第一步,该组成员向同网段的所有设备发送一个离开消息;
第二步,当查询器收到该报文后,查询器会发送一个特定组报文,询问组成员要离开的组;
第三步,同网段中都会收到该离开消息,离开消息中会携带一个最大响应时间,如果网段内有其他组成员收到该报文,它们会在规定时间内响应这个报文;
第四步,如果超过离开消息设定的最大响应时间内没有组成员发送组成员关系报文给查询器,那么查询器就会认为这个组播组已经没有组成员了,所以查询器也就不会再维护这个组播组了。
IGMP Snooping
IGMP
Snooping(Internet Group Management Protocol
Snooping,互联网组管理协议窥探)是运行在二层设备上的组播约束机制,通过窥探和分析主机与三层组播设备之间交互的IGMP
报文来管理和控制组播组,从而可以有效抑制组播数据在二层网络中的扩散。
未完待续……