组播路由技术

三种通信方式——为什么需要组播通信?

  • 单播Unicast:点到点的通信,单播应用对每个单播地址包都发出一份拷贝,非常简单。骨干网压力大,同样的包可能会复制很多份,资源浪费。

  • 广播Boardcast:一对多的通信,一个范围内所有的终端。小范围容易实现,但选择性差,每个主机都会收到自己不需要的包,增加处理开销以及无效数据流的传递。且对于大范围网络代价太高。

  • 组播Multicast:介于二者之间,也称多播。指定特定组进行通信。吸取二者的优势,既能缓解主干流量压力,又能提高传播的选择性
    • 挑战:地域范围大、组成员数量可调、组员位置可密可疏、动态的组内关系调整、路由转发效率、安全性...(IP网络结构本身是为点到点通信而设计的
    • 目标:高效的、一对多、多对多的相同数据传输。

组播的基本概念

        下图是一个典型的网络结构,组播主要包含以下几个概念:

        应用程序/组播地址:组播服务器使用组播地址IP进行通信,而非终端IP地址(单播)。对终端而言,要加入某一组播地址来获得某一公享资源。

        主机-路由器协议(IGMP/MLD):管理组成员,组管理协议。

        域内组播协议(PIM;DVMRP):网络如何中转

        域间组播协议(MSDP):域间的转发协议

组播四要素

        源发现:只往组播地址内发数据,但也不知道组内有谁

        接受者发现:终端和服务器二者之间可以互相不认识,只负责加入某个组,但不知道是谁在发消息

        拓扑发现:网络之间的拓扑

        分发树生成:建立拓扑路径

组播地址(D类)

        就是一个IP地址,不代表具体的主机,是一个逻辑上的地址。

        地址范围:224.0.0.0——239.255.255.255 MAC地址:01-00-5e-xx-xx-xx(网卡支持组播功能可以对IP进行映射)

        保留组播地址:被留下作特殊用途的一些组播地址。

组播转发路径——树的概念

        简单来说就是一个由组播包转发路径形成的树状结构。根据树根的不同,组播分布树可以分为有源树和共享树。

        有源树(最短路径树):树根是组播信息流的来源,以最短路径穿过整个树。这样以来对于每一个服务器都要以自己为根建立组播树。

有源树

         共享树:在网络中找一个公共点RP作为根来建立数。源先把数据发给RP点,终端再以RP点建立树。所有设备都围绕RP建立,可以减少转发表项。只对RP一个源维护转发表项就行了,而不需要对多个服务器多个源维护

共享树

         组播转发项:(S、G、Upstream、Downstream list)源地址、组地址、入接口、出接口列表。在传统IP中,只有一个出接口,但在组播中可能有多个出接口

        优劣比较:有源树占用内存多但路径最优,延迟最小。共享树,占用内存较小,但路径不是最优的,引入额外的延迟。最优的不一定是最好的,要综合考虑多方面。因此目前主流的是共享数方案。

组播转发原理

        组播路由和单播路由关注点是相反的:单播路由关心数据到哪里去,组播路由更关心数据从哪里来。

        单播模型中,数据沿着单一的路径由源主机到达目标主机,沿途查找单播路由表,做出具体向哪一个接口转发的决定。组播模型中,组播路由器必须将组播数据包转发到多个接口上,以便同一组的成员都能收到数据包。如果组播路由器在其输出接口上接收到组播数据包,就会产生组播路由循环的现象。

        组播一进多出要进行无环的处理。

路由循环问题

 

逆向路径转发RPF:

        基于RPF检查决定是否转发或丢弃。路由器检查到达组播包的源地址,如果信息包是在可返回源 站点的接口上到达,则RPF检查成功,信息包被转发。否则错误,被丢弃。

        检查失败的过程:组播路由器R收到一个数据时。首先检查源地址,为192.18.0.32,进行单播路由表进行查询,发现下一跳接口是S1。信息待会组播处理进程,发现与到达接口矛盾。因此检查失败,将数据包丢弃。以此类推,从S1到达的数据包检查吻合转发表的转发项,进行对这个组播数据包进行转发。

 组管理协议

        确定本地链路上是否有接收主机加入某个组。为此,组播路由器和接收主机必须进行组成员关系的交互。转发第一条路由器管理组内成员。

        IPv4:IGMP,因特网组管理协议。IGMPv3

        IPv6:MLD,组播监听发现协议MLDv2

IGMP的动作:

        主动报告加入

        普遍查询

        响应报告

        离开组消息

        指定组查询

具体的实现过程:

        组加入:主机发送IGMP报告,加入组。

        定期查询:路由器定期查询还有没有人(不关心有几个人,结果是一样的)在组里。如果还有主机在则会有响应报告,一台主机回复就够了。

        组离开:当一个成员离开组时,IGMPv1主机安静的离开组,路由器发送3个总体查询后向上汇编,带来资源浪费。v2中引入离开组消息,路由器收到后专门向这个组发查询消息,若3s没有响应向上汇报。

 组播路由协议

协议无关PIM(Protocol-Independent Multicast)

        组播协议的运行对单播协议没有要求。使用单播路由协议实现RPF校验,不必保持自己的路由表,降低了不必要的大量开销

        密集模式PIM-DM:用户很多,使用“Push”模型,正张网络泛洪,随后不想接收进行剪枝。进行泛洪、剪枝、泛洪、剪枝的循环。

        稀疏模式PIM-SM:用户稀疏,使用“Pull”模型,请求才给,需要加入请求。

PIM的建立基础

        建立邻居关系(hello)后,指定路由器DR(多个路由与主机相连的时候,选一个DR进行组管理,代表这个组进行包的获取并进行分配)。若没有DR,则会造成资源的浪费。这里只对PIM-DM进行简单的介绍。

        密集模式PIM-DM:

                协议号:103

                PIM的组播地址:224.0.0.13

        先广播到全域,如果确定有本地不需要的路由,则向上层发布剪枝消息,周而复始进行循环。如果有新的接受者,则可以进行嫁接消息发布。PIM-DM适合于高速网络或者是组播接收点分布密集的网络。

稀疏模式PIM-SM

        支持共享树和源树,默认共享树

        使用汇聚点RP

        发送者的第一跳路由器DR把发送者注册到RP上。

        接受者的DR为接受者加入RP。

        整张网络是以RP为核心的两棵树

PIM-SM的两段式树结构:有源树+共享树

为清晰的体现协议的运行结构,举例进行说明:

        假设有一个主机为接受者1,即将订阅源S的组播数据。

        首先接受者要先发送一个IGMP请求加入所在组播,根据前面描述,开头格式应该是(*,G)。当沿途路由器接收到这个加入消息后,创建一个(*,G)转发项,可以理解为是为了后续接收源S数据包给接受者转发而服务的。这样就构建了一个从RP到接收者的共享树

        源发布数据流默认就是组播地址,第一跳路由会建立一个(S,G),出接口为空,因为它不知道确切的目的地在哪里。第一条的路由会通过隧道技术封装好数据包传递给RP。RP收到后会解封装,提取出组播地址,再将数据包传递给下游用户。

隧道技术有较大的开销,因此RP在转发给接受者的同时,会建立一个(S;G)的表项,同时向源S发布一个(S;G)的加入消息。就可以建立一个由源S到RP的有源树

        这样就形成了一个由源到RP的有源树,从RP到接受者的共享树。(控制平面)数据流沿源树流向RP,从RP开始沿着共享树流向接受者。

        由于网络是动态的,也就是说接受者有可能会随时退订该组播的资源。当DR发现本地没有接收者了,将会发起剪枝消息,沿途的路由器都会接收到并删除(*;G)转发项。但源并不知道这个事情,因此此时RP会向源的DR发起(S;G)的剪枝消息。源DR收到消息后便暂时不再转发给RP消息了。

        但不巧的是,退订的接受者突然又要加入源S的组播,本地DR重复刚刚的操作,建立与RP的共享树。但RP由于(S;G)的老化删除,找不到源S了。为了避免数据流因老化而丢失的问题,源DR每隔60s再次发送注册消息(S;G),防止被老化删除。

共享树向有源树的切换

        当组播数据流达到一定阈值后,为了适应大数据量的业务效率,接受者的DR可以直接向源DR发起加入申请,建立一个源S到接受者的有源树。完成共享树向有源树的切换,实现路径的优化。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hamooddd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值