7*24小时值班咨询手机:15101073985(微信同号)   
CCIE
当前位置:网站首页>CCIE
ccie培训配图实例高效讲解组成员
发布日期:2019-09-19 10:52:58 发布者:
    要将组播数据准确发送给组成员,必须先确定哪些网络的哪些主机是组成员,只有先确定了成员的位置,才能正确转发组播。当组成员不再需要接收组播的时候,就应该停止向成员发送组播,要确定组成员不再需要接收组播,就必须在成员退出时明确通告发送者。要确定组成员,有两种方式:查询和报告。
    查询,就是一台路由器向网络中发出查询消息,查询是否要主机要加入组,如果有主机应答,那么路由器就可以请求上游路由器把组播流量前转到这个子网中,如果没有主机应答,则请求上游路由器停止向其前转组播流量。
    报告,主机也可以不必等待路由器的查询,可以主动向路由器请求加入某个组,退出时也要向路由器发送退出消息,让路由器停止向其前转组播流量。
    在网络中,要确定组成员,需要使用一种协议,这种协议就是IGMP (Internet Group Management Protocol)因特网组管理协议,IGMP运行在路由器和主机之间,因为当组播发送者和组成员在不同网络时,需要路由器为组播数据提供转发,那么路由器就必须确认自己直连的网络中是否存在组成员,可以使用查询和报告来发现组成员,IGMP就可以完成这样的工作。
    IGMP共有3个版本,version 1,version 2,version 3,而思科路由器接口默认使用version 2,下面分别来介绍version 1和version 2,而version 3暂不介绍。
    IGMP  version 1
    因为IGMP是运行在路由器和主机之间的,所以当IGMP分别运行在路由器和主机上时具有不同的功能。
    IGMP v1路由器:
    运行了IGMP的路由器目的是确定哪些主机是组成员,主要靠发送queries(查询)来确定,当路由器发送queries查询主机时,使用目的地址为224.0.0.1,当有主机回复时,便认为网络中存在组成员,则将组播发送到该网络,并且queries每一分钟发送一次,主机每次都回复,如果连续三个queries没有回复,即三分钟,那么路由器便认为网络中的组成员已经离开,也就停止向网络中发送组播数据了。
    IGMP v1主机:
    运行了IGMP的主机发送reports来告诉路由器自己是组成员,reports同时也可以用来回复路由器的queries。Reports的目标地址是需要加入的组的地址,所以其它路由器和主机都能收到此数据包。一个网络中,因为有一个组成员时,路由器需要向该网络转发组播数据,组播是发送一次,有多个组成员时,路由器还是只向该网络发送一次组播数据,所以当一个网络中有多台主机需要成为组成员时,并不需要每台主机都向路由器发送reports,一个网络中只需要一台主机向路由器发送reports即可,其它主机全部不发,因为一台发送了之后,其它要接收组播的主机也是能正常接收到的,也为了避免所有组员都发reports而充斥整个网络。
    当网络中的组成员离开后,并没有特定的机制来通知路由器组员的离开,唯一的方法就是路由器在3分钟后没有收到组成员对queries的回复,也就认为网络中的组成员已经离开,便停止向网络中发送组播数据了。而其它主机还需要继续接收组播时,就需要再次向路由器发送reports要宣告自己的存在。
    IGMP  version 2
    IGMP  version 2与version 1具有相同的功能,具有相同的数据包,但也有不同的数据包,下面分别来看IGMP  version 2运行在路由器和主机上的数据包:
    IGMP v2主机:
    IGMP主机发送三种数据包来向IGMP路由器通告自己的状态:
    1.Membership Report
    2.Version 1 Membership Report
    3.Leave Group
    Membership Report
    Membership Report是主机发向路由器用来加入组的数据包,当路由器从接口上收到主机的Membership Report,便认为该网络上有组成员,就开始将组播转发到该网络。主机同样使用Membership Report来回复路由器的查询。Membership Report的目的地址是组地址,所以除了路由器之外,其它组员也能听到,一个网络中只会有一台主机向路由器发送Membership Report来通告网络中存在组员。
    Version 1 Membership Report
    Version 1 Membership Report是兼容IGMP v1时发送的。
    Leave Group
    在IGMP v1中,并没有特定的机制来通知路由器组员的离开,唯一的方法就是路由器在3分钟后没有收到组成员对queries的回复,也就认为网络中的组成员已经离开。但是在IGMP v2中,组成员离开时,需要向路由器发送Leave Group来通告自己的离开。但是只有向路由器发送过Membership Report的组成员离开时才需要发送Leave Group,其它组员离开时,也是没有任何动作的。Leave Group目的地址为224.0.0.2,也就是说组成员离开时,只有路由器知道,其它组员是不知道的。
    IGMP v2路由器:
    IGMP路由器靠查询消息来确认组成员的存在,运行IGMP V2的路由器使用2种查询消息:
    1.General Query
    2.Group-Specific Query
    General Query
    General Query的作用和IGMP v1中queries的作用是一样的,当路由器发送General Query查询主机时,使用目的地址为224.0.0.1,当有主机回复时,便认为网络中存在组成员,则将组播发送到该网络,并且General Query每一分钟发送一次,主机每次都回复,如果连续三个General Query没有回复,即三分钟,那么路由器便认为网络中的组成员已经离开,也就停止向网络中发送组播数据了。
    Group-Specific Query
    在IGMP v2中,当网络中的组成员离开之后,会向路由器发送Leave Group来通告自己的离开,而只有向路由器发送过Membership Report的组成员离开时才需要发送Leave Group,其它组员离开时,也是没有任何动作的,因此当网络中的组成员离开后,路由器并不知道网络中是否还有其它组员,因为其它组员没有通告过自己的存在。所以如果路由器马上停止向子网转发组播的话,可能会造成某些还存在的组员无法接收组播。最终当路由器收到组成员离开时发来的Leave Group后,并不能马上停止组播的转发,还要向网络中发送Group-Specific Query,目的地址为组的地址,用来查询网络中是否还有别的组员存在,如果有组员回复了,那么组播流就不会中断。为了防止包丢失而误认为没有组员,路由器每1秒分别发两个Group-Specific Query。

    IGMP v2 Querier:

思科认证培训

    由上图可以看出,当有两台或更多路由器连接到同一个网络时,路由器要确认网络中是否有组成员,发送General Query 就可以确认组员的存在,而当主机在使用Membership Report回复路由器的General Query时,因为Membership Report的目的地址是组地址,所以网络中所有路由器都能收到Membership Report。如果网络中的每一台路由器都发送General Query来查询组员的存在,那么每台路由器得到的结果都是一样的,这样也就没必要让网络中的每台路由器都进行组成员的查询。这时,就从网络的多台路由器中选举出唯一的一台路由器来查询组成员,这台路由器就是IGMP querier(IGMP查询器),只要IGMP查询器查询一次,所有路由器都能得到相同的结果。网络中拥有最低IP地址的路由器将被选举为IGMP查询器,因此上图中被选为IGMP查询器的路由器为12.1.1.1。当路由器正常启动IGMP v2后,就开始发送目标地址为224.0.0.1查询数据包,每台路由器收到后,查看数据包的源IP地址,最后得到结果谁是IGMP查询器,并且之后每一分钟发送一次查询数据包,如果路由器在两倍查询时间内没有收到查询器的查询数据包,便认为IGMP查询器已经失效,然后重新选举IP地址最小的为查询器。IGMP查询器在IGMP v1环境下是没有的。

微信