【组播技术入门 05】IGMPv2(RFC2236)![]()
1.消息格式 TYPE: Max Resp Time: 最大响应时间(只在查询消息中设置,其他消息中为0x00)是主机用membership report 来响应查询包的最长等待时间,默认10s,使用ip igmp query-max-response-time修改(此处设置的单位是s),而这个时间存储在报文中则是以1/10s为单位。因此这个值的范围是:0-255个1/10s或0-25.5s Group address: 在发送常规查询时,该字段为全0;特定组查询中该字段设置为该组的组播地址。 在成员关系报告或离开组消息中,该字段设置为目标组播组地址。 2.消息类型 2.1 成员关系查询 Membership query (TYPE:0x11)
路由器向子网中所有主机进行轮询 发向224.0.0.1,而且不涉及任何一个具体组播组。消息中的组地址设置为0.0.0.0。 如果一台组播路由器在querier timeout 计时器(默认是3倍的查询间隔)超前仍没有收到一个特定子网的Membership Report消息,那么这个路由器将宣布这个子网中没有组员,不再向这个子网发送组播数据。 常规查询默认60s发送一次(范围0-65535),可使用ip igmp query-interval修改。这个查询中同时包含Max ResponseTime,这个值告诉主机用membership report消息回应这个查询的最长等待时间,默认10S,使用ip igmp query-max-response-time修改,单位1/10S,范围是0-255个1/10S。
路由器的Group-Specific Query消息是根据主机发出的Leave Group消息而发出的,当路由器收到Leave Group消息时,必须判断子网中是否仍有组员存在。特定组查询消息报文目的地址为该发出Leave Group的主机所在组的组地址。为了避免Group-Specific Query被意外丢弃或被破坏导致路由器误以为组内没有成员了,因此查询路由器将间隔1S一次性发送两个Group-Specific Query消息(可以使用ip igmp last-member-query-count修改发送几个特定组查询消息),如果依然没有成员响应,路由器删除该组。 2.2 Membership Report (0x16) 这个消息在一台主机第一次加入组播组时发送,用于通知IGMP查询器自己要加入特定的组播组。这个报文也用来响应IGMP查询器发出的membership Query。该消息被封装在IP报文中,目的是该主机期望加入的组播组地址。 2.3 Version1 Membership Report (0x12) 功能同上,为兼容V1而设定的消息。 2.4 Leave report (0x17) 3.报告抑制机制 当一台主机想加入某个组播组(224.5.5.5)时,发送关于224.5.5.5的Membership Report,由于这是个组播报文,当二层交换机收到时,没有关于这个目的MAC地址(01-00-5e-05-05-05)的转发表项,因此就从所有端口发送出去,这时,当网络中还有需要接收224.5.5.5组播数据的主机收到这个关于224.5.5.5的Membership Report时,自己就不会再发送关于224.5.5.5的Membership 报文.这样可以减少组播数据在网络中的泛洪。这些个现象,可以通过debug ip igmp看到。 4.离开机制 首先我们看一下上图所示的情况:有组成员希望离开组播组,但该主机不是子网中该组播组的最后一个组播成员。
上面这种情况,PC2为224.2.2.2组播组的最后一个成员:
5.IGMPv2查询器 如果一个LAN中有多个组播路由器,这些组播路由器都发送IGMP查询消息的话那就显得非常多余且低效,这种情况下我们会在这些路由器(的接口)中选择出一台IGMP查询器。前面我们已经了解到IGMPv1没有定义机制来选举查询器,因此不得不依赖于第三层的组播路由协议来协助选择。而IGMPv2就定义了查询器的选举办法,IP地址小(指的是发送genernal Query的源地址)的路由器来充当IGMP查询器,由它来发送查询消息。 初始化的时候大家伙儿都会发,稳定后只有IP小的那个充当查询者。如果非查询者在“other query persent Interval”(other query persent Interval这个计时器在CISCO IOS上默认120s,这个时间是查询间隔计时器的两倍,后来IETF又做了微调,把查询间隔计时器改成125s,因此other query persent Interval默认就是两倍的125s也就是250s,这里在实际部署的时候一定要注意新旧设备的计时器差异) 内没有收到查询者的查询,那么它会认为查询者挂了,自己就会成为查询者。 6.IGMPv2计时器 |
|