组播
IP组播
- 组播非常适合“一对多”的模型,只有加入到特定组组播组的成员,才会收到组播数据。当存在多个组播成员时,源无需发送多个数据拷贝,仅需发送一份即可,组播网络设备会根据实际需要转发或拷贝组播数据
- 数据流只会发送给加入组播组的接收者,而不需要该数据的设备不会收到该组播流量
- 相同的组播报文,在一段链路上仅有一份数据,大大提高了网络资源的利用率
组播IP地址与MAC地址的映射
组播mac地址:第一个8位的值为1表示组播mac地址,为0表示单播mac地址。
组播路由协议
主要功能:
- 在接收组播报文时,判断该报文是否在正确的接口上到达,从而确保组播数据转发的五环化
- 在网络中建立一棵组播分发树(组播流量转发的路径数树)
- 组播分发树体现在每一台组播路由器上便是(S,G)或(*,G)的组播转发表项
组播路由表项
- PIM路由表项即通过PIM协议建立的组播路由表项。PIM网络中存在两种路由表项:(S,G)路由表项或( ,G)路由表项。S表示组播源,G表示组播组, 表示任意
- (S,G)路由表项知道组播源S的位置,主要用于在PIM路由器上建立SPT。对于PIM-DM网络和PIM-SM网络适用
- (S,G)路由表项由于只知道组播组G的存在,主要用于在PIM路由器上建立RPT。用于PIM-SM网络和双向PIM网络适用
- PIM路由器上可能同时存在两种路由表项。当收到源地址为S,组地址为G的组播报文,且通过RPF检查的情况下,按照如下的规则转发
- 如果存在(S,G)路由表项,则由(S,G)路由表项指导报文转发
- 如果不存在(S,G)路由表项,只存在(,G)路由表项,则先依照( ,G)路由表项创建(S,G)路由表项,再由(S,G)路由表项指导报文转发
组播分发树的分类
- SPT(Shortest-Path or Source Distribution Tree,最短路径树或源树)
- 源树是以组播为树根的组播分发树
- 树源的分支形成了通过网络到达接收者所在分支的分布树。因为树源使用最短的、从源起失贯穿网络到达组播接收者的路径,所以又叫最短路径树
- SPT同时适用于PIM-DM网络和PIM-SM网络
- 主要使用(S,G)表项
- RPT(Rendezvous Point Tree,共享树)
- 与源树使用组播源作为根不同,共享树使用RP(Rendezvous Point)作为汇聚点
- 多个组播可以共用一个RP,期望接收组播流量的路由器通过组播协议在自己与RP之间建立一条RPT的分支,组播流量首先需要从源发送到RP,然后再由RP将组播流量转发下来,组播流量顺着RPT最终到达各个接收者所在的终端网络
- RPT适用于PIM-SM网络和双向PIM网络
- 主要使用(*,G)表项
组播环路问题
RPF
- 在组播网络中,如果组播流量出现转发环路,比起单播报文的转发环路的危害要大得多。路由器在转发一个组播报文时,出了会关注报文的目的地址,还会特别关心该报文的源地址。组播路由器通过一个被称为RPF(Reverse Path Forwarding,反向路径转发)的机制来实现组播数据转发的无环变化。
- RPF机制确保组播地址数据从正确的接口被收到,只有RPF检查的组播数据包才会被路由器沿着组播树进行转发,如果数据包从错误的接口被收到,路由器将丢弃这些报文。这里所谓的正确的接口,其实就是RPF接口(通过RPF检查的接口),也就是我们常说的上游接口,一种常见的情况是,设备借助其单播路由表实现RPF检查,接口选举依赖单播路由表。
组播路由协议分类
- 密集模式协议:PIM-DM
- PIM-DM使用“推(PUSH)”模式转发组播报文,一般应用于组播组成员规模相对较小、相对密集的网络。Push方式假设网络中每一个子网至少有一个(S,G)组播组的接收者,因此组播数据被推送到网络中的各个角落,然后在进行剪枝操作,不需要组播流量的路由器将自己从组播分发树上修剪掉
- 稀疏模式:PIM-SM
- 稀疏模式协议使用“拉(Pull)”的方式,而不是强推。这种方式假定网络中不存在接收者,除非设备用显示的加入(Join)机制来申请。
IGMP
- 报文用IP封装,协议号为2,而且TTL字段值为1
- 用于主机(组播成员)和组后一跳路由器之间
- 主机使用IGMP报文向路由器申请加入和退出组播组。默认时路由器是不会向接口下转发组播数据流的,除非该接口上存在组成员
- 路由器通过IGMP查询网段上是否有组播组成员
- 在路由器上使用时需要先激活组播路由功能
IGMP查询器
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2924854739@qq.com
文章标题:组播
本文作者:DROBP
发布时间:2019-09-16, 19:30:52
最后更新:2019-09-16, 19:34:16
原始链接:https://DROBP.github.io/2019/09/16/组播/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。