概述:

这里我们知道了PM SM模型中可以分多个区域,并且同一个BSR发送的Bootstrap报文只能够在同一个区域中泛洪,减少泛洪的范围,更好管理。并且这样通过BSR限定RP作用发范围(只有这个区域内的设备才会收到这个RP信息),对整个区域中的组播信息进行管理,这样显得更加方便管理。但是这也是有问题的,比如一些区域的组播其他区域需要本组播的流量,但是因为自己的RP中没有对应的(S,G)条目,所以无法获取,所以为了让另一个区域的设备能够获取对应的组播流量,MSDP协议诞生了。

MSDP (组播源发现协议)用在组播多域环境和AnycastRP场景下,在RP间通告组播组及组播源的信息的协议。MSDP 工作在TCP之上,服务端口号是639。MSDP 邻居的建立都是由低地址向高地址主动建立的。

在多域环境中,一个组播组的成员或组播源可以分布在多个组播域中,每个域内有各自的RP。例如,如果在一个域中有229.1.2.3组播组的源,而其他的域中也有229.1.2.3组播组的接收者,接收者已建共享树到该域的RP,问当前域的接收者如何收到其他域的组播报文呢?

MSDP不是用来在不同域的RP间传递组播数据的协议,它是在RP间使用SA报文传递(S,G)信息的协议,在SA报文中包含当前活跃的组播源地址、组地址及起源RP的信息。SA报文用来告知其他域中RP当前活跃的组播源的位置,使RP可直接向指定源建SPT树。

如下图所示是一个组播多域环境。当Source活跃后,R1发送注册报文给R2。R2作为起源RP,使用MSDP向其他MSDP对等体通告SA,R4是MSDP中继,转发SA到有接收者的RP,R5和R6是MSDP对等体,根据收到的SA中的s开始SPT切换,最终组播!数据按R1-R6-R5和R1-R6-R7转发给接收者。

MSDP 路由器的类型及部署结构:

一.在RP上创建的MSDP对等体

源端MSDP对等体:离组播源(Source) 最近的MSDP对等体(通常是源端RP,如图a中的R1);源端RP创建SA消息并发送给远端MSDP对等体,通告在本RP上注册的组播源信息。源端MSDP对等体必须配置在RP上,否则将无法向外发布组播源信息。

接收者:端MSDP对等体:离接收者(Receiver)最近的MSDP对等体(如图a中的R3),接收者端MSDP对等体在收到SA消息后,根据该消息中所包含的组播源信息,加入以该组播源为根的SPT;当来自该组播源的组播数据到
达后,再沿RPT向本地接收者转发。接收者端MSDP对等体必须配置在RP上,否则无法接收到其他域的组播源信息。

中间MSDP对等体:拥有多个远端MSDP对等体(如图b中的R2),中间MSDP对等体把从一个远端MSDP对等体收到的SA消息转发给其他远端MSDP对等体,其作用相当于传输组播源信息的中转站,可以对SA做集中控制或过滤。

二. 在非RP上创建MSDP对等体

普通的PIM路由器(非RP)上创建的MSDP对等体,可接收任何MSDP对等体发送过来的SA。RPF 检查通过后,向其他MSDP对等体转发。中间MSDP设备R2并不是RP,所以不会产生SA报文,只能接收且转发,R2 被称为MSDP中继。

使用扩展性、灵活性强的MSDP会话在RP间传递(S,G)的信息可适用于任何复杂的环境,如下图所示。

R4虽不是RP,但在MSDP拓扑中,可起到MSDP中继的作用。R1-R4、R4-R2 及R1-R3间各有MSDP会话,MSDP 可以配置在RP和non-RP的任何组播路由器上,非RP的MSDP路由器只能接收SA,转发SA,如图下所示。而如果MSDP路由器是RP,则可以产生、转发及根据SA中(S,G) 发起SPT切换。

MSDP机制:

MSDP报文类型有多种,SA (Source-Active)、SA-Request 及SA-Response、周期性Keepalive 等。其中,SA报文的作用是在RP间通告(S,G) 信息。

MSDP对等体之间通过交互SA消息共享(S,G)信息。为了避免SA消息中的S,G)表项超时导致远端用户无法收到组播源的数据,可以选择在SA消息中封装组播数据报文。

SA报文内容:

  1. 起源RP的地址10.1.100.100,代表SA起源于该RP,任何接收该SA的MSDP对等体,先对其中的源RP地址做RPF检查,检查通过后转发给所有其他MSDP对等体,按RPF转发可避免转发环路。
  2. (S,G) block::MSDP 中可包含多个(S,G) block, 记录了起源RP了解的所有源及组的信息。
  3. 可封装RP上收到的组播数据(此功能可选,华为设备默认未开启)。

SA报文的产生过程:

当一个RP从组播源所在的DR上收到注册报文后,根据注册报文中的组播数据信息创建MSDP SA报文,并将其向当前RP所有已建立起来的MSDP会话发送。任何接收的MSDP设备再继续转发SA给其他MSDP对等体。如果不加控制,图中,R1转发SA到R2,R2经R3转发给R4,R4会转发给R5,R5可以转发给R6,如果R6继续再转发SA给R1, SA转发环路就出现了。所以,当SA在转发过程中,每个接收MSDP对等体先对收到的SA报文做RPF检查,通过RPF检查后,再转发SA。由于SA消息是周期性发送的,当域内出现新的组用户时,要等待一个周期内的SA消息以获取有效的(S,G)信息。为了降低新组用户加入源SPT的时延,MSDP提供了Type2和Type3的SA-Req消息与SA-Resp消息,以提高活动源信息更新的效率。

缓存机制:
MSDP对等体收到SA报文,会缓存收到的MSDP报文,以降低获取组播信息的延迟时间,开启SA消息缓存机制,即在本地SA Cache中缓存SA消息所包含的(S, G)表项。当收到一个新的组加入消息(*,G) 时,设备首先会查找SA缓存。

  1. 如果缓存中有对应的(S,G), 则直接加入以s为根的SPT。
  2. 如果缓存中没有对应的(S,G), 便等候其MSDP对等体在下一个周期发来的SA消息。

为减少不必要的域间流量,MSDP对等体发送SA消息的周期通常较长,这将导致新组用户加入源SPT的时延较大。建议在本地RP上使能“SA请求”,在远端MSDP对等体上使能“SA缓存”(华为设备默认开启“SA缓存”)。

SA消息的RPF检查规则:
执行RPF检查的目的是要求MSDP理解到起源RP的逻辑拓扑,这使MSDP能够决定经过哪个对等体到起源RP最近,MSDP本身并不包含任何用于决定如何到源RP的拓扑信息。

为了防止SA消息在MSDP对等体之间被循环转发,MSDP对接收到的SA消息执行RPF检查,在消息传递的入方向上进行严格的控制。不符合RPF规则的SA消息将被丢弃。

RPF检查的主要规则为:MSDP设备收到SA消息后,根据MRIB (Multicast RPFRouting Information Base)确定到源RP (即创建该SA消息的RP)最佳路径的下一跳是哪个对等体,这个对等体也称为“RPF对等体”。如果发现SA消息是从RPF对等体发出的,则接收该SA消息并向其他对等体转发。MRIB包括: MBGP、组播静态路由、单播路由(包括BGP、IGP)。此外,SA消息在转发时还遵守以下的一些RPF检查规则:

  1. 发出SA消息的对等体就是源RP,接收该SA消息并向其他对等体转发。
  2. 接收从静态RPF对等体到来的SA消息。一台路由器可以同时与多个路由器建立MSDP对等体关系。用户可以从这些远端对等体中选取一个或多个, 配置为静态RPF对等体。
  3. 如果一台路由器只拥有一个远端MSDP对等体,则该远端对等体自动成为RPF对等体,路由器接收从该远端对等体发来的SA消息。
  4. 发出SA消息的对等体与本地路由器属于同一Mesh Group, 则接收该SA消息。来自Mesh Group的SA消息不再向属于该Mesh Group的成员转发,但向该MeshGroup之外的所有对等体转发。
  5. 到达源RP的路由需要跨越多个AS时,接收从下一跳AS (以AS为单位)中的对等体发出的SA消息,如果该AS中存在多个远端MSDP对等体,则接收从IP地址最高的对等体发来的SA消息。

MSDP对等体建立过程:

MSDP对等体通过TCP连接建立,使用端口639。两台设备使能MSDP并互相指定对方为MSDP对等体后,两端先比较IP地址,IP地址较小的一端会启动连接重试定时器(ConnectRetry timer),并主动发起TCP连接。IP地址较大的一端负责确认是否有TCP连接在端口639建立。TCP连接建立后,MSDP对等体关系就建立了,对等体之间通过KeepAlive消息维持连接关系。

  1. 起始状态下,两台路由器的MSDP会话状态都是Down。
  2. 在两端使能MSDP并互相指定对方为MSDP对等体后,两端比较建立连接使用的地址:
    • RouterA的地址较小,进入Connect状态,向RouterB发起连接,并启动ConnectRetry定时器。该定时器用于定义连接重试的周期。
    • RouterB的地址较大,进入Listen状态,等待对端进行连接。
  3. TCP连接建立成功后,两端的MSDP会话进入Up状态。
  4. MSDP对等体两端发送KeepAlive消息,通知对方保持MSDP连接状态。

MSDP认证:

在TCP连接建立时进行加密认证,可以保证安全性。配置了认证功能后,MSDP对等体两端必须都使用相同的加密算法和密码,才能正常建立TCP连接,否则不建立连接。MSDP支持MD5和Keychain两种加密方式,二者在使用时互斥,MSDP对等体之间只能选择一种方式加密。

组播多域环境下实验:


拓扑描述:
在这个环境中,有两个AS,分别也是两个BSR区域,并且R3和R4为区域的边界,首先进行IP地址的配置,并且所有路由器上都配置回环口,作为RP或者BSR,AS1和AS2内部分别用OSPF实现全网的互通,并在所有路由器上开启组播路由表,接口开启pim sm模式(需要注意R3与R4互联接口也需要开启pim,这样才能通行组播流量),在R6的g0/0/1口还开启IGMPv2,然后R3和R4作为EBGP邻居,分别通告组播源所在的条目172.16.1.0/24和10.1.1.0/24进入BGP路由中,然后再重分发进自己的OSPF区域,现在进行ping测试,PC1pingMCS1组播源,查看单播路由是否是通的,只有单播路由是通的才能保证组播流量能够正常通信:成功

具体步骤:

  1. 进行边界的配置:在R3上和R4上进行配置,设置为组播组225.1.1.2的边界:
    R3:[R3-GigabitEthernet0/0/1]multicast boundary 225.1.1.2 32
    R4:[R4-GigabitEthernet0/0/0]multicast boundary 225.1.1.2 32

  2. 然后将R3作为BSR,R2作为RP;R6作为BSR,R5作为RP,在组播源上进行组播的下放流量:组播组是225.1.1.2:

    在PC上进行接收:

  3. 现在在AS1的PR–R2上查看对应的流量是否注册:已经注册成功,产生了(* ,G)的组播路由。

    现在PC1机器上去请求加入该组,然后在AS2的RP–R5的上查看:发现只有(,G)的条目,这是R6向RP发送Join报文产生的结果,但是RP上没有(SG)的条目,是无法引入流量的,但是R6因为收到不AS1中的BSR发送的C-RP消息,所以肯定无法直接发送Join报文到AS1中的RP,还是只能找自己区域中的RP,我们只有通过MSDP协议,使得两个RP的组播源信息能够互相通信。

  4. 在两个AS中的RP上进行msdp配置:
    R2:
    msdp //进入msdp域下
    peer 5.5.5.5 connect-interface LoopBack0 //配置对应的邻居和自己建立的接口,这两个接口需要单播互通,所以需要将其通告进入BGP中
    R3:
    msdp
    peer 2.2.2.2 connect-interface LoopBack0

  5. 然后查看msdp是否建立成功:状态为up,表示成功

    然后查看是否有共享SA的缓存,缓存是R2发给R5的,R5上并没有(S*G)的条目,所以不会发送给R2,在R5上查看:我们可以看到已经获取了R2发来的条目了:

    对于msdp报文:应用层报文,并且通过TCP发送,TCP会发送ACK进行确认,保证了可靠性。

    以类型1的Source-Active报文为例子:

    • RP address:起源RP的地址2.2.2.2,代表SA起源于该RP,任何接收该SA的MSDP对等体,先对其中的源RP地址做RPF检查,检查通过后转发给所有其他MSDP对等体,按RPF转发可避免转发环路。
    • (S,G) block::MSDP 中可包含多个(S,G) block,记录了起源RP了解的所有源及组的信息。本报文中存在一个Block信息,组播组地址225.1.1.2,组播源地址,172.16.1.254。

  6. 这样AS2的RP有了(S,G)的条目已经就知道组播源,然后通过join消息一步一步发送Join到第一跳路由器R1即可。如下join报文表示中含有的组和源:

Anycast RP应用:

在PIM-SM中,每个组播组只允许一个活跃的 RP,即任何时候只有一个RP服务于一个组播组。但单RP带来的问题是流量过于集中,缺少可扩展性,组播源的注册及接收者周期维护RPT树致RP开销过大,尤其是当RP失效时的收敛慢及可能的组播包的次优转发路径,使单RP方案使用有限制。

Anycast RP是一种在 PIM组播域内为一个组播组提供多个活跃的RP的机制。这些RP同为一个组播组服务,RP 之间能够解决RP失效时收敛时间过长的问题。它的容错恢复机制和负载分担能力使AnycastRP机制成为域内组播应用部署的最佳方案。

在组播域内,定义多个RP,使用相同的IP地址作为RP,建议使用回环接口的IP地址,并把回环接口发布到IGP中,使其全网可达。出现在多个RP上的这个IP地址可叫做Anycast地址,其好处可使任何位置的设备直接查其路由表找到离它最近的RP。如果组播源和接收者同时执行注册和建RPT树的过程,二者可能选择的是拥有相同IP地
址的不同RP。

在全网的组播路由器都认定Anycast地址为相应组播组的RP时,在下图中,Source为组播源,当其活跃时,DR路由器R4发注册报文到离它最近的RP1,即R1,而R6后面的组播组的接收者则注册到RP2,即R3。

RP1收到注册的组播报文,据此了解组播源的位置,RP1可使用MSDP会话传递SA报文给RP2,完成RP间的(S,G) 的通告。

RP之间可使用MSDP协议,也可以不使用MSDP协议在RP间传递(S,G) 信息。域内部署Anycast RP,可以实现以下内容:

  1. RP路径最优:组播源向距离最近的RP进行注册,建立路径最优的SPT;接收者向距离最近的RP发起加入,建立路径最优的RPT。
  2. RP间的负载分担:每个RP上只需维护PIM-SM域内的部分源/组信息、转发部分的组播数据,从而实现了RP间的负载分担。
  3. RP间的冗余备份:当某RP失效后,原先在该RP上注册或加入的组播源或接收者会自动选择就近的RP进行注册或加入操作,从而实现了RP间的冗余备份。切换时间由IGP协议的收敛时间决定,例如,上图中,R3路由器为RP2,若暂时离线,下游的接收者不需知道当前使用的是哪个RP, 所以(* ,G) Join报文会在下个周期发送给R1, RPT 共享树将在R1-R2-R5-R6间建立起来。当然,若Switchover机制已经完成,组播报文经R4-R5-R6 流给接收者,此时,RP2离线,对组播数据的接收没有影响,若不考虑( * ,G) Join的发送周期的影响,可认为组播RP2离线后,接收者或组播源了解到新RP完全由IGP协议的收敛时间决定。

RP 和BSR处于同一台物理设备中。C-RP 地址使用Anycast地址,而C-BSR地址可使用其他地址。RP1和RP2之间通告(S,G) 的机制主要有两种,方案相似:

  1. 在RP间使用MSDP协议,通告活跃的源/组的信息,使用SA报文。
  2. 在RP间建立全互联的PIM邻居关系,并在此邻居关系基础之上, 转发起源RP收到的注册报文。

整理资料来源:《HCIE路由交换学习指南》、华为Hedex文档

MSDP技术原理与实验相关推荐

  1. 计算机微机原理及接口技术实训室,《微机原理与接口技术》课程实验报告.doc...

    <微机原理与接口技术>课程实验报告 实验一基本操作 一.实验目的 ? 1.熟悉Netlab MCS-51单片机实验系统的设置和使用方法 2.掌握基本MCS-51软件的编写.修改和编译的方法 ...

  2. 南京邮电大学微型计算机原理与接口技术实验,南京邮电大学《微机原理与接口技术》上机实验参考答案(四次全).pdf...

    南京邮电⼤学 <微型计算机原理与接⼝技术> 上机实验 汇编语⾔参考程序(四次全) 1 第⼀次 • 实验 1.3.1 "排除语法错误" • 实验 3.1.1 " ...

  3. 微型计算机音乐发生器,微机原理及接口技术音乐发生器实验.doc

    微机原理及接口技术音乐发生器实验 微机原理及接口技术音乐发生器实验发生器音乐发生器)) Y N N (图2.2.1) 符号-频率对照表: 音符1 2 3 4 5 6 7频率131 147 165 17 ...

  4. 信息安全原理与技术第二次实验:防火墙设置

    信息安全原理与技术第二次实验:防火墙设置 前言 一.实验目的 二.实验原理 三.实验环境 四.实验内容 五.思考题 前言 为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSD ...

  5. 《单片机技术及原理》实验总结

    <单片机技术及原理>实验总结 实验1~实验7配套内容 实验1 MCS-51内部并口实验 实验2 MCS-51外部中断控制实验 实验3 MCS-51内部定时/计数器实验(1) 实验4 MCS ...

  6. 微型计算机排除语法错误,南京邮电大学《微机原理与接口技术》上机实验参考答案(四次全)...

    南京邮电大学<微型计算机原理与接口技术>上机实验答案.包含全部四次试验内容,涵盖汇编语言源程序和硬件连接指导等. 第 一次 实验1.3.1 "排除语法错误" 实验3.1 ...

  7. 清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的!...

    来源:AI科技评论 不久前,DeepMind 的团队发布了一个可以自动生成竞赛级代码的人工智能系统--AlphaCode,号称「媲美普通程序员」,一经发表就在国内外的AI圈里引起了巨大轰动. -论文地 ...

  8. c语言的适当大小的子集,编译原理上机实验报告

    编译原理上机实验报告,编制C语言子集的词法分析程序,编制递归下降法的语法分析程序 编译技术上机实验题目 实验一 一.题目 编制C语言子集的词法分析程序 二.目的 通过设计.编制.调试一个具体的词法分析 ...

  9. 【AI不惑境】模型量化技术原理及其发展现状和展望

    大家好,这是专栏<AI不惑境>的第十篇文章,讲述模型量化相关的内容. 进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考.如果说学习是一个从模仿,到追随,到创造的过程,那么 ...

  10. 《编译原理》实验报告——递归下降语法分析器的构建

    一.实验要求 运用递归下降法,针对给定的上下文无关文法,给出实验方案.预估实验中可能出现的问题. 二.实验方案 1.构造LL(1),通过设计.编制.调试递归下降语法分析程序,对输入的符号串进行分析匹配 ...

最新文章

  1. python语法中infile语句_浅谈pymysql查询语句中带有in时传递参数的问题
  2. java拉姆达表达式事例,Java Lambda表达式详解和实例
  3. WIN7的MKLINK命令,创建文件(夹)连接(链接)
  4. 对称矩阵、Hermite矩阵、正交矩阵、酉矩阵、奇异矩阵、正规矩阵、幂等矩阵
  5. 什么是 ABAP Field Symbol
  6. 实例37:python
  7. 阿里云文件存储的高性能架构演进之路
  8. django models 文件夹
  9. knn算法python代码_在python中使用KNN算法处理缺失的数据
  10. java 接口 单元测试_java单元测试之如何实现异步接口的测试案例
  11. 打补丁更新不适用计算机,安装补丁“此更新不适用于你的计算机”解决办法
  12. Android实用视图动画及工具系列之六:通用表情栏,仿QQ微信聊天弹出表情选框
  13. oracle使用with递归查询
  14. On the Use of BERT for Automated Essay Scoring: Joint Learning of Multi-Scale Essay Representation学习
  15. 【jieba获取关键词】
  16. win10使计算机进入睡眠状态什么意思,技巧:如何在win10中进入睡眠模式计算机睡眠模式设置教程...
  17. 学计算机得肩周炎,肩周炎的拔罐疗法
  18. 在word中怎么把文字往下挪挪_word流程图中的文字怎样统一调整其大小字...
  19. SQL server 触发器实例讲解
  20. 关于配置双数据源报错org.apache.ibatis.binding.BindingException: Type interface is not known to the MapperRegis

热门文章

  1. 寄存器的偏移地址是什么意思?还有基地址,偏移地址就是相对于及地址的offset
  2. 【NDN安全】Poseidon: Mitigating Interest Flooding DDoS Attacks in Named Data Networking 学习笔记
  3. 修改网页logo图片
  4. 第十一章:项目风险管理 - (11.5 规划风险应对)
  5. 立帖为据,每日学习一课编程技术
  6. 希捷服务器硬盘有什么用,NAS储存有什么用?配置什么硬盘?
  7. 对视频图像进行OSD叠加
  8. pngquant failed to build, make sure that libpng-dev is installed
  9. 重启网络显示:Device eth0 does not seem to be present,delaying initialization.
  10. 大数据下的精准实时监控系统 | Promethus or Zabbix?