背景介绍
- 网络中存在多种业务,如果从流量模型来看的话,可以将这些业务分为两类:
1、点到到业务:
比如FTP、WEB业务等,此类业务主要特点是不同的用户有不同的需求,比如用户A需要下载资料A,用户B需要下载资料B。此类业务一般由单播承载,服务器对于不同用户发送不同的点到点数据流。
2、点到多点业务:
比如IPTV,视频会议等等,此类业务的特点是用户对于业务有相同的需求,比如用户A,B,C,D都需要收看视频X,此类业务可以使用单播,组播,广播承载。但使用单播或者广播承载点到多点业务时存在一定的问题。
3、组播技术能够较好的解决单播或者广播在承载点到多点业务时存在的问题。
IP组播的基本概念
点到多点业务的困境
点到多点业务可以由单播、组播、广播进行承载,现网中也有各种各样的实现方式。但是使用单播或者广播承载点到多点业务的时候会存在一些固有的问题。
单播承载点到多点业务(IPTV场景)
- 对于服务器而言:
服务器需要维护大量的单播流,这时候服务器的压力极大 - 对于链路而言:
大量的单播流会占用大量的带宽
会有大量客户端时会形成大量的单播流 - 每个客户端与视频源之间形成一条单播流
广播承载点到多点业务(IPTV场景)
- 对于视频源服务器来说:
同一个视频源只需要发送一个广播流 - 对于路由器而言:
设备复制广播流,向其他的接口发送 - 对于用户而言:
普通终端都可以接收到广播数据,存在及其大的安全隐患
使用组播承载点到多点业务
- 组播方式下,单一的信息流沿着组播分发树被同时发送给一组用户,相同的组播数据流在每一条链路上最多仅有一份。相比单播和广播,使用组播的好处如下:
1、相比于单播:用户的增加不会导致信息源负载的加重,不会导致网络资源消耗显著增加。
2、相比于广播:不会造成网络资源的浪费,并且能够哦提高信息传递的安全性,而且组播可以实现跨网段的传输。 - 组播传输流程特点:
1、同一个视频源只需要发送一个组播流
2、设备复制组播流,向特定的接口发出
3、普通终端不会接受到组播数据流
组播数据报文结构
组播数据报文结构和单播报文类似,但组播数据报文的目的MAC地址与目的IP地址与单播报文有很大的差异。
- 组播目的IP地址:目的IP地址为组播IP地址,地址范围从224.0.0.0 到239.255.255.255
- 组播目的MAC地址:目的MAC地址为组播MAC地址,组播MAC地址由组播IP地址映射而来
图解:
组播IP地址
- 在IPv4地址空间中,D类地址(224.0.0.0/4)被用于组播。
一个组播地址就表示一个点到多点的数据流,比如IPTV数据流,语音会议数据流。 - 大多数情况下,同一个组播网络里面不同的业务(比如,IPTV,语音会议)就需要使用不同的组播IP地址。
- IANA对D类地址做了进一步的定义,几种主要的组播地址如下表所示:
组播MAC地址
- 以太网传输ipv4单播报文的时候,目的MAC地址使用的是接受者的MAC地址。但是在传输组播数据的时候,其目的地不再是一个具体的接受者了,而是一个成员不确定的组,所以要使用ipv4组播MAC地址。
- IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位。
例如:组播组地址224.0.0.1 对应的组播MAC地址为01-00-5e-00-01-01
组播网络基本架构
组播网络大体三部分:
- 源端网络:将组播源产生的组播数据发送至组播哦网络
- 组播转发网络:形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)
- 成员端网络:让组播网络感到组播成员位置与加入的组播组。
组播服务模型
组播成员在接受组播数据的时候可以对于组播数据源进行选择
因此产生了:
ASM(Any-Source Multicast,任意源组播)
SSM(Source-Specific Multicast,指定源主播)
两种组播服务模型
- ASM:组成员加入到组播组以后,组成员可以接收到任意源发送到该组的数据
- SSM:组成员加入到组播以后,组成员会接收到指定源发送该组的数据
组播数据转发的原理
组播数据转发的困局
组播数据转发需要依赖路由表项。
但是由于基于目的网络的目的网络的路由表在转发组播数据时会存在一些问题。
- 问题1:转发环路,重复报文
- 问题2:次优路径,重复报文
组播路由与RPF检查
- 由于组播转发容易产生环路,次优,重复报文,所以组播路由表项除了目的网络和出接口之外还需要添加组播源和入接口的信息。
设备仅仅转发从特定唯一的入接口收到的组播数据,从而避免组播转发的时候产生的环路,次优,重复报文(部分解决)等问题。 - 对于相同的组播源,设备通过RPF(Reverse Path Forwording,反向路径转发)检查可以确定设备上唯一的组播流量入口。
RPF检查工作原理
RPF路由选举规则
RPF路由可以从单播路由、MBGP路由、组播静态路由中选举产生。
当路由器收到一份组播报文之后,如果这三种路由和表都存在,具体的检查过程如下:
组播分发树
- 组播数据转发需要保证转发路径无环,无次优路径且无重复包。
- 通过RPF机制与组播路由协议,组播网络可以最终形成无环、无次优路径且无重复包的组播转发路径,该路径可以被称为组播分发树。
- 组播分发树以组播为根,以组成员为叶子形成转发路径,组播数据在转发时都基于组播分发树进行转发。
组播协议介绍
组播网络需要基于多种组播协议才能建立转发路径:
- 工作在成员端网络主要是IGMP(Internet Group Management Protocol,因特网组管理协议)协议,用于告知组播网络,组成员的位置与所加组播组。
- 工作在组播转发网络的协议有PIM,MSDP,MBGP
1、PIM(Protocol Independent Multicast,协议无关组播)协议,主要作用是:生成AS域内的组播分发树
2、MSDP(Multicast Source Discovery Protocol,组播发现协议)主要作用是:帮助生成AS域间的组播分发树
3、MBGP(Multicast BGP)主要作用是:跨域组播流能够进行RPF检验
总结
1、组播主要解决单播或广播在承载点到多点流量时存在的问题:
- 使用单播承载点到多点流量时,随着点到多点业务客户端的增加,可能会引起带宽占用过高或源服务器压力过大等问题
- 使用广播承载点到多点流量时,虽然不存在单播承载点到多点时的问题,但是缺乏安全性
2、组播网络一般由三个部分组成:源端网络、组播转发网络、成员端网络
- 组播转发网络负责数据在组播路由器之间转发,但是在转发过程中可能会存在环路,次优路径,重复报文等问题。
这些问题可以通过RPF检查部分或全部解决。