组播协议

组播协议包括了两个部分:

  • 组成员管理协议
  • 组播路由协议

解释如下:

组成员管理协议

用于管理组播组成员的加入和离开

组播路由协议

负责在路由器之间交互信息来建立组播树

 

*IGMP是组播路由器用来维护组播组成员信息的协议,运行与主机和组播路由器之间。

 

IGMP协议提供了在转发组播数据包到目的地址的最后阶段所需要的信息,实现如下双向的功能:

  • 主机通过IGMP通知路由器希望“加入”或者“离开”某个组;
  • 路由器通过周期性的发送IGMP查询包,从而获得局域网内的组播组成员是否处于活动状态;

 

有资格周期性发送IGMP查询包的路由器,是通过这一网段内的组播路由器选举机制,选举出来的。只有这一个路由器能向其他主机和路由器发送IGMP查询包。

 

下面介绍一下组播路由器选举机制:

在一个网段内,支持IGMP的路由器都能收到来自主机的成员资格报告消息,但实际上,只需要一个路由器向这个网段内的主机和路由器发送查询包就可以了;

  • 所有支持IGMPv2的路由器在初始时都认为自己是查询器,他们都会想本网段内的所有主机和路由器发送IGMP查询包;(目的地址:0.0.1)
  • 本网段中的其他支持IGMPv2的路由器在收到其他路由器发来的查询包后,会将查询包中的源IP地址与自己的接口地址作比较。通过比较,IP地址最小的路由器将成为查询路由器,其他路由器成为非查询路由器;
  • 所有非查询路由器上都会启动一个定时器,在该定时器超时之前,如果非查询路由器收到了来自查询路由器的IGMP查询包,那么定时器重置;如果超时了没有收到查询包,这时候会认为查询器异常(或已经失效),将发起新的查询器选举过程;

 

下面介绍一下IGMPv2中,主机离开组的过程:

  • 主机向本网段内的所有组播路由器(目的地址:0.0.2)发送离开组报文;
  • 当查询器收到这个报文后,向这个主机离开的那个组播组发送一个特定组查询报文(目的地址和组地址都填所要查询的组的组播地址);
  • 如果这个被查询的组内还有其他成员,则这些成员在收到特定组查询报文后,会在该查询报文中所设定的最大响应时间内发送成员关系报告报文(以表明自己还属于这个组!);
  • 如果在最大响应时间内收到了这个被查询组其他成员发送的组成员关系报告报文,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该网段内已经没有这个组播组的成员了,这样一来,查询器将不再维护这个组播组的成员关系;

 

IGMPv2中的指定组查询 &&& IGMPv1中的普遍组查询

  • 在IGMPv1中,组播路由器的查询是对本网段下的所有组都进行查询,这种称为普遍组查询(实际上就是目的IP为0.0.1);
  • 在IGMPv2中,特定组查询其实就是把目的IP(IP头部分)改为了需要查询的组的IP地址并且把报文中的组地址(IGMP头部分)也改为需要查询的组的IP地址,比如查询一下0.0.1这个组,就是把225.0.0.1填入查询包的目的IP字段和组地址字段;

 

实际操作部分:

设备H3C交换机

 

【相关说明】igmp-snooping是运行在二层交换机上的组播约束机制,用于管理和控制组播组。主要负责建立和维护二层Mac地址表,同时根据建立的组播地址表来转发路由器下发的组播的报文,如果不开启这个功能,那么组播报文在二层网络中将会广播;

  • 首先需要查看一下交换机是否开启了igmp-snooping功能;
  • 用一台设备连续向交换机发送组播数据,用另一台设备接收组播数据,两台设备连在交换机上;

例如:发送设备发出的组播数据目的IP为225.0.0.1,持续发送;此时接收设备接收不到组播数据,直到接收设备发送加入组数据包(目的IP为225.0.0.1,目的组IP也为225.0.0.1),此时接收设备能收到组播数据;

 

通过查看交换机的组播地址表,可以验证,组播地址表中记录的是:交换机某个端口与某个组IP之间的映射关系。言外之意,交换机的端口下可以有很多组,只要有这些组的数据,交换机都会从这个端口转发出来!

0 Comments
Leave a Reply