导图社区 组播基础(HCIP-Datacom)
华为认证HCIP-Datacom-Core Technology V1.0学习笔记 包括内容:IP组播基础、IGMP原理与配置、PIM原理与配置
编辑于2022-07-21 18:18:50组播基础
IP组播基础
基本概念
背景
点到多点业务
单播
传输量与用户成正比关系,且重复流量多,消耗设备和链路带宽资源,无法保障传输质量
广播
传输范围有限(二层),非客户也被迫收到流量,信息安全性和有偿服务得不到保障
组播
组播源只需要发送一份组播数据
优点
相比单播
没有重复流量,用户的增加不会导致信息源负载加重,同时网络资源的消耗不会显著增加
相比广播
节约网络带宽、降低网络负载,并能提高信息安全性,有偿性也得到保证,还能跨网段传输
报文结构
类似单播
组播或广播MAC地址是不能被分配给任何一个以太网接口的,换句话说,这两种类型的MAC地址不能作为数据帧的源MAC地址,而只能作为目的MAC地址。
组播IP
范围
IPv4,D类地址(224.0.0.0/4)
分类
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临时组播组地址
组播MAC
范围
0100-5e00-0000——0100-5e7f-ffff
丢失了5位的地址信息,导致结果是有32个IPv4组播地址映射到同一MAC地址上
即使MAC地址冲突,但是可以通过三层组播IP区分(规划时加入不会冲突的组播组即可避免)
组播网络架构
三部分
源端网络:将组播源产生的组播数据发送至组播网络。
组播转发网络:将数据从组播源发送到组播组成员,组播数据转发需要依赖组播分发树,因此组播路由器需要通过协议形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)。
组播转发表
组播静态
手工配置组播源与出接口的对应关系
PIM协议生成
成员端网络:接收组播数据,因此需要通过IGMP让组播网络感知组成员位置与加组信息
基本术语
组播源(Source)
组播流量的始发者,只负责发送组播数据
组播接收者(Receiver)
组播组成员,是期望接收特定组播组流量的设备
组播组(Multicast Group)
用IP组播地址进行标识的一个集合。组成员,可以识别并接收发往该组播组的组播数据
组播路由器(Multicast Router)
支持组播、运行组播协议的网络设备
路由器
交换机
防火墙
第一跳路由器(First-Hop Router)
组播转发路径上,与组播源相连且负责转发该组播源发出的组播数据的第一个PIM路由器
最后一跳路由器(Last-Hop Router)
组播转发路径上,与组播组成员相连且负责向该组成员转发组播数据的最后一个PIM路由器
服务模型
本质
组播组成员在接收组播数据时可以对于组播数据源进行选择
分类
ASM(Any-Source Multicast,任意源组播)
可以接收到任意源发送到该组的数据
每一种组播应用的组地址必须在整个组播网络中唯一
SSM(Source-Specific Multicast,指定源组播)
只会收到指定源发送到该组的数据
不同的组播应用的组地址只需要在指定的源上保持唯一
组播数据转发原理
问题
环路
次优
重复报文
解决方法
组播路由表项增加组播源和入接口信息
仅转发从特定唯一的入接口收到的组播数据,从而避免组播转发时产生环路,次优,重复报文
如果有相同的组播源,设备通过RPF(Reverse Path Forwarding,反向路径转发)检查可以确定设备上唯一的组播流量入接口
去往组播源的单播路由(组播数据中的源IP)下一跳的出接口和组播流量的入接口要一致,否则丢弃处理
如果存在负载均衡,RPF会进行路由优选
1、最长掩码匹配
2、路由优先级高
3、组播静态路由 > MBGP路由(组播BGP) > 单播路由
三种组播路由表项
组播分发树-MDT
组播数据在转发时都基于组播分发树进行转发,组播分发树以组播源为根,组成员为叶子形成转发路径
组播分发树一定是通过RPF机制与组播路由协议,形成的无环、无次优且无重复包的组播转发路径
组播数据转发流程
路由器收到组播数据后进行RPF检查后查找组播播转发表根据组播分发树转发
组播协议
成员端网络
IGMP(Internet Group Management Protocol,因特网组管理协议)协议
用于告知组播网络,组成员的位置与所加组播组
组播转发网络
PIM(Protocol Independent Multicast,协议无关组播)协议
生成AS域内的组播分发树
MSDP(Multicast Source Discovery Protocol,组播源发现协议)
帮助生成AS域间的组播分发树
MBGP(Multicast BGP,组播BGP)
帮助跨域组播流进行RPF校验
IGMP原理与配置
IGMP简介
如何感知组播组成员?
手工静态配置
静态指定连接主播组成员的接口
动态感知
通过IGMP协议消息感知组播组成员所在接口,组成员可以将加组消息发送给组播网络,从而让组播网络感知到组成员的位置和所加组播组
IGMP概述
IGMP(Internet Group Management Protocol,因特网组管理协议),基于IP,协议号2
IGMP作用
接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系
主机侧
感知组成员位置和维护加组信息
路由器侧
参与形成PIM路由表项
版本分类
IGMPv1
IGMPv2
运行ASM模式。形成(*,G)表项
IGMPv3
运行SSM模式。形成(S,G)表项
IGMP表项
生成方式
组播路由器与组成员间交互报文后会生成IGMP路由表项与IGMP组表项,组播路由表项需要基于IGMP路由表项与IGMP组表项的信息生成
分类
IGMP组表项
由用户主机发送的IGMP加入报文触发创建的,用于维护组加入信息并通知组播路由协议(PIM)创建相应(*,G)表项
IGMP路由表项
用来扩展组播路由表项的出接口
组播路由表 最后一跳组播路由器(组播叶子路由器)
原理
基于IGMP路由表项,IGMP组表项与组播协议路由表(PIM路由表)汇总后形成
IGMP组表项提供组播组IP
IGMP路由表项提供出接口(下游接口)
图示
工作原理
IGMPv1
原理
IGMPv1主要基于查询和响应机制完成组播组管理
IGMP查询器(Querier)
IGMP报文是组播报文,因此一个多路访问网络里只需要一个组播路由器发送查询报文即可查询所有组成员的加组信息
选举机制
本身没有,依赖组播路由协议PIM选举,PIM选举出唯一的组播信息转发者(Assert Winner或DR)作为IGMPv1的查询器
查询器和非查询器均能收到成员关系报告(目的地址224.0.0.1),因此均能形成IGMP路由表与IGMP组表项。
查询器老化时间130s
130 = 60(查询间隔) * 2 + 10(MRT)
MRT在v1中不能修改
报文
普遍组查询报文(General Query)
查询器向共享网络上所有主机和路由器发送的查询报文,用于查询哪些组播组存在成员
60s一次
成员关系报告报文(Report)
主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文
报文格式
Version-4Bit-版本
1
Type-4Bit-报文类型
1
普遍组查询报文
2
成员关系报告报文
保留-1Byte
Checksum-2Byte-校验
Group Address-32Bit-组播组地址
普遍组查询报文
填充0.0.0.0
成员关系报告报文
成员加入的组播组地址
工作过程
IGMP查询器发送目的地址为224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文
收到该查询报文的组成员在本地启动定时器,定时器超时后发送该组的报告报文
定时器时间是10s内的一个随机值
查询器接收到组播组成员的报告报文后,生成IGMP组表项与IGMP路由表项
抑制机制
同组抑制
其它想要加入同组的组成员收到第一个定时器超时的组成员发送的报告报文则停止计时器并不再发送报告报文
离组机制
静默离开
查询器在老化时间130s后没有收到报告报文,删除组成员的IGMP表项
缺点
超时离组机制
未超时的时间内,组播流量依然会被组播路由器转发
查询器依赖PIM
IGMPv2
改善IGMPv1的缺陷
加组一致,增加离组机制、查询器选举机制,兼容IGMPv1
报文
普遍组查询报文(General Query)
成员关系报告报文(Report)
新增
成员离开报文(Leave)
成员离开组播组时主动向查询器发送离组报文。成员离开报文目的地址为224.0.0.2。
特定组查询报文(Group-Specific Query)
查询器向指定组播组发送的查询报文查询是否存在成员。特定组查询报文目的地址为所查询组播组的组地址。
报文格式
Type
0x11
IGMPv2的查询报文包括普遍组查询报文和特定组查询报文两类
0x12
IGMPv1成员关系报告报文
兼容性的体现
0x16
IGMPv2成员关系报告报文
0x17
成员离开报文
MRT(Max Response Time) 主机响应查询返回报告的最大时间 控制成员对于查询报文的响应速度
普遍组查询
默认10.0s
特定组查询
默认1.0s
Checksum
Group Address
普遍组查询
0.0.0.0
特定组查询、成员报告、成员离开
需要查询、报告、离开的组地址
离组机制
IGMPv2使用成员离开报文与特定组查询报文加速感知IGMPv2组成员离开
过程
查询器收到离开报文后,马上发送针对该组的特定查询报文,询问是否还有该组的成员,默认每隔1s一次,共2两次,同时查询器启动组成员关系定时器(Timer-Membership=发送间隔 x 发送次数),定时器的时间就等于老化时间。在定时器超时前收到该组其它成员的报告报文,继续维护该组成员关系,如果定时器超时2s后也没有收到报告报文,删除该组表项
最后一个报告者
RFC2236标准
主机侧
只有最后一个报告者才能发送离开报文
路由侧
只有收到最后一个报告者的离开报文,查询器才会发送特定组查询报文
厂商实现
只要收到离开报文,就发送特定组查询报文
查询器选举机制
独立查询器选举:IP地址最小的路由器成为查询器
查询器老化时间125s
125 = 60 * 2 + 10/2
无抑制机制
特定组查询后1s立即回复报告报文
IGMPv3
SSM模型
IGMPv1与IGMPv2的报文中均无法携带组播源的信息,因此无法配合SSM使用(可使用SSM Mapping功能解决这个问题)
IGMPv3主要是为了配合SSM(Source-Specific Multicast)模型,提供了在报文中携带组播源信息的能力
报文
普遍组查询报文(General Query)
特定组查询报文(Group-Specific Query)
同IGMPv2
特定源组查询报文(Group-and-Source-Specific Query)
查询该组成员是否愿意接收特定源发送的数据
成员关系报告报文(Report)
目的地址为224.0.0.22
都可以可以携带一个或多个组播源信息
报文格式
查询报文
Type
0x11
Max Response Code
Group Address
Number of Sources
组播源的数量
特定源组查询使用,其它填充0
Source Address
组播源地址
报告报文
Type
0x22
Number of Group Records-组记录数量
Group Record-组记录
Record Type-组记录类型
当前状态报告-响应查询
mode-is-include
接收源列表中的源发往该组的组播数据--加组
mode-is-exclude
不接收源列表中的源发往该组的组播数据
过滤模式改变报告-切换状态
change-to-include-mode
转换到include模式,如果指定源列表为空,表示离组
change-to-exclude-mode
转换到exclude模式,不接收源列表中的源发往该组的组播数据
同一组播组,源的改变
源列表改变报告-通告源列表变化
allow-new-source-接收
include
向现有源列表中添加这些组播源
exclude
从现有阻塞源列表中删除这些组播源
block-old-source-不接收
include
从现有阻塞源列表中删除这些组播源
exclude
向现有源列表中添加这些组播源
刚好相反
Number of Sources-本记录中包含的源地址数量
Multicast Address-组播组地址
Sources Address-组播源地址
查询器选举机制
同IGMPv2
抑制机制
同组源可能希望接收不同源的组播数据,所以无需抑制报文
离组机制
没有成员离开报文,借助组成员关系报告实现
过程
查询器在收到改变源组对应关系的成员关系报告后,会发送特定源组查询报文,确认是否还有组成员存在
IGMP版本差异
查看源列表
display igmp group 组地址 verbose
特性
IGMP代理
背景
大量成员主机频繁加入/离开组播组时,会产生大量的IGMP成员关系报告/离开报文,从而给IGMP查询器带来较大的处理压力
IGMP Proxy功能可减少IGMP查询器接收IGMP成员关系报告/离开报文的数量,减轻IGMP查询器压力 IGMP Proxy通常被部署在IGMP查询器和成员主机之间的三层设备上
原理
IGMP Proxy设备也可以代理IGMP查询器向成员主机发送查询报文,维护组成员关系,基于组成员关系进行组播转发
接口分类
主机接口(Host Interface)一般面向IGMP查询器
路由器接口(Router Interface):一般面向组成员
工作机制
成员加组
第一个成员关系报告从主机接口发送给上游的IGMP查询器,并形成IGMP组表项与IGMP Proxy路由表项,后续同组用户加组不会再向IGMP查询器反馈成员关系报告报文
成员离组
当组成员离开时,IGMP Proxy通过IGMP离组机制确定是否有特定组播组的组成员,当确定已经没有组成员后才发送离开报文给上游IGMP查询器
配置
[Huawei-GigabitEthernet0/0/0]igmp proxy
IGMP Snooping
作用
指导组播数据帧在数据链路层的转发和控制,默认泛洪组播帧,防止了组播数据在二层网络中的广播
原理
运行IGMP Snooping的二层组播设备分析主机和上游三层设备之间传递的IGMP协议报文携带的信息,根据这些信息建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发
分析的内容
成员接口
路由接口
组播地址
VLAN信息
端口角色
路由器端口(Router Port)
作用
接收组播数据报文
生成方式
静态成员端口
手工配置
动态路由器端口
协议生成
收到源地址不为0.0.0.0的IGMP普遍组查询报文(60s)或PIM Hello报文(105s)
成员端口(Member Port)
作用
发送组播数据报文
生成方式
静态成员端口
手工配置
动态路由器端口
协议生成
收到IGMP 报告报文的接口
工作机制(表项的生成与维护)
普遍组查询报文/PIM Hello报文
动作
向同一VLAN所有成员接口转发
处理机制
没有路由器端口,收到报文的端口成为路由器端口,创建路由器端口表项,并且启动老化定时器
老化计时器默认180s
路由器端口收到新的普遍组查询报文后刷新老化计时器
成员关系报告报文
两种收到情况
主机发送报告报文响应普遍组查询报文
主机发送报告报文主动加组
动作
解析主机想要加入的组播地址,并向同一VLAN内所有路由器端口转发
处理机制
没有成员端口,收到报文的端口成为成员端口,创建成员端口表项,并且启动老化定时器
老化计时器默认130s
130 = 健壮系数(2) x 普遍组查询间隔(60) + 最大响应时间(10)
成员端口收到新的成员关系报告报文后,动态添加成员端口,并且刷新/启动新的接口老化计时器
报告报文的抑制机制
IGMP Snooping不再使用成员关系报告报文抑制机制: ①IGMP Snooping监听所有组成员都需要发送IGMP组成员关系报告报文确定端口角色 ②IGMP Snooping设备收到成员关系报告报文后,只将成员关系报告报文从路由器接口发送出去,从而避免其余组成员收到成员关系报告报文
离开报文
处理机制
1、先确认是否存在转发表
2、转发表不存在或者没有此成员端口,丢弃处理
3、如果转发表项存在,并且接口也是成员端口,向所属VLAN内所有路由器端口转发离开报文,启动老化定时器
4、查询器收到离开报文后,发送特定组查询报文,如果有报文回应,刷新定时器,没有回应,老化定时器超时后,删除此成员端口
老化时间
成员端口的老化定时器 = 健壮系数(默认2) x 特定组查询间隔(默认1s)
配置
1、全局使能IGMP snooping功能
[Huawei ]igmp-snooping enable
2、VLAN下使能IGMP Snooping
[RouterB-vlan10] igmp-snooping enable
3、查看二层组播转发表
display l2-multicast forwarding-table vlan X
IGMP SSM Mapping
背景
由于IGMPv1与IGMPv2报文中无法携带组播源信息,只能运行IGMPv1与IGMPv2的老旧终端,无法使用SSM模式的组播网络
原理
在IGMP查询器上静态配置SSM地址的映射规则,将IGMPv1或IGMPv2成员关系报告中的组信息映射为源组信息(静态的将组播源与组播组进行绑定-(*,G)转化为(S,G))
处理机制
运行IGMPv3-前提
1、IGMPv1或IGMPv2报告报文携带的组播组地址必须在SSM地址范围内,否则还是只能使用ASM模型
2、组播组地址在SSM的范围内
没有SSM静态映射,丢弃处理
有,按照映射信息提供SSM服务
3、IGMP SSM Mapping不处理IGMPv3的报告报文
配置
1、开启IGMP SSM Mapping
[Huawei-GigabitEthernet0/0/0]igmp ssm-mapping enable
2、配置静态SSM映射关系
[RouterD-igmp] ssm-mapping 232.1.1.0 24 10.10.1.1
3、查看静态映射
display igmp ssm-mapping
IGMP snonping proxy
IGMP配置
1、开启组播功能
multicast routing-enable
2、开启IGMP功能
[Huawei-GigabitEthernet0/0/1]igmp enable
3、配置IGMP版本
[Huawei-GigabitEthernet0/0/1]igmp version
默认版本2
4、查看配置
查看接口上IGMP配置和运行信息
display igmp interface
查看加入组播组的成员信息(组表项)
display igmp group
组地址
报告者
上线时间
老化时间
PIM原理与配置
概述
PIM(Protocol Independent Multicast,协议无关组播)
作用
构建组播分发树,形成组播路由表
基本概念
PIM路由器
接口使能PIM的路由器
PIM路由表项
通过PIM协议建立的组播协议路由表项
上游接口
接收组播流量的接口
下游接口
发送组播流量的接口
组播分发树的特点
无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发
PIM
目前常用版本是PIMv2,PIM报文直接封装在IP报文中,协议号为103,PIMv2组播地址为224.0.0.13
协议无关组播
协议无关指的是与单播路由协议无关,即PIM不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF检查,检查通过后创建组播路由表项,从而转发组播报文。
PIM模式
分类
PIM-DM(PIM-Dense Mode,PIM密集模式)
PIM-SM(PIM-Sparse Mode,PIM稀疏模式)
PIM-SM(ASM):为任意源组播建立组播分发树
PIM-SM(SSM):为指定源组播建立组播分发树
服务模型不同
使用场景
PIM-DM
场景
组成员较少且相对密集的组播网络中
原理
建立组播分发树的主要思路是周期性的“扩散-剪枝”刷新SPT,即将组播流量全网扩散,然后剪枝没有组成员的路径,最终形成组播分发树
PIM-SM
场景
组成员较多且相对稀疏的组播网络中
原理
建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用PIM-SM模式不需要全网泛洪组播,对现网的影响较小,因此现网多使用PIM-SM模式
组播分发树分类
SPT(Shortest Path Tree)-源树
以组播源为根,组播组成员为叶子
PIM-DM与PIM-SM均可使用
RPT(RP Tree)-共享树
以RP(Rendezvous Point)为根,组播组成员为叶子
只在PIM-SM中使用
PIM路由表项
分类
(S,G)
建立SPT
(*,G)
建立RPT
S表示组播源,G表示组播组,*表示任意
转发规则
RPF检查通过的情况下,优先按照(S,G)表项转发,如果不存在(S,G)表项,则由组播流量触发(*,G)表项创建(S,G)表项,再根据(S,G)表项指导报文转发
组播路由表项
最后一跳路由器的组播路由表项主要基于PIM路由表项,IGMP组表项和IGMP路由表项汇总形成
详细内容见IGMP
其余组播路由器的组播路由表项主要基于PIM路由表项形成
上游接口
去S的接口
下游接口
IGMP组播表复制
组播路由表项只能基于PIM(S,G)路由表项形成 PIM(*,G)路由表项缺少入接口信息无法形成组播路由表
PIM-DM
PIM-DM采用推的模式转发组播流量
报文
PIM通用报头
Version
2
Type
0:Hello(PIM-DM与PIM-SM都适用)
1:Register(只适用于PIM-SM)
2:Register-Stop(只适用于PIM-SM)
3:Join/Prune(PIM-DM与PIM-SM都适用)
4:Bootstrap(只适用于PIM-SM)
5:Assert(PIM-DM与PIM-SM都适用)
6:Graft(只适用于PIM-DM)
7:Graft-Ack(只适用于PIM-DM)
8:Candidate-RP-Advertisement(只适用于PIM-SM)
9:State Refresh(只适用于PIM-DM)
保留字段
Checksum
PIM消息
Hello
用于PIM邻居发现,协议参数协商,PIM邻居关系维护等
Join/Prune(加入/剪枝)
加入报文用于加入组播分发树,剪枝报文则用于修建组播分发树。加入及剪枝报文在PIM中使用相同的报文格式,只不过报文载荷中的字段内容有所不同
Graft(嫁接)
用于将设备所在的分支嫁接到组播分发树
Graft-ACK(嫁接确认)
用于对邻居发送的Graft报文进行确认
Assert(断言)
用于断言机制
工作机制
1、邻居发现(Neighbor Discovery)
组播转发路径只能在PIM邻居之间建立,所以邻居发现是形成组播分发树的前提条件
邻居发现主要通过PIM Hello包完成,激活PIM的接口每隔30s发送一次Hello报文 邻居维护依靠超时时间,默认105s,如果超时时间内收不到邻居发来的Hello包,则删除邻居关系
Hello报文
Hello消息中无法区分是PIM-DM还是PIM-SM
目的地址为224.0.0.13,TTL值为1
采用TLV格式
关键字段
Holdtime
保持邻居为可达状态的超时时间,默认105s(30s(Hello间隔)* 3.5(系数))
LAN Prune Delay
传递Prune消息链路延时,默认0.5s
Override Interval
执行剪枝前的否决时间,默认2.5s
所以最终剪枝否决等待3s
DR Priority
DR的优先级,默认1,越大越优
[Huawei-pim] hello-option dr-priority 3
State Refresh Capable
邻居状态刷新时间间隔,默认60s
[Huawei-pim] state-refresh-interval 70
初次形成MDT
2、扩散(Flooding)
扩散机制
全网扩散(从组播源→PIM邻居→最后一台路由器)
扩散机制会周期性(默认180s)全网扩散组播数据,周期性扩散的主要目的是探测是否有新成员加组,因此会造成大量的链路带宽资源浪费,所以一般使用“状态刷新机制”加上“嫁接机制”来实现周期性全网扩散感知新成员加组的目的
PIM路由器处理方式
对收到的组播报文先进行RPF检查,检查通过后,创建(S,G)表项,再向所有PIM邻居发送
PIM-DM形成的(S,G)表项老化时间210s,老化时间超时后,仍没有收到新的扩散报文,则删除(S,G)表项
3、断言(Assert)
背景
组播转发网络中的一个网段有多个PIM邻居
共享网段的上游设备
既发也收同一份组播报文
共享网段的下游设备
收到重复的组播报文
断言机制
保证只有一个PIM路由器向该网段转发组播报文,在接收到邻居路由器发送的相同组播报文后,会向该网段发送断言(Assert)报文,进行Assert选举
断言机制选举
角色
Assert Winner
负责后续对该网段组播报文的转发
Assert Loser
不会对该网段转发组播报文
动作
1、将该网段从(S,G)表项下游接口列表中删除
不发
2、发送剪枝报文,剪掉Winner(避免P2P场景又收到Winner的组播报文)
不收
场景
3、启用定时器180s,Assert保持时间超时后,再次发起断言机制选举。但是不会周期性触发选举机制,因为有状态刷新报文60s一次,收到状态刷新报文后Assert保持时间重置180s
规则
1、去往源的单播路由优先级高的
2、路由开销值小的
3、下游接口IP地址大的
Winner故障
下游接口Down
重新执行嫁接机制,收敛时间105s
上游接口Down
发送一个开销和优先级都是无穷大的断言报文主动放弃Winner角色,立刻收敛
报文
G
组地址
S
组地址/RP地址
RPT位
优先级
开销
4、剪枝(Prune)
剪枝机制
对于没有组成员连接的组播路由器,组播网络无需再将组播流量继续放往该设备。通过剪枝机制,组播网络可以将此类路径剪枝
剪枝条件
设备有(S,G)表项,但是没有下游接口
剪枝动作
剪枝
向上游PIM邻居依次发起剪枝报文,收到剪枝报文的接口从PIM组播路由表中删除,被剪枝的下游接口启动剪枝定时器210s,定时器超时后,恢复转发。剪枝后组播路由表依然保留,如果有新成员加入,执行嫁接动作刷新出接口信息,如果一直没有成员加入,执行状态刷新动作
剪枝报文的确认直接复制原始的剪枝报文信息
剪枝否决
有多个PIM邻居时,收到剪枝报文的上游路由器启动剪枝定时器,3s内收到其它PIM邻居的Join报文,不进行剪枝
P置位标明剪枝
display pim routing-table fsm
维护MDT
一直发送组播数据报文,保证组播路由表项(S,G)一直存在
5、状态刷新(State Refresh)
工作机制
PIM-DM网络中,为了避免被裁剪的接口因为“剪枝定时器”超时而恢复转发,离组播源最近的第一跳路由器会周期性(60s一次)地触发State Refresh报文在全网内扩散
收到State Refresh报文的PIM路由器会刷新剪枝定时器和断言保持时间的状态。被裁剪接口的下游叶子路由器如果一直没有组成员加入,该接口将一直处于抑制转发状态
保证组播路由表项一直存在并且下游接口状态不变
报文
Group
Source
Originator
起源是第一跳路由器,逐跳报文,每经过一个设备改变源
TTL
Assert override标志位
Prune indicator标志位
更新MDT
背景
下行接口一旦被剪枝就无法自动恢复,导致新成员无法加组
更新组播分发树方式
组播路由表超时后((S,G)表项老化时间210s),自动触发“扩散-剪枝”,此种方式不可控
6、嫁接(Graft)
新成员加组后,主动反向建立组播分发路径
嫁接机制
IGMP感知到新成员后,向上游发送Graft报文(间隔3秒发送,直到收到Ack)请求恢复相应出接口转发,收到嫁接消息的接口将其添加在(S,G)下游接口列表中,并回复Ack报文
条件
有(S,G)表项和(*,G)表项,但是没有组播流量,触发嫁接
报文
单播发送,目的地址RPF检查的下一跳地址
配置
PIM-DM配置
[Huawei] multicast routing-enable
[Huawei - GigabitEthernet1/0/0] pim dm
生成组播流量的方式
ping multicast -c 100 239.0.0.1
VLC
查看
查看PIM邻居
display pim neighbor
查看PIM路由表
display pim routing-table
表项中Flag值
act
已经有实际数据到达的组播路由表项
loc
在与组播源网段直连的设备上的组播路由表项
rpt
处于共享树上但不使用共享树数据的路由表项
spt
最短路径树上的路由表项
swt
处在向SPT切换过程中的路由表项
查看IGMP路由表
display igmp routing-table
只有当使能IGMP的接口没有使能PIM协议时,使用该命令才会有显示信息
PIM-SM
PIM-DM在大型网络中的局限性
存在问题
全网扩散组播报文,对网络有一定冲击
无论是否转发组播数据,所有组播路由器都需要维护组播路由表
组成员较为稀疏 的网络,使用“扩散-剪枝”形成转发MDT效率不高
原因
组播网络中大部分组播路由器无法得知组成员的位置
PIM-SM采用拉的模式转发组播流量
PIM-SM(ASM)工作原理
形成MDT
方法
将组成员的位置事先告知某台组播路由器(Rendezvous Point,RP),形成RPT(RP Tree)
组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员
对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT)
优点
只有组播转发路径上的组播路由器需要维护组播路由表
通过RP可以让所有组播路由器获知组成员的位置
避免“扩散-剪枝”机制,提高组播分发树的形成效率
报文
分类
Hello
Join/Prune(加入/剪枝)
Assert(断言)
同PIM-DM
Register(注册)
作用
构建SPT,单播报文,源地址为源端DR,目的地址为RP
内容
N位
空注册位
Register-Stop(注册停止)
作用
停止发送Register注册消息,单播报文,源地址为RP,目的地址为源端DR
几种情况发送
接收者不再通过RP接收发往某组播组的数据
组播数据转发路径已经由RPT切换到SPT
RP不再为某组播组服务
RP收到重复组播流量
RP收到组播数据后没有RPT
内容
源地址S
组地址G
Bootstrap(自举)
作用
BSR选举
发送汇总的C-RP信息
内容
C-BSR优先级
C-BSR地址
多个RP-Set信息
Candidate-RP-Advertisement(候选RP通告)
作用
向BSR发送提供C-RP信息
内容
RP服务的组范围
C-RP优先级
C-RP地址
Hold-Time老化时间150s
汇聚点RP(Rendezvous Point)
作用
处理源端DR注册信息及组成员加入请求,连接SPT和RPT,所有PIM路由器都必须知道RP的地址
生成方式
静态指定
配置
1、指定RP地址的接口可达并开启PIM-SM
2、所有PIM路由器指定RP地址和服务的组播组
[Huawei-pim]static-rp 6.6.6.6
可以接ACL限制服务的组播组,默认为所有组播组服务224.0.0.0/4
动态选举
范围
在多个C-RP(Candidate-RP,候选RP)之间选举出RP
角色
C-BSR(Candidate-Bootstrap Router)
作用
一个组播组只能存在一个BSR,BSR收集C-RP的信息并形成RP-Set信息,然后通过Bootstrap报文将RP-Set信息扩散给所有PIM路由器,PIM路由器收到RP-Set消息后选举出RP
过程
1、C-BSR选举
配置C-BSR的路由器全网周期性(60s-224.0.0.13-TTL=1)的发送Bootstrap消息,所有PIM路由器互相比较这些Bootstrap消息竞选BSR
从不同路由器收到重复的Bootstrap报文进行RPF检查,并且优选IP地址大的
2、收集RP信息
配置C-RP的路由器周期性向BSR单播发送Advertisement报文
只有一个C-RP且和BSR是同一个路由器时,不存在Advtisement报文
3、通告RP
BSR将这些信息汇总为RP-Set,封装在Bootstrap报文中,发布给全网的每一台PIM-SM路由器
4、选举RP
根据RP-Set选举RP
选举规则
1、优先级数值较大的,默认0
2、IP地址较大者
C-RP(Candidate-RP)
选举规则
1、C-RP服务范围内,用户加入的组地址掩码最长
2、优先级数值小的,默认0
3、Hash计算结果大的
计算材料
组地址
掩码长度
RP地址
Hash掩码长度
华为默认值30,思科0
30的特殊性
异组负载
同组负载
Anycast-RP配置
1、配置C-RP和C-BSR
所有C-RP地址一致
2、配置Anycast-RP的地址和负载RP的C-RP地址一致(直接保证Anycast-RP的地址和选举的RP地址一致)
[Huawei-pim]anycast-rp 1.1.1.1
2、配置建立Anycast-RP对等体的本地地址和远端地址
local-address 2.2.2.2
peer 3.3.3.3
4、C-RP的IP地址较大者
配置
C-BSR
[Huawei-pim]c-bsr LoopBack 1
C-RP
[Huawei-pim]c-rp LoopBack 2 group-policy 2000
查看
display pim rp-info
display pim bsr-info
工作机制
形成MDT
RPT构建机制
最后一跳路由器的DR向RP主动建立RPT树
过程
成员端DR收到成员加组消息后,发送Join报文(SWR置位)到RP,沿途组播路由器逐跳创建(*,G)表项,生成一颗以RP为根的RPT
组播源注册机制-形成SPT
注册机制原因
组播源与源端DR之间没有IGMP协议,无法通过IGMP生成PIM(*,G)表项,进而无法发送Join消息形成组播分发树,因此需要组播源注册机制帮助形成源端DR到RP的组播分发树(SPT)
过程
1、源端DR向RP发送单播Register报文,组播数据封装在Register报文中
2、RP解封装Register报文后,添加上下游接口(上-注册接口,下-收到Join接口)基于源IP向源DR发送Join报文,反向建立SPT
有RPT
1、向RPT转发组播流量,收到组播流量的路由器添加上下游接口形成(S,G)表项
2、收到组播流量的路由器复制(*,G)的下游接口到(S,G),发送(S,G)的Join报文
无RPT
1、组播数据丢失
2、向DR发送注册停止报文
3、源端DR每60s发送注册报文触发空注册机制检测RP是否有(*,G)表项
3、有RPT的情况下,收到Join报文的沿途路由器创建(S,G)表项
转发组播数据
问题
形成SPT后,后续组播数据仍然会封装到周期(60s)发送的单播注册报文中,所以RP会收到重复的组播数据报文(一份是原始组播发送的数据,一份是Register报文解封装后的组播数据),而且还加重源端DR与RP的工作量(多了Register报文封装和解封装组播数据)
解决方法
SPT建立后,RP使用Register-Stop报文通知源端DR后续报文可以以组播报文形式发送,不需要再封装Register报文
DR选举机制
背景
源端网络或者成员端网络中,有可能有多台组播路由器转发组播流量,从而造成重复组播报文的问题
解决方法
选举DR(Designated Router)作为源端网络或者成员端网络的唯一组播转发者
DR选举
1、优先级数值越大越优,默认1,Hello报文中携带
2、接口IP地址大的
注意点
对于成员端网络,只在同时开启IGMP和PIM的接口上选举
DR可以充当IGMPv1的查询器
优化MDT
背景
一个组播组对应一个RP,默认所有组播组都是同一个RP,所以带来了一些问题: ①过大的组播流量会对RP形成巨大的负担②一些组播转发路径有可能是次优路径
解决方法
SPT切换机制
DR感知
负载过大
超过转发速率阈值
次优
分叉点(*,G)和(S,G)表项的上游接口不一致
方法
成员端DR会基于组播数据包中的源IP,反向建立从成员端DR到源的SPT
过程
1、成员端DR触发SPT切换机制
2、成员端DR向最短路径发送(S,G)的Join报文建立SPT
3、向次优路径的RP发送剪枝报文直到源端DR,剪除(S,G)的下游接口,不剪(*,G)
注意点
SPT切换过程中可能出现重复组播流量,使用断言机制快速确定下游接口
关闭SPT切换
[Huawei-pim]spt-switch-threshold infinity group-policy 2000
数据包置位
SWR
(*,G)的Join,W表示(*,G)
SR
(S,G)的剪枝出现,R表示RPT
S
(S,G)的Join。只要是PIM-SM模式S就会置位
维护MDT
RPT次优
周期性(60s)发送Prune消息抑制次优接口转发,周期性(60s)发送Join消息维持最优接口转发状态
最短路径如果组播在一段时间后(默认210s)没有流量则SPT树会消失,成员端DR恢复到RP的RPT树
PIM-SM(SSM)工作原理
概述
由于SSM提前定义了组播的源地址,PIM-SM(SSM)直接在成员端DR上基于组播源地址通过Join报文反向建立SPT,无需维护RP、无需构建RPT、无需注册组播源
本质
只要形成(S,G)表项即可
组范围
232.0.0.0/8
工作机制
邻居发现
DR选举
同PIM-DM
建立和维护SPT
主要依赖IGMPv3报文与Join报文
过程
成员端DR收到IGMPv3成员报告报告报文后基于组播源发送Join报文形成SPT,DR周期(60s)发送Join报文维护SPT
PIM-SM(SSM)模型形成的组播分发树会一直存在,不会因为没有组播流量而消失
总结
防止重复报文的机制
RPF检查机制
Assert选举机制
DR选举机制
PIM模型比较
报文总结
PIM-SM基本配置
1、开启组播mu rou
2、接口使能pim sm
3、静态或者动态配置RP
4、可选配置
优先级
时间
静默
[Huawei-GigabitEthernet1/0/0] pim silent