组播网络需要基于多种组播协议才能建立转发路径:
- 工作在成员端网络的主要是IGMP(Internet Group Management Protocol,因特网组管理协议)协议
用于告知组播网络,组成员的位置与所加组播组。
- 工作在组播转发网络的协议主要有PIM,MSDP,MBGP。
- PIM(Protocol Independent Multicast,协议无关组播)协议主要作用是生成AS域内的组播分发树。
- MSDP(Multicast Source Discovery Protocol,组播源发现协议)主要作用是帮助生成AS域间的组播分发树。
- MBGP(Multicast BGP,组播BGP)主要作用是帮助跨域组播流进行RPF校验。
1.IGMP
组播通信中,组播网络需要将组播数据发送给特定的组播组成员,因此组播网络需要知道组成员的位置与组成员所加的组播组。
通过IGMP(Internet Group Management Protocol,因特网组管理协议),组成员可以将加组消息发送给组播网络,从而让组播网络感知到组成员的位置和所加组播组。
本课程主要讲解IGMP的作用和基本原理,包括IGMPv1、IGMPv2和IGMPv3三个版本的原理与区别,和IGMP Snooping的工作机制、IGMP SSM Mapping工作机制、IGMP代理的工作机制。
1.组播网络的转发困境
IP组播通信的特点是报文从一个源发出,被转发到一组特定的组播组成员。在组播通信模型中,组播源不关注接收者的位置信息,组播数据转发需要依赖组播网络才能将数据发送至组播组成员。
组播数据在进行传递时,组播网络为了将组播数据转发至组播组成员,需要知道组播组成员的位置与所加组播组。

组播网络感知组播组成员有两种方法:
- 手工静态配置:在组播路由器上静态指定连接组播组成员的接口,静态配置组成员加组信息。
- 手工静态方式灵活性差,配置工作量大,但相对比较稳定,对于新上线的组成员能够快速建立组播转发通路。
- 动态感知:通过IGMP协议通知组播网络,组播网络根据IGMP消息感知组播组成员所在接口,以及组成员加组信息。
- 动态感知方式较为灵活,且配置简单,现网一般使用动态感知方式。
当组播网络获得组成员位置与加组信息后,可以基于这些信息转发组播报文。
2.IGMP协议的概述
IGMP是TCP/IP协议族中负责IPv4组播成员管理的协议,用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。
IGMP通过在组播组成员和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。
到目前位置,IGMP有三个版本:
- IGMPv1
- IGMPv2
- IGMPv3

组播路由器与组成员间交互报文后会生成IGMP路由表项与IGMP组表项。
IGMP路由表项与IGMP组表项将帮助设备生成组播路由表项。


在最后一跳组播路由器(组播叶子路由器)上,组播路由表可以基于IGMP路由表项,IGMP组表项与组播协议路由表(PIM路由表)汇总后形成。
IGMP路由表项与IGMP组表项能为组播协议路由表提供组播组地址信息与出接口信息。

1.IGMPv1基本概念
IGMPv1主要基于查询和响应机制完成组播组管理。
查询和响应机制由两种报文实现:

- 普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于查询哪些组播组存在成员。
- 成员关系报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。
由于IGMP报文是组播报文,因此一个多路访问网络里只需要一个组播路由器发送查询报文即可,该组播路由器被称为IGMP查询器(Querier)。

IGMPv1报文格式
IGMPv1普遍组查询报文与成员关系报告报文均为组播报文,目的地址为224.0.0.1。
IGMPv1普遍组查询报文与成员关系报告报文格式类似,其中最主要的是Version,Type,Group Address这三个字段:

普遍组查询和响应机制
通过普遍组查询和响应,IGMP查询器可以了解到该网段内哪些组播组存在成员。
图3 IGMP查询和响应示意图

如图3所示,普遍组查询和响应过程如下:
- IGMP查询器发送目的地址为224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;收到该查询报文的组成员启动定时器。
普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省情况下每隔60秒发送一次。HostA和HostB是组播组G1的成员,则在本地启动定时器Timer-G1。缺省情况下,定时器的范围为0~10秒之间的随机值。 - 第一个定时器超时的组成员发送针对该组的报告报文。
假设HostA上的Timer-G1首先超时,HostA向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB收到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。 - IGMP查询器接收到HostA的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项,“*”代表任意组播源。网络中一旦有组播组G1的数据到达路由器,将向该网段转发。
IGMPv1查询器选举机制(维护组成员关系)
普遍组查询是组播报文,因此同一网段内只需要一台查询器即可查询所有组成员的加组信息。
IGMPv1没有基于IGMP的查询器选举机制,所以需要依赖组播路由协议(PIM)进行IGMP查询器选举。IGMPv1将组播路由协议(PIM)选举出唯一的组播信息转发者(Assert Winner或DR)作为IGMPv1的查询器,负责该网段的组成员关系查询。
查询器和非查询器均能收到成员关系报告(目的地址224.0.0.1),因此均能形成IGMP路由表与IGMP组表项。

IGMPv1组成员离组机制
IGMPv1没有专门定义离开组消息,当组播组成员离开组播组时,将不会再对普遍组查询报**出回应。
当网段内不存在特定组的组成员,IGMP查询器不会收到特定组成员的报告报文,则在一定时间(缺省值为130s)后,删除特定组所对应的组播转发表项。

新组成员加入机制
图4 新组成员加入示意图
在终端上通过点击播直播视频,PC便会向查询器发送成员报告报文加入组播组,组播组的地址为这个直播所使用的组播地址(组播源发送流量的目的地址)

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120327.html