组播
常用配置、命令及排障

PIM相关配置 [R3-GigabitEthernet0/0/1]pim hello-option dr-priority 1000 #修改DR优先级 [R3-GigabitEthernet0/0/1]pim timer hello 60 #修改发送Hello消息的时间间隔。默认30秒。hold时间默认为105S(3.5倍于hello时间间隔) [R3-GigabitEthernet0/0/1]pim hello-option holdtime 180 #修改Hello消息超时时间值。默认105秒。当DR出现故障时,接收Hello消息将会超时,邻居路由器之间会触发新的DR选举过程。 [HW-R2-pim]static-rp 11.1.1.1 preferred #配置优选静态RP(默认优先:自动RP>BSR>静态) [R2-pim]spt-switch-threshold infinity #设置PIM-SM 从RPT向SPT切换的阈值,infinity即表示不切换 华为设备即使配置命令依旧保持最短路径树,但是该最短路径树是指向RP的(配置测试了切换SPT前后,RPF邻居并不一样) PIM常用命令 <HW-R4>ping multicast 239.1.1.1 #思科可以ping包测试,但华为ping包测试是不通的,是不能这样测试的。 R4#ping 239.1.1.1 #华为思科都可以直接ping组播IP,但只有思科模拟器会回包(因为思科做了优化,不回包才是正常的!) <HW-R2>ping multicast 239.1.1.1 #华为设备可以ping组播包,但没有回包,这是正常的 <R3>dis pim routing-table #查看组播路由表 <R3>dis pim routing-table 239.1.1.1 <R3>dis multicast routing-table #查看组播路由表(我觉得称为查看组播转发树更合适,因为这个树貌似不是一直存在的,只有在转发后,才会存在,定时消失) <R3>dis multicast routing-table 239.1.1.1 <R3>dis multicast forwarding-table <R3>dis multicast rpf-info 100.1.1.1 #查看指定IP的RPF检查信息 <R3>dis pim interface verbose <R3>dis pim interface #查看运行了PIM的端口;可以查看到DR信息 <R3>dis pim neighbor #查看PIM邻居,#推荐检查PIM邻居,防止配置错误! [R2]dis pim rp-info #PIM-SM模式中查看RP [R2]dis pim rp-info 239.1.1.1 #和上面的命令不一样(上面的是查看RP数据库,这个是查看指定组播组的RP) [R2]dis pim bsr-info #查看BSR信息 [R2]dis pim rp-info #查看RP数据库,包含所有RP的服务范围,优先级等等信息 [R2]dis pim rp-info 239.1.1.1 #查看选举出来的RP的信息 IGMP命令 <R2>dis igmp group #查看加入的组播组 <R3>dis igmp interface #查看运行了IGMP的端口,查看加入的组播组 dis igmp ssm-mapping group MSDP命令 [R1]dis msdp sa-cache #查看SA信息 [R1]dis msdp sa-count [R1]dis msdp brief #可以看到MSDP邻居及状态 思科配置 C-R1(config-if)#ip pim dr-priority 5 #配置端口的DR优先级 C-R2(config)#ip pim spt-threshold infinity #关闭默认的SPT切换 C-R1(config)#ip pim rp-address 11.1.1.1 override #配置优选静态RP(默认优先:自动RP>BSR>静态) R2(config-if)#ip igmp query-max-response=time 5 思科常用命令 C-R2#clear ip mroute * 清除组播路由表 C-R2#show ip mroute 239.1.1.1 #查看组播路由表(我觉得称为查看组播转发树更合适,因为这个树貌似不是一直存在的,只有在转发后,才会存在,定时消失) C-R2#clear ip mroute * #记得清除组播路由表,并且客户端重新加组 R4#ping 239.1.1.1 #华为思科都可以直接ping组播IP,但只有思科模拟器会回包(因为思科做了优化,不回包才是正常的!) R4#ping 239.1.1.1 source lo0#思科设备上ping组播ip,指定源接口(不准的,任何开启pim的接口都可能为组播源) R2#debug ip igmp 239.1.1.1 R2>mtrace 44.1.1.1#追踪组播源,显示RPF路径 C-R2#sh access-lists PIM命令 R1#show ip pim int e0/1 #可以查看到DR信息 R4#show ip pim int #查看开启PIM的端口;同时可以看到DR的选举结果 IGMP命令 C-R2#show ip igmp interface C-R2#show ip igmp groups C-R2(config-if)#no ip igmp join-group 239.1.1.1 C-R2(config-if)#ip igmp join-group 239.1.1.1 #重新加组,可以加快RPT的形成(路由器模拟组播用户) MDSP命令 C-R3#show ip msdp peer C-R3#show ip msdp summary C-R1#show ip msdp sa-cache #查看SA信息
组播里最容易出现的问题:1)单播路由 2)PIM邻居 3)RP故障

实验现象总结(关于(*,G)、(S,G)) 不管在PIM-DM还是PIM-SM中,末节组播路由器会根据IGMP生成(*,G)表项。 在PIM-DM中,该模式为推模型,在组播源启动后,所有组播路由器上均保存有(S,G)表项,但表项中的出接口列表为空。 当末节组播路由器根据IGMP生成(*,G)表项后,该组播路由器上的(S,G)表项不再为空,同时向上游路由器发送加入报文;依次迭代,最终形成SPT树。 在PIM-SM中,该模式为拉模型。一开始组播路由器上即无(*,G)表项,也无(S,G)表项。 当组播源开启后,与组播源相连的第一台路由器将组播报文转化为单播报文,发送到RP进行注册;此时第一台路由器和RP上均有(S,G)表项,但表项中的出接口列表为空。 当有组播用户接入网络时,末节组播路由器根据IGMP生成(*,G)表项,同时向上游路由器发送加入报文;依次迭代到RP,形成RPT树。 若RP上有(S,G)表项,则继续向组播源方向发送加入报文,形成SPT。 此时组播正常转发:组播源到RP使用SPT树,RP到用户使用RPT树。 根据末节路由器的设置,完成最终的SPT树切换。 在PIM-DM中,所有组播路由器都会生成(S,G)表项,但末节组播路由器同时有(S,G)表项和(*,G)表项。 在PIM-SM中,在切换到最终的SPT之前,PIM-SM同时存在SPT树和RPT树;组播源和RP之间为SPT树,这些路由器有(S,G)表项;RP和末节组播路由器之间为RPT树,这些路由器上有(*,G)表项。(只有RP上同时存在2种表项) 在PIM-SM中,在切换到最终的SPT之后,所有路由器都只是(S,G)表项,但末节组播路由器同时有(S,G)表项和(*,G)表项。((*,G)表项由IGMP生成)
组播基础

组播特点;组播优劣势;组播应用;组播IP模型分类 ----------------------------------------------------- IP组播技术实现了IP网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载,在实时数据传送、多媒体会议、数据拷贝、游戏和仿真等诸多方面都有广泛的应用。 ----------------------------------------------------- 组播的优势: 提高效率:降低网络流量、减轻硬件负荷 优化性能:减少冗余流量、节约网络带宽、降低网络负载。 分布式应用:使多点应用成为可能 组播的劣势: 组播是基于UDP的:尽力而为、没有拥塞避免机制、报文重复、报文失序 ----------------------------------------------------- 组播的应用: 多媒体 培训、联合作业场合的通信 数据仓库、金融应用(股票) 任何的"单到多"数据发布应用 ----------------------------------------------------- 组播IP模型分类 ASM(Any-Source Multicast)任意源组播模型 SFM(Source-Filtered Multicast)过滤源组播模型 SSM(Source-Specific Multicast)特定源组播模型(好用,但考试不受待见,因为容易配置)

组播IP地址分类;组播MAC;组播IP地址与组播MAC映射 --------------------------------------------------------------------------- 组播IP地址分类 永久组地址:IANA为路由协议预留的组播地址,用于标识一组特定的网络设备(也成保留组播组) 一般TTL=1;但是华为的某些路由协议不一样,比如华为rip TTL=14;VRRP RRL=255 224.0.0.1:所有组播主机; 224.0.0.2:所有路由器; 224.0.0.5、224.0.0.6:OSPF; 224.0.0.9:RIPv2; 224.0.0.10EIGRP; 临时组地址:为组播组临时分配的IP地址,组成员的数量一旦为零,即取消。 组播IP地址:一个组播组就是一个IP地址,不代表具体的主机,而是表示一系列系统的集合,主机加入某个组播组即声明自己接收目的为某个IP地址的报文 组播IP地址使用D类地址空间,范围224.0.0.0-239.255.255.255(第一个字节高四位固定为1110) 224.0.0.0-224.0.0.255:永久组地址;为路由协议预留 224.0.1.0-231.255.255.255;233.0.0.0-238.255.255.255:用户可用的ASM临时组地址,全网范围有效 232.0.0.0-232.255.255.255:用户可用的SSM临时组地址,全网范围有效 239.0.0.0-239.255.255.255:用户可用的ASM临时组地址。称为本地管理组播地址(即私网组播IP) --------------------------------------------------------------------------- 组播MAC 组播MAC:第一个八位组的第8位=1;(对应的单播MAC,第8位则为0) 以太网IP组播MAC前24位固定为01005e;第25位固定为0;剩余23位变化 --------------------------------------------------------------------------- 组播IP地址与组播MAC映射 IP地址共32位,由于组播IP使用的D类地址,前4比特位固定为1110;剩余28位变化 而组播MAC有23位变化 所以每一个组播MAC被32个组播IP映射(28-23=5位) 如何解决32(2的5次方,5是指1110后的5位)个组播IP对应一个组播MAC的问题? 1)设计好组播组上去解决,不要重叠 2)程序开发上解决

常见的组播保留地址 224.0.0.1---所有主机(包括路由器) 224.0.0.2---所有组播路由器(PIMv1也是使用该地址) 224.0.0.5---所有ospf路由器 224.0.0.6---OSPF DR/BDR 224.0.0.9---RIPv2(RIPng组播地址FF02::9) 224.0.0.13---所有PIMv2路由器(PIM hello报文发送的地址) 224.0.0.1 224.0.0.1 224.0.1.39、224.0.1.40---思科私有:auto-RP
IGMP

IGMP;IGMP工作机制;IGMP基本配置及命令 ----------------------------------------------------------- IGMP(Internet Group Management Protocol)作为因特网组管理协议,是TCP/IP协议族中负责IP组播成员管理的协议,它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。 IGMP是用来管理终端用户的组播的,IGMP配置在终端路由器的接口上。 ----------------------------------------------------------- IGMP工作机制: 1.接收者主机向所在的共享网络报告组成员关系 2.查询器周期性地向该共享网段发送组成员查询信息 3.接收者主机接收到查询消息后进行响应以报告组成员关系 4.网段中的组播路由器依据接收到的响应来刷新组成员的存在信息 IGMPv1定义了基本的组成员查询和报告过程 IGMPv2在v1的基础上添加了组成员快速离开的机制 IGMPv3增加的主要功能是成员可以指定接收or不接收某些组播源的报文(取消成员关系报告抑制机制) ----------------------------------------------------------- IGMP基本配置(华为) [R2]multicast routing-enable #路由器开启组播功能 interface GigabitEthernet0/0/1 ip address 10.1.1.2 255.255.255.0 pim sm #请先配置PIM协议,否则IGMP协议不会周期性的执行查询行为 igmp enable #接口使能IGMP igmp version 1 #指定IGMP版本,默认版本2 ------------ [R2]igmp [R2-igmp]timer other-querier-present 100 #修改非查询路由器计时器,默认为125秒 [R2-GigabitEthernet0/0/1]igmp timer other-querier-present 60#修改非查询路由器计时器,默认为125秒 查看IGMP相关信息 [R2]dis igmp interface #查看路由器接口的IGMP参数 [R2]dis igmp group #查看组播组地址和组成员的关系(一旦用户加组即可生成) ================================================ IGMP基本配置(思科) ip multicast-routing #开启组播路由功能,思科设备是默认关闭的 interface Ethernet0/1 ip address 10.1.1.2 255.255.255.0 ip igmp version 1 //从默认的V2改为V1 ip pim dense-mode //3种模式(密集模式、稀疏模式、密集稀疏模式)中的密集模式,(思科设备上,只要端口开启了pim,就自动具备了查询功能---开启IGMPv2) show ip igmp interface show ip igmp membership

IGMPv1;IGMPv1报文;IGMP查询器选举;普遍组查询及响应过程;新成员加入过程;组成员离开机制 --------------------------------------------------------------------------- IGMPv1 两种报文:普遍组查询报文,成员报告报文 1.普遍组查询报文:该IGMP报文的组播IP为0.0.0.0 2.成员报告报文:报文中的组播IP地址为该用户加入的组播IP地址;同时该IP报文的目的IP也为该组播IP地址 ---------------- 普遍组查询及响应过程所使用的报文:普遍组查询报文+成员报告报文 新成员加入过程所使用的报文:成员报告报文 IGMPv1小结: PC加入:立即发送report,源IP为12.1.1.2,目的IP为224.1.1.1,报文中包含的组地址为224.1.1.1 ----------------------------- 路由器通用组查询:周期性60S一次,源IP为12.1.1.1,目的IP为224.0.0.1,报文中包含的组地址为0.0.0.0 PC收到后启动0~10秒之间的随机值的倒计时器 ----------------------------- PC离组:静悄悄的离开,路由器发送通用组查询2次,等待130S后删除组播转发项 在V1中,思科和华为的模拟器报告抑制都无效! --------------------------------------------------------------------------- IGMP查询器选举: IGMPv1依赖于PIM等上层协议进行选举,选择IP地址大的 --------------------------------------------------------------------------- 普遍组查询及响应过程 1.IGMP查询器(路由器)发送普遍组查询报文至224.0.0.1(周期性,默认60秒) 2.组播用户设备收到该查询报文后,则在本地启动定时器(定时器与组播IP绑定,0-10秒之间的随机值) 3.定时器超时的主机发送针对该组播IP的报告报文。其他主机收到该组播报文后,若有该组播IP的定时器,则停止。 4.IGMP查询器(路由器)收到报告报文后,则由组播路由协议生成(*,G)组播转发项。网络中一旦有该组播IP的数据到达路由器,将向该网段转发。 --------------------------------------------------------------------------- 新成员加入过程 PC加入:立即发送report,源IP为12.1.1.2,目的IP为224.1.1.1,报文中包含的组地址为224.1.1.1 1.假设在网段上新接入一个主机PC4,想加入组播组G3,但是侦听到网段中没有G3的组播数据。则不等待普遍组查询报文的到来,立即发送针对G3的报告报文。 2.路由器收到报告报文后,了解到本网段内出现了组播组G3的成员,则生成组播转发项(*,G3)。网络中一旦有G3的数据到达路由器,将向该网段转发。 --------------------------------------------------------------------------- 组成员离开机制 1.IGMPv1没有专门定义离开组的报文。当主机离开组播组时,将不会再对普遍组查询报文做出回应。 2.IGMPv1查询器在一定时间(130秒)内收不到报告报文,则删除相应的(*,G)组播转发项 假设PC4退出组播组G3,当收到普遍组查询报文时,PC3不再发送针对G3的报告报文。由于网段上不存在组G3的其他成员,路由器不会收到G3的报告报文,则在一定时间(130秒,即组成员关系超时时间=IGMP普遍查询消息发送间隔60S × 健壮系数2 + 最大查询响应时间10S)后,删除G2所对应的组播转发项。、 --------------------------------------------------------------------------- 普遍组查询和响应(详细过程) 组播网络中R1和R2连接主机网段,R1为查询器,在主机网段上有PC1、PC2、PC3三个接收者。假设PC1和PC2想要接收发往组播组G1的数据,PC3想要接收发往组播组G2的数据。普遍组查询和响应过程如下: • IGMP查询器(R1)发送普遍组查询报文,目的地址是224.0.0.1(表示同一网段内所有主机和路由器)。普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省每隔60秒发送一次。 • 网段内所有主机都接收到该查询报文,PC1和PC2是组播组G1成员,则在本地启动定时器Timer-G1。PC3是组播组G2的成员,则在本地启动定时器Timer-G2。定时器的范围为0~10秒之间的随机值。 • 第一个定时器超时的主机发送针对该组的报告报文。PC1上的Timer-G1首先超时,向该网段发送目的地址为G1的报告报文。也想加入组G1的PC2侦听到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。 • PC3上的Timer-G2超时,向该网段发送报告报文,目的地址为G2。 • 路由器接收到报告报文后,了解到本网段内存在组播组G1和G2的成员,则由组播路由协议生成(*,G1)和(*,G2)组播转发项,“*”代表任意组播源。网络中一旦有组播组G1和G2的数据到达路由器,将向该网段转发。

IGMPv2;IGMPv2报文;IGMPv2查询器选举;IGMPv2离开组机制 --------------------------------------------------------------------------- IGMPv2报文 1.普遍组查询报文:添加了最大响应时间(Max Response Time)字段(通用组查询和特定组查询中都有此字段)。此字段取值可以配置,用于控制成员的响应速度。 2.成员报告报文 3.特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。(离开组机制中使用该报文) 4.成员离开报文(Leave):成员离开组播组时主动向路由器发送的报文,用于宣告自己离开了某个组播组。 ---------------- 普遍组查询及响应过程所使用的报文:普遍组查询报文+成员报告报文(与IGMPv1基本相同) 新成员加入过程所使用的报文:成员报告报文(与IGMPv1基本相同) 组成员离开机制所使用报文:成员离开报文+特定组查询报文(该2种报文新增) IGMPv2小结: PC加入:立即发送report,源IP为12.1.1.2,目的IP为224.1.1.1,报文中包含的组地址为224.1.1.1 ---------------------------------- 路由器通用组查询:周期性60S一次,源IP为12.1.1.1,目的IP为224.0.0.1,报文中包含的组地址为0.0.0.0,报文中包含的最大响应时间为10S PC收到后启动0~10秒之间的随机值的倒计时器 ---------------------------------- PC离组:立即发送leave消息,源IP为12.1.1.2,目的IP为224.0.0.2,报文中包含的组地址为224.1.1.1 路由器收到leave消息后,发送特定组查询2次,1S一次,源IP为12.1.1.1,目的IP为224.1.1.1,报文中包含的组地址为224.1.1.1,报文中包含的最大响应时间为1S 等待2S后删除组播转发项 ---------------------------------- 查询器的超时时间为125秒 通用组查询:最大响应时间为10S 特定组查询(针对用户离开的组):最大响应时间为1S --------------------------------------------------------------------------- IGMPv2查询器选举 l IGMPv2使用独立的查询器选举机制,当共享网段上存在多个组播路由器时,IP地址最小的路由器成为查询器。 选举过程: 1.所有IGMPv2路由器在初始时都认为自己是查询器,向本地网段内的所有主机和路由器发送普遍组查询报文。 2.其他路由器在收到该报文后,将报文的源IP地址与自己的接口地址作比较。 通过比较,IP地址最小的路由器将成为查询器,其他路由器成为非查询器(Non-Querier)。 3.所有非查询器上都会启动一个定时器(即其他查询器存在时间定时器Other Querier Present Timer,其他IGMP查询器的存活时间 = 健壮系数2 × IGMP普遍查询消息发送间隔60S +(1/2)× 最大查询响应时间10S。当健壮系数、IGMP普遍查询消息发送间隔和最大查询响应时间都取缺省值时,其他IGMP查询器的存活时间的值为125秒。)。在该定时器超时前,如果收到了来自查询器的查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。 --------------------------------------------------------------------------- 离开组机制: l 在IGMPv2中,主机PC3想离开组播组G2时,如果PC3是上一次回应查询的组成员,则过程如下: 1.PC3向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G2的离开报文。 2.查询器收到离开报文,会发送针对组G2的特定组查询报文。发送间隔和发送次数可以配置。缺省每隔1秒发送一次,一共发送两次。同时启动组成员关系定时器Timer-Membership(2S)=发送间隔1S x 发送次数2次。(特定组查询报文的目的IP为该组播IP,报文中包含的组播信息也为该组播IP;RFC规定离组报文的目的IP为224.0.0.2,但华为的实现为特定组。。) 3.网段内不存在其他组G2的成员,则路由器不会收到针对组G2的报告报文,会在Timer-Membership超时后(2S后),删除(*,G)表项中对应的下游接口。组G2的数据再到达路由器时,将不会再向该网段转发。 如果网段内还有组G2的其他成员,则这些成员在收到特定组查询报文后,会在该报文中指定的最大响应时间(1S)内发送针对组G2的报告报文。路由器继续维护该组成员关系。
IGMPv3详见PIM部分SSM+IGMPv3

IGMP各版本之间的兼容 ---------------------------------------------------------- IGMP各版本之间的兼容 IGMPv3向后兼容v1、v2 IGMPv2向后兼容v1 IGMPv1路由器将会无视IGMPv2报文,忽略它,所有此时IGMPv2主机有故障 IGMPv2路由器可以正常兼容IGMPv1主机 路由器之间的兼容问题:若网络中存在IGMPv1路由器,则所有路由器必须配置为IGMPv1 -----以下是军哥的总结----------- 如何加组,V1和V2相同,都是主动加组(都不能指定源设备) v3可以指定源设备 如何离组,V2拥有离组消息,即会通知组播路由器(v1无离组报文) 如何选举查询器:在组播里有很多选举,但是只有V2的查询器选举和BSR-RP的选举有选择小的,其他都选择IP地址大的优选 V1根据PIM协议选择IP地址大的为查询器 如何查询,通用查询和特定组查询(在离组的时候会用到)(v1应该只有通用查询) 特定组查询(在离组的时候会用到) ------------------------------ 发送离组报文后,华为和思科的响应机制有些不一样 Last reporter设备发送离组报文后,华为思科都会发送特定组查询报文 但是当非lsat reporter设备发送离组报文后,华为仍会发送特定组查询报文;思科是不发送的!
PIM

PIM概述;PIM报文;组播模型分类 --------------------------------------------------- PIM(Protocol Independent Multicast)是一种组播路由协议。又称为协议无关组播,PIM不依赖于某一特定的单播路由协议,它可以利用任意单播路由协议建立的单播路由表完成RPF检查功能,从而建立组播路由。 PIM(protocol independent multicast)是典型的域内组播路由协议。 --------------------------------------------------- PIM报文 PIM当前版本为2 报文头中类型: 0 hello;3 加入/剪枝;5 Assert;6 嫁接;7嫁接回应;9 状态刷新 PIM协议报文中的协议号都是103(PIM相当于是一个3.5层的协议) --------------------------------------------------- 组播业务模型分为SSM(Source-Specific Multicast,指定信源组播)模型和ASM(Any-Source Multicast,任意信源组播)模型。 其中,ASM模型包括PIM-DM和PIM-SM两种组播业务模式 配置ASM模型时,IGMPv1v2v3均支持 配置SSM模型时,IGMPv支持;IGMPv1v2需要配置IGMP SSM mapping技术支持 SSM模型与ASM模型的相同点在于:都是使用组播组地址来标识一个组播会话。 SSM模型与ASM模型不同之处在于,需要使用组播组地址和组播源地址,同时来标识一个组播会话。SSM模型需要通过IGMPv3的配合来维护主机与路由器之间的关系,同时借助PIM-SM的一部分技术来实现SSM模型。 --------------------------------------------------- 源路径树(源树SPT):以组播源作为树根,将组播源到每一个接收者的最短路径结合起来构成的转发树。例如:(10.1.1.2, 239.1.1.1) 共享树RPT:使用放在网络的某些节点的单独的公用根。通常被称为汇合点(RP)或核心。例如:(*, 239.1.1.1) 实现组播用到的协议: 1)PIM(对路由协议没有要求的组播协议) PK DVMRP/MOSPF 2)IGMP(互联网组管理协议)用于连接组播的终端和组播网络 组播中的角色:1)接收者 2)路由器组成的组播网络 3)源设备 源设备,即发送组播数据的设备,ping的设备、提供视频流的设备

PIM-DM总结;PIM-DM概述;邻居发现、扩散、剪枝、嫁接;PIM-DM缺点 ----------------------------------------------------------------------------------------------- PIM-DM总结: PIM-DM的工作过程可以概括为:邻居发现、扩散、剪枝、嫁接阶段、Assert机制。 邻居发现 组播路由器使用Hello消息发现并维护邻居关系。并通过比较Hello消息上携带的优先级和IP地址,各路由器为多路由器网段选举指定路由器DR,充当IGMPv1的查询器。 扩散(Flooding) 组播源S向组播组G发送数据时,路由器接收到组播报文后,首先根据单播路由表进行RPF检查,通过则创建一个(S,G)表项,然后将数据向网络上所有下游PIM-DM节点转发,这个过程称为扩散(Flooding)。没有通过RPF检查,则将报文丢弃。 剪枝(Prune) 如果下游节点没有组播组成员,则向上游节点发Prune剪枝消息,通知上游节点不用再转发数据到该分支。上游节点收到Prune剪枝消息后,就将相应的接口从其组播转发表项(S,G)对应的出接口列表中删除。剪枝过程继续直到PIM-DM中仅剩下了必要的分支,建立了一个以组播源S为根的SPT(一种组播转发树,被称为:源分发树或最短路径树)。 嫁接(Graft) 当被剪枝的下游节点需要恢复到转发状态时,该节点使用Graft嫁接消息通知上游节点恢复信息传输。 Assert机制 在共享网络使用Assert机制指定转发器。 ----------------------------------------------------------------------------------------------- 密集模式(DM,Dense Mode)适用于小型网络(密集模式是一种推的模型,非常消耗网络带宽;实际上工作考试都用不到,仅用于帮助理解) PIM-DM是一种推的模型,周期性的扩散和剪枝现象是密集模式协议的特征。 1.PIM-DM假设网络中的每个子网都存在至少一个对组播源感兴趣的接收站点,因此组播数据包被扩散到网络中的所有点,与此伴随着相关资源(带宽和路由器的CPU等)的消耗。 2.为了减少网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分支进行Prune(修剪、剪枝)操作,只保留包含接收者的分支。 3.被剪掉的分支如果有组播数据转发需求也可以重新接收组播数据流。PIM-DM使用Graft(嫁接)机制主动恢复组播报文的转发。 DM模式下数据包的转发路径是一颗“有源树”: “有源树”是以“组播源”为根、组播组成员为枝叶的一棵树。有源树使用的是从组播源到接收者的最短路径,因此也称为最短路径树SPT(Shortest Path Tree) 。 PIM-DM不依赖于特定的单播路由协议,而是使用现存的单播路由表进行RPF检查。 数据包转发中的上游下游概念 路由器收到组播数据的接口称为上游。 转发组播数据的接口称为下游。 数据包的转发时从上游至下游方向进行转发的。 ----------------------------------------------------------------------------------------------- PIM-DM(密集模式)配置完成后,PIM路由器状态变化过程 1.建立PIM邻居(伴随着DR的选举,DR在PIM-DM中无作用,但末节组播路由器使用IGMPv1时,DR可以充当IGMPv1的查询器) 接口下启用PIM-DM后会周期性发送hello以形成邻居关系 2.构建SPT树——扩散 PIM-DM假设网络上的所有主机都准备接收组播数据,当某组播源S开始向组播组G发送数据时,具体过程如下: 路由器接收到组播报文后,首先根据单播路由表进行RPF检查: 1.如果检查通过则创建一个(S,G)表项,然后将数据向网络中所有下游PIM-DM节点转发,这个过程称为扩散(Flooding)。 2.如果没有通过RPF(Reverse Path Forwarding)检查,即组播报文从错误的接口接收,则将报文丢弃。 经过这个过程,PIM-DM组播域内每个路由器上都会创建(S,G)表项。 从RPF角度来看:最短路径的选择,是接收者来选的。。 3.构建SPT树——剪枝 无论下游有没有组播成员,组播报文都会被扩散出去,因此会导致带宽资源的浪费。为避免带宽的浪费PIM-DM使用剪枝机制: 当下游节点没有组播组成员(组播路由器通过IGMP得知),则路由器向上游节点发Prune剪枝消息,通知上游节点不用再转发数据到该分支。上游节点收到Prune剪枝消息后,就将相应的接口从其组播转发表项(S,G)对应的输出发送列表中删除。剪枝过程继续直到PIM-DM中仅剩下了必要的分支,这就建立了一个以组播源S为根的SPT(源路径树或最短路径树)。 各个被剪枝的节点同时提供超时机制,当剪枝超时时重新开始扩散—剪枝过程。剪枝状态超时计时器的默认值为210秒(3.5分钟)。 4.周期性地进行PIM-DM的扩散—剪枝机制 组播路由器根据剪枝消息剪去多余的分枝,形成一棵新的SPT树。虽然剪枝消息让路由器不再向没有组播成员的分枝转发组播报文。但是每个路由器上的(S,G)表项仍存在(目的是为了一旦有组播成员加入时可以快速加入并转发组播报文) 在以太网接口上,如果收到prune,并不是马上修剪,要等待500+2500=3000ms的延迟时间,如果在3S内收到join消息,则把之前的prune消息否决掉 5.嫁接机制 当叶子路由器通过IGMP了解到与其相连的用户网段上,组播组G有新的组成员加入,随后叶子路由器会向上游发送graft报文,请求上游路由器恢复相应出接口的组播报文转发,将端口添加到(S,G)表项的下游接口列表中。 在PIM-DM网络中,为了避免被裁剪的接口因为“剪枝定时器”超时而恢复转发,离组播源最近的第一条路由器会周期性(60s)触发state refresh报文在全网扩散。收到该状态刷新报文的PIM路由器会刷新剪枝定时器的状态。若下游叶子路由器一致没有组成员加入,则接口将一直出于抑制转发状态。 -------------------------------------------------------------------------------------------------- PIM-DM的缺点: 1)依赖泛洪 2)数据转发层面和控制层面混乱 先进行数据转发然后形成控制层面的路由表

实验配置1(PIM-DM+IGMPv1);实验现象;相关命令 --------------------------------------------------------------------------------------------------- 华为ENSP配置PIM-DM+IGMPv1 0.配置IGP协议(组播里的错误很多时候原自单播) 1.所有路由器开启组播功能,并在所有端口上开启PIM协议 2.组播路由器连接用户的端口开启igmp [R1]multicast routing-enable #开启路由器组播功能 interface GigabitEthernet0/0/0 ip address 12.0.0.1 255.255.255.0 pim dm #在所有端口上开启PIM协议DM模式 ----------------------------- [R3]multicast routing-enable #开启路由器组播功能 interface GigabitEthernet0/0/1 ip address 30.0.0.3 255.255.255.0 #注意:先配置pim再配置IGMP,否则会有bug:IGMP不会进行周期性查询 pim dm #在所有端口上开启PIM协议DM模式 igmp enable #连接组播用户的端口开启igmp;思科设备开启pim后,自动开启igmp igmp version 1 #指定igmp版本1,默认版本2 注意:华为进行组播源设置时,要设置组播组MAC --------------------------------------------------------------------------------------------------- 实验现象: 1.当某组播源S开始向组播组G发送数据后,由组播源最近的PIM路由器开始,(S,G)表项逐步扩散到全网PIM路由器。((S,G)表项均只看到被剪枝状态,即组播流量没有出接口) 2.IGMP路由器接收到IGMP成员报告报文后,生成(*,G)表项(该SG表项的出接口不为空) 3.猜测:当生成有出接口的(*,G)表项后,由PIM-DM推送的(S,G)表项的出接口也不为空了;然后向RPF接口发送加入消息,逐步向上传递;沿途的(S,G)表项的出接口列表也都会加入出接口。直到与组播源相连的路由器,从而组播数据开始正常转发 4.使用IGMPv1,主机静默离开后,IGMP路由器确实有发送剪枝信息;但是实验中并未观察到周期性的扩散—剪枝机制 5.剪枝只是在(S,G)表项的出接口列表中删除空闲的出接口,而(S,G)表项是仍然存在的。 --------------------------------------------------------------------------------------------------- <R3>dis pim interface verbose <R3>dis pim interface #查看运行了PIM的端口 <R3>dis igmp interface #查看运行了IGMP的端口,查看加入的组播组 <R3>dis pim neighbor #查看PIM邻居 <HW-R1>display pim routing-table 239.1.1.1 <R3>dis multicast routing-table #查看组播路由表 <R3>dis pim routing-table #查看组播路由表 [R1]dis multicast rpf-info 100.1.1.1#查看指定IP的RPF信息 [R2]dis pim rp-info #PIM-SM模式中查看RP <HW-R2>ping multicast 239.1.1.1 #华为设备可以ping组播包,但没有回包,这是正常的 --------------------------------------------------------------------------------------------------- 思科配置PIM-DM步骤(思科设备开启PIM后,自动开启igmp): 1)配置IGP协议,组播里的错误很多时候原自单播 2)在所有的组播路由器上开启组播功能 ip multicast-routing #开启组播路由功能,思科设备是默认关闭的 3)在所有的互联接口开启PIM协议,以及在连接源的第一跳、连接接收者的最后一跳的接口开启PIM interface Loopback0 ip address 44.1.1.1 255.255.255.0 ip pim dense-mode //3种模式(密集模式、稀疏模式、密集稀疏模式)中的密集模式,(思科设备上,只要端口开启了pim,就自动具备了查询功能---开启IGMPv2) ip igmp version 1 //从默认的V2改为V1 接收者配置: interface Ethernet0/2 ip address 10.1.1.5 255.255.255.0 ip igmp join-group 239.1.1.1 #路由器模拟接收者,加入组播组 ----------------------------------------------- C-R2#show ip igmp interface C-R2#show ip igmp groups R4#ping 239.1.1.1 #华为思科都可以直接ping组播IP,但只有思科模拟器会回包(因为思科做了优化,不回包才是正常的!) R4#ping 239.1.1.1 source lo0#思科设备上ping组播ip,指定源接口(不准的,任何开启pim的接口都可能为组播源) R2(config-if)#ip igmp query-max-response=time 5 R2#debug ip igmp 239.1.1.1 R2>mtrace 44.1.1.1#追踪组播源,显示RPF路径 R4#clear ip mroute * #重置组播路由表 R4#show ip pim int #查看开启PIM的端口;同时可以看到DR的选举结果 C-R3#show ip mroute 239.1.1.1 #查看组播路由表(组播路由表并不是一直存在的!!!)

RPF检测机制;华为RPF检查过程;assert机制;DR指定路由器与指定前转器(assert机制)的区别 ----------------------------------------------------- RPF检测(反向路径转发reverse path forwarding):RPF是防环机制 PIM-DM和PIM-SM都采用RPF检查机制,利用现存的单播路由表、组播静态路由表、MBGP路由表来构建一棵从数据源S始发的组播转发树。 当一个组播包到达时,路由器首先判断到达路径的正确性。 如果到达接口是单播路由指示的通往组播源S的接口,就认为这个组播包是从正确路径而来;否则,将组播包作为冗余报文丢弃。(即单播到组播源的出接口=组播的入接口,RPF检查通过) 作为路径判断依据之一的单播路由信息可以来源于任何一种单播路由协议,如RIP、OSPF发现的路由信息,不依赖于特定的单播路由协议。 主机的单播最短路径决定了组播流量的路径 so修改主机到组播源方向的出接口的cost,就会改变主机到组播源的最短路径,从而影响了组播流量的路径 ----------------------------------------------------- 华为RPF检查过程(除单播路由外,MBGP路由、组播静态路由都是RPF检查的依据) 当路由器收到一份组播报文后,如果三种路由表都存在,则检查过程如下: 1.通过报文源地址,分别从单播路由表、MBGP路由表、组播静态路由表中各选出一条最优路由。 单播路由、MBGP路由的出接口为RPF接口,下一跳为RPF邻居。需要注意的是:组播静态路由实际上属于手工配置IDE组播路由,已经明确指定了RPF接口和RPF邻居 2.根据以下原则选择RFP路由 a-若配置了按照最长匹配选择路由,则从这3条路由中选出最长匹配的那条路由;若未配置,则跳过; b-选择优先级最高的路由。 c-若优先级相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择 3.路由器会将报文的入接口与RPF路由的RPF接口进行比较,如果一致则RPF检查通过,表明该报文来源路径正确,会将其向下游转发;否则检查失败,丢弃报文。 RPF检查失败的情况举例: 公网并不是所有的端口都开启了PIM,此时就很有可能RPF检查失败 组播BGP用于AS之间的组播: [HW-R4-bgp]ipv4-family multicast R4(config-router)#address-family ipv4 multicast ----------------------------------------------------- assert(断言)机制——前转器 当在连接组播用户的共享网络中有多个路由器,若多个组播路由器都转发组播报文,这明显是不合理的,也造成了带宽的浪费。 为了避免这种情况,就需要通过Assert机制来选定一个唯一的组播数据转发者。 路由器A、B和C会通过本地接口向本网段的所有PIM路由器(224.0.0.13)以组播方式发送断言报文(Assert Message),该报文中携带有以下信息:组播源地址S、组播组地址G、到组播源的单播路由/MBGP路由/组播静态路由的优先级和度量值。通过一定的规则对这些参数进行比较后,获胜者将成为(S,G)组播报文在本网段的转发者,而其他落选路由器则剪掉对应的接口以禁止转发信息。 选举机制如下: 1.单播路由协议优先级较高者获胜 2.若优先级相同,则到组播源的开销较小者获胜 3.若以上都相同,则下游接口IP地址最大者获胜 声明机制在DM和SM都存在,而且其实比较复杂,在以太和点到点链路都存在! 不管是组播的末节网络,还是中间网络,assert机制都有发挥作用的时候 ----------------------------------------------------- PIM-SM DR指定路由器以及 PIM-DM指定前转器(assert机制)的区别 功能上的区别: PIM-SM DR指定路由器 1.组播源侧的DR负责向RP发送注册报文。 2.接收者侧的DR负责向RP发送加入报文。 3.PIM-DM DR指定路由器负责充当IGMPv1查询器 PIM-DM assert(断言)机制——前转器 由前转器负责组播流量转发 在PIM-SM中,似乎没有需要前转器的场景(但PIM-SM中也是有assert断言机制): 1.PIM-DM是推模式,所以用户侧网络中若有多个出口路由器,可能这多个路由器都会转发组播报文 2.PIM-SM是拉模式,即使用户侧网络有多个出个路由器,但是用户侧由DR向RP发送join消息,所以不存在多个路由器都转发组播报文的可能

实验2:RPF路由选择原则---静态组播路由实验 按照RPF路由选择原则,默认情况下,路由器根据单播路由进行选择RPF邻居;而组播静态路由由于单播路由。 当配置了组播静态路由后,路由器选择的RPF邻居发生变化,从而达到了改变SPT树的目的 现象:组播转发路径树发生改变(该现象也说明了组播转发路径是由组播下游设备决定的) 华为配置 默认情况 <HW-R2>display multicast rpf-info 100.1.1.1 [HW-R2]ip rpf-route-static 100.1.1.1 32 10.1.12.1 #静态组播路由 [HW-R2]dis multicast rpf-info 100.1.1.1 #观察配置静态组播路由前后,RPF的检查结果 <HW-R1>display multicast forwarding-table //R1的组播数据转发从2口转出组播数据!(查看组播转发表,可以看到一些组播数据包的统计信息) -------------------------------------- 思科配置 C-R2#show ip rpf 44.1.1.1 C-R2(config)#ip mroute 44.1.1.1 255.255.255.255 10.1.12.1 //手工指定RPF的下一跳是10.1.12.1 C-R2#show ip rpf 44.1.1.1 #观察配置组播静态路由前后,RPF的变化 C-R2#show ip mroute 239.1.1.1 #思科设备查看组播路由的命令

PIM-SM概述;发现邻居及选举DR;发现RP;组播源注册、组播用户加入;RPT切换至SPT ---------------------------------------------------------------------------------------------------- PIM-SM假设网络中的组成员分布非常稀疏,几乎所有网段均不存在组成员。直到某网段出现组成员时,才构建组播路由,向该网段转发组播数据。 PIM-SM同时包含两种树:共享树和源路径树。 从RP到组播接收者数据转发的路径称为共享树。 从组播源到RP的数据转发路径称为源路径树。 源树与共享树的比较: 源树SPT路径最优,延迟最小;但内存占用较多(因为每个源都有独立的源树) 共享树路径不是最优,导致额外的延迟;但内存占用较少(多个源可能共享一棵共享树) RPF检查根据树的种类进行: 在源路径树下,使用组播源地址作为检测地址。 在共享树下,使用RP地址作为检测地址。 PIM-SM组播网络启动到组播网络正常运行,经历以下几个过程 1.邻居发现、DR选举:在PIM-SM网络中,组播路由器使用Hello消息来发现邻居,并维护邻居关系,协商协议参数。通过比较Hello消息上携带的优先级和IP地址,各路由器为多路由器网段选举指定路由器DR(Designated Router),充当IGMPv1的查询器。 邻居发现:PIMv1:224.0.0.2;PIMv2:224.0.0.13 DR选举:A、优先级大 B、IP地址大的 2.RP(汇聚点)发现:静态RP、BSR模式RP(公有)、auto-RP(思科私有)。 3.加入(Join):当接收者加入一个组播组G时,通过IGMP报文知会与该主机直接相连的叶子路由器,叶子路由器朝着RP方向往上游节点发送加入组播组的Join消息。 发现接收者的过程-->形成RPT(共享树在稀疏模式可以转发组播数据),树根是RP设备 接收者在加入组播组的时候,发送IGMP的Report,查询者(DR)完成针对RP的RPF检查,发送PIM的加入(加入共享树),向着RP的沿途所有设备都完成该动作,形成RPT RP到接收者沿途都会形成RPT(其实是为了后续通过RPT去转发组播数据做准备) 4.剪枝(Prune):剪枝过程最先由叶子路由器发起。下游组播组成员全部离开,则向上游节点发Prune剪枝消息。通知上游节点不用再转发数据到该分支。 5.注册(Register):向RP通知组播源S的存在。发现源设备,SPT,注册永远是通过单播方式完成。(因为发送者发送组播报文,到达第一跳路由,此时没有组播转发表,把组播封装为单播转发给RP) 6.SPT切换:PIM-SM通过指定一个利用带宽的SPT阈值可以实现将最后一跳路由器(即接收者侧DR)从RPT切换到SPT。 --------------------------------------------------------------------------------- 1.PIM(使用PIM hello报文)发现邻居,并维护邻居关系;并选举DR PIM-SM在共享网络(如Ethernet)同样选举DR(Designated Router)。(所有ethernet网段均选举DR,任何网段有可能有组播用户嘛;但p2p不选举DR) DR的作用: 1.组播源侧的DR负责向RP发送注册报文。 2.接收者侧的DR负责向RP发送加入报文。 3.PIM-DM组播末节网络若使用IGMPv1,DR则充当共享网络上的IGMPv1查询器。 DR选举:借助Hello报文还可以为共享网络(如Ethernet)选举DR,DR将作为该共享网络中组播数据的唯一转发者。 1.比较优先级 2.比较IP地址,IP地址较高者较优。 特殊情况:若网络中有路由器不支持在Hello报文中携带优先级,则直接比较IP地址 --------------------------------------------------------------------------------- 2.RP的发现: RP是PIM-SM域中的核心路由器, 在小型并且简单的网络中,组播信息量少,全网络仅依靠一个RP进行信息转发即可,此时可以在SM域中各路由器上静态指定RP位置。 但是更多的情况下,PIM-SM网络规模都很大,通过RP转发的组播信息量巨大,为了缓解RP的负担同时优化共享树的拓扑结构,不同组播组应该对应不同的RP,此时就需要自举机制来动态选举RP,配置自举路由器BSR(BootStrap Router)。 RP的作用: 1、共享树里所有组播流都通过RP转发到接收者。 2、RP可以负责几个或者所有组播组的转发,网络中可以有一个或多个RP 。用户通过配置命令,可以限制RP只为IP地址在一定范围的组播组服务。 一个RP可以同时为多个组播组服务,但一个组播组只能对应一个RP。所有该组成员和向该组发送组播数据的组播源都向唯一的RP汇聚。 静态RP、BSR模式RP(公有)、auto-RP(思科私有)详见详解 --------------------------------------------------------------------------------- 3.组播用户join、组播源的注册、组播正常转发(该小结是自己根据实验现象进行的总结,与教材的描述有些出入) 现象1:(共享树的加入,组播源未开启) 末节网络的叶路由器通过IGMP得知有主机要加入某组播组;叶路由器本地根据IGMP信息生成(*,G)表项(出接口列表不为空),然后以RP为根向上游节点发送join信息,沿途设备生成(*,G)表项(出接口列表不为空),建立了RPT 现象2:(组播源注册与停止注册,无组播用户) 组播源发送第一个组播报文时,源端DR生成(S,G)表项(出接口列表为空);同时并将该组播报文转化为单播报文,发送至RP进行组播源注册。 RP进行组播源注册后,生成(S,G)表项(出接口列表为空);同时向源端DR路由器发送注册停止报文(单播报文) 现象3:(组播正常转发(我的猜测)) 当RP同时有用某个组播组的(*,G)表项和(S,G)表项时,(S,G)表项的出接口列表不再为空,RP朝组播源方向逐跳发送(S,G)加入消息,从而让RP和组播源之间的所有路由器上都生成了(S,G)表项,建立了SPT,组播开启正常转发。(组播用户可以根据组播数据包信息得知组播源源IP) --------------------------------------------------------------------------------- 4.RPT切换至SPT 针对特定的源,PIM-SM通过指定一个利用带宽的SPT阈值可以实现将最后一跳路由器(即离接收者最近的DR)从RPT切换到SPT。当最后一跳路由器发现从RP发往组播组G的组播报文速率超过了该阈值时,就向单播路由表中到组播源S的下一跳路由器发送(S,G)加入消息,Join加入消息经过一个个路由器后到达第一跳路由器(即离组播源最近的DR),沿途经过的所有路由器都拥有了(S,G)表项,从而建立了SPT树分支。 当信息吞吐率超过预定的值时,PIM-SM就会从共享树切换到组播源路径树。 在VRP中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树(源树),即从RPT向SPT切换。 实验现象:在进行RPT切换至SPT之前,虽然用户端DR设备上也有(S,G)表项,但该表项是以RP地址作为检测地址进行RPF检查的。 RPT切换至SPT,同时伴随着剪枝的过程

实验3:PIM-SM(静态RP)+IGMP --------------------------------------------------------------------------- 华为ENSP配置PIM-SM(静态RP)+IGMP 0.配置IGP协议(组播里的错误很多时候原自单播) 1.所有路由器开启组播功能,并在所有端口上开启PIM协议 2.所有路由器上指定静态RP(静态的RP在AS内部应用,一般指定环回接口作为RP,该接口不需要启动PIM) 3.组播路由器连接用户的端口开启igmp [R1]multicast routing-enable #开启路由器组播功能 pim static-rp 11.1.1.1 #配置静态RP interface GigabitEthernet0/0/0 ip address 12.0.0.1 255.255.255.0 pim sm #在所有端口上开启PIM协议SM模式 ------------------------------ [R3]multicast routing-enable #开启路由器组播功能 pim static-rp 11.1.1.1 #配置静态RP interface GigabitEthernet0/0/1 ip address 30.0.0.3 255.255.255.0 pim sm #在所有端口上开启PIM协议SM模式 igmp enable #连接组播用户的端口开启igmp 注意:华为进行组播源设置时,要设置组播组MAC <R3>dis pim neighbor #推荐检查PIM邻居,防止配置错误! [HW-R4]dis pim rp-info 239.1.1.1 [HW-R2]dis multicast routing-table --------------------------------------------------------------------------- Cisco配置: C-R1(config)#int r e0/1 - 2 C-R1(config-if-range)#ip pim spa #开启稀疏模式,这里缩写了。。。 C-R3#sh ip pim neighbor #推荐检查PIM邻居 C-R3# ! ip pim rp-address 11.1.1.1 //所有组播设备,#指定静态RP R4#show ip pim rp mapping 239.1.1.1 #查找RP R4#show ip igmp groups

静态RP、BSR模式RP(公有)、auto-RP(思科私有)详解 --------------------------------------------------------------------------- 静态RP:在PIM域中的所有PIM路由器上逐一进行配置,静态指定RP。 [R3-pim]static-rp 11.1.1.1 #PIM域内所有路由器均需配置,一般指定环回接口作为RP;配置为静态RP时,该接口不需要启动PIM --------------------------------------------------------------------------- BSR模式RP(公有) 1.C-BSR(Candidate-BootStrap Router)竞选BSR; 2.BSR收集C-RP(Candidate-RP)信息,整理为RP-Set集; 3.BSR发送RP-Set集发送给所有的C-RP; 4.所有C-RP根据RP-Set集自行计算,得出RP BSR自举路由器是PIM-SM网络里的管理核心,负责收集网络中候选RP(C-RP)发来的Advertisement宣告信息。然后将为每个组播组选择部分C-RP信息以组成RP-Set集(即组播组和RP的映射数据库),并发布到整个PIM-SM网络,从而网络内的所有路由器(包括DR)都会知道RP的位置。 一个网络(或某管理域)内部只能选举出一个BSR,但可以配置多个候选BSR (Candidate-BSR C-BSR),当BSR发生故障后,其余C-BSR能够通过自动选举产生新的BSR,从而确保业务免受中断。 BootStrap router工作的原理和过程: 1.C-BSR启动后,首先启动一个定时器(默认为130秒),监听网络中的 BootStrap Message。BootStrap Message初始时通告发送路由器的优先级、BSR的IP地址。 2.当C-BSR收到一个BootStrap Message后,与自身的优先级进行比较。 a.当选BSR,则发送BootStrap Message声明自己是BSR。 b.不当选BSR,则自己的定时器重置,继续监听BootStrap Message 3.BSR通过BootStrap Message周期性地向所有PIM路由器(224.0.0.13)发送BSR消息(每60秒),BSR消息包含整个RP-set和 BSR地址;BootStrap Message报文TTL一般被置为1,但每个PIM路由器收到此报文后都是把它以泛洪的方式从自己所有的使能PIM的接口上发送出去,这就能保证网络中的每台PIM设备都能收到BootStrap Message。 BSR在holdtime hold-interva(缺省150s)内等待接收C-RP发送的Advertisement宣告消息,超过150s,BSR认为C-RP失效。 -------------------------------------- BSR选举原则: 1.比较优先级(默认为0,越大越优) 2.比较IP地址(IP地址大则为BSR) 配置C-BSR: [R2-pim]c-bsr LoopBack 0 32 255#指定BSR端口时,设置优先级为255(0-255,缺省为0),hash掩码为32(范围0-32);端口需要开启PIM-SM -------------------------------------- RP选举原则: 0.C-RP的服务范围:即ACL应用(当多个C-RP的服务范围有重叠时,比较掩码,掩码长优先) 1.比较C-RP优先级,越小越优,缺省值是0。 2.根据hash算法得出的数值进行比较,越大越优(hash算法参数:组地址、掩码长度、C-RP地址) 3.比较IP地址,越大越优 [R3-LoopBack0]pim sm #注意RP端口要开启PIM [R3-pim]c-rp LoopBack 0 group-policy 2001 priority 10 #指定LoopBack 0为RP端口,并设置优先级为10,并配置ACL限制了RP的服务范围 C-RP默认通告周期为60S; 配置C-RP: [R3-pim]c-rp LoopBack 0 priority 255 group-policy 2005#配置C-RP;指定C-RP服务范围为ACL 2005允许的组播组。 -------------------------------------- 注意:如果RP不是手工指定,而是通过选举从C-RP中产生,则每台路由器需要配置包括C-RP地址、优先级和它所能服务的组。(这个注意理解不了啊。。。) --------------------------------------------------------------------------- auto-RP(思科私有) 思科的自动RP(私有) 2种角色:候选RP(C-RP);MA(mapping agents)映射代理设备 1.C-RP将候选信息发送到224.0.1.39 2.MA设备接收候选信息,裁决地址大的作为RP,并将结果通过224.0.1.40通告给所有组播设备 1.收224.0.1.39 发224.0.1.40 俗称 收3发4 2.有candidate RP (候选RP):我要成为哪些组播组的RP。 MA RP :决策者。(发送的是结果,而不是数据库,这是和BSR RP方式的区别) 3.流程:如3台路由器直连,中间的为MA RP,两边为候选RP,两边环回口都通告说自己要成为224.1.1.1的RP,那么R1与R3,同时发送RP通告(目的地为224.0.1.39),然后只有MA RP监听224.0.1.39,然后进行决策,让谁成为这个组播组的RP。然后将决策结果泛洪(目的地为224.0.1.40)。 4.决策比较流程:ACL的精确匹配,选IP地址大的。 5.如果有2台MA RP的话,从2台收到的RP通告,选后到的优先。 6.现网中一般候选RP与MA RP为同一台路由器,为了方便,只进行一次RPF检查。 7.候选者每60秒发送一次RP通告信息给MA,180秒超时。 配置命令: 前提是接口开启了 ip pim sparse-dense-mode 1.候选RP配置:ip pim send-rp-announce 接口 scopet TTL值 group-list ACL号 指定候选RP的接口 TTL值 和为哪个组的候选RP,如果不写ACL,则通告想成为所有组播组的RP 2.MA配置:ip pim send rp-discovery 接口 scopet TTL值 这里的接口为MA泛洪时的源IP 3.边界保护:access-list 1 deny 224.0.1.39 access-list 1 deny 224.0.1.40 access-list 1 deny 239.0.0.0 255.255.255.255 access-list 1 per 224.0.0.0 255.255.255.255 int f0/0 ip multicast boundany 1 不允许从f0/0接口发出auto-RP信息,常用于企业边界设备上。 4.auto-RP默认在 sparse-dense-mode 环境下运行,如果在sparse-mode下,要打以下命令:

实验4:BSR方式动态RP ------------------------------------- 华为配置 0.配置IGP协议,组播里的错误很多时候原自单播 1.所有路由器开启组播功能,并在所有端口上开启PIM协议 2.配置候选BSR 3.配置候选RP 4.组播路由器连接用户的端口开启igmp ------------------------------------- 2.配置候选BSR interface LoopBack0 ip address 22.1.1.1 255.255.255.255 pim sm #使用环回口作为BSR端口,端口必须开启PIM-SM ospf enable 10 area 0.0.0.0 #注意路由要可达 pim c-bsr LoopBack0 #指定该端口作为C-BSR端口,BSR支持抢占 static-rp 11.1.1.1 [R2-pim]c-bsr LoopBack 0 32 255#指定C-BSR端口时,设置优先级为255(0-255,缺省为0),hash掩码为32(范围0-32) ------------------------------------- 3.配置候选RP interface LoopBack0 ip address 33.1.1.1 255.255.255.255 pim sm #端口开启PIM-SM ospf enable 10 area 0.0.0.0 pim c-rp LoopBack0 priority 255 #指定该端口为C-RP端口,并设置优先级为255(越小越优,范围0-255) static-rp 11.1.1.1 ------------------------------------- [R3-pim]c-rp LoopBack 0 priority 255 group-policy 2005#使用acl限制RP的服务范围#指定C-RP服务范围为ACL允许的组播组。 [R3-acl-basic-2005]rule permit source 239.1.1.1 0.0.0.0 ------------------------------------- [R2]dis pim bsr-info #查看BSR信息 [R2]dis pim rp-info #查看RP数据库,包含所有RP的服务范围,优先级等等信息 [R2]dis pim rp-info 239.1.1.1 #查看选举出来的RP的信息 <R3>dis pim interface #可以看到DR <HW-R1>display pim routing-table 239.1.1.1 ================================================ 思科的BSR配置 1)配置候选BSR C-R2(config)#ip pim bsr-candidate lo0 R4(config)#ip pim bsr-candidate lo0 C-R2(config)#do sh ip pim bsr-router PIMv2 Bootstrap information This system is the Bootstrap Router (BSR) BSR address: 22.1.1.1 (?) Uptime: 00:00:21, BSR Priority: 0, Hash mask length: 0 //默认BSR优先级为0,不同于华为 Next bootstrap message in 00:00:38 C-R2(config)#ip pim bsr-candidate lo0 0 255 //管控R2的BSR优先级为255 2)配置候选RP C-R1(config)#ip pim rp-candidate lo0 C-R3(config)#ip pim rp-candidate lo0 C-R3(config)#ip pim rp-candidate lo0 priority 100 #我们不修改优先级值,以便多个RP均能复用 C-R1#show ip pim rp-hash 239.1.1.1 RP 11.1.1.1 (?), v2 Info source: 22.1.1.1 (?), via bootstrap, priority 0, holdtime 150 Uptime: 00:01:03, expires: 00:01:49 PIMv2 Hash Value (mask 0.0.0.0) RP 11.1.1.1, via bootstrap, priority 0, hash value 1439773969 RP 33.1.1.1, via bootstrap, priority 0, hash value 869348625 根据hash,路由器不同的组播组自行选择RP C-R2(config)#ip pim bsr-candidate lo0 30 255#配置候选BSR的优先级为255,hash掩码为30 C-R2#show ip pim rp-hash 239.1.1.1 RP 33.1.1.1 (?), v2 Info source: 33.1.1.1 (?), via bootstrap, priority 0, holdtime 150 Uptime: 00:05:33, expires: 00:02:01 PIMv2 Hash Value (mask 255.255.255.252) RP 11.1.1.1, via bootstrap, priority 0, hash value 1650312209 RP 33.1.1.1, via bootstrap, priority 0, hash value 1952302097 C-R2#show ip pim bsr-router 查看路由器不同的组播组如何选举各自的RP C-R2(config-if)#ip igmp join-group 239.1.1.2 C-R2(config-if)#ip igmp join-group 239.1.1.3 C-R2(config-if)#ip igmp join-group 239.1.1.4 C-R2(config-if)#ip igmp join-group 239.1.1.5 C-R2(config-if)#ip igmp join-group 239.1.1.6 C-R2(config-if)#ip igmp join-group 239.1.1.7 C-R2(config-if)#ip igmp join-group 239.1.1.8 C-R2(config-if)#ip igmp join-group 239.1.1.9 两个RP都在工作 C-R2#show ip pim rp 239.1.1.2 Group: 239.1.1.2, RP: 33.1.1.1, v2, uptime 00:07:34, expires 00:02:00 C-R2#show ip pim rp 239.1.1.3 Group: 239.1.1.3, RP: 33.1.1.1, v2, uptime 00:07:36, expires 00:01:58 C-R2#show ip pim rp 239.1.1.4 Group: 239.1.1.4, RP: 11.1.1.1, v2, uptime 00:06:39, expires 00:01:50 C-R2#show ip pim rp 239.1.1.5 Group: 239.1.1.5, RP: 11.1.1.1, v2, uptime 00:06:49, expires 00:01:39 C-R2#show ip pim rp 239.1.1.6 Group: 239.1.1.6, RP: 11.1.1.1, v2, uptime 00:06:51, expires 00:01:38 C-R2#show ip pim rp 239.1.1.7 Group: 239.1.1.7, RP: 11.1.1.1, v2, uptime 00:06:52, expires 00:01:37 C-R2#show ip pim rp 239.1.1.8 Group: 239.1.1.8, RP: 33.1.1.1, v2, uptime 00:07:52, expires 00:01:42 C-R2#show ip pim rp 239.1.1.9 Group: 239.1.1.9, RP: 33.1.1.1, v2, uptime 00:07:54, expires 00:01:40 VRRP、HSRP,只有主设备在转发用户数据,意味着备份设备是个摆设! GLBP(gateway loadbalance protocol),类似于此时的BSR方式的RP

实验5:思科的auto-RP 候选RP地址大者优选 配置候选RP C-R3(config)#int lo0 C-R3(config-if)#ip pim sp #一般使用环回口成为候选RP,所以需要在该接口上开启pim;静态方式则不需要在环回口上配置pim C-R3(config)#ip pim send-rp-announce lo0 scope 3 #scope 3是设置TTL值 C-R1(config)#ip pim send-rp-announce lo0 scope 3 //配置候选RP 配置MA(映射代理) C-R2(config)#ip pim send-rp-discovery lo0 scope 4 //配置决裁者MA(托孤大臣) ip pim autorp listener (仅仅采用稀疏模式+该补丁就可以完成自动RP)#极其重要的命令(所有组播设备) #产生该命令的原因:候选RP和MA的侦听为2个组播组,这是为了选出RP;而没有RP之前,SM模式又无法使用;这就是矛盾的地方了。思科使用ip pim autorp listener 命令去解决 自动RP有两个组播组(224.0.1.39和224.0.1.40)去完成 C-R2#show ip pim rp mapping 239.1.1.1 #该命令只是用于查看自动RP???

静态RP和动态RP共存时,设置静态RP优先 静态方式以及BSR(bootstrap)是思科华为都存在的RP机制 自动RP是思科私有一种RP机制 自动RP>BSR>静态 [HW-R2-pim]static-rp 11.1.1.1 preferred #配置优选静态RP(默认优先:自动RP>BSR>静态) C-R1(config)#ip pim rp-address 11.1.1.1 override #配置优选静态RP(默认优先:自动RP>BSR>静态)

配置BSR边界(一般配置在AS边界上或者SM域边界) a.执行命令system-view,进入系统视图。 b.执行命令interface interface-type interface-number,进入接口视图。 c.执行命令pim bsr-boundary,配置BSR服务边界。 配置BSR边界后,BSR报文无法通过该边界,主要在划分PIM-SM域时使用。 建议在规划的PIM-SM域的边缘接口配置BSR服务边界。

IGMPv3;SSM和IGMPv3;IGMP SSM Mapping --------------------------------------------------------------------- IGMPv3 IGMPv3是专门针对SSM(source specific multicast)开发使用的,但是IGMPv1、IGMPv2也可以用于SSM。 增加了主机的控制能力,不仅可以指定组播组,还能指定组播的源 IGMPv3取消成员关系报告抑制机制: 因为虽然不同PC加入同一个组224.1.1.1,但是指定的源可能不同,不能因为一台PC报告要加入组224.1.1.1,其他PC就不发报告了 相较于IGMPv2,IGMPv3新增了特定源组查询报文 相较于IGMPv2,IGMPv3增加了主机对组播源的选择能力 IGMPv3中没有专门的离组报文 --------------------------------------------------------------------- SSM和IGMPv3 SSM的默认的组播232.0.0.0/8 使用了特定的组播组224.0.0.22 IGMPv3服务于SSM模型; 对于主机:IGMPv3增加了主机的控制能力,不仅能指定组播组IP,还能指定组播源IP 对于路由器:IGMPv3支持IGMPv1的普遍组查询;支持IGMPv2的特定组查询;支持IGMPv3的指定源/组查询; --------------------------------------------------------------------------- IGMP SSM Mapping服务使用场景: 某些情况下,组播路由器运行IGMPv3,但并不是所有成员主机都可以支持IGMPv3,它只能运行IGMPv1或IGMPv2,为了使这两个版本也可以兼容SSM,就需要在路由器上提供IGMP SSM Mapping服务 组播路由器运行IGMPv3: 如果用户主机运行的是IGMPv3,那么可以在成员报告报文中直接指定组播源; 如果用户主机运行的是IGMPv1或IGMPv2,为了使这两个版本也可以兼容SSM,就需要在路由器上提供IGMP SSM Mapping服务 SSM使用场景:当组播路由器运行IGMPv3,用户主机运行IGMPv1或IGMPv2 若路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文; 若路由器上有SSM Mapping规则,则依据规则将报文中所包含(* ,G)信息映射为(G,INCLUDE,(S1,S2...))信息,提供SSM服务。 igmp #配置SSM Mapping规则 ssm-mapping 232.1.1.1 255.255.255.255 10.1.1.1 ssm-mapping 232.1.2.0 255.255.255.0 10.1.1.2 ssm-mapping 232.10.0.0 255.255.0.0 10.1.1.3 interface GigabitEthernet0/0/1 ip address 10.1.1.2 255.255.255.0 pim sm #华为设备可以使用DM模式,不影响(思科必须使用SM模式) igmp enable igmp version 3 igmp ssm-mapping enable #使能SSM Mapping dis igmp ssm-mapping group 如果用户加组232.2.1.1,则映射表匹配不中,叶路由器直接丢弃此报文

实验6:SSM和IGMPv3 基本的SSM和IGMPv3的配置:(就是这么简单。。。) 1.所有路由器开启组播功能 2.所有端口开启PIM-SM(SSM不需要配置RP,因为IGMPv3报文中指定了组播源) 3.末跳组播路由器的端口开启IGMPv3 4.客户端使用IGMPv3,指定组播源和组播组地址 配置略过(太简单了。。。) <HW-R2>dis pim routing-table 232.1.1.1 <HW-R3>dis pim routing-table 232.1.1.1 ---------------------------------------------- 扩展其他组播组,所有组播设备SSM映射: acl name SSM 3999 #SSM默认的使用地址范围很小,但可以用私有组播地址来扩展 rule 5 permit ip destination 239.1.1.1 0 rule 10 permit ip destination 232.0.0.0 0.255.255.255 pim ssm-policy acl-name SSM #应用ACL [HW-R3]dis pim routing-table 239.1.1.1 [HW-R3]dis acl all ============================== Cisco的SSM映射 接收者的实施: interface Loopback0 ip address 22.1.1.1 255.255.255.255 ip pim sparse-mode ip igmp join-group 239.1.1.1 source 44.1.1.1 //指定组播源 ip igmp version 3 ip ospf 110 area 0 组播路由器 ip pim ssm range SSM ip access-list standard SSM permit 239.0.0.0 0.255.255.255 permit 232.0.0.0 0.255.255.255 C-R2#show ip mroute 239.1.1.1 C-R2#sh access-lists
MSDP

MSDP概述及2种应用 ---------------------------------------------------------------- MSDP是Multicast Source Discovery Protocol(组播源发现协议)的简称,是为了解决多个PIM-SM(Protocol Independent Multicast Sparse Mode,协议无关组播—稀疏模式)域之间的互连而开发的一种域间组播解决方案,用来发现其他PIM-SM域内的组播源信息。 MSDP目前只支持在IPv4网络部署,域内组播路由协议必须是PIM-SM。MSDP仅对ASM(Any-Source Multicast)模型有意义。 在PIM-SM中,RP可以获取到所有组播源和组播组成员的信息(组播源端DR到RP注册,组播组成员端DR向RP发起加入报文) 随着网络规模的增大以及便于控制组播资源,管理员可能会将一个PIM网络划分为多个PIM-SM域,此时各个域中的RP无法了解其他域中的组播源信息。MSDP可以解决这一问题。 MSDP是基于TCP的需要在RPs上完成配置 MSDP的2个作用: 1.在PIM-SM域间,MSDP通过在路由器(通常在RP上)之间建立MSDP对等体,MSDP对等体之间交互SA(Source-Active)消息,共享组播源信息,最终可以使一个域内的组播用户接收到其他域的组播源发送的组播数据。 2.在PIM-SM域内,Anycast RP(任播RP)。Anycast RP是指在同一PIM-SM域内通过设置两个或多个具有相同地址的RP,并在这些RP之间建立MSDP对等体关系,以实现域内各RP之间的负载分担和冗余备份。 Anycost RP的逻辑其实很简单:所有组播路由器上均配置了静态RP,所有组播源和组播用户都能连接到RP;唯一的问题在于组播源和组播用户可能连接到的是不同的RP,但是通过MSDP协议,RP之间共享SA消息,即共享了组播源信息。 Anycast RP(任播RP)配置详见实验配置6 视频中并不涉及域间组播,当QYT的PPT中有域间组播配置

实验7:Anycast RP(任播RP) -------------------------------------------------------------------- 华为配置anycast RP 1)32位的环回接口作为RP anycast RP均使用相同的IP,并且宣告进动态路由协议中;所以其他组播路由器的路由表中只会存在更近的到RP的路径,到更远的那个RP的路径则被忽略了 R1和R3启用新的环回口,并配置相同的IP,都宣告进动态路由协议ospf中 interface LoopBack11 description RP-ADDRESS ip address 1.1.1.10 255.255.255.255 #RP必须是一个32位IP,并且通告进IGP中 ospf enable 1 area 0.0.0.0 [HW-R2-GigabitEthernet0/0/0]ospf cost 30 #在该实验中,若不修改cost,则会出现负载均衡。此处修改cost是为了明确RPF检查,方便查看实验现象 2)创建新的RP [R3-pim]static-rp 1.1.1.10 #全网组播路由器配置静态RP 3)建立MSDP邻居 [R3-msdp]peer 11.1.1.1 connect-interface LoopBack 0 [R1-msdp]peer 22.1.1.1 connect-interface LoopBack 0 [R1-msdp]dis msdp brief #可以看到MSDP邻居及状态 [R1]dis msdp sa-cache #查看SA信息 [R1]dis msdp sa-count -------------------------- Cisco配置Anycast RP 1)规划两个相同的/32环回接口 R1和R3的环回接口作为RP interface Loopback10 description RP-ADD ip address 1.1.1.10 255.255.255.255 ip ospf 110 area 0 2)新的RP实施 ip pim rp-address 1.1.1.10 #全网组播路由器配置静态RP 3)在RP设备上完成MSDP邻居的建立 C-R3(config)#ip msdp peer 11.1.1.1 connect-source lo0 C-R1(config)#ip msdp peer 33.1.1.1 connect-source lo0 C-R3#show ip msdp peer C-R3#show ip msdp summary C-R1#show ip msdp sa-cache #查看SA信息 C-R2#clear ip mroute * 清除组播路由表 C-R2(config-if)#no ip igmp join-group 239.1.1.1 C-R2(config-if)#ip igmp join-group 239.1.1.1 #重新加组,可以加快RPT的形成
组播实验配置
二层组播

IGMP snooping;IGMP snooping proxy;组播vlan ================================================================ IGMP snooping配置在交换机上 IGMP snooping解决组播报文在二层广播的问题 IGMP snooping运行在链路层,是二层以太网交换机上的组播约束机制,用于管理和控制组播组 IGMP snooping通过监听主机发出的IGMP报文,建立组播MAC地址表 IGMP snooping的原理机制: 1.当二层以太网交换机收到主机和路由器之间传递的IGMP报文时,IGMP snooping分析报文所带的信息 如果主机发出IGMP主机报告报文时,交换机将该主机加入到响应的组播组中 如果主机发出IGMP来开报文时,交换机将删除与该主机对应的组播表项 2.通过不断监听IGMP报文,交换机在二层建立和维护组播MAC地址表,交换机根据组播MAC地址表转发从路由器下发的组播报文 IGMP snooping的好处: 1.节省带宽:不支持IGMP snooping的交换机接收到组播报文后,将进行泛洪,某些不需要该组播的用户将会接收到该组播 2.收费节目的访问控制:同样是上面的问题,不支持IGMP snooping的交换机,只要该交换机下有一个付费用户,那么其他免费用户都可以收到该组播 需要先在全局下开启: igmp-snooping enable#全局开启igmp-snooping vlan 1 igmp-snooping enable igmp-snooping enable vlan 1#vlan1开启igmp-snooping;该命令2种教材2个版本。。 display igmp-snooping route-port vlan 1 display igmp-snooping group#查看交换机上的IGMP snooping信息 display igmp-snooping port-info dis l2-multicast forwarding-table vlan 1 //查看vlan1的二层组播转发表 ================================================================ IGMP代理(感觉应该是配置在路由器上的?但是也有可能是配置在交换机上) IGMP代理上联端口执行主机的角色,响应来自路由器的查询,当新增用户组或者某组最后一个用户退出时,主动发送成员报告包或者离开包。 IGMP代理下联端口执行路由器的角色,完全按照IGMP中规定的机制执行,包括查询者选举机制,定期发送通用查询信息,收到离开包时发送特定查询等 ---------------------------------------------------------------------------- IGMP snooping proxy 减少用户主机所在网段内的IGMP协议报文数量:代理上游三层设备向下游主机发送IGMP查询报文;代理下游主机箱上游三层设备发送成员关系报告报文。 在上游设备看来,运行IGMP snooping proxy的设备相当于一台主机;在下游设备看来,它相当于一台查询器。 IGMP代理和IGMP snooping proxy是一样的东西???? =============================================================================== 组播vlan 普通二层转发时,路由器默认会对每个vlan发送一份组播流量 在交换机上新建一个vlan4,定义为组播vlan,用于和叶路由器互联,组播vlan4关联多个用户vlan2、vlan3,使分发流量的任务交给交换机去完成,减轻路由器的负担。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!