您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页RFC3376IGMPv3

RFC3376IGMPv3

来源:纷纭教育
RFC3376IGMPv3

RFC3376 IGMPv3 1.简介 1.1.IPv4

1.1.1.IGMPv1 RFC1112 定义 Query Report 1.1.

2.IGMPv2 RFC2236 增加 Leave

1.1.3.IGMPv3 RFC3376

定义v3 Report,支持SSM(废弃Leave,统一采用Report) 1.2.IPv6

MLDv1(功能与IGMPv2相同) MLDv2(功能与IGMPv3相同) 2.用于请求IP组播接收的服务接口 系统服务接口操作要求

IPMulticastListen( socket, interface, multicast-address, filter-mode, source-list ) ●Socket ●Interface

接收指定组播报文的网络接口ID。

接口可以是物理的(以太网接口)或者虚拟的(FR虚连续或IP-in-IP隧道)。实现也许允许“未指定”值作为接口参数,此时,该请求应用在系统的第一个或者缺省接口(或

●Multicast-address

IP多播地址或组。如果给定接口要接收多个组播地址,每个组播

地址调用IPMulticastListen。

●Filter-mode

INCLUDE或者EXCLUDE。在INCLUDE模式,仅接收IP源地址在source-list参数的报文。

在EXCLUDE模式,仅接收IP源地址不在source-list参数的报文。 ●source-list

未排序的零或者多个IP单播地址。实现也许会IP地址个数,但不能小于个。当IP地址个数超过时,服务接口必须返回错误。

对于给定的socket、interface、multicast-address,每次仅能配置一种过滤模式和源列表。

但,后续的配置请求可以更改模式和列表。

以前版本的IGMP并不支持源过滤,仅支持加入和离开操作。 加入操作等效于

IPMulticastListen(socket,interface,multicast-address,EXCLUDE,{})

离开操作等效于

IPMulticastListen(socket,interface,multicast-address,INCLUDE,{})

{}表示空列表。

3.系统维护的多播接收状态 3.1.socket状态

(interface, multicast-address, filter-mode, source-list) ●如果请求过滤模式等于INCLUDE并且请求源列表等于空,则该接口和多播地址对应表

项被删除。如果表现不存在,则该请求被忽略。

●如果请求过滤模式等于EXCLUDE或者请求源列表等于非空,则请求接口和多播地址对

应的表项更改成包含该请求模式和源列表。如果表现不存在,则创建新表现并更新参数,3.2.interface状态

(multicast-address, filter-mode, source-list)

●如果任意记录的过滤模式等于EXCLUDE,则该接口的过滤模式等于EXCLUDE,源列表等

于所有EXCLUDE模式记录的交集减去INCLUDE模式的源列表。 例如在接口i多播地址m的socket socket s1: ( i, m, EXCLUDE, {a, b, c, d} ) socket s2: ( i, m, EXCLUDE, {b, c, d, e} ) socket s3: ( i, m, INCLUDE, {d, e, f} ) 则接口i的记录 ( m, EXCLUDE, {b, c} ) 如果第四个socket

socket s4: ( i, m, EXCLUDE, {} ) 则接口记录变更为 ( m, EXCLUDE, {} )

如果所有记录的过滤模式都等于INCLUDE,则接口的过滤模式为INCLUDE,源列表等于所有记录的联合。

例如在接口i多播地址m的socket socket s1: ( i, m, INCLUDE, {a, b, c} ) socket s2: ( i, m, INCLUDE, {b, c, d} ) socket s3: ( i, m, INCLUDE, {e, f} ) 则接口i的记录

( m, INCLUDE, {a, b, c, d, e, f} )

实现不能使用一个EXCLUDE接口记录来代表一个组,该组所有socket处于INCLUDE状态。如果系统资源到达,则给应用层返回一个错误。

当增加、删除、修改记录调用IPMulticastListen是,接口状态重新计算。

注意:socket状态的改变并不一定导致接口状态改变。 4.消息格式

IGMP消息封装在IPv4报文,IP协议等于2,TTL等于1,IP优

先级(0xC0),IP路由器警告选项。

IGMPv3消息类型

Type Number (hex) Message Name ----------------- ------------ 0x11 Membership Query

0x22 Version 3 Membership Report 实现必须兼容以前版本的消息类型

0x12 Version 1 Membership Report [RFC-1112] 0x16 Version 2 Membership Report [RFC-2236] 0x17 Version 2 Leave Group [RFC-2236] 不可识别消息类型安静丢弃。

4.1.成员关系查询消息(Membership Query) 0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 0x11 | Max Resp Code | Checksum |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group Address |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Resv |S| QRV | QQIC | Number of Sources (N) |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address [1] |

+- -+

| Source Address [2] | +- . -+ . . . . . . +- -+

| Source Address [N] |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4.1.1.Max Resp Code

在发送相应报告前的最大允许时间。实际允许时间,称作最大响应时间(Max Resp Time),采用1/10秒为单位表示。

如果Max Resp code < 128 ,则Max Resp Time = Max Resp Code

如果Max Resp code〉=128,则Max Resp Time采用浮点格式表示

0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1| exp | mant | +-+-+-+-+-+-+-+-+

Max Resp Time = (mant | 0x10) << (exp + 3)

较小的Max Resp Time值允许IGMPv3路由器调节“Leave Latency”,较大的值允许调节网络大规模的IGMP流量。

4.1.2.Checksum

16比特IGMP报文(整个IP负荷)校验和。 接收侧必须校验该值。 4.1.3.Group Address

发送通用查询(General Query)时组地址设置成0,发送特定组查询(Group-specific Query)或者特定源地址组(Group-and-Source-Specific Query)查询时设置成IP组播地址。

4.1.4.Resv 4.1.

5.S Flag(抑制路由器侧处理)

当设置成1,S标记指示任意接收组播路由器抑制通用定时器更新, 4.1.6.QRV(Queriery’s Robustness Variable)

如果非0,QRV域包含查询者的Robustness Variable的值。如果查询者的Robustness Variable 值大于7,QRV域的最大值,QRV

域设置成0。

路由器采用最近一次接收的查询的QRV值作为自己的Robustness Variable值。如果最近一次接收的QRV值等于0,接收者采用缺省Robustness Variable值。

4.1.7.QQIC(Querier's Query Interval Code)

QQIC指定查询者的Query Interval。实际间隔,称作Querier’s Interval(QQI),以秒为单位,从QQIC获得方法如下:

如果QQIC < 128 ,则QQI=QQIC

如果QQIC>=128,则QQIC采用浮点格式表示 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1| exp | mant | +-+-+-+-+-+-+-+-+

QQI = (mant | 0x10) << (exp + 3)

不是当前查询者的组播路由器采用最近一次接收的QQI作为查询间隔。如果最近一次接收的QQI等于0,则采用缺省值。

4.1.8.Number Of Sources(N)

指定查询中源地址个数。零表示通用查询或特定组查询,非零表示Group-and-Source-Specific Query。最大个数366。

4.1.9.Source Address[i] IP单播地址表

4.1.10.Additional Data

如果接收查询报文的IP包头的报文长度域指示存在额外的数据,则IGMPv3实现必须包含该数据与来计算IGMP校验和,但可以忽略这些额外字节。

4.1.11.查询

查询消息包含三种类型 ●General Query

组播路由器发送通用查询来学习邻居接口的组播状态。在通用查询报文,组地址和源地址数等于0。

●Group-Specific Query

组播路由器发送特定组查询来学习邻居路由器单个组播地址的状态。在特定组查询报文,组播地址域包含组播地址,源地址个数等于0。

●Group-and-Source-Specific Query

组播路由器发送该报文学习邻居接口需要特定源地址列表的特定组播地址。在Group-and-Source-Specific报文中,组播地址域包含组播地址,源地址域包含源地址列表。

4.1.12.查询IP目的地址

同用查询采用224.0.0.1作为IP目的地址。特定组查询和Group-and-Source-Specific采用组播地址作为IP目的地址。然而,系统必须能够接收并处理IP目的地址包含接收接口的任意地址(单播或者组播)。

4.2.成员关系报告(Membership Report) 0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Type = 0x22 | Reserved | Checksum |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Reserved | Number of Group Records (M) |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| | . .

. Group Record [1] . . . | |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |

. .

. Group Record [2] . . . | |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | . |

. . . | . |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |

. .

. Group Record [M] . . . | |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

组记录格式

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Record Type | Aux Data Len | Number of Sources (N) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Multicast Address |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Source Address [1] | +- -+

| Source Address [2] | +- -+ . . .

. . . . . . +- -+

| Source Address [N] |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| | . .

. Auxiliary Data . . . | |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.2.1.Reserved 4.2.2.Checksum 16比特校验和域

4.2.3.Number Of Group Records(M) 组记录格书

4.2.4.Group Record 包含单个组的成员关系 4.2.

5.Record Type 4.2.6.Aux Data Len

组记录中辅助数据域长度,单位32比特。该域可以等于零,表示无辅助数据。

4.2.7.Number Of Source(N) 组记录中源地址的个数。 4.2.8.Multicast Address IP组播地址

4.2.9.Source Address[i]

IP单播地址列表 4.2.10.Auxiliary Data

辅助数据包含该组的额外信息。本文档并未定义任何辅助数据。因此,IGMPv3实现不能包含任何辅助数据。

4.2.11.Additional Data

如果IP包头的长度域指示IGMP包含额外数据,则计算校验和是必须包含该数据,但忽略这些字节。IGMPv3实现不能在最后一个组记录前包含额外数据。

4.2.12.Group Record Types ●Current-State Record

响应查询的报文。它报告接口的当前接收状态,针对单个组播地址。Current-State记录的记录类型包含两个值

Value Name和含义

1NODE_IS_INCLUDE:接口针对特定组播地址的过滤模式为INCLUDE。

2MODE_IS_EXCLUDE:接口针对特定组播地址的过滤模式为EXCLUDE

●Filter-Mode-Change Record

针对某个特定组播地址,接口过滤状态发生改变,记录类型包括 3CHANGE_TO_INCLUDE_MODE 4CHANGE_TO_EXCLUDE_MODE ●Source-List-Change Record

针对某个特定组播地址,接口源列表发生改变。记录类型包括 5ALLOW_NEW_SOURCE:指示系统希望侦听的地址。如果更改在INCLUDE源列表,则增加到列表;如果在EXCLUDE,则删除

6BLOCK_OLD_SOURCE:指示系统不希望侦听的地址。如果更改在INCLUDE,则删除;如果在EXCLUDE,则增加。

4.2.13.IP Source Addresses for Reports

IGMP Report发送到目的网络时携带有效的IP源地址。源地址0.0.0.0可以被系统使用。

4.2.14.IP Destination Address for Reports

版本3报告采用IP目的地址224.0.0.22发送。运行在版本1或版本2兼容的系统发送版本1或版本2报告,组播组在组播地址域指定。除此之外,系统必须接收和处理版本1或版本2的报告,其IP目的地址包含接口的地址(单播或组播)。

4.2.1

5.Notation for Group Records

在下文,将使用下面的符号来描述组记录与特定组地址的关系 IS_IN ( x ) –类型MODE_IS_INCLUDE,源地址x IS_EX ( x ) –类型MODE_IS_EXCLUDE,源地址x

TO_IN ( x ) –类型CHANGE_TO_INCLUDE_MODE,源地址x TO_EX ( x ) –类型CHANGE_TO_EXCLUDE_MODE,源地址x ALLOW ( x ) –类型ALLOW_NEW_SOURCES,源地址x BLOCK ( x ) –类型BLOCK_OLD_SOURCES,源地址x X表示下面其中之一

●一个大写字母(如”A”)表示一组源地址,或者

●一个表达式(如”A+B”),”A+B”表示A和B的联合,”A*B”表示A和B的交集,”A-B”表示

从A集合移除B集合

4.2.16.Membership Report Size

当报告中的组记录不能承载在单个报告消息中,组记录在多个报告消息中发送来报告完整的集合。

如果一个组记录包含多个源地址并且不能在一个报告消息发送,如

MODE_IS_EXCLUDE

CHANGE_TO_EXCLUDE_MODE,记录可以拆分成多个记录,每个包含源地址的子集,如果类型是MODE_IS_INCLUDE或者CHANGE_TO_EXCLUDE_MODE,仅发送一个消息,包含尽可能多的源地址,剩余地址不记录。尽管可以任意选择源地址,但多个记录的发送应该使用相同源地址,而不是每个报文都不相同。

5.协议描述-组成员

为了与旧版本的组播路由器互通,系统在每个接口维护一个MulticastRouterVersion变量。本章节描述系统接口在MulticastRouterVersion

变量等于

3

时的行为。检测

MulticastRouterVersion的算法和不是版本3的行为在章节7阐述。

所有系统多播地址224.0.0.1,作为特例处理。在所有系统上,包括主机、路由器或多播路由器,接收针对所有多播地址的报文。IGMP消息不在该地址发送。

存在两种类型的事件触发IGMPv3协议操作接口

●改变接口接收状态,从本地MulticastRouterVersion调用产生 ●接收到查询

(接收的IGMP消息除了查询外都忽略,除非要求语早期版本互操作)

5.1.Action on Change of Interface State

IPMulticastListen调用也许会导致接口的多播接受状态改变,根据章节3.2的规则。每次改变影响每个多播地址的每个接口。

接口状态改变引起系统立刻发送接口的State-Change报告。报告中组记录的类型和内容通过比较受影响组播地址的过滤模式和源列表来确定。

Old State New State State-Change Record Sent --------- --------- ------------------------

INCLUDE (A) INCLUDE (B) ALLOW (B-A), BLOCK (A-B) EXCLUDE (A) EXCLUDE (B) ALLOW (A-B), BLOCK (B-A) INCLUDE (A) EXCLUDE (B) TO_EX (B) EXCLUDE (A) INCLUDE (B) TO_IN (B)

如果计算的ALLOW或BLOCK状态改变记录的源列表等于空,记录在报告消息中忽略。

为了覆盖状态改变报告被一个或多个组播路由器漏掉的可能性,该报文重传多次(Robustness Variable -1),间隔在(0,Unsolicited Report Interval)范围内随机选择。

如果在上一次状态改变报文传输完成前,相同接口的新改变发生,

立刻传输新的状态改变报告。

新传输报告的内容计算如下。就像上一次报告一样,受影响组的接口状态前后进行比较。

报告记录根据上述表计算差异。然而,该记录不在消息中传输,而是合并到未发送报告中,来创建新的状态改变报告。合并规则如下。

合并状态改变报告的传输终结早期状态改变的重传,更改成状态改变的首次传输。

每次源地址包含在差异报告中,重传状态需要维护知道状态改变报告被发送。这是为了确保一系列连续的状态改变不终止协议健壮性。

如果触发新报告的接口接收状态是过滤模式,接下来的状态改变报告包括Filter-Mode-Change记录。

每次状态改变报告传输时,内容计算如下。如果报告包含Filter-Mode-Change,并且过滤模式是INCLUDE,包括TO_IN记录,否则TO_EX记录。如果报告包含Source-List-Change 记录,ALLOW和BLOCK记录包含。

Record Sources included ------ ----------------

TO_IN All in the current interface state that must be forwarded

TO_EX All in the current interface state that must be blocked ALLOW All with retransmission state that must be forwarded BLOCK All with retransmission state that must be blocked 如果计算的源列表是ALLOW或BLOCK等于空,则状态改变报告的记录被忽略。

注释:当第一个状态改变报告发送时,不存在的待处理报告合并可以被当作源改变报告,含空ALLOW和BLOCK记录(不重传源)。

5.2.Action on Reception Of a Query

当系统接收到查询后,并不立刻响应。而是延时一定时间。从接收查询报文的Max Resp Code 计算Max Resp Time。系统也许在不同接口接收到各种查询(通用查询,特定组查询,Group-and-

Source-Specific查询),每个都要延时响应。

在调度响应也能够与查询时,系统必须考虑以前的未处理调度,在很多情况下,调度与响应结合。因此,系统必须维护下面状态

●每接口的定时器来处理通用查询的调度响应

●每个组和接口的定时器来处理特定组查询和Group-and-Source-Specific查询

●每个组和接口的源列表来报告Group-and-Source-Specific 当新的查询包含Router-Alert选项时,采用下面规则

●如果已经存在以前通用查询的未处理响应且小于选择时延,则无需额外响应

●如果接收查询是通用查询,接口定时器用于调度通用查询的响应且在调度时延之后,以

前的调度终止。

●如果接收特定组查询或Group-and-Source-Specific查询并且没有针对该组的未处理的响

应,则启动组定时器。如果接收查询是Group-and-Source-Specific,查询的源list用于产生响应。

●如果已经存在正在处理的响应,并且新的查询时特定组查询或者与组关联的源列表等于

空,则组源列表被清除并且使用组定时器产生单个响应。新的响应在前次查询升级时间和选择时延之前发送。

●如果接收查询是Group-and-Source-Specific查询并且存在针对该组非空的处理请求,泽

组源列表扩充到包含新查询的源列表,使用组定时器进行响应调度。新的响应在待定处理请求和选择时延间发送。

当待定处理请求的定时器超时,系统在关联端口传输一个或多个报告罅隙,承载一个或多个Currnet-State记录。

●如果超时定时器是接口定时器(如处理通用查询响应),则一个Current-State记录发送,

针对每接口每组播地址。Current-State记录承载多播地址和过滤

模式(MODE_IS_INCLUDE 或MODE_IS_EXCLUDE)

●如果超时定时器是组定时器且该组的源记录列表不为空(响应Group-and-Source-Specific

查询),只有接口已经接受该组地址的状态,响应Current-State记录包含的内容从接口状态和未处理响应记录获得

set of sources in the

interface state pending response record Current-State Record

--------------- ----------------------- -------------------- INCLUDE (A) B IS_IN (A*B) EXCLUDE (A) B IS_IN (B-A)

如果Current-State记录包含空院地址集合,不发送响应。 在任何请求的报告消息产生后,报告组的源地址列表清除。 6.协议描述-组播路由器 6.1.IGMP查询条件

组播路由器周期发送通用查询,系统在IGMPv3成员关系报告中发送包含Current-State组记录的来报告组成员关系。

当系统需要接收或不再接收特定源的流量是,它使用Filter-Mode-Change记录或Source-List-Change记录来报告这种变化。当系统不需要某个源时,组播路由器必须发送其他成员的状态来确定是否要删除组并剪枝流量。

特定组查询用于确认是否有用户对指定组关系。当路由器接收到状态改变指示某个路由器离开组时发送特定组查询。

Group-and-Source-Specific查询用于确认是否有用户接收特定源的组播。该报文作为State-Change记录的响应发送,不作为Current-State记录的响应发送。

6.2.组播路由器维护IGMP状态

组播路由器针对每个网络的每个组维护状态。组状态包含过滤模式,源列表,各种定时器。对于每个运行IGMP的网络,组播路由器记录接收状态。状态记录格式

(multicast address, group timer, filter-mode, (source records)) 源记录格式

(source address, source timer)

如果给定组需要所有的源,设置空源列表,过滤模式设置EXCLUDE。

6.2.1.路由器过滤模式定义

IGMPv3路由器针对每个网络每个组维护过滤模式。过滤模式用于精简组接收状态到最小集合,满足所有系统成员关系。

从概念上讲,当组记录接收,该组的路由器过滤模式更新,使用最少数量状态覆盖所有请求源。作为规则,一旦有EXCLUDE过滤模式的组记录接受,该组的路由器过滤模式变成EXCLUDE。

当该组的路由器过滤模式是EXCLUDE,源记录列表包含两种类型源。第一种类型表示接收状态冲突,集合需要在网络转发。第二种类型是主机请求不要转发的集合。

当该组的路由器过滤模式是INCLUDE,源记录列表是该组所需源的集合。

当EXCLUDE过滤模式的报告记录引起路由器过滤模式转变成EXCLUDE,必须有机制让路由器回退到INCLUDE。当EXCLUDE过滤模式的所有主机停止报告时,路由器返回INCLUDE模式。这发生在组路由器超时。

6.2.2.组定时器定义

组定时器用在EXCLUDE模式,表示组的过滤模式返回INCLUDE的时间。组定时器采用递减定时器。组定时器根据接收的组记录类型更新。

当路由器过滤模式在EXCLUDE时组定时器超时表示网络没有侦听者。此时,路由器返回INCLUDE过滤模式。

Group

Filter-Mode Group Timer Value Actions/Comments ----------- ----------------- ---------------- INCLUDE Timer >= 0 All members in INCLUDE

mode.

EXCLUDE Timer > 0 At least one member in EXCLUDE mode.

EXCLUDE Timer == 0 No more listeners to group. If all source timers have expired then delete Group Record. If there are still source record timers running, switch to INCLUDE filter-mode using those source records with running timers as the INCLUDE source record state.

6.2.3.源定时器定义

源定时器跟踪每个源记录,采用递减计时器。源定时器根据接收组的类型和过滤模式更新。

包含运行定时器的源记录,当路由器过滤模式在INCLUDE,表示当前有一个或多个主机需要接收该源。如果该定时器超时,则没有主机需要该源,路由器删除源记录。

当路由器过滤模式在EXCLUDE时,源定时器行为不同。如果源定时器在EXCLUDE模式运行,表示至少一个系统需要该源。如果超时,路由器通知路由协议没有接受者。

当路由器过滤模式是EXCLUDE,源记录在组定时器超时时删除。 6.3.IGMPv3 Source-Specific Forwarding Rules

多播路由协议用于多播转发决定,IGMPv3并不重载多播路由信息。例如,如果IGMPv3针对组G的过滤模式是EXCLUDE,路由器也许继续转发流量。

Group

Filter-Mode Source Timer Value Action ----------- ------------------ ------

INCLUDE TIMER > 0 Suggest to forward traffic from source

INCLUDE TIMER == 0 Suggest to stop forwarding traffic from source and remove source record. If there are no more source records for the group, delete group record.

INCLUDE No Source Elements Suggest to not forward source EXCLUDE TIMER > 0 Suggest to forward traffic from source

EXCLUDE TIMER == 0 Suggest to not forward traffic from source (DO NOT remove record)

EXCLUDE No Source Elements Suggest to forward traffic from source

6.4.Action on Reception of Reports 6.4.1.Current-State记录接收

当接收到Current-State记录,路由器更新组和源定时器。在某些情况,接收组记录类型导致路由器过滤模式改变。

符号(A,B)用于表示针对特定组的源个数: A= 源定时器大于0的源记录集合 B= 源定时器等于0的源记录集合

当路由器在EXCLUDE,存在两个集合;当路由在INCLUDE,单个集合。

变量缩写

GMI- Group Membership Interval LMQT-Last Member Query Time

A=J表示源记录集合A设置源定时器值J。

Router State Report Rec'd New Router State Actions ------------ ------------ ---------------- ------- INCLUDE (A) IS_IN (B) INCLUDE (A+B) (B)=GMI INCLUDE (A) IS_EX (B) EXCLUDE (A*B,B-A) (B-A)=0 Delete (A-B) Group Timer=GMI

EXCLUDE (X,Y) IS_IN (A) EXCLUDE (X+A,Y-A) (A)=GMI EXCLUDE (X,Y) IS_EX (A) EXCLUDE (A-Y,Y*A) (A-X-Y)=GMI Delete (X-A) Delete (Y-A) Group Timer=GMI

6.4.2.接收Filter-Mode-Change和Source-List-Change记录 当组的全局状态改变,系统发送Source-List-Change或Filter-Mode-Change记录。

路由器必须发查询源,不在转发的。当路由器查询或接收特定源的查询,降低源定时器到Last Member Query Time。如果收到相应,更新计数器。

类似,当查询特定组降低组定时器到Last Member Query Time。如果收到EXCLUDE的组,组定时器更新并建议路由器转发组而不要中断。

在查询期间(如Last Member Query Time),IGMP继续建议路由协议转发流量。知道Last Member Query Time没有收到,才剪枝。

符号Q(G)表示特定组查询组G

符号Q(G,A)表示Group-and-Source-Specific查询组G,源列表A

Router State Report Rec'd New Router State Actions ------------ ------------ ---------------- ------- INCLUDE (A) ALLOW (B) INCLUDE (A+B) (B)=GMI

INCLUDE (A) BLOCK (B) INCLUDE (A) Send Q(G,A*B) INCLUDE (A) TO_EX (B) EXCLUDE (A*B,B-A) (B-A)=0 Delete (A-B) Send Q(G,A*B) Group Timer=GMI

INCLUDE (A) TO_IN (B) INCLUDE (A+B) (B)=GMI Send Q(G,A-B)

EXCLUDE (X,Y) ALLOW (A) EXCLUDE (X+A,Y-A) (A)=GMI EXCLUDE (X,Y) BLOCK (A) EXCLUDE (X+(A-Y),Y) (A-X-Y)=Group Timer

Send Q(G,A-Y)

EXCLUDE (X,Y) TO_EX (A) EXCLUDE (A-Y,Y*A) (A-X-Y)=Group Timer

Delete (X-A) Delete (Y-A) Send Q(G,A-Y) Group Timer=GMI

EXCLUDE (X,Y) TO_IN (A) EXCLUDE (X+A,Y-A) (A)=GMI Send Q(G,X-A) Send Q(G)

6.5.Switching Router Filter-Modes

组定时器用于转变路由器过滤模式从EXCLUDE到INCLUDE。 在EXCLUDE模式下组定时器超时,则状态迁移至INCLUDE。 路由器使用具有源定时器的源记录作为转换到INCLUDE状态。如果任意源记录的源定时器大于0,路由器转换到INCLUDE模式。定时器等于0的源记录(以前EXCLUDE)被删除。

6.6.Action on Reception of Queries 6.6.1.Timer Updates

当路由器发送或接收未包含S标记的查询,必须更新定时器来反映正确的超时值。

Query Action ----- ------

Q(G,A) Source Timer for sources in A are lowered to LMQT Q(G) Group Timer is lowered to LMQT

当路由器发送或接收包含S标记的查询,不更新定时器。 6.6.2.Querier Election

IGMPv3使用与IGMPv2相同的选举机制来选举每个子网的查询器。当路由器接收到较低IP 地址的查询,它设置Other-Queries-Present定时器为Other-Querier Present Interval并终止发送查询报文。当Other-Queries-Present定时器超时后,路由器发送通用查询。

如果路由器接收到较老版本的查询,则使用老版本的IGMP 6.6.3.Building and Send Specific Queries

6.6.3.1.Building and Sending Group Specific Queries 当表操作“Send Q(G)”执行,组定时器必须小于LMQT。路由器立刻发送特定组查询,重传[Last Member Query Count -1],每[Last Member QueryInterval]发送在[Last Member Query Time].

当重发特定组查询是,如果组定时器大于LMQT,S标记设置 6.6.3.2.Building and Sending Group and Source Specific Queries

当执行”Send Q(G,X)”,针对每个组G的源X,源定时器大于LQMT操作必须完成

●每个源的重传次数设置为Last Member Query Count ●源定时器小于LQMT

当针对组G构造组和源特定查询时,发送两个的查询消息。第一个包含S比特并且包含所有的源且重传状态和定时器大于LMQT。第一个清除S比特且包含所有的源且重传状态和定时器小于或等于LMQT。如果两个消息不包含任何源,则消息重传抑制。

注:如果特定组查询与特定组和源查询同时调度,特定组和源查询的S比特清除。7.IGMP版本互操作性

7.1.查询版本特征

查询消息的IGMP版本检测如下

IGMPv1 Query :长度等于8并且Max Resp Code域等于0 IGMPv2 Query :长度等于8并且Max Resp Code域不等于0 IGMPv3 Query :长度>=12 其它类型的消息丢弃。 7.2.组定时器行为 7.2.1.旧版本查询器存在

IGMPv3必须记录每个接口的兼容模式:采用Host Compatibility Mode变量。Host Compatibility Mode变量包含三种状态:IGMPv1、IGMPv2、IGMPv3。

为了优雅的在IGMP版本间切换,主机在每接口维护IGMPv1 Querier Present定时器和IGMPv2 QUerier Present定时器。

接口的主机兼容模式在老版本查询接收或特定定时器条件发生。如果IGMPv1查询存在定时器超时,则切换到IGMPv2查询存在定时器(如果存在),如果没有IGMPv2查询定时器存在,则切换到IGMPv3。

主机兼容模式设置:

Host Compatibility Mode Timer State ----------------------- -----------

IGMPv3 (default) IGMPv2 Querier Present not running and IGMPv1 Querier Present not running IGMPv2 IGMPv2Querier Present running and IGMPv1 Querier Present not running

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务