IP组播基础

《IP组播基础》属于博主的"组播"专栏中,想要了解更多关于"组播"的内容请点击主页面跳转到相应"组播"专栏,博主会持续更新,以打造出"组播"的全网最详解!

一.前言

  • 网络中存在各种各样的业务,从流量模型看一般可以将业务分为两类:
    • 点到点业务:比如FTP,WEB业务,此类业务主要特点是不同的用户有不同的需求,比如用户A需要下载资料A,用户B需要下载资料B。此类业务一般由单播承载,服务器对于不同用户发送不同的点到点数据流。
    • 点到多点业务:比如IPTV,视频会议等,此类业务的特点是用户对于业务有相同的需求,比如用户A,B,C,D都需要收看视频X,此类业务可以使用单播,组播,广播承载。但使用单播或广播承载点到多点业务时存在一定问题。
    • 组播技术能够较好的解决单播或广播在承载点到多点业务时存在的问题。
  • 本文主要介绍使用组播承载点到多点业务的优点,组播网络的基本概念与组播转发的基本流程。

二.IP组播基本概念

1.点到多点业务的困境

  • 点到多点业务可以由单播,组播,广播进行承载,现网中也有各种各样的实现方式。但使用单播或者广播承载点到多点业务时存在一些固有的问题。
  • 单播(Unicast)是在一台源IP主机和一台目的IP主机之间进行。网络上绝大部分的数据都是以单播的形式传输的,例如电子邮件收发、网上银行都是采用单播实现的。
    • 在单播通信中每一个数据包都有确切的目的IP地址;对于同一份数据,如果存在多个接收者,Server需发送与接收者数目相同的单播数据包;当接收者增加到成百上千时将极大加重Server创建相同数据和发送多份相同拷贝后所产生的消耗,网络中的设备性能及链路带宽都会面临一定程度的浪费;单播方式较适合用户稀少的网络,当用户量较大时很难保证网络传输质量。
  • 广播(Broadcast)是在一台源IP主机和网络中所有其它的IP主机之间进行,属于一对所有的通讯方式,所有主机都可以接收到(不管是否需要)。
    • 广播数据包被限制在广播域中;一旦有设备发送广播数据,则广播域内所有设备都会O收到这个数据包,并且不得不耗费资源去处理,大量的广播数据包将消耗网络的带宽及设备资源;广播方式只适合共享网段,且信息安全性和有偿服务得不到保障。

2.使用组播承载点到多点的业务

  • 组播方式下,单一的信息流沿组播分发树被同时发送给一组用户,相同的组播数据流在每一条链路上最多仅有一份。相比单播和广播,使用组播的好处如下:
    • 相比单播,用户的增加不会导致信息源负载的加重,不会导致网络资源消耗的显著增加。
    • 相比广播,不会造成网络资源的浪费,并能提高信息传输的安全性,而且组播可以实现跨网段的传输。
  • 组播(Multicast)是在一台源IP主机和多台(一组)IP主机之间进行,中间的网络设备根据接收者的需要,有选择性地对数据进行复制和转发。
  • 组播技术有效地满足了单点发送、多点接收的需求,实现了IP网络中点到多点业务数据的高效传送,能够大量节约网络带宽、降低网络负载。
  • 组播分发树:组播流量的转发路径。

3.组播数据报文结构

  • 组播数据报文的结构与单播报文类似,但组播数据报文的目的MAC地址与目的IP地址与单播报文有很大差异。
    • 组播目的IP地址:目的IP地址为组播IP地址,地址范围从224.0.0.0到239.255.255.255
    • 组播目的MAC地址:目的MAC地址为组播MAC地址,组播MAC地址由组播IP地址映射而来

4.组播IP地址

  • 在IPv4地址空间中,D类地址(224.0.0.0/4)被用于组播。一个组播地址就表示一个点到多点的数据流,比如IPTV数据流,语音会议数据流。
  • 大多数情况下,同一个组播网络里不同的业务(比如,IPTV,语音会议)就需要使用不同的组播IP地址。
  • IANA对D类地址做了进一步的定义,几种主要的组播地址如下表所示:
  • IPv4组播地址:
    • IPv4地址空间分为五类,即A类、B类、C类、D类和E类。D类地址为IPv4组播地址,0范围是从224.0.0.0到239.255.255.255,用于标识组播组,且仅能作为组播报文的目的地址使用,不能作为源地址使用。
    • IPv4组播报文的源地址字段为IPv4单播地址,可使用A、B或C类地址,不能是D类、E类地址。
    • 在网络层上,加入同一组播组的所有用户主机能够识别同一个IPv4组播组地址。一旦网络中某用户加入该组播组,则此用户就能接收以该组地址为目的地址的IP组播报文。

4.组播MAC地址

  • 以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址。
  • IANA规定,IPV4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,例如组播组地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。
  • 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。网络管理员在分配地址时必须考虑这种情况。
  • IETF认为同一个局域网中两个或多个组地址生成相同的MAC地址的几率非常低,不会造成太大的影响。
  • 组播MAC地址标识了一组设备,这种MAC地址第1个字节的最低比特位为1,例如0100-5e00-00ab。
  • 一个组播MAC地址所标识的一组设备有着共同的特点,那就是它们都加入了相同的组播组这些设备将会侦听目的MAC地址为该组播MAC地址的数据帧。只有单播MAC地址才能够被分配给一个以太网接口,组播或广播MAC地址是不能被分配给任何一个以太网接口的,换句话说,这两种类型的MAC地址不能作为数据帧的源MAC地址,而只能作为目的MAC地址。
  • 对于组播MAC地址,相信大家并不会太陌生,例如STP协议的BPDU载荷便是被直接封装在以太网数据帧中的,并且数据帧的目的MAC地址为0180-c200-0000,这就是一个组播MAC地址,类似这样的例子还有很多,此处不再一-列举,这些组播MAC地址并不与组播IP地址存在关联。
  • 除此之外,还有一类组播MAC地址是我们需要格外关注的,那就是与组播IP地址存在映射关系的组播MAC地址。本文介绍的组播MAC地址对应该类型。

5.组播网络基本架构

组播网络大体可以分为三个部分:

  • 源端网络:将组播源产生的组播数据发送至组播网络。
  • 组播转发网络:形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)。
  • 成员端网络:让组播网络感知组播组成员位置与加入的组播组。
  • 组播源(Source):组播流量的发送者,例如多媒体服务器。组播源无需运行任何组播协议,只需简单 地将组播数据发送出来即可。
  • 组播接收者(Receiver):也被称为组播组成员,是期望接收特定组播组流量的设备,例如运行多媒体 直播客户端软件的PC。
  • 组播组(Multicast Group):用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。
  • 组播路由器(Multicast Router):支持组播、运行组播协议的网络设备,实际上不仅仅路由器能够支持 组播,交换机、防火墙等设备也能够支持组播(取决于设备型号),路由器仅是一个代表。
  • 第一跳路由器(First-Hop Router):组播转发路径上,与组播源相连且负责转发该组播源发出的组播数据的PIM路由器。
  • 最后一跳路由器(Last-Hop Router):组播转发路径上,与组播组成员相连且负责向该组成员转发组播数据的PIM路由器。
  • IGMP(Internet Group Management Protocol,因特网组管理协议),是TCP/IP协议族中负责IP组播成员管理的协议,它用来在接收者和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

6.组播服务模型

  • 组播组成员在接收组播数据时可以对于组播数据源进行选择,因此产生了ASM(Any-Source Multicast,任意源组播)和SSM(Source-Specific Multicast,指定源组播)两种组播服务型。
    • ASM:组成员加入组播组以后,组成员可以接收到任意源发送到该组的数据。
    • SSM:组成员加入组播组以后,组成员只会收到指定源发送到该组的数据。

三.组播数据转发原理

1.组播数据转发的困局

  • 组播数据转发需要依赖路由表项。但是基于目的网络的路由表在转发组播数据时存在一定问题:

2.组播路由与RPF检查

  • 由于组播转发容易产生环路,次优,重复报文,所以组播路由表项除了目的网络和出接口外还需要添加组播源和入接口的信息。设备仅转发从特定唯一的入接口收到的组播数据,从而避免组播转发时产生环路,次优重复报文(部分解决)等问题。
  • 对于相同的组播源,设备通过RPF(Reverse Path Forwarding,反向路径转发)检查可以确定设备上唯一的组播流量入接口。
  • 组播路由表项以及与RPF检查的关系如下:

3.RPF检查工作原理

RPF检查过程如下:

  • 组播路由器根据报文的源地址通过路由表(单播路由表、MBGP路由表或组播静态路由表查找到达"报文源"的路由,查看到"报文源"的路由表项的出接口是否与收到组播报文的入接口一致。如果一致,则认为该组播报文从正确的接口到达,从而保证了整个转发路径的正确性和唯一性。这个过程就被称为RPF检查。

4.RPF路由选举规则

RPF路由可以从单播路由、MBGP路由、组播静态路由中选举产生。当路由器收到一份组播报文后,如果这三种路由表都存在,具体检查过程如下:

  • 根据以下原则从这三条最优路由中选择一条作为RPF路由:
    • 如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由。
    • 如果这三条路由的掩码一样,则选择优先级最高的那条路由。
    • 如果它们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行。选择。
  • MBGP:
    • MBGP(Multicast BGP,组播BGP)主要用于传递组播源相关的路由条目。
  • 组播静态路由表:
    • 手工配置组播源与出接口的对应关系

5.组播分发树

  • 组播数据转发需要保证转发路径无环,无次优路径且无重复包。
  • 通过RPF机制与组播路由协议,组播网络可以最终形成无环、无次优且无重复包的组播转发路径,该路径可以被称为组播分发树。
  • 组播分发树以组播源为根,以组成员为叶子形成转发路径,组播数据在转发时都基于组播分发树进行转发。

6.组播数据转发流程

  • 组播路由表项出接口与组播转发路径由组播路由协议决定。
    • 组播路由协议主要有:PIM,MBGP,MSDP。
    • 关于组播路由协议的内容将在《PIM原理与配置》文章中讲解,请持续关注博主。
  • 组播组成员位置由IGMP通告。
    • 关于IGMP的内容将在《IGMP原理与配置》文章中讲解,请持续关注博主。

7.组播协议简单介绍

  • 组播网络需要基于多种组播协议才能建立转发路径:
    • 工作在成员端网络的主要是IGMP(Internet Group Management Protocol,因特网组管理协议)协议,用于告知组播网络,组成员的位置与所加组播组。
    • 工作在组播转发网络的协议主要有PIM,MSDP,MBGP。
      • PIM(Protocol Independent Multicast,协议无关组播)协议主要作用是生成AS域内的组播分发树。
      • MSDP(Multicast Source DiscoveryProtocol,组播源发现协议)主要作用是帮助生成AS域间的组播分发树。
      • MBGP(Multicast BGP,组播BGP)主要作用是帮助跨域组播流进行RPF校验。

四.总结

  • 组播主要解决单播或广播在承载点到多点流量时存在的问题:
    • 使用单播承载点到多点流量时,随着点到多点业务客户端的增加,可能会引起带宽占用过高或源服务器压力过大等问题。
    • 使用广播承载点到多点流量时,虽然不存在单播承载点到多点流量时的问题,但缺乏安全性。
  • 组播网络一般由三部分组成:源端网络,组播转发网络,成员端网络。
    • 组播转发网络负责组播数据在组播路由器之间转发,但是在转发过程中可能存在环路,次优路径,重复报文等问题。这些问题可以通过RPF检查部分或全部解决。
相关推荐
etcix43 分钟前
实现一个简单的拉取网络todo app
网络
网络安全(华哥)44 分钟前
网络安全服务实施流程管理 网络安全服务体系
运维·服务器·网络
致奋斗的我们1 小时前
Nginx反向代理及负载均衡
linux·运维·mysql·nginx·负载均衡·shell·openeluer
Ares-Wang1 小时前
负载均衡 方式
运维·负载均衡
钗头风1 小时前
3.Docker常用命令
运维·docker·容器
忧虑的乌龟蛋1 小时前
嵌入式 Linux:使用设备树驱动GPIO全流程
linux·服务器·嵌入式·imx6ull·gpio·点灯·pinctrl
查理养殖场1 小时前
计算机网络之TCP的可靠传输
网络·tcp/ip·计算机网络
朝九晚五ฺ2 小时前
【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
linux·运维·学习
六六六六六66662 小时前
企业组网IP规划与先关协议分析
服务器·网络·tcp/ip
不要吃栗子李2 小时前
高级运维:1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。2. 基于 openEuler 构建 LVS-DR 群集。
运维·负载均衡·lvs