互联网组管理协议(IGMP)

IGMP从主机成员协议发展而来。IGMP消息以IP协议编号2的IP数据报发送,IP生存时间(TTL)字段设置为1。IGMP数据包仅通过LAN传递,由于其TTL字段值而不能由路由器转发。

IGMP的两个最重要的目标如下:

  • 通知本地多播路由器主机希望接收  特定组的多播流量
  • 通知本地多播路由器主机要离开多播组(换句话说,主机不再对接收多播组流量感兴趣)

组播路由器使用IGMP维护每个路由器接口的信息,这些信息涉及它们应该转发哪些组播组流量以及哪些主机希望接收它。

IGMP版本2

在路由器上配置多播路由和PIM时,会自动启用IGMP。可以逐个接口更改版本。版本2是当前的默认版本。下图显示了IGMPv2消息的8字节格式。

IGMPv2

IGMPv2具有四个字段,定义如下:

类型:8位字段,它是IGMPv2定义的四种消息类型之一:

1)成员资格查询(类型代码= 0x11):由多播路由器用来发现子网上是否存在组成员。常规成员资格查询消息将组地址字段设置为0.0.0.0。组特定查询将“组地址”字段设置为要查询的组的地址。路由器从主机接收到IGMPv2离开组消息后,将其发送给路由器。

2)版本1成员资格报告(类型代码= 0x12):IGMPv2主机用于与IGMPv1向后兼容。

3)版本2成员资格报告(类型代码= 0x16):由组成员发送,以通知路由器子网中至少存在一个组成员。

4)离开组(类型代码= 0x17):如果组成员是最后一个发送成员资格报告以通知路由器它将离开组的成员,则由该成员发送。

最大响应时间:8位字段仅包含在查询消息中。单位是1/10秒,默认值为100(10秒)。值的范围是1到255(0.1到25.5秒)。

校验和:携带由源计算出的16位校验和。即使IGMPv2消息的长度只有8个字节,IGMP校验和也是在整个IP有效负载上计算的,而不仅仅是在前8个八位字节上。

组地址:在“一般查询”消息中设置为0.0.0.0,在“组特定”消息中设置为组地址。成员资格报告消息包含此字段中正在报告的组的地址;离开组消息带有该字段中剩余的组地址。

与IGMPv1相比,开发IGMPv2的主要原因之一是提供了一种更好的请假机制,以缩短请假延迟。

IGMPv2主机成员资格查询功能

如下图所示,多播路由器通过LAN接口发送IGMPv2主机成员身份查询消息,以确定多播组成员是否在任何接口上。路由器会在每个查询间隔(默认为60秒)内发送这些消息。

主机成员身份查询使用目标IP地址和MAC地址224.0.0.1和01 00-5e-00-00-01,以及路由器接口IP地址和烙印地址(BIA)的源IP地址和MAC地址,分别。IGMPv2查询使用TTL为1来防止数据包被路由。

IGMPv2主机成员资格

这两个步骤的详细信息如下:

(1)主机H1和H3加入组播组226.1.1.1。主机准备接收发送到226.1.1.1(加入的组)和224.0.0.1(IGMPv2查询将发送到的地址)的消息。Join使这些主机计算两个多播MAC(MM)地址,即01-00-5e-01-01-01(来自226.1.1.1)和01-00-5e-00-00-01(来自224.0.0.1) ),然后侦听发送到这两个MM的帧。

2)R1定期发送IGMPv2主机成员资格查询每个LAN接口,以查找对接收任何多播组的数据包感兴趣的任何主机。发送IGMPv2查询后,R1希望已加入任何组的任何主机以IGMPv2报告进行回复。

IGMPv2主机成员资格报告功能

主机使用IGMPv2主机成员资格报告消息来答复IGMP查询,并与要接收其流量的多播组的本地路由器通信。

在IGMPv2中,主机在以下两个条件下发送主机成员资格报告:

当主机从本地路由器接收到IGMPv2查询时,它应该为要接收其组播流量的所有组播组发送IGMPv2主机成员资格报告。该报告称为IGMPv2请求的主机成员身份报告。

当主机加入新组时,主机立即发送IGMPv2主机成员资格报告,以通知本地路由器它希望接收刚加入的组的多播流量。该报告称为IGMPv2不请自来的主机成员资格报告。

IGMPv2请求的主机成员资格报告

如果许多主机启动了多播应用程序,并且所有主机都响应主机成员身份查询,则将使用不必要的带宽和路由器资源来处理所有冗余报告。多播路由器仅需要在其每个LAN接口上为每个应用程序接收一个报告。无论接口是1个用户还是200个用户属于给定的多播组,它都会在接口上转发多播流量。

报告抑制机制有助于解决这些问题。它使用IGMPv2最大响应时间(MRT)计时器来抑制许多不必要的IGMP报告。该计时器称为查询响应间隔。换句话说,当任何主机接收到IGMPv2查询时,如果它想要接收该应用程序的多播流量,它将拥有配置的MRT的最大值以发送IGMP报告。

每个主机选择一个介于0和MRT之间的随机时间,并启动一个计时器。当此计时器到期时,主机将发送主机成员资格报告,但前提是尚未听到其他主机为其组发送报告。这称为“报告抑制”,旨在减少冗余报告。

IGMPv2不请自来的主机成员资格报告

在IGMPv2中,主机不必等待来自路由器的主机成员身份查询消息。主机可以在用户启动多播应用程序时随时发送IGMPv2未经请求的主机成员资格报告。此功能减少了主机接收多播组流量的等待时间。

例如,下图显示用户已启动在H4上使用226.1.1.1的多播应用程序。H4发送IGMPv2未经请求的主机成员身份报告,然后R1开始在其fa0 / 1接口上转发226.1.1.1的流量。

IGMPv2主动报告


IGMPv2查询器

IGMPv2定义了一个查询器选举过程,该过程在将多个路由器连接到子网时使用。IGMPv2路由器启动时,每个路由器都会向知名的“所有主机”组224.0.0.1发送IGMPv2常规查询消息。IGMPv2路由器收到通用查询消息时,会将通用查询消息的源IP地址与其自己的接口地址进行比较。

子网中IP地址最低的路由器被选为IGMP查询器。非查询器路由器不发送查询,而是监视查询器发送通用IGMPv2查询的频率。当选举查询器不连续两个查询间隔加一查询响应时间间隔的一半发送一个查询时,它被认为是死的,并选择新的查询。

“其他查询器当前间隔”的默认值为255秒,因为默认的“通用IGMPv2”查询间隔为125秒,默认的“查询响应间隔”为10秒。

下表总结了IGMPv2中使用的重要计时器,其用法和默认值。

重要的IGMPv2计时器

IGMP版本3

在IGMPv2中,当主机发出加入组的请求时,无论数据包的源IP地址如何,多播路由器都会将该组的流量转发到子网。在非常大的网络(例如Internet广播)中,这可能会引起问题。

例如,假定正在召开多媒体会议。小组成员决定通过向同一小组发送谈话或音乐来恶意干扰会话。尽管多媒体应用程序允许用户使任何其他成员静音,但是它并不能阻止不必要的流量传递到主机。

此外,如果一群黑客决定使用该公司员工已加入的相同多播组地址,用虚假的高带宽数据淹没该公司的网络,则它可能会淹没低速链路,从而对该公司造成DoS攻击。IGMPv1和IGMPv2都没有防止这种攻击的机制。

IGMPv3允许主机通过一种称为源特定组播(SSM)的功能,根据主机愿意从中接收数据包的源IP地址来过滤传入流量。SSM允许主机表明有兴趣仅接收来自特定源地址的数据包,或接收来自除特定源地址之外的所有其他地址的数据包,这些数据包发送到特定的多播地址。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁