组播基础概念

2024-04-27 15:38
文章标签 基础 概念 组播

本文主要是介绍组播基础概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述:

组播传输作为IP数据传输的三种方式之一 ,是指接收者的数量和位置在源端主机不知道的情况下,仅由源发出一份组播报文,向目标组播IP地址发送数据的过程。其特点有:

  1. 组播实现点到多点的高效数据传输。(通常基于UDP)
  2. 组播可以有效节约带宽、降低网络负载。(按需发送,不会和广播一样只会泛洪,减少了对链路带宽的浪费)
  3. 组播广泛应用于IPTV、实时数据传送和多媒体会议等。(常常用于直播,视频会议,电视网络等处)

在这里插入图片描述
对比三种IP网络中的传输方式:

单播:
采用单播方式时,网络中传输的信息量与需要该信息的用户量成正比。当需要该信息的用户数量较大时,信息源需要将多份内容相同的信息发送给不同的用户,这对信息源以及网络带宽都将造成巨大的压力。由此可以看出,该传输方式不利于信息的批量发送,只适用于用户稀少的网络。

广播:
采用广播方式时,不需要接收信息的主机也将收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网段中信息泛滥。由此可见,该传输方式不利于与特定对象进行数据交互,并且还浪费了大量的带宽。

组播相对单播和广播的优势:

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

基本术语:

在这里插入图片描述

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

对比记忆:
在这里插入图片描述

可以将一个组播组的组播网络分成三部分,也就是组播源->组播路由器->组播成员。组播就像IP单播一样是一个相对独立的领域,所以涉及的知识非常全面,包括的协议也是非常的多,使用最多的是PIM和IGMP协议。其中PIM就是运行在组播路由器段的协议,IGMP是运行在组播成员段的协议,而源段只需要发送组播即可,不用运行组播协议。

组播服务模型:

在这里插入图片描述
组播服务模型的分类是针对接收者主机的,对组播源没有区别。组播源发出的组播数据中总是以组播源自己的IP地址为报文的源IP地址,组播组地址为目的地址。而接收者主机接收数据时可以对源进行选择,因此产生了ASM和SSM两种服务模型。这两种服务模型使用不同的组播组地址范围。

ASM:
Any-Source Multicast,任意源组播。当组播组成员接收组播报文的时候,不关心是谁发送的,只要是自己所需要的组就添加进去。需要注意的是:ASM模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,它们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。(全局应用中唯一)

SSM:
Source-Specific Multicast,指定源组播。当组播组成员接收组播报文的时候,关心是谁发送的,不仅仅是自己所需要的组,还需要组播源的IP地址是自己允许的,有着更精确的控制。需要注意的是:SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项,可以加以区别不同的源IP地址。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞(本地应用唯一)。

SFM:
Source-Filtered Multicast,过滤源的组播。SFM模型继承了ASM模型,从组播发送者角度来看,组播组成员关系二者完全相同。SFM 在功能上对ASM进行了扩展,组播节点对接收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。最终,接收者只能接收到来自部分组播源的数据。从接收者的角度来看,只有部分组播源是有效的,组播源经过了筛选。SFM仅在ASM的基础上添加了组播源过滤策略,此外,基本原理和配置方法相同。此处将SFM与ASM统称为ASM。

组播地址范围:

IPv4地址: IANA 定义的组播地址范围及含义
在这里插入图片描述

  1. 224.0.0.0 到 224.0.0.255 为 IANA 预留的永久组地址,地址 224.0.0.0 保留不做分配,其它地址供路由协议进行拓扑查找和维护协议使用(协议地址)。该范围内的地址属于局部范畴,不论生存时间字段(TTL)值是多少,都不会被路由器转发(只能在一个广播传递),当起开了这个协议的设备就会接受对应的永久广播地址,否则不会接收,所以也是做到了精确的接收。
  2. 224.0.1.0到231.255.255.255,233.0.0.0到238.255.255.255为ASM组地址,在全网范围内有效。
  3. 232.0.0.0到232.255.255.255,为用户可用的SSM组地址,全网范围内有效。总的来说SSM地址的范围比ASM要小很多,第二和第三这两种地址的服务是通过相应机构监督完成的。
  4. 239.0.0.0到239.255.255.255,为本地管理组播地址,仅在特定的本地管理域内有效,称为本地管理组播地址(前面提到的是公有地址)。本地管理组播地址属于私有地址,在不同的管理域内使用相同的本地管理组播地址不会导致冲突。(可以定义为ASM服务或者SSM服务)

注意点:

  1. 永久组地址:IANA为路由协议预留的组播地址(也称为保留组地址),用于标识一组特定的网络设备。永久组地址保持不变,组成员的数量可以是任意的,甚至可以为零,大部分组播地址都是永久组播地址。永久组播地址一览:
    在这里插入图片描述

  2. 临时组地址:为用户组播组临时分配的IPv4地址(也称为普通组地址),组成员的数量一旦为零,即取消。

MAC组播地址:
由IP组播地址产生,主要是在交换环境中有着优良的作用,当交换机没有开启组播协议的时候也会进行泛洪(和广播一样),需要开启了相应的协议以后才能进行相应的组播转发。对于路由器,对于永久组播MAC地址需要开启对于协议会接收,对于其他组播MAC地址必须开启相应的组播功能,会接收所有的组播MAC地址,否则接收到就会丢弃。

IPv4组播地址到MAC组播地址的映射:
在这里插入图片描述
IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是有32个IPv4组播地址映射到同一MAC地址上。例如IP地址为224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。网络管理员在分配地址时必须考虑这种情况。

组播协议:

一、ASM模型组播协议:
域内组播路由用来在AS内部发现组播源并构建组播分发树,从而将组播信息传递到接收者。

  1. PIM:是较为典型的域内组播路由协议。根据其转发机制不同,可分为DM(Dense Mode,密集模式),SM(SparseMode,稀疏模式)。
  2. IGMPv1和IGMPv2:部署在组播路由器与用户主机之间,路由器配置在与主机相连的接口上。用于在主机侧实现组播组成员动态加入与离开。在路由器侧实现组成员关系的维护与管理,同时与上层组播路由协议进行信息交互。
  3. MLDv1:MLDv1原理和IGMPv2基本相同,在IPv6中使用。

域间组播路由协议用来实现组播信息在AS之间的传递,目前较为成熟的解决方案为:MSDP(Multicast Source Discovery Protocol,组播源发现协议)。

二、SSM模型组播路由协议:
没有域内和域间的划分。接收者预先知道组播源的具体位置。

  1. PIM-SSM:借助了PIM-SM中部分技术实现,相对于PIM-SM,机制会简单一些。
  2. IGMPv3:作用和IGMPv1和IGMPv2相同,不过通过IGMPv3产生的是带有组播源地址的IGMP组播路由条目。
  3. MLDv2:MLDv2原理和IGMPv3基本相同,在IPv6中使用。

三、其他组播协议:
除了上述提到的组播协议,还有DVMRP、MOSPF、CBT、MVPN 等。MOSPF和DVMRP两类组播路由协议类似OSPF和RIP的关系,一个使用链路状态协议,一个使用D-V矢量协议构建基于源的组播最短路径树,该组播树使用MOSPF和DVMRP各自单独维护的组播数据库去执行RPF检查,生成组播转发表。而CBT则是另一类组播路由协议,它有别于前两项技术的关键是不再基于源在网络中构建最短路径树,而是先定义一个核心节点。组播源的组播报文先流给这个核心节点,由其负责转发给接收者。CBT是双向树,所以不能使用PRF检查。MSDP则是帮助跨域组播源进行共享。

组播表:

注:命令都是华为设备上的。其中的一些具体内容在后续的PIM和IGMP笔记中进行分析。

完成组播数据的传输,要借助在不同位置的组播路由器的组播表工页,组播路由器上会有各种组播相关的表,如组播路由表、组播转发表、 IGMP 路由表、 PIM 路由表等。

1.组播协议路由表
组播协议路由表是运行各种组播路由协议时由各个协议自己维护的路由表项,如果组播路由协议为PIM协议,它会自身维护PIM协议路由表。本章中,我们观察组播转发都使用PIM协议路由表,使用命令display pim routing-table:
在这里插入图片描述
所有协议的路由表都相似,记录表项的(S,G) 条目及生存时间,还有上游接口和下游接口列表。其中(*,G)中的星号,表示任意的源地址,G表示组播地址;(S,G) 中的S表示确定的组播源地址。

2.IGMP路由表
接收者所在网段上,若路由器接口只开启IGMP,并没有开启PIM协议时,则组播数据依然可以转发到本网段,只要路由器接口下有组播接收者,数据转发可以转发到PIM协议没有开启的但有IGMP接收者的接口,这可以通过观察display igmp routing-table看到转发数据的出口:
在这里插入图片描述

3.组播静态路由
类似于单播中的静态路由,不过这里指定的内容是针对特定的“报文源”,指定RPF接口(RPF接口指的是通过了RPF检查的组播报文的入接口)和RPF邻居(入接口上连接的组播发送上游设备),例如在华为设备上使用命令:ip rpf-route-static 10.1.1.1 255.255.255.255 10.1.23.2可以配置组播静态路由。使用dis multicast routing-table static可以看到静态路由路由表中的内容:
在这里插入图片描述

4.组播路由表
组播路由表是全局唯一的用于转发组播数据的路由表。它的内容来自于多种组播路由协议,每种组播路由协议都有相应各自的组播路由协议表项,这些表项内容除出现在协议的路由表中外,还会汇集到组播路由表,组播路由表是由各个协议优选出的路由构建而成的。这就像单播路由中路由器同时运行OSPF、RIP、BGP多种路由协议,但其最佳路由都出现在IP路由表中,使用display multicast routing-table可以看到PIM路由表、IGMP路由表和静态组播路由表中的内容:
在这里插入图片描述

5.组播转发表
设备会根据组播路由和转发策略,从组播路由表选取最优的组播路由,下发到组播转发表中,直接用于指导组播数据转发,其处于数据平面上,作用相当于单播路由中的FIB表。如下display multicast forwarding-table命令,可用于检查组播转发表项有没有成功建立,组播数据能否正常传输:
在这里插入图片描述

组播报文转发过程:

组播转发区别于单播转发,单播转发是基于报文目标 IP 地址查表转发的过程,而组播转发是根据报文源 IP 地址查表转发的过程。以PIM为例,PIM以RPF机制指导组播报文转发,流程如下:
在这里插入图片描述
RPF ( Reverse Path Forwarding)检查就是对收到的组播数据报文的源IP进行检查,判定其是否从正确的入接口接收到组播数据的过程,某些RPF检查过程还要判定报文是否源自RPF邻居。在控制平面上,可以靠RPF检查计算上游接口生成(S,G) 或(*,G)组播转发表。在数据平面上,接口收到的数据报文会按下列方式执行RPF检查。

具体步骤的内容在PIM笔记中进行补充。

参考资料:《HCIE路由交换学习指南》、HCIE培训文档

这篇关于组播基础概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940889

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(