2023年7月31日发(作者:)
深⼊理解IGMP协议IGMP⽹际组管理协议
————IP多播IGMP v1: 定义了主机只可以加⼊组播组,但没有定义离开成员组的信息,路由器基于成员组的超时机制发现离线的组成员。
报⽂格式:
版本:版本为1。 类型:1—多播路由器发出的查询报⽂;2—主机发出的报告报⽂。 未⽤:保留为以后使⽤。
检验和:检验和的计算和ICMP协议相同。 地址:查询报⽂为0;报告报⽂为32为组地址。IGMP v2:在版本1 上基础上增加了主机离开成员组的信息,允许迅速向路由协议报告组成员离开情况。IGMPv3 :在兼容和继承IGMPv1 和IGMPv2 的基础上,进⼀步增强了主机的控制能⼒,并增强了查询和报告报⽂的功能。(⼀)IGMP 报告和查询
多播路由器使⽤IGMP报⽂来记录与该路由器相连⽹络中组成员的变化情况。使⽤规则如下:
1) 当第⼀个进程加⼊⼀个组时,主机就发送⼀个IGMP报告。如果⼀个主机的多个进程加⼊同⼀组,只发送⼀个IGMP报告。这个报告被发送到进程加⼊组所在的同⼀接⼝上。
2) 进程离开⼀个组时,主机不发送IGMP报告,即便是组中的最后⼀个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的IGMP查询中就不再发送报告报⽂。IGMP v1不发送,IGMP v2发送。
3) 多播路由器定时发送IGMP查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接⼝发送⼀个IGMP查询。因为路由器希望主机对它加⼊的每个多播组均发回⼀个报告,因此IGMP查询报⽂中的组地址被设置为0.
4) 主机通过发送IGMP报告来响应⼀个IGMP查询,对每个⾄少还包含⼀个进程的组均要发回IGMP报告。使⽤这些查询和报告报⽂,多播路由器对每个接⼝保持⼀个表,表中记录接⼝上⾄少还包含⼀个主机的多播组。当路由器收到要转发的多播数据报时,它只将该数据报转发到(使⽤相应的多播链路层地址)还拥有属于那个组主机的接⼝。(路由器关⼼的是,只要这个接⼝上还有多播组的主机,就向此接⼝转发)。特点:1. IGMP报告并不保证被可靠接收(因为使⽤的是IP交付),下⼀个报告随机选择时间发送;2. 当⼀个主机收到查询后,经过⼀定的时间间隔才发送报告;3. 若某主机收到报告后,⾃⼰可不⽤发送报告(说明有其它同⼀多播组的主机已经发送,可以保证多播路由器的接⼝表中,⾄少存在⼀个多播组主机);4. 对发往⼀个多播地址的数据报从不产⽣ICMP差错报⽂;5. 不管TTL是多少,多播路由器对224.0.0.0-224.0.0.255的地址均不转发;6. IGMP不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些⽹络上;7. IGMP是让连接在本地局域⽹上的多播路由器知道哪个接⼝的本地局域⽹上是否有主机参加或退出了某个多播组;(⼆)多播路由选择协议
多播路由选择实际上就是要找出以源主机为根节点的多播转发树。现已有多种实⽤的多播路由选择协议,它们在转发多播数据报时使⽤了⼀下的三种⽅法:
(1) 洪泛与剪除。适⽤于较⼩的多播组,组成员所在的局域⽹相邻。洪泛即⼴播,为避免兜圈⼦采⽤反向路径⼴播RPB。当在多播转发树上的某个路由器发现他的下游树枝(叶节点⽅向)已没有该多播组的成员,就应把它和稀有的树枝⼀起剪除。
(2) 隧道技术。适⽤于多播组的位置在地理上很分散的情况。“隧道”⼀端的路由器对多播数据报进⾏封装,使之成为单播数据报,然后通过“隧道”发送到另⼀端。另⼀端的路由器将单播数据报恢复为原来的多播数据报,继续向多个⽬的站转发。
(3) 基于核⼼的发现技术。适⽤于多播组的⼤⼩在较⼤范围内变化时。对每⼀个多播组G指定⼀个核⼼路由器,给出它的IP单播地址。⽬前没有统⼀使⽤于整个因特⽹的多播路由选择协议,建议使⽤的协议有:
1、 基于向量多播路由选择协议DBMRP(Distance Vector Multicast Routing Protocol)。因特⽹使⽤的第⼀个协议。2、 基于核⼼的转发树CBT(Core Based Tree)。3、 开放最短通路优先的多播扩展MOSPF(Multicast extensions to OSPF)。4、 协议⽆关多播-稀疏⽅式PIM-SM(Protocol Independent Multicast-Space Mode)。5、 协议⽆关多播-密集⽅式PIM-DM(Protocol Independent Multicast-Dense Mode)。IGMPv1: 定义了主机只可以加⼊组播组,但没有定义离开成员组的信息,路由器基于成员组的超时机制发现离线的组成员。IGMPv1 主要基于查询和响应机制来完成对组播组成员的管理。当⼀个⽹段内有多台组播路由器时,由于它们都能从主机那⾥收到IGMP
成员关系报告报⽂(Membership Report Message),因此只需要其中⼀台路由器发送IGMP查询报⽂(Query
Message)就⾜够了。这就需要有⼀个查询器(Querier)的选举机制来确定由哪台路由器作为IGMP 查询器。对于IGMPv1
来说,由组播路由协议(如PIM)选举出唯⼀的组播信息转发者DR(Designated Router,指定路由器)作为IGMP 查询器。IGMPv1 没有专门定义离开组播组的报⽂。当运⾏IGMPv1
的主机离开某组播组时,将不会向其要离开的组播组发送报告报⽂。当⽹段中不再存在该组播组的成员后,IGMP路由器将收不到任何发往该组播组的报告报⽂,于是IGMP
路由器在⼀段时间之后便删除该组播组所对应的组播转发项。IGMPv2: 是在版本1 上基础上增加了主机离开成员组的信息,允许迅速向路由协议报告组成员离开情况,这对⾼带宽组播组或易变型组播组成员⽽⾔是⾮常重要的。另外,若⼀个⼦⽹内有多个组播路由器,那么多个路由器同时发送IGMP 查询报⽂不仅浪费资源,还会引起[1] ⽹络的堵塞。为解决这个问题,IGMPv2。不同使⽤路由选举机制, 能在⼀个⼦⽹内查询多个路由器。IGMP版本2对版本1所做的改进主要有:
1、共享⽹段上组播路由器的选举机制
共享⽹段表⽰⼀个⽹段上有多个组播路由器的情况。在这种情况下,由于此⽹段上运⾏IGMP的路由器都能从主机那⾥收到成员资格报告消息,因此,只需要⼀个路由器发送成员资格查询消息,这就需要⼀个路由器选举机制来确定⼀个路由器作为查询器。其选举过程如下:
(1) 所有IGMPv2路由器在初始时都认为⾃⼰是查询器,并向本地⽹段内的所有主机和路由器发送IGMP 普遍组查询(GeneralQuery)报⽂(⽬的地址为:224.0.0.1);
(2) 本地⽹段中的其它IGMPv2路由器在收到该报⽂后,将报⽂的源IP
地址与⾃⼰的接⼝地址作⽐较。通过⽐较,IP 地址最⼩的路由器将成为查询器,其它路由器成为⾮查询器(Non-Querier);
(3)所有⾮查询器上都会启动⼀个定时器(即其它查询器存在时间定时器OtherQuerier PresentTimer)。在该定时器超时前,如果收到了来⾃查询器的IGMP查询报⽂,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。
在IGMP版本1中,查询器的选择由组播路由协议决定;igmp版本2对此做了改进,规定同⼀⽹段上有多个组播路由器时,具有最⼩ip地址的组播路由器被选举出来充当查询器。2、 IGMP版本2增加了离开组机制
在IGMP版本1中,主机悄然离开组播组,不会给任何组播路由器发出任何通知。造成组播路由器只能依靠组播组响应超时来确定组播成员的离开。⽽在版本2中,当⼀个主机决定离开时,如果它是对⼀条成员资格查询消息作出响应的主机,那么它就会发送⼀条离开组的消息。
在IGMPv2 中,当⼀个主机离开某组播组时:
(1)该主机向本地⽹段内的所有组播路由器(⽬的地址为224.0.0.2)发送离开组(Leave Group)报⽂;
(2)当查询器收到该报⽂后,向该主机所声明要离开的那个组播组发送特定组查询(Group-SpecificQuery)报⽂(⽬的地址字段和组地址字段均填充为所要查询的组播组地址);
(3)如果该⽹段内还有该组播组的其它成员,则这些成员在收到特定组查询报⽂后,会在该报⽂中所设定的最⼤响应时间(MaxResponse Time)内发送成员关系报告报⽂;
(4)如果在最⼤响应时间内收到了该组播组其它成员发送的成员关系报告报⽂,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该⽹段内已⽆该组播组的成员,于是不再维护这个组播组的成员关系。3、IGMP版本2增加了对特定组的查询 在IGMP版本1中,组播路由器的⼀次查询,是针对该⽹段下的所有组播组。这种查询称为普遍组查询。4、IGMP版本2增加了最⼤响应时间字段 IGMP版本2增加最⼤响应时间字段,以动态地调整主机对组查询报⽂的响应时间。IGMPv3 :在兼容和继承IGMPv1 和IGMPv2 的基础上,进⼀步增强了主机的控制能⼒,并增强了查询和报告报⽂的功能。1)主机控制能⼒的增强
IGMPv3 增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),使主机在加⼊某组播组G的同时,能够明确要求接收或拒绝来⾃某特定组播源S 的组播信息。当主机加⼊组播组时:
若要求只接收来⾃指定组播源如S1、S2、……的组播信息,则其报告报⽂中可以标记为INCLUDE Sources(S1,S2,……);若拒绝接收来⾃指定组播源如S1、S2、……的组播信息,则其报告报⽂中可以标记为EXCLUDE Sources(S1,S2,……)。2)查询和报告报⽂功能的增强
(1) 携带源地址的查询报⽂ IGMPv3 不仅⽀持IGMPv1 的普遍组查询和IGMPv2的特定组查询,⽽且还增加了对特定源组查询的⽀持:z 普遍组查询报⽂中,既不携带组地址,也不携带源地址;
z特定组查询报⽂中,携带组地址,但不携带源地址;
z 特定源组查询报⽂中,既携带组地址,还携带⼀个或多个源地址。(2)包含多组记录的报告报⽂ IGMPv3报告报⽂的⽬的地址为224.0.0.22,可以携带⼀个或多个组记录。在每个组记录中,包含有组播组地址和组播源地址列表。组记录可以分为多种类型,如下:IS_IN:表⽰组播组与组播源列表之间的过滤模式为INCLUDE,即只接收从指定组播源列表发往该组播组的组播数据。
IS_EX:表⽰组播组与组播源列表之间的过滤模式为EXCLUDE,即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。z
TO_IN:表⽰组播组与组播源列表之间的过滤模式由EXCLUDE 转变为INCLUDE。
TO_EX:表⽰组播组与组播源列表之间的过滤模式由INCLUDE 转变为EXCLUDE。
ALLOW:表⽰在现有状态的基础上,还希望从某些组播源接收组播数据。如果当前的对应关系为INCLUDE,则向现有组播源列表中添加这些组播源;如果当前的对应关系为EXCLUDE,则从现有组播源列表中删除这些组播源。BLOCK:表⽰在现有状态的基础上,不再希望从某些组播源接收组播数据。如果当前的对应关系为INCLUDE,则从现有组播源列表中删除这些组播源;如果当前的对应关系为EXCLUDE,则向现有组播源列表中添加这些组播源。组播的可靠性
IP 组播使⽤⽤户数据报UDP 协议,然⽽UDP 是尽最⼤能⼒投递的⼀种协议。因此,IP 组播应⽤势必会遇到数据包丢失和乱序问题。为此,对于IGMP 不同类型的应⽤必须在确认⽅式( 肯定确认ACK 和否定确认NACK),集中确认与分布确认、重传机制、流量控制、拥塞控制等⽅⾯综合考虑,提出解决反案。迄今为⽌,尽管在⼴域⽹环境中已经存在许多可靠组播协议,包括可靠组播协议RMP(ReliableMulticast Protocol),可扩可靠组播SRM(Scalable Reliable Multicast),和可靠组播传输协议RMTP(ReliableMulticastTransport Protocol)。组播的可靠性研究仍然是重点研究课题之⼀。组播的安全性
组播安全性是只有注册的主机才能够向组发送数据和接收组播数据。
然⽽IP 组播很难保证这⼀点。⾸先,IP 组播使⽤UDP,⽹络中任何主机都可以向某个组播地址发送UDP 包;其次,Internet缺少对于⽹络层的访问控制,组成员可以随时加⼊和退出组播组,使得组播安全性问题仍然是⼀个技术难点。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690783841a425450.html
评论列表(0条)