9. IP组播(理论)

news2024/11/15 17:48:40

作为IP传输三种方式之一,IP组播通信指的是IP报文从一个源发出,被转发到一组特定的接收者。相较于传统的单播和广播,IP组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。

9.1IP组播基础

1、在点到多点的场景中组播的优势

    • 相比单播,由于被D传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
    • 相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。

2、组播基本概念

组播方式示意图如图9-1所示:

                                            图9-1:组播方式示意图

    • 组播组:用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。
    • 组播源:信息的发送者称为“组播源”,一个组播源可以同时向多个组播组发送数据,多个组播源也可以同时向一个组播组发送报文。组播源通常不需要加入组播组。
    • 组播组成员:所有加入某组播组的主机便成为该组播组的成员,组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
    • 组播路由器:支持三层组播功能的路由器或交换机,组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。

3、组播服务模型

ASM(任意源组播):组成员加入组播组以后,组成员可以接收到任意源发送到该组的数据。

SSM(指定源组播):组成员加入组播组以后,组成员只会收到指定源发送到该组的数据。

4、组播IP地址

组播地址的范围和作用如表9-1所示:

                                                表9-1:组播地址的范围和作用

范围

作用

2240.0.0-224.0.0.255

永久组播地址,如OSPF中的224.0.0.5/6

224.0.1.0-231.255.255.255

233.0.0.0-238.255.255.255

ASM组播地址,全网范围内有效

232.0.0.0-232.255.255.255

SSM组播地址,全网范围内有效

239.0.0.0-239.255.255.255

本地管理地址

5、组播MAC地址

IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,映射关系如图9-2所示:例如组播组地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。

                         图9-2:IPv4组播地址与IPv4组播MAC地址的映射关系

9.2IGMP原理

IGMP是Internet Group Management Protocol的简称,又被称为互联网组管理协议,是TCP/IP协议族中负责IPv4组播成员管理的协议。IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。

9.2.1IGMPV1

1、IGMPV1的包文类型

    • 普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
    • 成员报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。

2、工作机制

(1)普遍组查询和响应机制,其流程如图9-3所示:

图9-3:普遍组查询和响应机制

  • IGMP查询路由器每隔60S发一次general query,
  • 组播组成员收到general query 后启动timer-g1定时器0-10s之间的随机值,定时器超时后发送report,它有两个作用:1回应general query, 2让其它成员不用发了
  • IGMP查询器接收到HostA的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项

(2)新组成员加入机制,其流程图如图9-4所示:

图9-4:新组成员加入机制

  • 主机HostC不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。
  • IGMP查询器接收到HostC的报告报文后,了解到本网段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。

(3)组成员离开机制,其流程图如图9-5所示:

图9-5:组成员离开机制

  • 假设HostA想要退出组播组G1  HostA收到IGMP查询器发送的普遍组查询报文时,不再发送针对G1的报告报文。由于网段内还存在G1组成员HostB,HostB会向IGMP查询器发送针对G1的报告报文,因此IGMP查询器感知不到HostA的离开。

  • 假设HostC想要退出组播组G2,  HostC收到IGMP查询器发送的普遍组查询报文时,不再发送针对G2的报告报文。由于网段内不存在组G2的其他成员,IGMP查询器不会收到G2组成员的报告报文,则在一定时间(缺省值为130秒)后,删除G2所对应的组播转发表项。

9.2.2IGMPV2

1、包文类型

  • 普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。
  • 成员报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。

  • 成员离开报文(Leave):成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。
  • 特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。

华为Datacom网络工程师HCIP全套学习课程(全套理论+实验)-学习视频教程-腾讯课堂

2、工作机制

  1. 查询器选举机制

  • 路由器的分类:查询器、非查询器
  • 选举原则:比较IP地址,越小越优

  1. 离开组机制,其流程图如图9-6所示:

图9-6:离开组机制

    • HostA向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G1的离开报文。
    • 查询器收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。

    • 该网段内还存在组G1的其他成员(如图4所示的HostB),这些成员(HostB)在收到查询器发送的特定组查询报文后,会立即发送针对组G1的报告报文。查询器收到针对组G1的报告报文后将继续维护该组成员关系。

    • 如果该网段内不存在组G1的其他成员,查询器将不会收到针对组G1的报告报文。在Timer-Membership超时后,查询器将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达查询器时,查询器将不会向下游转发。

9.2.3IGMPV3

与IGMPv2相比,IGMPv3报文的变化如下:

  • IGMPv3报文包含两大类:查询报文和成员报告报文。IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。
  • 查询报文中不仅包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文(Group-and-Source-Specific Query)。该报文由查询器向共享网段内特定组播组成员发送,用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
  • 成员报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2...)),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(S1、S2...)),表示接收除了组播源S1、S2……之外的组播源发给组G的数据。当组播组与组播源列表的对应关系发生了变化,IGMPv3报告报文会将该关系变化存放于组记录(Group Record)字段,发送给IGMP查询器。
  • 在IGMPv3中一个成员报告报文可以携带多个组播组信息,而之前的版本一个成员报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。

9.2.4IGMP snooping

IGMP Snooping (Internet Group Management Protocol Snooping)是一种IPv4二层组播协议,通过侦听三层组播设备和用户主机之间发送的组播协议报文来维护组播报文的出接口信息,从而管理和控制组播数据报文在数据链路层的转发。

1、IGMP snooping的作用

配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项,控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。

2、IGMP snooping的原理

(1)端口角色

  • 路由器端口
  1. 由协议生成的路由器端口叫做动态路由器端口。收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文(三层组播设备的PIM接口向外发送的用于发现并维持邻居关系的报文)的接口都将被视为动态路由器端口。
  2. 手工配置的路由器端口叫做静态路由器端口。
  • 成员端口
  1. 由协议生成的成员端口叫做动态成员端口。收到IGMP Report报文的接口,二层组播设备会将其标识为动态成员端口。

  1. 手工配置的成员端口叫做静态成员端口。

2、IGMP  Snooping SSM Mapping

IGMPv1和v2不支持SSM,所以通过在二层设备上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(*,G)信息转化为对应的(S,G)信息,以提供SSM组播服务。S表示组播源,G表示组播组,*表示任意组播源。缺省情况下,SSM组地址范围为232.0.0.0~232.255.255.255

3、IGMP代理

为了减少用户主机所在网段内的IGMP协议报文数量,可以在二层设备上部署IGMP Snooping Proxy功能,使其能够代理上游三层设备向下游主机发送IGMP查询报文,同时代理下游主机来向上游三层设备发送成员关系报告报文。配置了IGMP Snooping Proxy功能的设备称为IGMP Snooping代理,在其上游设备看来,它就相当于一台主机;在其下游设备看来,它相当于一台查询器。

9.3PIM原理

9.3.1 PIM DM

PIM(Protocol Independent Multicast)称为协议无关组播。这里的协议无关指的是与单播路由协议无关,即PIM不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF(Reverse Path Forwarding,逆向路径转发)检查,检查通过后创建组播路由表项,从而转发组播报文。

1、组播分发树MDT(Multicast Distribution Tree)

  • SPT(Shortest Path Tree)也叫源树:以组播源为根,组播组成员为叶子的组播分发树
  • RPT(RP Tree)也叫共享树:以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树

2、PIM路由器

  • 叶子路由器:与用户主机相连的PIM路由器,但连接的用户主机不一定为组成员
  • 第一跳路由器:组播转发路径上,与组播源相连且负责转发该组播源发出的组播数据的PIM路由器。
  • 最后一跳路由器:组播转发路径上,与组播组成员相连且负责向该组成员转发组播数据的PIM路由器。
  • 中间路由器:组播转发路径上,第一跳路由器与最后一跳路由器之间的PIM路由器。

3、PIM路由表项

  • (S,G)路由表项主要用于在PIM网络中建立SPT、老化时间为210s,每隔180s扩散一次。
  • (*,G)路由表项主要用于在PIM网络中建立RPT。

4、PIM-DM

(1)特点

PIM-DM主要用在组成员较少且相对密集的网络中,通过“扩散-剪枝”的方式形成组播转发树(SPT)

(2)协议报文

  • Hello

每隔30s发一次,超时时间为105s,发往组播224.0.0.13

  • Join/prune(加入/剪枝)
  • Graft(嫁接)
  • Graft-ack(嫁接确认)
  • Assert(断言)
    1. 单播路由协议优先级较高者获胜。
    2. 如果优先级相同,则到组播源的开销较小者获胜。
    3. 如果以上都相同,则下游接口IP地址最大者获胜。

9.3.2 PIM SM

1、特点

PIM-SM模式主要用在组成员较多且相对稀疏的组播网络中,该模式建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用PIM-SM模式不需要全网泛洪组播,对现网的影响较小,因此现网多使用PIM-SM模式。

2、报文类型和功能,

报文类型和功能如表9-1所示:

                                       表9-1:PIM SM报文类型和功能

报文类型

报文功能

Hello

用于PIM邻居发现,协议参数协商,PIM邻居关系维护等

Register(注册)

用于事先源的注册过程。这是一种单播报文,在源的注册过程中,组播数据被第一跳路由器封装在单播注册报文中发往RP

Register-Stop(注册停止)

RP使用该报文通知第一跳路由器停止通过注册报文发送组播流量

Join/Prune(加入/剪枝)

加入报文用于加入组播分发树,剪枝则用于修剪组播分发树

Assert(断言)

用于断言机制

Bootstrap(自举)

用于BSR选举。另外BSR也使用该报文向网络中扩散C-RP(Candidate-RP,候选RP)的汇总信息

Candidate-RP-Advertisement

(候选RP通告)

C-RP使用该报文向BSR发送通告,报文中包含该C-RP的IP地址及优先级等信息

3、静态RP

每一台路由上都要配置

4、动态RP-BSR(自举协议)

(1)C-BSR(candidate-bootstrap router)候选BSR

  • BSR的作用:收集C-RP的信息并形成RP-Set信息,BSR通过PIM报文将RP-Set信息扩散给所有PIM路由器。

  • BSR的选举原则:
  1. 优选级最大的,默认为0
  2. 优选级相同,IP地址最大的

每隔60s发一次

(2)C-RP(candidate-RP)候选RP

  • 作用:
  • RP的选举原则:
  1. 优选级越小越好,默认为0
  2. HASH值最大
  3. IP地址最大

5、PIM SM建树过程

(1)组播接受者所连路由器向RP建共享树

  • 叶路由器向上游发送join消息,直到RP
  • RP生成(* G),确认上游和下游接口生成RPT

注意:每隔60s发一次join,210没有收到就会把下游接口移除

(2)头一跳路由器向RP注册

  • 组播数据通过注册隧道发送给RP
  • RP知道组播源后开始向组播源建SPT
  • 源的组播数据通过STP到达RP后,RP向DR发送注册停止报文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5 逻辑回归及Python实现

1 主要思想 分类就是分割数据: 两个条件属性:直线;三个条件属性:平面;更多条件属性:超平面。 使用数据: 5.1,3.5,0 4.9,3,0 4.7,3.2,0 4.6,3.1,0 5,3.6,0 5.4,3.9,0 . . . 6.2,2.9,1 5.1,2.5…

一个容易被忽视的标签 —— iframe

前言 甲问:说说你知道的HTML标签。 乙于是说了一大堆标签,比如div,span等等。 甲说:那你知道 iframe 标签吗? 乙这时候迟疑了片刻,缓缓说出:知道它,但是不太了解这个标签。 HTM…

学到了,原来华为是这样判断MES系统的好坏的

可以想象华为公司对供应商的要求是多么严格,那么我们今天来谈一下华为对供应商工厂MES系统这块的要求,这要从生产防错系统、品质管控系统、品质追溯系统、出货防错系统四个方面来说。一、生产物料和生产治具防错系统建立完整的物料和治具标签方案&#x…

常用的数据脱敏(手机、邮箱、身份证号)

一、什么是数据脱敏 先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号、银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不可靠的环境…

AcWing3485. 最大异或和

先看题目: 说实话,我看到这道题就想用滑动窗口,但是滑了一下发现不太对啊,如果我用滑动窗口的话,那么最后肯定是一个固定长度为m的窗口在持续计算,区间长度小于m的区间的异或和肯定会被遗漏。然后我就想怎么…

vue前端架构说明书模板示例

目录 1. 技术说明... 2 1.1 版本明细... 2 1.2 核心技术介绍... 2 2. 项目结构说明... 3 3. 自动化部署设置说明... 5 4. 打包及运行说明... 5 5. 导包说明... 6 5.1 方案一... 6 5.2 方案二... 7 5.3 补充说明... 7 6. 修改本地运行时链接的服务器说明... 7 7. 常…

从 B 站出发,用 Chrome devTools performance 分析页面如何渲染

页面是如何渲染的?通常会得到“解析 HTML、css 合成 Render Tree,就可以渲染了”的回答。但是具体都做了些什么,却很少有人细说,我们今天就从 Chrome 的性能工具开始,具体看看一个页面是如何进行渲染的,以及…

视频传输协议详解(RTMP、RTSP、HLS)

RTMP——Real Time Messaging Protocol(实时消息传输协议)RTMP是由Adobe公司提出的,在互联网TCP/IP五层体系结构中应用层,RTMP协议是基于TCP协议的,也就是说RTMP实际上是使用TCP作为传输协议。TCP协议在处在传输层&…

sql学习一

文章目录一、if 语句二、去重问题三、concat,upper,lower四、group_concat五、like 模糊匹配六、union和union all七、流程控制语句case八、limit一、if 语句 if(expr1, expr2, expr3)当expr1的值为真时函数的返回值为expr2,当expr1的值为假时,函数的返…

安装redis并设置开机自启动允许远程链接

一、进入/usr/local目录下面;下载redis包wget https://download.redis.io/releases/redis-5.0.14.tar.gz二、安装gccyum install gcc-c三、解压、进入目录、编译tar -xvf redis-5.0.14.tar.gzcd redis-5.0.14make ##如果报错zmalloc.h:50:31: 致命错误:j…

打破单片机开发模式--胶水语言(JavaScript)

概述 传统的嵌入式单片机开发基本上形式如下图: 该流程对于功能单一或者功能变更极少的场景是比较友好的,但是对于设备应用层变更比较多或者公板方案开发应用的场景,上述场景显的有些累赘。那么有什么方式可以解决呢?&#xff1f…

U-Boot 之七 详解 Driver Model 架构、配置、命令、初始化流程

U-Boot 在 2014 年 4 月参考 Linux Kernel 的驱动模型设计并引入了自己的 Driver Model(官方简称 DM) 驱动架构。这个驱动模型(DM)为驱动的定义和访问接口提供了统一的方法,提高了驱动之间的兼容性以及访问的标准性。 …

和月薪3W的聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 我了解了下他的面试过程,就一点,不管是阿里还是腾讯的面试,这个级别的程序员,都会考察项目管理能力,并且权重…

[牛客网] HJ35 蛇形矩阵(写了好久才写出来)

链接https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e?tpId37&tqId21258&rp1&ru/exam/oj/ta&qru/exam/oj/ta&sourceUrl%2Fexam%2Foj%2Fta%3Fdifficulty%3D2%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&dif…

区块链行业遭供应链攻击,上万加密钱包被“抄底”损失上亿美元

当地时间8月2日晚间, 区块链行业遭遇了一次行业重创 。据科技媒体TechCrunch报道, 若干名攻击者“抄底”了上万个加密钱包,钱包内有价值上亿美元的代币。 据了解遭受攻击的加密钱包包括Phantom、Slope和TrustWallet等。涉及到的币种除了SOL、…

Vue2的tsx开发入门完全指南

本篇文章尽量不遗漏重要环节,本着真正分享的心态,不做标题党 下面进入正题: 由于现在vue的官方脚手架已经非常完善我们就不单独配置webpack了,节省大量的时间成本。 首先使用vue/cli创建一个vue模版项目(记得是vue/…

Dockerfile详解

一、能干嘛? 我们总会遇到下面这种情况:使用docker pull 拉取下来的镜像发现其提供的功能并不完善,比如拉下来个centos的镜像,运行该镜像生成容器发现连vim,ifconfig命令都没有!想要在该镜像的基础上扩充其…

[SQL]增删查改语法概览

数据定义 基本概念 基本表 本身独立存在的表SQL中一个关系就对应一个基本表一个(或多个)基本表对应一个存储文件一个表可以带若干索引 存储文件 物理结构对用户透明索引存放在存储文件中 视图 从一个或几个基本表导出的表数据库中至存放数据的定义而不存放视图对应的数据视…

Moonlight iPad全屏无边框串流方法

环境:iPad MoonLight 串流PC 问题:iPad无法全屏,有边框 解决办法:将电脑分辨率和MoonLight自定义分辨率调整为iPad原始分辨率 背景:在使用iPad进行MoonLight串流PC游戏时,发现客户端不论如何设定iPad都有边…

SQL函数

SQL函数 DATE_SUB()函数 1.1函数语法定义 1.2函数实际应用: 语法: 获取当前日期:select curdate()获取当前日期前一天:select date_sub(curdate(),interval 1 day)获取当前日期后一天:select date_sub(curdate(),interval -1 …