组播

  1. IP组播
    1. 组播路由协议
    2. 组播路由表项
    3. 组播分发树的分类
    4. 组播环路问题
    5. IGMP

IP组播

  • 组播非常适合“一对多”的模型,只有加入到特定组组播组的成员,才会收到组播数据。当存在多个组播成员时,源无需发送多个数据拷贝,仅需发送一份即可,组播网络设备会根据实际需要转发或拷贝组播数据
  • 数据流只会发送给加入组播组的接收者,而不需要该数据的设备不会收到该组播流量
  • 相同的组播报文,在一段链路上仅有一份数据,大大提高了网络资源的利用率

组播IP地址与MAC地址的映射

IP地址与组播mac

组播mac地址:第一个8位的值为1表示组播mac地址,为0表示单播mac地址。

组播路由协议

主要功能:

  1. 在接收组播报文时,判断该报文是否在正确的接口上到达,从而确保组播数据转发的五环化
  2. 在网络中建立一棵组播分发树(组播流量转发的路径数树)
  3. 组播分发树体现在每一台组播路由器上便是(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查询器

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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏