
PIMSM技术白皮书.doc
12页锐捷PIM-SM技术白皮书摘要该文档主要描述PIMSM/协议的基本原理、BSR协议的基本原理、我司的技术特点关键词多播树的生成与裁剪、BSR机制及RP发现、多播报文转发规则、PIM-SSM简介、锐捷PIMSM技术特点技术白皮书修订记录日期修订版本修改章节修改描述作者2008/07/021.0目 录摘要 1关键词 11 缩略语 42 概述 53 技术介绍 63.1 多播树的生成与裁剪 63.1.1 第一阶段:RP树 63.1.2 第二阶段:Register Stop 73.1.3 第三阶段:最短路径树(SPT) 83.1.4 多协议协同工作:(*,*,RP)路由项 103.2 BSR机制及RP发现 103.3 多播报文转发规则 113.4 PIM-SSM简介 114 锐捷PIMSM技术特点 125 结束语 141 缩略语上游接口,下游接口,反向路径转发检查,源树,共享树,(S,G),(*,G),(*,*,RP),(S,G,rpt),多播路由表,多播转发表,BSR,RPl 上游接口(Upstream Interface)对一个指定的源站点S或集会点RP,接收到该源站点或集会点RP所发的数据包且检查正确的接口称为上游接口;l 下游接口(Downstream Interface)对一个指定的源站点S或集会点RP,所有不是上游接口的接口被称为下游接口;l 反向路径转发检查(Reverse Path Forwarding Check:RPF Check)当接收到一个多播包时,路由器将进行RPF检查。
路由器在单播路由表中查找源或集会点的地址,确定多播包是否在到源或集会点的反向路径的接口上被收到如果是,RPF检查成功,多播包将被转发否则RPF检查失败,多播包将被丢弃l 源树(Source Trees)多播分发的最简单方式,它是以多播源为根,向接收者生长的树,因为这种树使用了网络中的最短路径,所以也被称为最短路径树(SPT)l 共享树(Shared Trees)选择网络中某个公共节点为根的树,该公共节点成为指定点(RP:Rendezvous Point)l (S,G)在一个多播报文中,S表示发此多播信息的源地址,G表示这个多播的目的地址,(S,G)可标识特定组和源的多播流l (*,G)表示关于特定多播组G在共享树中的状态,,源可以为任意值l (*,*,RP)表示关于特定共享树所有多播组的状态,组、源可以为任意值l (S,G,rpt)表示关于特定共享树特定(S,G)状态l 多播路由表本文中所指的多播路由表为保存多播路由状态的数据结构,它包含了所有多播分发树的信息l BSRBootstrap Router,分为候选BSR与选中BSR,其中选中BSR将周期性的发送RP集合信息l RPRendezvous Point2 概述PIM-SM是协议无关多播传送稀疏模式(Protocol Independent Multicast-Sparse Mode)的缩写。
它是一种适合于在稀疏环境下使用的多播协议所谓“密集”和“稀疏”指得是网络中组成员的密度假如网络中一个区域出现至少一个组成员的概率很高,即使这个区域很小,它也是一个“密集”区域反之则是“稀疏”区域由于稀疏区域的组成员很少,不能采用密集区域的简单的周期性扩散、剪枝的方法进行多播传输(否则网络的资源不足以应付其开销)所以开发了PIM-SM协议所谓“协议无关”,是指该多播协议不依赖于任何特定的单播协议(如RIP、OSPF等),而是直接利用单播路由表(FIB)作为多播路由信息的基础这种独立的后果是,路由器不试图计算专门的多播路由,它假设从A到B和从B到A的单播路由最短路径是对称的如前所述,在稀疏环境下是不适合采用简单的扩散和剪枝算法的所以PIM-SM借鉴了有核树(CBT)的算法:构造一棵CBT需要从选择一个"核"开始,即网络中将会成为多播组中心的一个固定点,然后接收方就向这个"核"发送"加入"报文所有的中间路由器都会接收这个报文,并把接收该报文的接口标记为属于这个组的树路由器需要为每个组保存一份状态信息,列出所有属于相应树的接口如果接收到"加入"报文的路由器已经是树中的一个成员,那么它就只再标记一次接口属于组;如果这是此路由器收到的第1个join指令,那么它就会向核的方向再进一步转发此指令。
CBT相当于为每个组建立一个生成树对所有的源站点来说,这棵树都是相同的,比起RPF来,它的优点是只需要对每个组记录一个状态(即(*,G)),而不是为一个组和源站点对都记录一个状态(即(S,G))CBT也有一个缺点,即某些源站点和某些接收者之间的路径有可能不是最优的,而且CBT也存在传输集中的问题,因为来自一个给定组的所有源站点的流量都将穿过相同的链路CBT的最大优点在于它将多播数据报的扩张精确限制在所有接收者范围内这一思想比起RPF将第1个分组在被剪枝以前传送给整个网络的方式有严格的区别另外,CBT还有一个重要的优点,同时也是造成CBT的可伸缩特性的原因,这就是状态数量少这里,状态数量只取决于组的数目,而不取决于源站点和组配对的数目在PIM-SM协议中,我们把这个核称之为集会点(RP),把从RP构建的有核树称为RP树(RPT)为了利用RP树的优点,同时为了避免其缺点,PIM-SM设计了从RPT到依据源-组关系的、以源为根的最短路径树(SPT)的切换其切换的门槛变低是目前最新的协议草案draft-ietf-pim-sm-v2-new-06和原有的RFC2362的一个区别,这种区别有利于基于硬件转发的现代路由器(以及三层交换机)的实现。
PIM-SM协议中要解决的另一个问题,就是集会点的选择问题目前通常采用的方法是用Bootstrap Router (BSR)机制,该机制的描述有专门的协议草案协议中还有维护路由器邻居关系,以及在广播型网络中多个路由器的协作问题PIM-SM采用HELLO机制来维护前者,用ASSERT机制来维护后者,具体过程将在下文中描述我们分析的PIM-SM协议遵照如下协议:1、《draft-ietf-pim-sm-v2-new-06,PIM-SM协议详述》; 该文档尽量考虑了对RFC2362的兼容,同时对2362进行了大量改进所以现在实现PIM-SM,应该遵从此文本从draft-ietf-pim-sm-v2-new-05到draft-ietf-pim-sm-v2-new-06只有一些文字上的修改说明该文档已趋于稳定当前最新的标准为RFC 46012、《draft-ietf-pim-sm-bsr-02,PIM-SM的BSR机制》; 是PIM-SM的BSR机制的详细说明,当前最新的标准为RFC 5059具体过程将在下文阐述 3 技术介绍3.1 多播树的生成与裁剪3.1.1 第一阶段:RP树 当一个多播接收者说明它希望接收某个组的多播报文时(通常是通过IGMP或MLD协议),连接这个接收者的一个路由器(当在共享网络上有多个路由器时则是选举出来的指定路由器DR)会向RP发送PIM Join消息。
这个消息被称为(*,G)Join消息该消息将一直传送到RP或者一个已经建立(*,G)路由表项的路由器为止沿途的路由器都将为此建立一个(*,G)的多播路由项于是就生成了一棵以RP为根的树(RPT)这棵树又被称为共享树(Share Tree),因为它是整个组共享的,而不考虑某个特定的多播源显然,相反情况是,当一个路由器发现它连接的所有下游成员都不再想接收这个多播组报文时,它要向RP发一个(*,G) Prune消息于是沿途的路由器可以根据此消息裁剪这棵共享树 当一个多播源希望在这棵树中发送多播流时,连接此源的DR将把多播报文封装在一个单播Register报文中发送给RP,这个过程称为RegistingRP收到此单播后,解开封装,再依照生成的共享树把多播报文分发给所有的接收者整个过程如下所示:图1图2图33.1.2 第二阶段:Register Stop 采用Register报文封装多播流的做法显然是低效率的,而且也难以用硬件进行转发所以当第一个Register报文到达RP后,RP将向多播源所在的指定路由器(DR)发送一个针对源S和相应多播组G的加入报文,即(S,G)Join报文 这个报文在传往源DR的沿途,中间转发的路由器会相应地创建一个(S,G)的多播路由项,于是一棵以S为根到达RP的树建立起来了(此时这个树没有任何分支)。
当S-DR收到此Join报文后,将沿着这个S,G树向RP传输多播报文(就不再进行封装了)为了保证多播流不因此间断,S-DR并不停止封装单播报文于是RP将收到封装和未封装的两份多播报文当RP收到第一个未封装报文时,它将向S-DR发送一个RegisterStop消息S-DR收到此消息后,就不再封装了在这个阶段,多播的流向就变成两段,前半段是从S沿着(S,G)树流向RP,后半段是从RP沿着(*,G)树流向各接收者中间两棵树可能交叉,当出现这种情况时,多播报文应该直接走RPT到达接收者过程图示如下:图4图53.1.3 第三阶段:最短路径树(SPT) 为了避免接收多播报文都要从RP绕一下,接收方的DR可以选择从共享的RPT转移到以S为根的最短路径树(SPT) 切换的过程是,DR建立一个(S,G)多播路由项,通过这个(S,G)状态向源主机的DR发送周期性的(S,G)Join消息沿途路由于是相应建立起了一棵(S,G)树有一点需要注意的是,DR的(S,G)表项中的输出接口列表是从原来建立的(*,G)表项中拷贝过来的 在这时,DR将会收到2份多播数据流,一份是从RPT过来的,一份是从SPT过来的所以当它从SPT的输入接口收到第一个(S,G)多播包后,说明SPT已经建立成功,DR(假如对这个DR而言,RPT和SPT的上游是同一个路由器,那么就从上游RPT和SPT开始分支的地方的路由器)将向RP发送一个(S,G,rpt)Prune消息,来说明它不再想从共享树接收从S来的数据。
如果收到这个Join/Prune报文的路由器中有(S,G)多播路由项,那么它就把这个报文到达的接口从(S,G)输出接口列表中删除掉如果路由器只有(*,G)状态,那么它就生成一个共享树标志位(RPT-bit)被设置为1的(S,G)多播路由项,我们称之为带有RPT-bit的(S,G)表项以区别于一般的(S,G)表项需要注意的是一个路由器不能同时有带有RPT-bit的(S,G)表项和一般的(S,G)表项 过程如下所示:图6图73.1.4 多协议协同工作:(*,*,RP)路由项为了支持协同工作能力,一种特殊的表项类型(*,*,RP)必须被所有的PIM路由器支持PMBR(多播边界路由器,PIM Multicast Border Routers)为在PIM域中的每个候选RP初始化(*,*,RP)状态,而这个状态促使PMBR向域中的每个活动RP发送(*,*,RP)Join消息通过这种方式,以RP为根的分布树就被建立了,所有在PIM域。
