PIM简介
组播源向组播地址发出组播报文,经过中间网络路由到达组播组所有成员。为使中间网络能够实现组播报文的复制和转发,必须为网络中的路由器配置组播路由协议。
PIM(Protocol Independent Multicast)称为协议无关组播,作为一种组播路由解决方案,在实践中得到广泛的应用。
一.PIM转发基础
网络中单播路由畅通是PIM转发的基础。
PIM利用现有的单播路由信息,对组播报文执行RPF(Reverse Path Forwarding)检查,从而创建组播路由表项,构建组播分发树。
PIM不维护专门的单播路由,也不依赖某具体的单播路由协议,它直接利用单播路由的结果。
为PIM提供单播路由信息的可以是静态路由、RIP、OSPF、IS-IS、BGP等任何一种单播路由协议。
二.PIM支持的组播模型
ASM(Any-Source Multicast)模型
ASM(Any-Source Multicast)模型目前包括PIM-DM(Protocol Independent Multicast Dense Mode)和PIM-SM(Protocol Independent Multicast Sparse Mode)两种模式:
l PIM-DM称为协议独立组播-密集模式。适合规模较小、组播组成员相对比较密集的局域网。
l PIM-SM称为协议独立组播-稀疏模式。适合网络中的组成员相对比较稀疏,分布广泛的大型网络。
有关专家在47个组播节点,5个组播源的网络环境下,分别应用PIM-DM和PIM-SM,测量了数据报文和控制报文占用的网络带宽、路由器的处理开销。实验的结果如表3-1。
表1-1 组播协议实验结果
考察对象 |
组播成员分布状况 |
试验结果 |
占用的网络带宽 |
大于42% |
PIM-SM发出的包比PIM-DM多。 |
小于42% |
PIM-SM发出的包比PIM-DM少。 |
|
路由器上的路由表项个数 |
小于32% |
PIM-SM协议维护的路由表项个数少。 |
32%~58% |
两种路由协议情况下,路由表项个数相当。 |
|
大于58% |
PIM-DM协议维护的路由表项个数少。 |
SSM(Source-Specific Multicast)模型
如表3-2所示,SSM模型使用了和ASM不同的组播地址范围。
表1-2 D类组播地址范围及含义
D类地址范围 |
含义 |
224.0.0.0~224.0.0.255 |
预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用 |
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 |
本地管理组播地址,仅在特定的本地范围内有效。 |
SSM模型借助PIM-SM的部分技术和IGMPv3来实现。
注意:必须保证路由器上连接用户主机的接口使能IGMPv3。如果用户主机上的IGMP版本无法升级,则在路由器上配置SSM Mapping,也可以实现SSM。
用户通过IGMPv3消息向直连网段发送Report消息。路由器接收到此消息后判断组地址是否在SSM组地址范围内。
l 如果在SSM组地址范围内,且Report消息中指定了组播源地址,则应用SSM模型。
l 如果在SSM组地址范围内,但是Report消息中未指定组播源地址,则丢弃消息。
l 如果组地址不在SSM组地址范围内,则按照PIM-SM流程应用ASM模型。
VRP允许用户使用配置命令,自行设定SSM组地址范围。
三.PIM基本概念
1.PIM路由器
支持PIM协议的组播路由器称为PIM路由器。使能了PIM协议的接口称为PIM接口。
2.PIM域
由PIM路由器所组成的网络称为PIM网络。
通过在路由器接口上设置“边界”,可以将一个大的PIM网络划分多个PIM域。“边界”可以拒绝特定组播报文的传输,或者限制PIM控制消息的传输。
3.组播分发树
在PIM组播域中,以组播组为单位建立一点到多点的组播转发路径。由于组播转发路径呈现树型结构,也称为组播分发树。
l 以组播源为根,组播组成员为叶子的组播分发树称为SPT(Shortest Path Tree)。SPT同时适用于PIM-DM和PIM-SM。
l 以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树称为RPT(RP Tree)。RPT仅适用于PIM-SM。
组播分发树的特点:
l 无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。
l 被传递的组播数据在尽可能远的分叉路口才开始复制和分发。
4.叶子路由器
与用户主机相连的PIM路由器称为叶子路由器。
第一跳路由器
与组播源直接相连且负责转发该组播源发出的组播数据的PIM路由器。
最后一跳路由器
与组播组成员(通常为接收者主机)直接相连且负责向该组成员转发组播数据的PIM路由器。
中间路由器
组播转发路径上,第一跳路由器与最后一跳路由器之间的PIM路由器。
四.PIM路由表项
从路由器的角度观察,组播转发可以简化为:组播报文从唯一的上游接口到达,从一个或多个下游接口发送出去。图3-1显示了以Router A为行为主体的组播转发(组地址为225.1.1.1)。
图1-1 组播转发
上游
l 上游:组播数据到达的方向。通常,将组播数据转发过来的路由器或组播源称为本路由器的上游。以图3-1为例,Router A的上游为Router B。
l 上游接口:本地路由器上接收到组播数据的接口。以图3-1为例,Router A的上游接口为POS2/0/0。
l 上游网段:上游接口所在网段。以图3-1为例,Router A的上游网段为10.1.2.0/24。
下游
l 下游:将组播数据发送出去的方向。通常,发送出去的组播数据到达的路由器或接收者主机称为本路由器的下游。以图3-1为例,Router A的下游为Router C和Host1。
l 下游接口:将组播数据转发出去的接口。以图3-1为例,Router A的下游接口为GE1/0/0和GE3/0/0。
l 下游网段:下游接口所在网段。以图3-1为例,Router A的下游网段为10.1.1.0/24和10.1.3.0/24
PIM路由表项
组播路由表收录所有PIM路由表项,并下刷到转发表中,由转发表项直接指导组播报文转发。PIM中存在两种转发表项:(S,G)或(*,G)。S表示组播源,G表示组播组,*表示任意。
l (S,G)只适用于源地址为S,组地址为G的组播报文。通常,将源地址为S,组地址为G的组播报文表示为(S,G)报文。
l (*,G)适用于组地址为G的组播报文。即:不论是哪个组播源发出的,只要是发往组播组G的组播报文,都应该从(*,G)表项中的下游接口转发出去。
PIM路由器上可能同时存在多种转发表项。当收到源地址为S,组地址为G的组播报文,且通过RPF检查的情况下,按照如下的规则转发:
l 如果存在(S,G)表项,则由(S,G)表项指导报文转发。
l 如果不存在(S,G)表项,则先依照(*,G)表项创建(S,G)表项,再由(S,G)表项指导报文转发。
以中Router A上的PIM路由表为例。
***-instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.1.8.1, 225.1.1.1)
Protocol: pim-dm, Flag: ACT
UpTime: 01:35:25
Upstream interface: Pos2/0/0
Upstream neighbor: 10.1.2.2, RPF prime neighbor: 10.1.2.2
Downstream interface(s) information:
Total number of downstreams: 3
1: GigabitEthernet3/0/0
Protocol: pim-dm, UpTime: 00:03:21, Expires: never
2: GigabitEthernet1/0/0
Protocol: pim-dm, UpTime: 00:03:27, Expires: never
其中用于指导转发的信息如下:
l 源地址:10.1.8.1/24
l 组播组地址:225.1.1.1
l 上游接口:POS2/0/0。上游邻居为10.1.2.2,RPF邻居为10.1.2.2。
l 下游接口列表:包括GE1/0/0和GE3/0/0。