简要介绍了IGMP协议和IGMPSnooping

核心提示:IGMP(Internet组管理协议)是用于管理多播传输。一个典型的多播网络如下图所示,从左到右,分别为PC、机顶盒电视,RG(路由Gatewa)。
IGMP(Internet组管理协议)是用于管理多播传输。一个典型的多播网络如下图所示,从左到右,即PC、机顶盒电视,RG(路由)、DSLAM(数字用户线接入复用器),开关,和网关。




IGMP的基本操作:

客户端(例如,PC)发送IGMP报告消息路由器表明它需要加入或退出一个多播组;

路由器发送IGMP查询报文给客户定期;

客户端发送IGMP报告消息路由器响应查询。

支持IGMP是组播路由器,组播路由器决定如何转发接收组播数据包基于IGMP组播路由器的IGMP消息。最后,组播路由器发送IGMP报文,不再向上水平。组播路由器交换路由信息与其他组播路由器通过组播路由协议(如PIM)。

在IPTV网络中,每个电视频道是一个多播组,终端用户通过退出一个组和添加另一组来实现电视频道的切换。



公牛;IGMPv2




IGMPv2消息可以分为三种类型:加入组播组,离开组播组查询和查询客户端,分别对应三种数据包的封装格式分别型。

IGMPv2已经为离开组播组的支持增加与igmpv1。

当路由器接收到一个组播IGMP报文从下属网络在加入组播组,如果它接收到的组播组,它会传递给下属网络。

同样,由IGMP报文丢弃,组播路由器可以决定下属网络需要一个多播组的消息。否则,它将不再传输多播组的消息。

组播路由器通过IGMP查询报文来保持与客户的联系。如果客户机在指定时间内没有得到响应,则认为客户端已退出组播组。

IGMPv2 uses two reserved multicast addresses:

224.0.0.1特指所有多播和组播节点,节点加入组播组。

224.0.0.2特指所有组播路由器,所有的路由器加入组播组。




查询的IGMP报文,通过捕捉、IGMP地址客户回复是组播组地址,而不是224.0.0.2.because目的地址是组播组地址,网络中的其他成员也可以得到这样的答复,从而抑制了其他客户的答复。事实上,每一个收到的IGMP查询报文的客户端,将延迟时间回复,这是为了避免网络立即产生大量淤血所致的消息,一个多播组成员只要有回复IGMP可以查询到只关心是否消息转发组播组的组播路由器,而不在乎在组播组成员数量的分支机构网络。细节需要看的rfc2236文件。



公牛;IGMPv3

比较明显的是IGMPv3,组播组,即源地址,客户可以指定发送到特定地址的多播消息。这种机制称为SSM(源特定组播)。此外,当需要改变平台,IGMPv3只需要发送一个消息,不像IGMPv2需要发送两个消息(一个出口,一个说)。

IGMPv3将加入和退出型信息作为会员报告类型的数据包,而另一个成员查询消息,查询包的通用查询,查询特定的组播组,指定源特定组播组地址查询等。

IGMPv3采用两预留组播组地址:

224.0.0.1特指所有组播节点;

224.0.0.22是IGMPv3组播路由器的地址。













在上述IGMPv3会员报告消息组记录是用来加入、退出和响应组播路由器的查询。会员报告消息可以包含多个组记录,这使得它可以更改表(退出和加入的)在一个消息。在组记录,IGMPv3实现加入或退出组播组中包含或排除的源地址。包含包含需要接收源地址的多播消息。排除意味着不需要接收源地址的多播消息。由于这些原因,记录类型可分为当前状态记录、过滤模式更改记录、源列表更改记录等。详细的消息格式说明需要查看RFC 3376文档。






IGMPv2和IGMPv3的比较:






公牛;IGMP Snooping



客户端和组播路由器之间的切换可以监控IGMP报文的传输,修改MAC地址表,实现正确有效的组播报文的转发,而不是默认的驱处理,这种方式称为IGMP侦听IGMP代理snooping.igmp不同。作为一个代理,后者将处理接收到的IGMP报文,那么开关将组播路由器进行交互,而前者只听IGMP数据包的内容(不修改IGMP数据包的内容)。

开关需要解析IGMP消息支持IGMP Snooping。它的目的是为了知道哪些组播组成员在每个端口连接。它还需要知道哪一个端口连接到多播路由器IGMP查询回复信息直接转发到路由器,因为如果洪水恢复的消息,你可能会抑制其他组播组成员的回复,不知道下一个交换机端口的组播组成员。此外,开关也需要保持对每个端口的组播组计时器来确定是否连接组播组成员超过最大响应时间。

新的Linux网桥支持IGMP Snooping和代码位于 / / /净桥br_multicast C.