Login
升级VIP 登录 注册 安全退出
当前位置: 首页 > word文档 > 其他文档 > IGMP概述

IGMP概述

收藏

本作品内容为IGMP概述,格式为 doc ,大小 384000 KB ,页数为 24页

IGMP概述


('IGMP概述1.IGMP:Internet组管理协议Internet组管理协议(IGMP)是因特网协议家族中的一个组播协议,运行于主机和与主机直接相连的组播路由器之间,主机通过此协议告诉本地路由器希望加入并接受某个特定组播组的信息,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态(即该网段是否仍有属于某个组播组的成员),实现所连网络组成员关系的收集与维护。IGMP具有三种版本,即IGMPv1(RFC1112)、IGMPv2(RFC2236)和IGMPv3(RFC3376):-IGMPv1:主机可以加入组播组。没有离开信息(leavemessages)。路由器使用基于超时的机制去发现其成员不关注的组。-IGMPv2:该协议包含了离开信息,允许迅速向路由协议报告组成员终止情况,这对高带宽组播组或易变型组播组成员而言是非常重要的。-IGMPv3:与以上两种协议相比,该协议的主要改动为:允许主机指定它要接收通信流量的主机对象。来自网络中其它主机的流量是被隔离的。IGMPv3也支持主机阻止那些来自于非要求的主机发送的网络数据包。IGMP不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。所有参与组播的主机必须实现IGMP。参与IP组播的主机可以在任意位置、任意时间、成员总数不受限制地加入或退出组播组。组播路由器不需要也不可能保存所有主机的成员关系,它只是通过IGMP协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。而主机方只需要保存自己加入了哪些组播组。IGMP在主机与路由器之间是不对称的:主机需要响应组播路由器的IGMP查询报文,即以“IGMPmembershipreport”报文响应;路由器周期性发送成员资格查询报文,然后根据收到的响应报文确定某个特定组在自己所在子网上是否有主机加入,并且当收到主机的退出组的报告时,发出特定组的查询报文(IGMPv2版本),以确定某个特定组是否已无成员存在。1.1.IGMP报文IGMP信息封装在IP报文中,其IP的协议号为2。IGMP具有三种版本,各版本的报文格式分述如下:\uf06cIGMPv1IGMPv1的报文格式如下图:-版本字段(4bits):表示IGMP协议的版本号,在IGMPv1中置为1。-类型字段(4bits):表示报文的类型。在IGMPv1中,该字段只有两个值:①取值为1,即表示该报文为成员关系查询(MembershipQuery,60秒查询一次),主要是路由器使用;②取值为2,即表示该报文为成员关系报告(MembershipReport),主要是主机使用。-校验和字段(16bits):用于数据报文的校验,检验和的计算和ICMP协议相同。-组地址字段:当用于成员关系查询时,本字段置为0,并被主机忽略;当用于成员关系报告时,本字段包含组播组地址。\uf06cIGMPv2IGMPv2的报文格式如下图:IGMPv2的报文格式如图3所示,它在IGMPv1的基础上,进行了两处改动:一个是将v1的版本字段和类型字段进行了合并;另一个是增加了最大响应时间字段(MaxResponseTime)。其主要内容如下:-类型字段(8bits):在兼容v1的基础上,v2中的报文类型如下:1.0x11:成员关系查询与v1不同,v2的查询分为两种类型:①通用查询(GeneralQuery),组地址字段置为全0,对所有的组进行组成员查询;②特定组查询(Group-specificQuery),针对特定组进行组成员查询,组地址字段置为特定组的地址。2.0x12:IGMPv1成员关系报告(为了向后兼容v1)3.0x16:IGMPv2成员关系报告4.0x17:离开组-最大响应时间字段(8bits):只有在成员关系查询报文中有效,主机必须在最大响应时间到达之前发出成员关系报告报文。通过该值,路由器可以调节组成员的离开延迟。以1/10秒为单位,缺省等于10秒。-校验和字段(16bits):与v1中的一样。-组地址地段(32bits):与v1中的基本一样,当采用特定组查询时,该字段存放要查询的组播组的地址。\uf06cIGMPv3IGMPv3必须实现5种基本信息类型且与以前的版本相兼容:-0x11:成员关系查询报文(MembershipQeury)-0x22:版本3成员关系报告报文(version3MembershipReport)-0x12:版本1成员关系报告报文(version1MembershipReport)-0x16:版本2成员关系报告报文(version2MembershipReport)-0x17:版本2离开报文(version2LeaveGroup)报文类型的值填写在报文中的类型字段。在IGMPv3中,查询报文和报告报文格式有较大差异,需要分别描述,图4为查询报文的格式:查询报文的主要内容为:-类型字段(8bits):置为0x11,代表该报文为查询报文。-最大响应时间字段(8bits):指明了主机发出响应报告的最长时间。-组地址字段(32bits):功能与v2一样,可以用于通用查询和组特定查询。-S字段(1bit):置为1时,其他路由器不对该报文进行处理。-QRV字段(3bits):查询路由器的健壮值(Querier’sRobustnessVariable),该值影响计时器和重试次数的取值。-QQIC字段(8bits):查询路由器的查询间隔码(Querier’sQueryIntervalCode),该值影响查询路由器的查询间隔时间,非查询路由器按照此值更新自己的缺省值。-源地址数目字段(16bits):该值代表在这个报文中包含了多少个源地址。当进行通用查询(GeneralQuery)或者组特定查询(Group-specificQuery)时,该值置为0;当进行组-源特定查询(Group-Source-specificQuery,用于PIM-SSM)时,该值为源特定地址的数目。该值虽然最大可以取到65536,但是实际上受限于数据链路层的MTU,例如在以太网上,IP数据报最长为1500字节,除去IP报头的24字节和IGMP报头的12字节,剩余1464字节,所以最多包含366(1464/4)个源地址。-源地址地段:每个源地址占用4个字节,32bits。IGMPv3报告报文的格式较为复杂,如图5所示。其主要内容有:-类型字段(8bits):置为0x22,表示该报文为IGMPv3报告报文。-组记录数目字段(16bits):表示此报文中包含的组记录数目。-组记录字段:包含若干个组记录,每个组记录长度不固定。组记录字段内容如图6所示。其主要内容有:-组记录类型字段(8bits)表示该组记录中包含的数据的类型,目前定义了六种类型:\uf06cMODE_IS_INCLUDE:表示该主机的过滤模式为INCLUDE,也就是说,后面列出的地址都是主机想要接收的组播源地址。\uf06cMODE_IS_EXCLUDE。表示该主机的过滤模式为EXCLUDE,也就是说,后面列出的地址都是主机想要拒绝的组播源地址。\uf06cCHANGE_TO_INCLUDE_MODE。表示该主机的过滤模式从EXCLUDE切换为INCLUDE模式。\uf06cCHANGE_TO_EXCLUDE_MODE。表示该主机的过滤模式从INCLUDE切换为EXCLUDE模式。\uf06cALLOW_NEW_SOURCES。表示该主机中新增的想要接收的源地址。\uf06cBLOCK_OLD_SOURCES。表示从该主机中删除的不想接收的源地址。-辅助数据长度字段(8bits):在组记录的最后,可以增加以4字节为单位的辅助数据,如果没有辅助数据,则置为0。-源地址数目字段(16bits):表示该记录中包含了多少个组播源地址。-组地址字段(32bits):与源地址共同表示源特定组播。-源地址字段:每个长度为32bits。标志源地址,数目由源地址数目字段表示。-辅助数据字段:为将来的应用预留,在IGMPv3中并不需要。一台主机在发送报告报文的时候,应当把自己的源IP地址包含在IP数据报中,当主机还没有获得IP地址的时候,可以使用0.0.0.0作为源IP地址,支持IGMPv3的路由器必须接收来自0.0.0.0的数据报。主机的IGMP报文的目的地址标志为224.0.0.22,代表子网中所有支持IGMPv3的路由器。2.IGMP协议实现2.1.IGMPv1IGMPv1使用query-response模型来允许多播路由器和多层交换机来确定在本网段内哪个多播组是激活的。这个模型中,路由器或交换机充当IGMP查询器,周期性(每隔60秒)地发送IGMPv1成员查询给224.0.0.1。启用多播的所有主机监听该地址并接收查询报文。主机以IGMPv1成员报告应答,表示它要接收指定组的多播流量;该子网中的路由器或交换机就知道多播组中有哪些接收者,主机可以通过发送一个或多个主动的发送成员报告报文表明加入一个多播组。主机通过停止处理多播组的流量以及不响应IGMP查询的方式来离开多播组。IGMPv1依靠L3的IP多播路由协议(PIM、DVMRP等)来解决同一网段中哪个路由器或多层交换机成为Querier。查询路由器发送IGMPv1的查询来确定哪个多播组是激活的。通常指派路由器被选择为Querier。2.1.1.IGMPv1查询-响应过程在IGMPv1中,路由器利用查询-响应过程来确定在本地子网中是否有加入某个组播组的主机存在,如果有,则这台路由器就要完成向本子网组播数据包的功能;如果没有,则这台路由器就不必向此子网转发组播包。查询-响应过程如图2所示:-路由器周期性地向子网上的所有主机(组播地址:224.0.0.1)发送组播成员关系查询报文。-希望加入某个组播组(如224.1.1.1)的主机就响应该查询,发送一个组播成员关系报告报文到子网上,在IGMP报文的组地址地段中加入想要加入的组播组的地址。-路由器接收到来自主机的成员关系报告报文后,就知道了在该子网上有主机要加入组播组,组播组地址在报文中可以获得,接下来,路由器就会根据所使用的路由协议建立起相应的转发状态。详细的使用规则如下:1)当第一个进程加入一个组时,主机就发送一个IGMP报告。如果一个主机的多个进程加入同一组,只发送一个IGMP报告。这个报告被发送到进程加入组所在的同一接口上。2)进程离开一个组时,主机不发送IGMP报告,即便是组中的最后一个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的IGMP查询中就不再发送报告报文。3)多播路由器定时发送IGMP查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接口发送一个IGMP查询。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此IGMP查询报文中的组地址被设置为0。4)主机通过发送IGMP报告来响应一个IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报告。使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组。当路由器收到要转发的多播数据报时,它只将该数据报转发到(使用相应的多播链路层地址)还拥有属于那个组主机的接口上。2.1.2.主机加入组和离开组的过程当一个主机想要加入某个组播组的时候,不必等待路由器发出查询报文,而是可以直接向路由器发送成员关系报告报文,这样就缩短了加入时间。IGMPv1缺乏显式的离开方式。当一台主机想要离开一个组播组时,并不显式地表示出来,而只是不再对路由器的查询报文进行响应。当一个网段内某个组播组的最后一个成员退出后,路由器还会继续组播这个组的数据,直到一段时间内路由器接收不到任何来自该组的成员响应,才会知道该组已经没有接收者了,然后停止转发该组的组播数据报文。因此,路由器中需要为子网中的每一个组维护一个计时器。当路由器接收到某台主机发送的报告报文时,就会将该组的计时器清零;当某个组的计时器超时后,就说明在本网段上已经没有接收者,于是停止转发该组报文。2.1.3.实现细节\uf06c响应报告的重传当一个主机首次发送IGMP报告当第一个进程加入一个多播组)时,并不保证该报告被可靠接收(因为使用的是IP交付服务)。因此下一个报告将在间隔一段时间后发送,这个时间间隔由主机在0~10秒的范围内随机选择。\uf06c报告响应抑制(ResponseSuppression)当一个子网上有多台主机想加入同一个组播组时,就可以利用报告响应抑制功能,来减少子网中的重复信息传递。在图2中,当A和B两台主机都想要加入组播组224.1.1.1时,如果两台主机分别向路由器通告的话,实际上重复发送了同一报文,没有必要。采用报告响应抑制机制后,处理流程如下:-主机接收到IGMP成员关系查询报文后,对加入的每个组播组启动一个count-down计数器,计数器的值是一个组定范围内的随机数,这个查询周期可以通过命令“ipigmpquery-interval”来修改,缺省时间间隔为60s。-当计时器的值为0时,主机发送IGMP成员关系报告报文,通知路由器子网内仍有处于活动状态的组播接收者。-当计时器到达0之前,若主机接收到来自其他主机发送的同一组成员关系报告报文,那么它就停止与该计时器得到的数,重新计时,这样,就避免了发送同一个成员关系报告报文给路由器。通过报告响应抑制机制,有助于将子网中IGMP报文数量减少到最小。注:在IGMPv1中,count-down计数器的最大值固定为10秒,IGMPv2中可以由QueryRouter指定count-down计数器的上限,通过使用命令“ipigmpquery-max-response-time”来增加这个值(缺省为10秒)可以减少报告拥塞情况的发生。\uf06cTTL字段IGMP报告和查询的生存时间(TTL)均设置为1,这涉及到IP首部中的TTL字段。一个初始TTL为0的多播数据报将被限制在同一主机。在默认情况下,待传多播数据报的TTL被设置为1,这将使多播数据报仅局限在同一子网内传送。更大的TTL值能被多播路由器转发。对发往一个多播地址的数据报从不会产生ICMP差错。当TTL值为0时,多播路由器也不产生ICMP“超时”差错。从224.0.0.0到224.0.0.255的特殊地址空间是打算用于多播范围不超过1跳的应用。不管TTL值是多少,多播路由器均不转发目的地址为这些地址中的任何一个地址的数据报。\uf06c所有主机组在图2中,我们看到了路由器的IGMP查询被送到目的IP地址224.0.0.1。该地址被称为所有主机组地址。它涉及在一个物理网络中的所有具备多播能力的主机和路由器。当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。这个组的成员无需发送IGMP报告。\uf06cIGMPv1查询路由器选举如果在一个子网中有多个组播路由器,那么多个路由器都发送IGMP查询报文是一种浪费,所以应当确定一个路由器作为查询路由器就可以了。但是在IGMPv1中,没有提供选举查询路由器的机制,而是把这一任务留给了PIM,DVMRP等组播路由协议。由于不同的协议使用不同的选举机制,会造成在一个子网中出现多个查询路由器,这也是IGMPv1的缺点之一。2.1.4.实例现在我们已经了解了一些IP多播的细节,再来看看所包含的信息。我们使sun主机能够支持多播,并将采用一些多播软件所提供的测试程序来观察具体的过程。首先,采用一个经过修改的netstat命令来报告每个接口上的多播组成员情况,在下面的输出中,用黑体表示有关的多播组:其中,-n参数将以数字形式显示IP地址(而不是按名字来显示它们),-i参数将显示接口的统计结果,-a参数将显示所有配置的接口。输出结果中的第2行le0(以太网)显示了这个接口属于主机组224.0.0.1(“所有主机”),和两行地址,后一行显示相应的以太网地址为:01:00:5e:00:00:01,这正是我们期望看到的以太网地址。我们还看到其他两个支持多播的接口:SLIP接口sl0和回送接口lo0,它们也属于所有主机组。我们也必须显示IP路由表,用于多播的路由表同正常的路由表一样。黑体表项显示了所有传往224.0.0.0的数据报均被送往以太网:这个路由表中多了有关多播的条目。现在使用一个测试程序来让我们能在一个接口上加入一个多播组(不再显示使用这个测试程序的过程)。在以太网接口(140.252.13.33)上加入多播组224.1.2.3。执行netstat程序看到内核已加入这个组,并得到期望的以太网地址。用黑体字来突出显示和前面netstat输出的不同:我们在输出中再次显示了其他两个接口:sl0和lo0,目的是为了重申加入多播组只发生在一个接口上。下图显示了tcpdump对进程加入这个多播组的跟踪过程:当主机加入多播组时产生第1行的输出显示。第2行是经过时延后的IGMP报告,我们介绍过报告重发的时延是10秒内的随机时延。在两行中显示硬件地址证实了以太网目的地址就是正确的多播地址。我们也看到了源IP地址为相应的sun主机地址,而目的IP地址是多播组地址。同时,报告的地址和期望的多播组地址是一致的。最后,我们注意到,正像指明的那样,TTL是1。当TTL的值为0或1时,tcpdump在打印时用方括号将它们括起来,这是因为TTL在正常情况下均高于这些值。然而,使用多播我们期望看到许多TTL为1的IP数据报。在这个输出中暗示了一个多播路由器必须接收在它所有接口上的所有多播数据报。路由器无法确定主机可能加入哪个多播组。2.2.IGMPv2IGMPv2的查询和成员报告消息与IGMPv1类似。区别在于,第一:IGMPv2的查询消息分为两部分:一般查询(功能与IGMPv1的查询相同)、指定组的查询(仅查询指定组的信息);第二:IGMPv1和IGMPv2的成员报告消息中使用不同的类型代码。IGMPv2的新特性包括:\uf06cQuerier的选择过程IGMPv2路由器或多层交换机可以自己选举查询路由器(不需要依赖多播路由协议来完成这个工作)。每个IGMPv2的路由器或多层交换机启动时,它发送IGMPv2的一般查询报文(以其接口IP地址作为报文的源IP)给所有主机。每个IGMPv2设备比较接收到的这种消息报文,网段中拥有最小接口IP地址的路由器成为Querier。\uf06cMaxinumresponsetime查询消息中的这个字段允许查询路由器指定最大的查询响应时间,并控制突发的应答过程。在某个子网中若存在大量的组,可能需要较长的时间来传播这个应答。(缺点是太长的最大响应时间也会增加主机离开的延迟)\uf06c指定组的查询消息允许查询路由器针对某个具体的组进行查询。在igmp版本1中,组播路由器的一次查询,是针对该网段下的所有组播组。这种查询称为通用组查询。在igmp版本2中,在通用组查询之外增加了特定组的查询,这种查询报文的目的ip地址为该组播组的ip地址,报文中的组地址域部分也为该组播组的ip地址。这样就避免了属于其它组播组成员的主机发送响应报文。\uf06cLeavegroup消息为主机提供一种手段,来通知路由器和多层交换机它们要离开某个组。在igmp版本1中,主机悄然离开组播组,不会给任何组播路由器发出任何通知。造成组播路由器只能依靠组播组响应超时来确定组播成员的离开。而在版本2中,当一个主机决定离开时,如果它是对最近一条成员资格查询消息作出响应的主机,那么它就会发送一条离开组的消息。2.2.1.IGMPv2查询-响应过程与IGMPv1相比,工作原理基本相同,但是有两点改进:-增加了特定组查询,特定组查询的目的是为了让路由器知道一个特定组在子网内是否还有组成员,以便判断是否还需要转发该组的数据报文-IGMPv2的成员关系报告的类型代码不一样。2.2.2.主机加入组和离开组的过程IGMPv2中的组成员加入与IGMPv1中的完全一样。IGMPv2中的离开过程与IGMPv1相比有了较大的改进。主机离开一个组时,需要显式地发送一个离开报文给路由器。其过程如下:-要离开的主机发送一个离开报文给子网上的所有路由器(目的地址为224.0.0.2)。-查询路由器接收到离开报文后,会立即发送一个特定组查询到子网上。-如果子网上还有该组的成员,则会发回一个响应报文;如果子网上已经没有该组的成员,则没有主机回应,于是路由器就知道已经没有该组成员了,就停止转发该组的数据。2.2.3.选择查询路由器在IGMPv1中,选择查询路由器依赖于组播路由协议。而在IGMPv2中,明确了选择查询路由器的机制。其过程如下:-开始时,子网上的每个路由器都假定自己就是查询路由器,发送一个通用查询报文给所有主机(目标地址为224.0.0.1)。-每个路由器都可以接收到来自其他路由器的报文,然后进行IP地址的比较,具有最低IP地址的路由器就成为查询路由器。-非查询路由器启动一个计时器,无论何时接收到来自当选的查询路由器的通用查询报文,就将计时器复位。如果计时器超时,就认为当选的查询路由器发生故障,转步骤(1),开始重新选择。计时器的取值一般为查询间隔的2倍。我们可以通过“showipigmpinterface”命令查看哪一台路由器是当前的QueryRouter:2.2.4.IGMPv1与IGMPv2的互操作性在实际的网络环境中,主机和路由器有可能使用了不同版本的IGMP,因此需要考虑两个版本的互操作性:情况一:主机使用IGMPv2,路由器使用IGMPv1。IGMPv1路由器不能识别IGMPv2类型的成员报告报文,因此,当子网中的查询路由器运行的是IGMPv1时,IGMPv2主机需要发送IGMPv1类型的成员报告报文。主机可以根据路由器查询报文的最大响应时间字段来判断路由器的版本,因为IGMPv1的查询报文中,该字段被置为0,而在IGMPv2的查询报文中,该字段值非0。情况二:主机使用IGMPv1,路由器使用IGMPv2。在这种情况下,组加入不会有问题,因为IGMPv1格式的组加入报文可以被运行IGMPv2的路由器接收。但是组退出时会有问题,当IGMPv1主机加入某个组后,路由器必须忽略该组的任何组离开报文,因为运行IGMPv1的主机不能识别来自路由器的特定组查询报文,这样会使路由器以为没有组成员而停止转发该组的数据。情况三:同一子网上既有IGMPv1路由器,也有IGMPv2路由器。同一子网上的所有路由器必须运行同一版本的IGMP协议,这种情况下,必须将运行IGMPv2的路由器手工配置为运行IGMPv1。同一网段上的多台路由器所运行的IGMP版本必须相同,如果版本1和版本2路由器共存的情况,版本2的路由器必须在该接口下配置为版本1,命令为:ipigmpversion12。2.3.IGMPv3IGMPv3的提出,主要是为了配合源特定组播的实现。源特定组播(SourceSpecificMulticast,SSM)是一种区别于传统组播的新的业务模型,它使用组播组地址和组播源地址同时来标志一个组播会话,而不是向传统的组播服务那样只使用组播组地址来标志一个组播会话。IGMPv3在IGMPv1/v2的基础上提供了额外的源过滤组播功能(Source-FilteredMulticast,SFM)。具有源过滤组播功能(SFM)的主机使用IGMPv3来表示主机所希望加入的组播组,同时还表示该主机所希望接收的组播源的地址。主机可以使用一个包括列表(InclusionList)或一个排除列表(ExclusionList)来表示对源地址的限制。SSM保留了传统PIM-SM模式中的主机显式加入组播组的高效性,但是跳过了PIM-SM模式中的共享树和RP规程。在传统PIM-SM模式中,共享树和RP规程使用(,G)组对来表示一个组播会话,其中,(G)表示一个特定的IP组播组,而()表示发向组播组G的任何一个源。SSM直接建立由(S,G)标志的一个组播最短路径树(ShortestPathTree,SPT),其中,(G)表示一个特定的IP组播组地址,而(S)表示发向组播组G的特定源的IP地址。SSM的一个(S,G)对也被称为一个频道(Channel),以区分传统PIM-SM组播中的任意源组播组(AnySourceMulticast,ASM)。由于ASM支持点到多点和多点到多点两种组播业务模式,因此源的发现过程是ASM复杂性的原因。SSM特别适合于点到多点的组播服务,例如视频点播、在线网络教学等业务,但是在多点到多点的应用场合还是需要ASM模式。PIM-SSM是对传统PIM协议的扩展,使用SSM,用户能直接从组播源接收组播报文。PIM-SSM利用PIM-SM的功能,在组播源和客户端之间,产生一个SPT树。但PIM-SSM在产生SPT树时,不需要汇聚点(RP)的帮助。在缺省情况下,SSM组播组地址限制在IP地址范围:232.0.0.0~232.255.255.255之间。一个具有SSM功能的网络相对于传统的PIM-SM网路来说,具有非常突出的优越性。网络中不再需要汇聚点(RP),也不再需要共享树或RP的映射,同时网络中也不再需要MSDP协议,以完成RP与RP之间的源发现。为了在网络中实施SSM组播业务,除了要求网络端到端地支持网络组播和SSM模式外,同时还要求网络和应用支持IGMPv3协议栈。IGMPv3在IGMPv1/v2的基础上提供了额外的源过滤组播功能(Source-FilteredMulticast,SFM)。在IGMv1/v2中,主机只根据组地址来决定加入某个组,并从任何一个源接收发给该组地址的报文。具有源过滤组播功能(SFM)的主机使用IGMPv3来表示主机所希望加入的组播组,同时还表示该主机所希望接收的组播源的地址。主机可以使用一个包括列表(InclusionList)或一个排除列表(ExclusionList)来表示对源地址的限制。IGMPv3除了支持原特定组播外,其工作原理与IGMPv2相比,并没有本质的改变,只是在某些地方做了改进和优化。以下列出了IGMPv3的主要特点和改进:-支持源特定组播SSM。-向后兼容IGMPv1和IGMPv2。-主机可以定义要接收的组播源地址。-非查询路由器可以与查询路由器保持参数值同步。-最大响应时间从25.5s增加到53min,适合于较大的网络。-辅助数据字段为将来的应用预留了空间。-关系成员报告报文发送给目的地址224.0.0.22,可以帮助二层交换机更有效地实现IGMP监听(IGMPSnooping)功能。-报告报文中可以包含多个组记录,可以有效地减少网络通信量。-在IGMPv3中,取消了前面版本中的响应抑制功能,主要原因是:第一,使用响应抑制时,路由器只知道子网上是否有组成员,而不知道有几个组成员,以及成员是哪些主机;取消响应抑制,路由器就可以记录每一个组成员的信息,可以开发记账等增值服务功能。第二,许多网桥或者二层/三层交换机在实现IGM监听功能时,为了避免响应抑制,一般不转发网段间的IGMP报文。取消了响应抑制后,可以简化这些设备的设计。第三,取消响应抑制后,主机不必处理来自其他主机的报文,简化了主机的实现。-在查询报文中,增加了S标志位,可以提高系统的健壮性。3.二层组播相关协议网络二层组播相关协议包括IGMPSnooping,IGMPProxy和CGMP/GMRP协议。3.1.IGMPSnoopingIGMPSnooping用于监听主机和路由器之间的IGMP消息,若主机发送IGMP报告消息给路由器,交换机则把该端口添加到多播组并允许此端口接收多播流量,当主机发送IGMP离开消息后,该端口从多播组中移除。IGMPsnooping的缺点是它必须监听每个IGMP控制消息,这样将影响交换机CPU的使用。IGMPSnooping功能可以通过命令“ipigmpsnooping”配置。IGMPSnooping的实现机理是:交换机通过侦听主机发向路由器的IGMP成员报告消息的方式,形成组成员和交换机接口的对应关系;交换机根据该对应关系将收到组播数据包只转给具有组成员的接口。传统以太网交换机处理组播数据包时只是简单地在每个端口上进行广播,这种方式使得组播包洪泛到并不支持组播的网络,这样的网络比较多的时候则会造成带宽极大的浪费。解决这个问题有几种方案,如CISCO组管理协议CGMP和组播注册协议GMRP。如果采用CGMP协议,则需要路由器必须支持CGMP协议,有着兼容性问题。如果采用GMRP协议,同样也存在兼容性问题,因为它要求主机的网卡以及应用软件支持GMRP协议,所以以上两种方案对解决这个问题并不十分合适。而运行在交换机上的IGMPSnooping协议则能够很好地解决这一问题,同时它也不需要主机和组播路由器支持额外的协议。IGMPSnooping协议监视网络上的IGMP消息,为每一个组播MAC地址建立一个VLAN。该VLAN端口所连接的网络中至少含有一个主机组成员或者含有组播路由器。这些端口即为组播数据包应该转发的端口组,它们在一起组成组播VLAN的端口集。协议将维护这个端口集。这样,当转发组播数据包时,组播数据包只在它所在的组播VLAN端口上转发而不会广播到不需要组播的端口,节省了带宽。同时,该以太网交换机在保持对组播路由器透明的前提下,完成IGMP代理的功能,过滤掉不必要的IGMP消息,防止了“IGMP报告风暴”。IGMP协议介于第二层和第三层之间,它要求交换机既能分析IGMP数据包,又必须支持VLAN。从协议层次框架上分析,TCP/IP协议栈得到IGMP的报文,交由IGMPSnooping协议进行处理,IGMPSnooping协议根据处理结果更新VLAN。同时,当收到生成树的TCN(拓扑结构变化通知)时,IGMPSnooping还需要重新计算组播VLAN以减少网络变化所带来的影响。交换机在监听主机和路由器之间的IGMP会话,但这样做意味着交换机必须复制并分析所有的组播帧才能找寻出所有的IGMP数据包。可以想像这是一项繁重的任务,会严重影响交换机的性能,用专用芯片来实现这一处理过程可以释解交换机的压力,但同时会增加交换机的成本。二层交换机的内部由三部分组成:CPU,CAMTable和SwitchingEngine。CAMTable是核心,它的内容由CPU来维护,SwitchingEngine则依照CAMTable的内容和CPU的指令来完成端口间的交换任务。现在让我们通过一个实例来讲述IGMPSnooping会给交换机的CPU带来多大的负担。主要内容都基于下面这幅图。首先,主机1发出报告,请求接收到达224.1.2.3的多播数据,CAM表中没有相关条目,于是这条消息被洪泛传递到所有接口。交换机在分析这个IGMP包后知道,知道端口0(CPU,为了接收后续的组播包)端口1(路由器)和端口2(主机1)与这个组播地址有关,于是在CAM表中增加了如下条目:接下来是主机4也要加入这个多播组,根据CAM表,它发出的IGMP包只被转发到端口0,1和2。但同时CAM表变成如下的形式:接下来是主机4向224.1.2.3地址发送流量为6Mbps的视频信息,根据CAM,这些数据包将被转发到端口0,1和2。所以这种方式只能用于多播数据流较小的情况下,实际网络中通常无法应用。3.2.IGMPProxyIGMPProxy与IGMPSnooping实现功能相同但机理相异:IGMPsnooping只是通过侦听IGMP的消息来获取有关信息,而IGMPProxy则拦截了终端用户的IGMP请求并进行相关处理后,再将它转发给上层路由器。3.3.CGMPCGMP(CiscoGroupManagementProtocol)是Cisco基于客户机/服务器模型开发的私有协议,在CGMP的支持下,组播路由器能够根据接收到的IGMP数据包通知交换机哪些主机何时加入和脱离组播组,交换机利用由这些信息所构建的转发表来确定将组播数据包向哪些接口转发。GMRP是主机到以太网交换机的标准协议,它使组播用户可以在第二层交换机上对组播成员进行注册。\uf06c加入一个组连接到L2Catalyst交换机的主机通过发送一个主动的IGMP成员报告消息给目标组224.1.2.3来加入该多播组。由于LAN交换机工作在L2,只能识别MAC地址,数据帧中的源和目标字段包含48bit的MAC地址(主机3:0080.c7a2.1093)以及多播MAC地址(0100.5e01.0203)。IGMP成员报文被L2交换机接收到,并转发到CGMPServer进行正常的IGMP处理。CGMPServer(它必须在连接到L2交换机的接口上启用CGMP)在接收到成员报告后,把它翻译为CGMPJoin消息。接着它发送CGMPJoin消息给交换机(发送到一个知名的多播MAC:0x0100.0cdd.dddd)。当L2交换机接收到Join消息时,它更新自己的转发表,其中包含多播组的多播MAC以及交换机的端口信息。\uf06c离开一个组IGMPv2成员离开时,它发送一个IGMPleave消息给所有路由器的组(224.0.0.2)。CGMPServer把它翻译为CGMPleave消息,并发送给交换机。为了加速LAN中的主机离开一个多播组,一些L2Catalyst交换机软件提供CGMPFast-Leave特性,它允许交换机自行处理IGMPv2离开消息,而不需要CGMPServer的参与,从而加快删除不使用的CGMP组。主机发送离开组的消息到224.0.0.2。L2交换机处理该报文而不转发给CGMPServer。L2交换机从接收到离开消息的端口发送出一个IGMP通用查询消息,以便确定是否还有该组的剩余成员。若没有收到响应,L2交换机发送一个IGMP离开消息给CGMPServer。CGMPServer将发送一个指定组的查询消息,来查询是否还有该组的成员;若没有响应,CGMPServer将更新自己的多播路由表并发送一个CGMPdeletegroup(删除组)消息给L2交换机。4.IGMP配置\uf06cIGMP基本设置配置路由器加入到一个组播组:Router(config-if)#ipigmpjoin-group225.2.2.2控制某个接口下主机能够加入的组播组ipigmpaccess-groupaccess-listACL可以同时对组播报文的源和目的地址控制,达到过滤组播源,同时也能过滤特定接收主机的作用,例如:DenyallstateforagroupGdenyigmpanyhostGpermitigmpanyanyDenyallstateforasourceSdenyigmphostSanypermitigmpanyanyPermitallstateforagroupGpermitigmpanyhostGPermitallstateforasourceSpermitigmphostSanyFilteraparticularsourceforagroupGdenyigmphostShostGpermitigmpanyhostGIGMP版本切换Router(config-if)#ipigmpversion{23}IGMP查询间隔时间:默认60sRouter(config-if)#ipigmpquery-interval120IGMP查询超时时间:默认为2倍的查询间隔时间Router(config-if)#ipigmpquery-timeout30IGMP查询最大响应时间:默认为10sRouter(config-if)#ipigmpquery-max-response-time8当Host不支持组播的时候,需要通过这样的方式来支持,如图所示:广播流量穿越组播云时,需要做如下配置,首先将广播流量在A上以组播方式发送,然后再C上对特定主机进行广播方式的传送。RouterA-FirstHopRouterConfigurationinterfaceethernet0ipdirected-broadcastipmulticasthelper-mapbroadcast224.5.5.5120ippimdense-mode!access-list120permitanyanyudp4000access-list120denyanyanyudpipforward-protocoludp4000RouterC-LastHopRouterConfigurationinterfaceethernet1ipdirected-broadcastipmulticasthelper-map224.5.5.5178.21.34.255135ippimdense-mode!access-list135permitanyanyudp4000access-list135denyanyanyudpipforward-protocoludp4000\uf06cIGMPHelpAddressRouterA作为一个子区域,无法控制或加入RouterB这个PIM域中时,需要做一个地址帮助,引导组播流量直接发往上图中的BRouterAConfigurationipmulticast-routingippimdense-modeipigmphelper-address10.0.0.2RouterBConfigurationipmulticast-routingippimdense-mode:orippimsparse-modeippimneighbor-filter1access-list1deny10.0.0.1\uf06cIGMPProxy当C收到组播请求后,发送一条PIM-SMjoin的消息给B,B发送一个IGMP的请求到A,A通过一条单播链路将数据传送到B,这个过程就需要一个IGMP的代理,配置如下RouterAConfigurationinterfaceethernet0ipaddress10.1.1.1255.255.255.0ippimdense-mode!interfaceethernet1ipaddress10.2.1.1255.255.255.0ippimdense-modeipigmpunidirectionallink!interfaceethernet2ipaddress10.3.1.1255.255.255.0RouterBConfigurationippimrp-address10.5.1.15access-list5permit239.0.0.00.255.255.255.255!interfaceloopback0ipaddress10.7.1.1255.255.255.0ippimdense-modeipigmphelper-addressudlethernet0ipigmpproxy-service!interfaceethernet0ipaddress10.2.1.2255.255.255.0ippimdense-modeipigmpunidirectionallink!interfaceethernet1ipaddress10.5.1.1255.255.255.0ippimsparse-modeipigmpmroute-proxyloopback0!interfaceethernet2ipaddress10.6.1.1255.255.255.0RouterCConfigurationppimrp-address10.5.1.15access-list5permit239.0.0.00.255.255.255!interfaceethernet0ipaddress10.8.1.1255.255.255.0ippimsparse-mode!interfaceethernet1ipaddress10.9.1.1255.255.255.0ippimsparse-mode\uf06cIGMPSnooping开启IGMP轮询Router(config)#ipigmpsnoopingIGMPSnooping调整:在单个vlan中启用Snooping:ipigmpsnoopingvlanIGMPSnooping快速离开:ipigmpsnoopingvlanimmediate-leaveThefollowingexampleshowshowtoenableIGMPImmediate-LeaveprocessingonVLAN1:Router(config)#ipigmpsnoopingvlan1immediate-leaveIGMPSnooping参考多播路由ipigmpsnoopingvlanmrouterToaddamulticastrouterportandtoconfigurethemulticastrouterlearningmethod,usetheipigmpsnoopingvlanmroutercommandinglobalconfigurationmode.ipigmpsnoopingvlanvlan-idmrouter{interfaceinterface-idlearnpim-dvmrp}基于静态地址的IGMPSnoopingipigmpsnoopingvlanvlan-idstaticmac-addressinterfaceinterface-id',)


  • 编号:1700773968
  • 分类:其他文档
  • 软件: wps,office word
  • 大小:24页
  • 格式:docx
  • 风格:商务
  • PPT页数:384000 KB
  • 标签:

广告位推荐

相关其他文档更多>