组播MSDP-原理介绍+报文分析+配置示例--RFC3618

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

在这里插入图片描述

因此本文将在MSDP协议(Multicast Source Discovery Protocol,组播源发现协议)RFC文档及报文的基础上进行介绍,以详细介绍组播协议MSDP。
这里需要说明的是MSDP的使用条件是PIM-SM环境下,而PIM-SM一般又是基于ASM模型的。下文将对其进行介绍。关于PIM-SM环境相关内容,可参考博客组播PIM-原理介绍+报文分析+配置示例

关于MSDP的RFC相关内容,可参考2003年发布的RFC3618-Multicast Source Discovery Protocol等相关内容
此时之外还有其他补充说明的RFC3446
RFC3618文档本身只有19页,也推荐大家去阅读原文。

目录

1.组播基础内容

1.1.组播IP

传统分类网络进行地址分配时,将IPv4网络分为5类。
A类:1.0.0.0-126.0.0.0
B类:128.0.0.0-191.254.0.0
C类:192.0.0.0-223.255.255.0
D类:224.0.0.0-239.255.255.255
E类:240.0.0.0-239.255.255.255,保留地址

Note:224=1110 0000(2进制);239=1110 1111(2进制)。也即组播IP前4bits固定为1110

其中D类地址称为组播IP。虽然目前CIDR无类域间路由和VLSM可变长子网掩码的出现淡化了IP分类,但组播IP范围并未发生变化。
其中组播IP又可进行如下划分

224.0.0.0-224.0.0.255==预留永久组播地址
//通常为协议所使用,例如OSPFv2使用224.0.0.5和224.0.0.6
224.0.1.0-231.255.255.255
233.0.0.0-238.255.255.255
//ASM(Any Source Multicast)模型使用
232.0.0.0-232.255.255.255
//SSM(Source-Specific Multicast)模型使用
239.0.0.0-239.255.255.255
//本地管理组地址。也即私网组播IP。

1.2.组播MAC

MAC地址为48bits,6字节。
1@第1个字节的最后1个bit=1,表明该MAC为组播MAC。否则表明为单播MAC
2@并且MAC地址的前3个字节24bits称为OUI厂商标识,需要向IEEE购买分配。后24bits,由厂家自行分配。
3@组播MAC由于没有明确的目的主机,因此规定组播MAC由组播IP映射而来。映射规则如下:

组播MAC的高24bit=0x01005e;
组播MAC的第25位bit固定为0;
组播MAC的剩余后23bit由组播IP的后23bit直接对应而来。
组播IP实际上有32-4=28bits,因此存在5bits数据无法进行对应

实际上每2^5=32个组播IP对应一个组播MAC。

此外还有协议规定组播MAC:
01-80-c2为IANA规定的协议组播MAC。
例如01-80-c2-00-00-00用于BPDU组播MAC,集成ISIS使用01-80-c2-00-00-14和01-80-c2-00-00-15等

点击此处回到目录

2.MSDP简介

MSDP协议(Multicast Source Discovery Protocol,组播源发现协议)主要是用于在组播跨域场景下进行使用。
这一概念与MPLS L3VPN有异曲同工之妙,不过这里域主要是指PIM-SM域
在正式介绍MSDP协议前,有必要进行相关内容的铺垫说明。
1@MSDP的跨域
在工程应用上,势必上要存在多个PIM-SM网络。而每个PIM-SM网络却并不一定都有组播源。
而MSDP的作用在于建立MSDP对等体去通告/发现整个大网中组播源的存在,而直接与组播源建立联系。这就是组播源发现。
2@MSDP的PIM-SM场景
MSDP仅适用于PIM-SM环境下,这是由于PIM-DM的特性所导致的。
@:PIM协议作为协议无关组播路由,只需依照单播表并进行相应的RPF检查即可。
@:并且PIM-DM是PUSH推流方式,只要有PIM邻居存在就可推送组播流。这种方式默认认为网络中所有PIM邻居都有接收者存在,会PUSH组播流。即使跨域,只要域间可以建立PIM邻居就可推流。

关于PIM-SM环境相关内容,可参考博客组播PIM-原理介绍+报文分析+配置示例

@:相反PIM-SM是PULL拉流方式。组播源/第一跳PIM组播路由器需要知晓网络中RP的存在,去主动通知RP。RP反向向组播源拉流进行(S,G)表项建立。
其中的关键在于组播源/第一跳PIM组播路由器需要知晓网络中RP的存在。而跨域场景下,这是很难做到的。

2.1.MSDP概念

1@源RP的概念
1@:源RP(originating RP)通常指的是逻辑上距离组播源最近的RP,并承担着向其他域发送组播源Source-Active消息的责任。此时建立MSDP对等体,也称源MSDP对等体
2@:对于MSDP环境下,势必可能有多个PIM-SM域。这就会导致组播环路和次优路径。因此针对这种情况,MSDP给出了MRIB(Multicast RPF Routing Information Base,组播RPF路由信息基础)的规则。对于指向源RP的组播源状态消息,RP将丢弃non-RPF peer对等体发送的组播源状态消息。

1@:这里指的就是SA消息(MSDP的Source-Active类型报文,携带了组播源消息)
2@:其他相应的还有接收端MSDP对等体中间MSDP对等体。其实分别指的就是承担接收者作用的MSDP和传输SA消息的MSDP对等体。

2@SA-cache
RFC3618给出了SA-cache也即Source-Active缓存的介绍。与单播路由协议相同,MSDP同样需要考虑防环,协议风暴等问题。
SA-cache用于降低新对等体邻居接入组播的等待时延网络分析/故障定位减少协议网络风暴等。

3@MSDP的基本原理
@:借用TCP协议639端口完成验证加密,协议可靠和协议保活

在这里插入图片描述//使用639在TCP的三次握手阶段进行认证,TCP认证通过才可以建立MSDP会话。

@:网络中RP(这里肯定指的是逻辑上最靠近组播源的RP)之间建立MSDP对等体。因为对于PIM-SM来说,需要每个PIM域的RP向组播源进行注册拉流建立(S,G)表项。

最少需要每个PIM-SM域的RP去进行组播源信息的交互。其他则不强制要求。
每个PIM-SM域的RP逻辑上可以认为是每个接收者的组播源。因此MSDP对RP的对等体要求实际上是有好处的。

@:网络中的RP接收MSDP消息,决定是否接收相应组播源的数据,并向其他peer对等体发送。RPF3618中将这一过程描述为flood-and-join

MSDP的SA报文中携带(S,G)消息以及创建该SA消息的源端RP地址,其他域的RP接收到SA消息后进行决定SA有效性和是否转发。
RP接收到有效的RP消息后,会主动向G的S进行PIM-SM的拉流操作发送PIM-SM的join报文。

2.2.MSDP的程序定时器

这里给出了RFC3618文档所定义的几种定时器,用于详细介绍MSDP协议原理使用。
需要说明的是,定时器有对应的值称为定时器周期。这里介绍不做详细说明,有意者可查看RFC源文档。

SA-Advertisement-Timer
MSDP的Source-Active报文通告间隔定时器。
1@:RP必须周期性泛洪SA消息,以通告组播源的存在。
2@:当配置了MSDP进程时,RP就启动该定时器。
3@:SA消息一次涵盖了RP所有知晓的活得组播源。//超出包大小限制的原因除外。

SA Cache Timeout/SA-State Timer
SA缓存超时/SA状态定时器。
1@:MSDP对等体上收到SA消息后启动,用于本地记录组播信息(S,G)等。
2@:SA消息中的每个组播信息(S,G)等条目,都与该定时器关联。
3@:该定时器必须不小于SA-Advertisement-Timer+SA消息抑制时间

Peer Hold Timer
对等体维护定时器。
1@:用于维护MSDP对等体关系。对等体建立时启动定时器,关系结束时删除。
2@:收到任意MSDP报文时刷新。
3@:RFC给出了规定值。必须不小于3S,推荐使用75s。

KeepAlive Timer
保活定时器。
1@:用于维护MSDP对等体关系。对等体建立时启动该定时器,关系结束时删除。
2@:倒数为0时发送MSDP Keepalive消息,并重置定时器。
3@:RFC给出了规定值。必须不小于1S且必须小于Peer Hold Timer,推荐使用60s。

ConnectRetry Timer
连接重传定时器。
1@:具有更小IP的MSDP对等体的状态机从INACTIVECONNECTING状态转变时启动。转变为ESTABLISHED状态时或无对等体时删除。
2@:RFC给出了规定值。应该等于30S。每个对等体关系都单独指定该定时器。
在这里插入图片描述
Intermediate MSDP Peers
中间媒介作用的MSDP对等体。
1@:Intermediate MSDP Peers不为其他PIM-SM域创建SA消息,可以转发来自其他PIM-SM域创建的SA消息。
2@:一般来说RP只为自己注册的组播源产生SA消息。

SA Filtering and Policy
描述对SA消息的筛选过滤原则。
1@:在传输作用的PIM-SM域中传递SA消息时,不能过滤。
2@:过滤原则可以使用MBGP进行控制。
3@:描述(S,G)组播消息的SA,不能传出该G组播组的边界。

Encapsulated Data Packets
RP可以封装来自源的组播数据。这允许在向源的域构建组播树之前接收小突发组播流量。一般来说该数据封装于SA消息中。具体的封装则需要进行深究。
在这里插入图片描述

点击此处回到目录

2.3.Peer-RPF转发

MSDP的Peer-RPF Forwarding概念比较重要,在此重点进行说明。如果发现SA消息是从RPF对等体发出的,则接收该SA消息并向其他对等体转发。否则丢弃。
类似于PIM协议中的RPF检查。
Peer-RPF转发的基本原理
主要用于在使能了MSDP网络上转发SA消息的原则。这一原则的作用类似于BGP的路由防环。
具体来说是指将SA消息中携带的RP信息接收该SA消息时的MSDP对等体进行比较,并给出如下原则:
1@:Multicast RPF Routing Information Base (MRIB)是多播拓扑表。MRIB包括:MBGP、组播静态路由、单播路由。
2@:Peer-RPF Route是MRIB为SA消息中源RP的最佳路由下一跳。SA发起RP的Peer-RPF Route用于选择接受SA的对等体。
具体来说有如下SA的RPF检查规则
1@:收到发送SA的MSDP对等体邻居是该SA消息中RP的地址;
2@:从静态RPF对等体到来的SA消息;

在这里插入图片描述//事先要有MSDP对等体才可将该对等体配置为静态RPF对等体

3@:只拥有一个远端MSDP对等体;
4@:来自Mesh Group对等体的SA消息不再向属于该Mesh Group的成员转发,但向该Mesh Group之外的所有对等体转发。
5@:到达源RP的MRIB需要跨越多个AS时,接收从下一跳AS中的对等体发出的SA消息。此时如果该AS中存在多个远端MSDP对等体,则优选IP地址最高的对等体发来的SA消息。

2.4.MSDP的Mesh Group和Any-cast RP

mesh Group
根据2.3章节对MSDP-RPF邻居传递的SA消息进行说明,已可以满足需要。但在特殊场景下可能存在SA的大量无效泛洪。因此MSDP定义了RP之间全互联的Mesh Group的概念。

Mesh Group:属于同一个Mesh Group的所有成员之间必须两两建立MSDP对等体连接。
在这里插入图片描述//需要说明的是Mesh-Group是一个本地概念,并且需要先于该对等体建立MSDP连接。

Any-cast RP
Any-cast RP主要用于实现同一个PIM-SM域的RP冗余机制并可加快RP的收敛。
即在同一个PIM-SM域内设置多个具有相同地址的RP,并且在这些RP之间建立MSDP对等体关系,从而实现RP路径最优及负载分担。
Any-cast RP的原理:
1@:组播源向距离最近的RP进行注册,建立路径最优的SPT;接收者向距离最近的RP发起加入,建立路径最优的RPT。

通常通过单播路由的cost最小来实现距离最近

2@:每个RP上只需维护PIM-SM域内的部分源/组信息。其他PIM组播路由器都指向距离自己最近的RP
3@:当某RP失效后,原先在该RP上注册或加入的组播源或接收者会自动选择就近的RP进行注册或加入操作

需要说明的是
@:Any-cast RP是一个逻辑概念,需要事先进行网络规划。是在配置上没有明确体现的。
@:当设备对收到的SA消息进行RPF检查时,如果发现对端RP的地址与本地RP的地址相同,就会丢弃该SA消息。必须为SA消息指定一个与实际RP的地址不同的逻辑RP地址(即逻辑接口上的RP地址),以通过RPF检查。
因此必须手动另外指定RP地址。如下命令在Any-cast RP场景下必须配置:
在这里插入图片描述而在PIM下指定额外相同的C-RP地址。也即此时两台Any-cast RP至少需要两个Loopack,一个作为BSR,一个作为RP。并且BSR不同,但RP相同。

点击此处回到目录

3.MSDP协议及配置

整个MSDP协议都以TLV方式进行编码,
Type:类型,8bits。
Length:长度,16bits。MSDP整个字段的长度,单位字节。
Value:值,可变长。

常用的格式:
Type=1:IPv4 Source-Activet,传递SA消息和组播消息
Type=2:IPv4 Source-Active Request,主动请求指定组G的(S,G)列表
Type=3:IPv4 Source-Active Response,对Source-Active Request消息的响应
Type=4:KeepAlive,保持MSDP对等体的连接关系。只在对等体之间无其他协议报文交互时才发送。
Type=5:Reserved (Previously: Notification)
Type=6:MSDP traceroute in progress,对SA消息的RPF传递路径进行检测。
Type=7:MSDP traceroute reply,对SA消息的RPF传递路径进行检测。
6和7类型MSDP报文暂不进行介绍

3.1.MSDP状态机

MSDP协议使用TCP作为传输层协议,Port使用639。具有更小IP的一端作为MSDP建立TCP会话的发起者,更大IP的一端作为MSDP的监听者。

因此启动时间完全取决于Active一端及其重传定时器。

MSDP的状态机主要有以下几种:DisableInactiveConnectingListenEstablish
其状态机切换如下图所示:
在这里插入图片描述在该图中,所对应的事件Event和动作Action为:
Event
E1:发起与对等体P的建立连接请求
E2:自身IP小于对等体P
E3:自身IP大于对等体P
E4:TCP会话建立完成(Active端)
E5:TCP会话建立完成(Passive端)
E6:重传定时器触发
E7:与对等体P的关系撤销
E8:Hold 维护定时器触发
E9:探测到MSDP报文格式错误
E10:探测到其他错误
Action
A1:为MSDP分配程序资源
A2:TCP的Active端启动重传定时器
A3:TCP的Passive端进入监听状态
A4:删除重传定时器,发送Keepalive报文,启动Keepalive保活定时器和Hold维护定时器
A5:发送Keepalive报文,启动Keepalive保活定时器和Hold维护定时器
A6:不在尝试建立TCP的Active主动端连接,回收为MSDP分配的资源
A7:不在尝试建立TCP的Passive被动端连接,回收为MSDP分配的资源
A8:关闭TCP连接,回收为MSDP分配的资源
A9:丢弃数据包。
在MSDP程序上除以上说明外,还有两种特殊的事件需要进行说明
特殊对等体事件:该事件发生于Established状态,并且不造成状态机的改变;
独立的对等体事件
@:SA通告定时器触发—>发送SA报文(周期性的),并重置Keepalive定时器
@:监听到新的活跃组播源S信息—>发送SA报文,并重置Keepalive定时器
@:SA状态定时器触发—>特定事件,一般处理动作是删除SA-Cache缓存

3.2.报文简介

Type=1:IPv4 Source-Activet
在这里插入图片描述Entry Count:(S,G)消息数量,1字节;
RP Address:产生该MSDP-SA消息的源端RP,4字节;
(S,G) Block:(S,G)的具体条目信息,12字节。
Reserved:保留字段,3字节;
Sprefix Len:源地址掩码长度,1字节;
Group Address:组地址,4字节;
Source Address:源地址,4字节。
Type=4:KeepAlive
在这里插入图片描述
Keepalive报文不需包含实际的Value值,因此报文是固定的。

3.3.拓扑介绍

这里只提供了AR2和AR3设备的关键配置,有能力者可自行进行其他P和PE设备的配置。有需要者可私信联系提供模拟器源文件及配置。
在这里插入图片描述
sysname AR2
pim
c-bsr LoopBack1
c-rp LoopBack1
#
msdp
peer 4.4.4.4 connect-interface LoopBack1
#
//指定建立MSDP对等体。其他底层配置略。

拓扑本身比较简单,这里简单说明下MP-BGP传递组播路由的情况
这里利用MP-BGP建立了Multicast路由关系,传递了MPBGP组播路由。
在这里插入图片描述
常用检查命令
在这里插入图片描述

点击此处回到目录

点击此处回到目录

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Key Words to Reflect Requirements. . . . . . . . . . . . . . . 3 3. Test Set Up. . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.1. Test Considerations. . . . . . . . . . . . . . . . . . . 4 3.1.1. IGMP Support. . . . . . . . . . . . . . . . . . . 5 3.1.2. Group Addresses . . . . . . . . . . . . . . . . . 5 3.1.3. Frame Sizes . . . . . . . . . . . . . . . . . . . 5 3.1.4. TTL . . . . . . . . . . . . . . . . . . . . . . . 6 3.1.5. Trial Duration. . . . . . . . . . . . . . . . . . 6 4. Forwarding and Throughput. . . . . . . . . . . . . . . . . . . 6 4.1. Mixed Class Throughput . . . . . . . . . . . . . . . . . 6 4.2. Scaled Group Forwarding Matrix . . . . . . . . . . . . . 8 4.3. Aggregated Multicast Throughput. . . . . . . . . . . . . 9 Stopp & Hickman Informational [Page 1] RFC 3918 Methodology for IP Multicast Benchmarking October 2004 4.4. Encapsulation/Decapsulation (Tunneling) Throughput . . . 10 4.4.1. Encapsulation Throughput. . . . . . . . . . . . . 10 4.4.2. Decapsulation Throughput. . . . . . . . . . . . . 12 4.4.3. Re-encapsulation Throughput . . . . . . . . . . . 14 5. Forwarding Latency . . . . . . . . . . . . . . . . . . . . . . 15 5.1. Multicast Latency. . . . . . . . . . . . . . . . . . . . 16 5.2. Min/Max Multicast Latency. . . . . . . . . . . . . . . . 18 6. Overhead . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.1. Group Join Delay . . . . . . . . . . . . . . . . . . . . 20 6.2. Group Leave Delay. . . . . . . . . . . . . . . . . . . . 22 7. Capacity . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7.1. Multicast Group Capacity . . . . . . . . . . . . . . . . 24 8. Interaction. . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.1. Forwarding Burdened Multicast Latency. . . . . . . . . . 25 8.2. Forwarding Burdened Group Join Delay . . . . . . . . . . 27 9. Security Considerations. . . . . . . . . . . . . . . . . . . . 28 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 28 11. Contributions. . . . . . . . . . . . . . . . . . . . . . . . . 28 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 28 12.1. Normative References . . . . . . . . . . . . . . . . . . 28 12.2. Informative References . . . . . . . . . . . . . . . . . 29 13. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 30 14. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值