#HCIP备考
IGMP协议
当组播数据在组播网络中传递的时候,组播路由器需要知道组播成员的位置以及所加组播组才能进行转发,那么我们怎样进行感知呢?
有两种方式:
手工感知:手工静态灵活性差,且配置工作量大,但是比较稳定,对于新上线的成员够尽快组播转发
动态感知:通过IGMP协议检测到组播成员所在接口以及组成员加组信息,动态感知比较灵活,配置简单,一般都用动态感知。
IGMP用来建立和维持组播组成员关系。
IGMP有三个版本
IGMPV1
IGMPV2
IGMPV3
组播路由器与组成员交互后会产生IGMP路由表项以及IGMP组表项。
IGMP路由表项以及IGMP组表项帮助设备生成组播路由表项
在最后一跳路由表,组播路由表可以基于IGMP路由表项、IGMP组表项、以及组播协议路由表(PIM路由表)汇总后形成。
IGMP路由表项和IGMP组表项能够为组播协议路由表提供组播组地址信息以及出接口信息。
IGMPV1
查询和响应机制由两种报文实现:
普遍组查询报文:查询器向共享网络中的所有主机和路由器发送的查询报文,用于查询哪些组播组存在成员。
成员关系报告报文:主机向查询器发送的报告报文,用于查询加入某个组播组或者答应查询报文。
由于IGMP是组播报文,因此一个多路访问网络里只需要一个组播路由器发送查询报文即可,该组播路由器被称为IGMP查询器。
IGMPV1查询器选举
IGMPV1没有特定的查询器选举机制,依赖于组播路由器协议(PIM)进行IGMP查询器选举。
IGMPV1将组播路由协议(PIM)选举出的唯一组播信息转发者(ASSERT winner或DR)作为IGMPV1的查询器,负责该网段的组成员信息查询。因为只有查询器会发送普遍组查询报文。
查询器和非查询器都能收到成员关系报告(目的地址是224.0.0.1),因此均能形成IGMP路由表和IGMP组表项。
IGMPV1成员离开机制
IGMPv1没有特定的成员离开报文,只是当成员离开后便不会在响应普遍组查询报文,在特定时间(130s)内没有收到成员的报告报文,就判定成员已经离开。普遍查询报文每隔60s发一次,成员报告报文定时器范围是0~10s。
IGMPV2介绍
IGMPV2相对于IGMPV1增加了查询器选举机制以及完善了成员离开机制,IGMPV2可以和IGMPV1兼容。
IGMPV2报文
为了改善组成员离开机制,相对于IGMPV1新增加了两个报文:
特定组查询报文:查询器向共享网段内制定组播组发送的查询报文,用于查询该组播组是否存在成员,目的地址为所查询组播组的组播地址。
成员离开报文:成员离开组播组的时候主动向查询器发送的报文,用于宣告自己离开组播组,报文的目的地址是224.0.0.2。
IGMPV2查询器选举机制
IGMPV2采用独立的查询器选举机制,当共享网段中存在多个组播路由器的时候,接口IP地址最小的选举为查询器。
IGMPV2组成员离开机制
查询器通过特定组查询报文和成员离开报告报文加速感知成员变化。
IGMPV1/V2的缺陷
出于安全考虑,如果我的组成员只想接受特定源组的组播数据,组成员需要告诉查询器接受数据的组播源地址,但是V1/V2又不携带组播源信息,就无法配合SSM使用。所以我们就开发了ICMPV3结合SSM使用。
IGMPV3介绍
IGMPV3工作机制大部分和IGMPV2工作机制类似:
查询器选举机制一致:IP地址小的为查询器
使用普遍组查询报文查询组成员加组信息。
使用特定组成员报文查询特定组播的成员存活情况
IGMPV3相对于IGMPV2的变化如下:
IGMPV3新增加特定源组查询报文
成员报告报文不仅包含了主机所要加入的组播组,还包含了主机想要接受来自哪些组播源的数据。
由于同一个组播组的成员想要接收来自不同组播源的数据,所以就不再采用成员关系报告报文抑制机制。
IGMPV3没有定义专门的成员离开报文,成员通过特定类型的报告报文传达。
IGMPV3的成员加组机制
IGMPV3成员离组机制
IGMPv3没有专门的成员离开报文,成员离开需要借助组成员关系报告实现。
IGMP查询器在收到改变源组对应关系的成员关系报告后,会发送特定源组查询报文,确认是否还有组成员存在。
以太网的组播转发问题
当组播数据从最后一跳转发到组播组成员的时候,往往会经过交换机,由于组播数据的MAC地址是组播地址,所以交换机默认会泛洪此类数据帧,可能导致不同组的组播流量会被别的组的组成员接收。
IGMP Snooping介绍
可以实现组播数据在数据链路层的转发和控制。
当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时,IGMP Snooping分析报文携带的信息,根据这些信息建立和维护二层转发表,从而指导组播数据在数据来链路层按需转发。
端口和转发表介绍
二层转发表中存在两种端口:
路由器端口
成员端口
IGMP SSM Mapping介绍
现在网络中存在着IGMPV1以及V2网络,由于V1V2不携带组播源信息,所以无法使用SSM网络,IGMP SSM Mapping通过静态的将组播源与组播组绑定,使得V1V2得以接入SSM网络。
现实中可能存在一台IGMP查询器管理多台组成员的情况,这样会大大的增加查询器的负担,这时候我们就引进了IGMP Proxy 概念,IGMP Proxy定义了两类接口:
主机接口:配置了IGMP Proxy端口,该接口一般面对IGMP查询器。
路由器接口:IGMP proxy设备上配置了IGMP功能的接口,该接口一般面对组成员。