计算机网络体系结构-组播技术

为什么需要组播
IPV4包含三种数据传送方式:单播,广播和组播。其中单播在传送数据时,主机和客户端之间进行一对一的通信,如果有多台客户端请求相同的数据,主机需要逐一发送多次。好比同一道题,每个学生都去问一遍老师,老师一对一解答。在客户端数量较少时,这种重复是可以接受的,当客户端数量过多时,网络带宽将无法支撑。而广播在传送数据时,不管接受者是否需要,都将收到主机广播的数据。好比老师拿个喇叭在全校广播这道题的解法,并不是所有学生都需要解答这道题。在浪费了网络带宽的同时,也有可能造成数据的泄露,增加网络安全风险。但是由于组播基于UDP的特性,无法为使用组播的应用程序提供可靠性保证。而组播就好比老师将所有需要讲解这道题的学生拉到一个班,在这个班内进行讲解。
注:单播关心的是怎么从源点到宿点,而组播路由协议只关心到源的最短路径!

组播的基本工作方式
数据发送者和接收者之间是一对多点的连接方式,多个接收者加入同一个组播组,共享同一个IP地址(即组播地址,这个IP地址是“逻辑”上的,实际数据的接收仍然需要每个接受者配置单独的IP地址),同时组播组中的成员是动态的,某个成员的加入和退出并不影响原有的组播组。好比班级中几个学生加入或者退出并不影响这个班级。
当网络中的某些用户需要特定数据时,组播数据发送者(即组播源头)仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发。

ASM:在ASM模型中,任一发送者都可作为组播源向某组播组地址发送组播信息,接收者通过加入由该组播组地址标识的组播,组以获得发往该组播组的组播信息。在ASM模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或离开组播组。
SSM:在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。SSM模型为用户提供了一种能够在客户端指定组播源的传输服务。

组播报文路由
通过(S,G)对来决定真正的下游接口,当所有的路由器都知道了他们的上下游接口,那么一颗多播树就已经建立完成。根是源主机直连的路由器,而树枝是通过IGMP发现有组员的子网直连的路由器。

多播树形成:单播路由只需要知道下一跳的地址,就可以进行报文得转发。而组播,是把从一个由源产生得报文发送给一组目的。在一个特定的路由器上,一个包得多个备份可能从多个接口上发出。如果有环路得存在,那么一个或多个包会返回到其输入的接口,而且这个包也会经复制发到其他的端口上。这一结果可能导致多播风暴,这个包不断在路由器与交换机间复制,直到TTL减为0。由于这是个复制过程,它的危害会比单播环路严重的多,所以所有的多播路由器必须知道多播包的源,并且需要保证多播包不能从源接口发出。所以他必须知道哪些是上游接口和下游接口,可以分辨出数据包的流向。如果在不是在源的上游接口收到数据包,就会把它丢弃掉。而多播路由协议必须关心到源的最短路径,或者说它关心到源的上游接口。同时,除了关心上游接口,但是在转发的时候,不能把数据包从除了上游接口的其他接口发送出去。所以,另外,他还要关心(S,G)下游接口。当关于一个(S,G)的上下游接口都被判断出来了,那么一颗多播树就形成了。

组播报文如何来进行路由
现下常用的组播路由协议有一下几种,由于现在主流的路由器产品只支持Pim,其他的路由器协议都不支持,所以只会对PIM做个详细的解释。
• DVMRP:它是通过RIP来发现到源的最短路径,采用广播/剪除的方式来构建一颗多播树。
• MOSPF:它是通过OSPF协议来发现到源的最短路径,也是用在密集方式的拓扑下。
• CBT:是一个与协议无关的,基于稀疏模式的,共享树协议。他和DVMRP和MOSPF的区别有两点:它无需要在组播中在加入一个路由协议,可以在现有的任何协议上查找到到源的最短路径;它是基于共享树的协议,所以必须要在网络里设置一个网络的核心来确保组播包的前转;更适合使用在稀疏模式下。
• PIM-DM:它是个与协议无关的组播协议,同时又是基于密集拓扑的组播协议。采用广播/剪除的方法来进行多播树的构造。

一对多的组播应用:有一个源点和多个宿点(远程授课、新闻摘要、网络时钟)
多对多的组播应用:多个节点之间相互作为数据的源点和宿点(视频会议、合作编辑)

两种组播分发树模型
• 有源树(最短路径树SPT):它是以组播源为根构造的从根到所有接收者路径都最短的分布树。如果组中有多个组播源,则必须为每个组播源构造一棵组播树。因此使用这种方式占用内存较多,但由于不同组播源发出的数据包被分散到各自分离的组播树上,有利于网络中数据流量的均衡。
• 共享树(RPT):不以源为根,以所选节点为根建立组播树。组播源在发送数据时,先将数据发给选择的节点,而后由这个节点分发给各个接受者。

逆向路径转发RPF:检查防止环路。组播路由器及其它的上行和下行节点构成源点树的通路。收到组播消息的入接口与去往源的单播路由的出接口一致时,RPF检查成功!如果报文是从通往源点S的最短路径上来的,则将其向其它节点转发,否则将其丢弃。
当路由器收到一份在这全个路由表中均存在对应路由表项的组播报文后,按照以下原则进行具体检查。
(1)首先,通过报文源地址(是单播IP地址)分别从单播路由表、MBGP路由表和组播静态路由表中各选出一条最优路由。单播路由、MBGP路由的出接口为RPF接口,下一跳为RPF邻居;而组播静态路由实际上属于手工配置的组播路由,已经明确指定了RPF接口与RPF邻居。
(2)根据以下原则从这三条最优路由中选择一条作为RPF路由。
①如果配置了按照最长匹配原则(也就是掩码最长,路由最精确)来选择路由,则从这三条路由中选出最长匹配的那条路由,如果这三条路由的掩码长度一样,则选择优先级最高的那条路由;如果它们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的先后顺序进行选择。
②如果没有配置按照最长匹配原则来选择路由,则从这三条路由中选出优先级最高的那条路由;如果它们的优先级相同,则也按照组播静态路由、MBGP路由、单播路由的先后顺序进行选择。
(3)最后,路由器会将报文的入接口与上面最终选择的RPF路由的RPF接口进行比较。如果一致则RPF检查通过,表明该报文来源路径正确,会将其向下游转发;如果不一致即RPF检查失败,表明该报文来源路径错误,就将其丢弃。

剪枝/加入过程
剪枝:
1、如果不需要上游发送组播报文,则向上游接口发送Prune消息,上游路由器收到Prune报文的出接口删除S,G表的信息
2、为了防止共享网段(如中间加了交换机连接的路由器)组播成员之间的影响,如果共享网段还有其它接收者,则该路由器向上游发送join消息覆盖其它路由器发送的Prune消息
3、如果剪枝后本路由器SG表项没有出接口,则继续向上游路由器发送Prune报文剪枝
4、RPF失败的接口也需要剪枝
加入:
为了防止共享网段(如中间加了交换机连接的路由器)组播成员之间的影响,如果共享网段还有其它接收者,则该路由器向上游发送join消息覆盖其它路由器发送的Prune消息

裁剪树技术:源点的第一个广播报文按生成树给定的路径发送给网络中的每一个点,当报文到达网络的边界路由器之后,它将检查本地是否有属于该组的成员。若没有,它要向发来报文的邻接点返回一个“裁剪信息”。
这是一种用内存换带宽的方法,通过记住群的成员关系来减少无效的报文传输。
裁剪过程
假设在共享网络中,有PIM路由器A通过二层Switch与路由器B、C相互连接,路由器B有PC需要接收组播数据流,但C不需要接收组播数据流。
现在路由器A第一次收到组播数据流,往下游邻居广播组播数据流,邻居B、C都收到组播数据流。C不需要接收组播数据流,所以C会向上游邻居A发一个Prune消息(目的IP:224.0.0.13),按正常处理就是A立即停止向下流发数据流,这样C是不会再收到数据流,但B也无法收到了。于是用OverRide机制来处理这种情况。C向上游邻居A发一个Prune消息时,B也能同时收到这条Prune消息,知道自己需要接收组播数据流,所以B立即发一个Join信息,这样路由器A收到Join后,就继续向下发送多播数据流量。这里还有一个需要注意的点就是,路由器在收到Prune信息后,会等待3S,再决定下一步处理;这个3S称剪枝延迟,如果这个3S内收到Join信息,则继续转发组播数据流量,否则就停止转发;在一个大型网络中,剪枝延迟积累是比较大的。

组播地址的分配原则
• 避免组播地址的冲突(这种冲突会对接收者产生影响,但发送者和网络本身不能察觉)
• 不能由少数甚至个别用户拿走所有可用的地址
• 地址分配的开销应尽可能小
• 扩展性使用效率尽可能高
• 具有好的可扩展性

组播地址的获得
• 编码方式:将组播地址写入程序代码
• 通告方式:组播服务随机挑选一个组播地址,然后通告网络将要使用这个组播地址
• 转换方式:算法为组播服务分配一个在全球范围内不与其它服务冲突的组播地址

IPv4组播寻址:MAC帧的前3B为01-00-5E,将组播地址的后23位,以及最高位(第24位)置0,拼凑成为组播帧。(所以后3B范围为00-00-00到7F-FF-FF)

组播的过程
一个典型的过程是这样的:

  1. IP主机的一个进程可随时加入和离开主机接口的一个组播组,该主机需要维护接口的一张表,该表包含了有那些组以及这些组中的进程数量。此时主机需要发送一个IGMP报告
  2. 路由器会定时发送IGMP查询报文,此时报文中的组地址为0
  3. IP主机回应路由器的IGMP查询报文,对于一个主机,如果它加入了多个组,则需要为每个组返回一个IGMP报告。
  4. 路由器根据这些信息,会对每个接口维护一张表,表中说明了该接口的组。

IGMP协议:Internet Group Management Protocol(互联网组管理协议)
它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

Multicast Listener Discovery(MLD):IGMP在IPv6中的对等协议(MLD功能和IGMP一样),组播报文的接收者被称为组播倾听者,MLD协议的目的就是使路由器可以发现附接在自己各个链路上的组播倾听者和它们感兴趣的组播地址,并将这些信息提供给相应的组播路由协议。倾听者必须在所有要求组播服务的端口上执行MLD。

DVMRP (Distance Vector Multicast Routing Protocol) :距离向量多播选路协议,由单播路由协议 RIP 扩展而来,两者都使用距离向量算法得到网络的拓扑信息,不同之处在于 RIP 根据路由表前向转发数据,而 DVMRP 则是基于 RPF。
因为DVMRP和MOSPF都不能令人满意,所以要引出了PIM协议。

PIM协议(protocal independent multicast)
前言:组播报文发送给一组特定的接收者,这些接收者可能分布在网络中的任意位置。为了实现组播报文正确、高效地转发,组播路由器需要建立和维护组播路由表项。随着多个组播路由协议的开发与应用,人们渐渐感觉到,如果像单播路由一样通过多种路由算法动态生成组播路由,会带来不同路由协议间在互相引入时操作繁琐的问题。所以不用那么多的啰嗦协议,只用一个就完事,即PIM协议。
而PIM协议直接利用单播路由表的路由信息进行组播报文RPF(即是否存在环路)检查,创建组播路由表项,转发组播报文。分为稠密(Dense)和稀疏(Sparse)两种模式。

组播报文转发过程RPF(Reverse Path Forwarding,逆向路径转发)
单播报文的转发过程中,路由器并不关心组播源地址,只关心报文中的目的地址,通过目的地址决定向哪个接口转发。在组播中,报文是发送给一组接收者的,这些接收者用一个逻辑地址标识。路由器在接收到报文后,必须根据源和目的地址确定出上游(指向组播源)和下游方向,把报文沿着远离组播源的方向进行转发。这个过程称作RPF。
RPF执行过程中会用到原有的单播路由表以确定上游和下游的邻接结点。只有当报文是从上游邻接结点对应的接口(称作RPF接口)到达时,才向下游转发。RPF的作用除了可以正确地按照组播路由的配置转发报文外,还能避免由于各种原因造成的环路,环路避免在组播路由中是一个非常重要的问题。RPF的主体是RPF检查,路由器收到组播报文后,先对报文进行RPF检查,只有检查通过才转发,否则丢弃。
RPF检查过程如下:
1)路由器在单播路由表中查找组播源或RP对应的RPF接口(当使用信源树时,查找组播源对应的RPF接口,使用共享树时查找RP对应的RPF接口),某个地址对应的RPF接口是指从路由器向该地址发送报文时的出接口;
2)如果组播报文是从RPF接口接收下来的,则RPF检查通过,报文向下游接口转发;
3)否则,丢弃该报文。

稠密和稀疏
对于一个群,如果从Internet中任选一个区域中都至少有该群一个成员,即成为稠密;否则是稀疏的。分别为DM模式和SM模式。

隐式加入和显式加入的比较
组员可以在多播会话存活的时候,加入或退出一个组,而其相连的路由器必须动态的根据直连子网内组员的存在或退出来决定要加入或剪除多播树的树枝。这就是通过显式或隐式加入两种方式来完成。
隐式加入试用于密集模式,它是采用广播/剪除模式来去除多播树上的没有组播成员的树枝,也就是说,它是通过先把网际网络上的所有路由器都加入到多播树上,然后由每个路由器通过IGMP来查询是否有组员在直连的子网上,如果没有,就发出一条剪除消息,来剪除多余的树枝。
而显式加入适用于稀疏模式,它是由每个路由器先查询子网内有无组员,然后才看是否要发加入信息给上游路由器。

PIM-DM:采用“push”模式,转发组播报文,即DM模式下认为下游一定有资源,所以将资源往外“推”。如果存在多归路(即多条转发路径,使用IP地址最大的那条)。
关键任务:转发前首先要建立SPT(shortest path tree最短路径树)
工作机制:
• 邻居发现:hello报文,选举查询器DR(优先级高或IP地址大)
• hello报文的默认周期是30s,超时时间是105s
• 扩散和剪枝(3min一个过程,先扩散,再剪枝)
• 状态刷新:周期性刷新剪枝状态
• 嫁接:新的组成员加入后,快速得到组播报文
• 断言:避免重复组播报文

PIM-SM:采用“PULL”模式转发组播报文,即SM模式下认为所有路由器下都没有资源。适用于组播成员分布较为稀疏的网络环境。
PIM-SM关键任务
• 建立RPT(汇聚点树也称共享树,从RP到接收者的路径)
• 建立SPT(最短路径树,从源到RP的路径)

PIM-SM的共享树技术基于会合点。每个 PIM-SM域都要选择一个或多个组播路由器作为会合点,构成一个RP集,只有RP才可作为裁剪树的根,每个群只能有一个RP。当这个RP出现故障时,需要将其从 RP集中删除。

汇聚点RP(Rendezvous Point)
• 充当RPT树的根节点
• 共享树中的所有组播流量都经过RP转发给接收者
• 所有PIM路由器都要知道RP的位置
问题:源的流量都汇聚往RP,任务较重。

RP的确定(设定)
• 人工配置(静态)
• 动态获取(1、C-BSP 2、C-RP)

转发表的生成
组播路由器在确定RP之后要产生一个形如(, group)的组播报文转发表项,并将其沿上行链路转发给RP, 表示报文可来自任一个源点。沿途的组播路由器要检查是否已有该群的转发表项存在,若无则也要建立相应的表项,然后将收到该报文的链路定义为群的下行链路。对群报文上行链路的判定要基于正常的路由表内容。

数据源发数据给组播成员(期间经过两棵树)
在这里插入图片描述SPT建立过程
在这里插入图片描述
• 组播源向组播组发送第一个组播报文。
• 源端DR将该组播报文封装成Register报文并以单播方式发送给相应的RP
• RP收到注册消息后,一方面从Register消息中提取出组播报文,并将该组播报文沿RPT分支转发给接收者
• 另一方面, RP向源端DR发送(S , G)Join消息,沿途路由器上都会生成相应(S , G)表项。从而建立了一颗由组播源至RP的SPT树
• SPT树建立后,组播源发出的组播报文沿该SPT转发至RP
• RP沿SPT收到该组播报文后,向源端DR单播发送Register-stop消息

PIM小结
PIM-DM

• PIM-DM适用于组播成员分布较为密集的园区网络。
• PIM-DM在组播成员较为稀疏的网络中,组播流量的周期性扩散会给网络带来较大的负担。
• 发送者和接收者十分接近
• 少数发送者,大量接收者
• 组播数据量大,带宽足够
PIM-SM
• 群组中接收者较少
• 发送者/接收者位于分散地域
• 适用于异构大型互联网络

内嵌RP地址的IPV6组播地址
内嵌RP地址的IPV6组播地址,当组播路由器收到这样组播组的数据包就可以检测出该组的RP地址;
| 20 bits | 4 | 8 | 64 | 32 |
±--------±—±---±---------------------±---------+
|xtra bits|RIID|plen| network prefix | group ID |
±--------±—±---±---------------------±---------+

高8bit,FF
flgs位必须设置为0111。也就是R P Tbit都设置为1。所以高20bit固定值为FF7X:0.
RIID,4bit RIID表示此内嵌RP的ipv6地址接口ID。
plen,8bit长度,表示此RP地址的前缀长度。
Network prefix,表示RP的前缀。
低32bit为组播组ID。

举例:比如一个RP地址为2022::2/64,那么依据上面的原则得到内嵌此RP地址的组播地址为;
FF7X:0240:2022::Y(x为组播限制范围,y为组播ID)

SSM(Source-Specific Multicast,特定源组播)
问题引入:在ASM中,为了保证组播流量在接收者这里不会产生冲突,同一个组播组地址在同一时间只能够被一个组播应用使用,即同一时间只允许一个组播源向某个特定的组播组发送组播流量。这个限制将直接造成组播IP地址紧缺。而SSM可以解决上述问题。

SSM服务模型
• 频道的概念:用二元组(S,G)表示,其中S是源点单播地址,G为SSM的宿组播地址
• 由于指定了源点的单播地址,因此即使宿组播地址相同,不同的源点地址代表了不同的频道,它们的数据不会相互混淆,可解决地址冲突问题
• SSM只要求源点树,在域内不需要共享树,在域间只需要MBGP,而不需要MSDP,很适合像IP/TV这样的点对多点的应用
• 如果路由器不支持SSM功能,要使用相应的路由政策来防止数据被转发到无频道订阅用户的网络去
• SSM接收者在订阅频道前必须要知道频道的源点地址和宿组播地址,因此它要去发现频道,这可以通过访问指定主页或使用某种会话通告协议来实现
• PIM-SM协议允许直接加入特定的源点树

对主机的要求
• SSM方式的组播由高层应用控制,特定的频道(S,G)将对应一个指定的socket,非这个频道的数据不能通过这个socket
• IP模块与高层协议的接口使用下列的抽象API来访问特定的频道
• IP模块要将SSM报文转发给所有订阅了这个频道的socket
• 为减少冲突,建议各个主机在允许的地址范围内随机选取SSM地址,而不要顺序选取
• 多个应用可以从同一个接口通过不同的socket订阅不同的频道

对路由器的要求
• 路由器要按组播地址范围来确定是按SSM方式处理,还是按ASM方式处理:对SSM地址范围内的组播传输都要按SSM方式进行处理,在其之外的使用ASM方式处理
• RP不能接受、发出或转发SSM地址范围内的MSDP SA报文
• 如果没有邻接的主机或路由器订阅,路由器对收到的SSM报文应予丢弃;另外对于处在SSM地址范围的非SSM请求,如(*,G)join,也应予以丢弃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值