组播原理

组播原理

1.概述

想对于单播,广播方式减少了发送源的处理,降低发送源的负荷.但是采用广播方式,网络中所有主机都会收到广播数据,而不管是否需要接收.这样不仅数据的安全性得不到保证,而且造成网络中信息泛滥,浪费带宽资源.单播和组播均不能以最小的网络开销实现数据的单点发送,多点接收,IP组播技术的出现解决了这个问题.

组播指发送源将产生的单一IP数据包通过网络发送给一组特定接收者的网络传输方式.在进行点到多点传输时,发送源不需要关心接收者的数目,仅需要发送一份报文;路由器仅关心接口下是否有接收者,同样不需要关心接收者的数量,所以路由器之间的链路上也仅发送一份报文.

跟广播相比,组播方式下路由仅在有接收者的接口复制报文,报文最终仅传递给接收者而非网络中的所有主机,可以节省大量网络带宽.

在这里插入图片描述

2.组播技术体系

组播的实现机制比较比较复杂,要实现组播首先要解决下面几个问题:

在这里插入图片描述

  1. 组播接收者是数目不定的,无法像单播一样使用主机IP进行标识,所以首先要解决如何在网络中标识一组接收者
  2. 实现了对组的标识,还需要解决接收者如何加入和离开这个组,路由设备如何维护组成员信息
  3. 组播接收者可能分散在网络中的任何角落,那么组播源和组播接收者之间的转发路径基于什么模型,组播数据如何在路径转发
  4. 组播数据转发路径如何建立维护

上述技术需求通过组播架构中的一些重要机制来实现,包括组播地址,组播组管理协议,组播分发树模型,组播转发机制和组播路由协议实现.

3.组播地址

组播通信中使用组播地址来标识一组接受者,使用组播地址标识的接收者集合称为组播组.

IANA(因特网编号分配委员会)将D类地址空间分配给IPv4组播使用,地址范围为224.0.0.0—239.255.255.255,组播地址的分类和具体含义如下:

  1. 224.0.0.0—224.0.1.255:协议预留直播地址.除了224.0.0.0保留不做分配外,其他地址供路由协议,拓扑查找和协议维护等使用.
  2. 224.0.2.0—238.255.255.255:用户组地址,全网范围内有效
  3. 239.0.0.0—239.255.255.255:本地管理组地址,仅在本地管理域内有效

组播地址解决了IP报文在网络层寻址的问题,还需要考虑数据在链路层如何寻址.以太网传输单播报文的时候,目的MAC地址使用的是接收者的MAC地址.由于组播目的地不再是一个具体的接收者,而是一个成员不确定的组,所以在链路层需要使用特定的组播MAC地址来标识一组接收者.

IPv4组播中MAC地址格式为01-00-5E-XX-XX-XX.高24位固定为0x01005E,第25位为0,低23位来自于组播IP地址的低23位,如下图
在这里插入图片描述

由于组播IP地址的高4位是1110,代表组播标识,而低28位中只有23位被映射到组播MAC地址中,这样组播地址中就有5位信息丢失.于是,就有32个组播IP地址映射到同一个组播MAC中上,从而在二层处理的过程中,设备可能就要接收一些本组播组以外的组播数据,而这些多余的组播数据就需要设备的上层进行过滤了.

4.组播协议体系

组播协议主要包含主机和路由器之间的协议,路由器与路由器之间的协议,以及组播域之间的协议.
在这里插入图片描述

主机和路由器之间的协议及组播组管理协议,IPv4中常用的是IGMP.通过IGMP,路由器可以了本地网段中,那些组播组存在接收者,并维护组成员.

路由器和路由器之间的协议称为组播路由协议,通过组播路由协议可以将成员信息扩展到整个网络,从而建立从发送源到接收者之间的组播分发树.

组播域的边界通常为单播的边界,由于域之间组播路由信息有可能无法直接交互,导致接收者无法跨域接收组播数据,此时需要在域之间运行域间组播路由协议,解决域间组播通信问题.

5.组播组管理协议

解决了如何表示组播组的问题,还需要考虑接收者怎样加入组播组中,如何维护组播组以及由谁来维护等问题.在组播架构中使用组播组管理协议来实现上述需求.

组播组管理协议是运行在主机和路由器之间的协议.主机通过组播组管理协议通知路由器加入或离开某个组播组;路由器通过组播组管理协议响应主机加入请求,建立相应的组播表项,并通过查询消息维护组播组信息.

常用的组播组管理协议为IGMP(Internet Group Management Protocol),因特网组管理协议
在这里插入图片描述

5.1 IGMP V2
5.1.1 普遍查询和成员组报告

在这里插入图片描述

如上图,查询器RTA周期的向本网段所有主机发送IGMP General Query报文,目的地址为224.0.0.1,收到Query报文以后,由于主机A和B接收组播组228.1.1.1的数据,所以对General Query报文进行响应,回复Membership Report报文,A和B进行回复前,会随机等待一段时间,具体时间在[0,Max Reps Time].

IGMP v2还支持成员报告印制功能,假设B等待的时间大于A,则主机A会先发送Membership Report报文,目的地址为228.1.1.1,B在收到该报文后,发现它也正要发送228.1.1.1的Membership Report报文,从而取消自己Report报文的发送,这就是成员报告抑制功能.

因此C是属于组播组228.2.2.2,所以它回复目的地址为228.2.2.2的Membership Report报文.

同时,主机可以不同等待周期查询,直接发送加入报文.

经过查询以后,RTA知道该网段中有组播组228.1.1.1和228.2.2.2的成员,所以创建组播转发表项(*,228.1.1.1)和( *,228.2.2.2),*代表任何组播源.当然组播转发表项还包含组播报文入接口和组播报文的出接口等信息,用于指导组播报文在本地路由器的转发.当组播源有发往228.1.1.1或228.2.2.2的组播报文到达RTA时,由于RTA上存在( *,228,1,1,1)和( *,228.2.2.2)组播转发项,于是将组播报文根据出口信息转发到本地网段,接收者就能够收到该组播数据了.

5.1.2离开组和特定组查询

在IGMPv2中,当一个主机离开某组时会向本地网段内所有组播路由器发送Leave Group报文,目的地址为224.0.0.2,报文中包含要离开的组播组地址信息.

在这里插入图片描述

主机A和主机C要分别离开组播组228.1.1.1和228.2.2.2,则会向RTA发送Leave Group报文.

当IGMP查询器RTA收到Leave Group报文后,会发送另外一种查询报文--Group Specific Query 报文,用于确认该组播在网段内是否还有成员存在.Group Specific Query报文的目的地址为所要查询的指定组播组地址.

由于B还要接收228.1.1.1的组播,所以收到Group-specific Query报文后,会回复Membership Report.

由于主机C离开后,网段内不再有组播组228.2.2.2的成员,所以在最大响应时间内不会收到该组播组的Report报文,RTA将删除组播组228.2.2.2表项,此后不会再将目的地址为228.2.2.2的报文送达该网段

6.Snooping
6.1 Snooping概述

实际网络中,主机通常是通过交换机连接到路由器上的,因此其无法识别路由器发过来的组播报文,因此会作为未知报文在网段内广播,导致不属于该组播组成员的主机也收到组播报文,这种情况浪费网络带宽,并增加了非接收者网络处理的负担,通过二层交换机上实现IGMP Snooping功能可以解决组播报文在二层被广播发送的问题

6.2 组播Snooping原理

IGMP Snooping是运行在二层设备上的组播约束机制,用于管理和控制组播组.运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC地址建立起映射关系,并根据这个的映射关系转发组播数据.如下图:
在这里插入图片描述

如上图,主机A和主机C是组播228.1.1.1的接收者,则二层交换机会通过IGMP Snooping为组播组228.1.1.1记录一个表项,表项中包含连接路由器的端口,组播组地址以及连接接收者的端口.当有目的地址为228.1.1.1的组播报文到达时,二层交换机只会将组播报文从连接接收者的端口发送出去,从而避免二层广播.

7.组播 vlan

在传统的组播点播的方式下,当属于不同的VLAN的主机点播同一组播时,路由器需要把组播数据在每个用户VLAN内部复制一份发送给二层交换机,这样就浪费了带宽,当存在大量不同VLAN的接收者时,路由器和二层交换机之间的链路上将会传送大量内容相同的报文.

使用组播VLAN功能可以解决这个问题,在二层交换机上配置了,组播VLAN以后,路由器只需把组播数据在组播VLAN内复制一份发送给二层交换机.如下图所示:
在这里插入图片描述

如上图,接收者主机A,B,C分别不同的用户VLAN,在二层交换上配置VLAN10为组播VLAN,将所有的用户VLAN都配置为该组播VLAN的子VLAN,并在组播VLAN内使能IGMP Snooping.

8.问题
8.1 IGMP Snooping与IGMP Proxy区别

简单来说,Snooping是完全工作在二层的,不会对上行的加入报文进行修改,只是利用Snooping的机制形成组播转发规则,并且配置给硬件,这样下行的组播流就能够通过硬件规则快速转发.

其实Snooping与Proxy就主要的区别在于,上行的加入报文到达Proxy模块以后,会被修改后,然后发送给上行的路由器,其实它是工作在三层的,Proxy会怎么修改下行设备过来的加入报文呢?

主要是将下挂设备过来的加入报文的源mac和源IP修改为三层设备的mac和ip,然后继续向上游设备发送.同时,对于上游过来的查询报文,Proxy模块也会代为回复

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值