组播基本概念、IGMP、IGMP监听学习笔记
为什么需要组播
简单来说,就是因为在一些诸如视频点播的应用时,单播对主机的压力太大、而广播又对网络链路的压力太大。所以……
组播IP地址
224.0.0.0~239.255.255.255 所有组播地址
224.0.0.0~224.0.0.255 有特殊用途的组播地址(不能被路由)
224.0.0.1 同一网段所有主机
224.0.0.2 同一网段所有组播路由器
224.0.1.0~238.255.255.255 公网组播地址
239.0.0.0~239.255.255.255 私网组播
组播IP地址和MAC地址的关系
组播MAC地址的高24bit位是以01-00-5E开头,低23bit为组播IP地址的低23bit。
由于IP组播地址的高4bit是1110,标识了组播组,而低28bit中只有23bit被映像到组播MAC地址上,这样IP组播地址中就会有5bit没有使用,从而出现了32个IP组播地址映像到同一MAC地址上的结果。
IGMP简介
IGMP目前有三个版本,目前用的最多的是IGMPv2。IGMPv1主要基于查询和响应机制来完成对组播组成员的管理;IGMPv2增加了查询器选举机制和离开组机制;IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。
IGMPv2报文分类和详解
该报文由组播路由器发出。可细分为通用查询报文和特定组查询报文。组播路由器定时发出通用查询报文(下图的组播路由器每125s发送一次)。通用查询报文的目标IP为224.0.0.1(所有主机),IGMP报头内的组播IP为0.0.0.0。用来查询该网段有哪些组播组的成员。特定组查询报文的目标IP则是要查询的组播组地址。查询报文如下图所示:
二、报告报文
该报文由主机发出。可对组播路由器发出的查询报文进行回应,同时主机在主动加入特定组的时候,也会主动发送该报文报告。报告报文的目标IP和IGMP报头内的组播IP均为主机加入的组播组地址(注意!这里虽说是回应路由器的,但是数据包的目标IP不是路由器)。
三、离开报文(仅限IGMPv2和v3)
该报文由主机发出。当主机离开组播组时发送此报文,向组播路由器报告离开了特定的组播组。离开报文的目标IP为224.0.0.2(所有组播路由器),IGMP报头内的组播IP为特定离开组的IP。
交换机处理组播的方式
1、一切没有开启或不支持IGMP监听功能的交换机,组播数据包都以广播的形式在广播域内泛洪。
2、开启IGMP监听功能的交换机的每个VLAN会维护一个组播地址表。当收到组播数据包时,如果表中含有该数据包组播IP的条目,则按照表中的组播IP向对应的端口进行转发,否则以广播的形式在广播域内泛洪。
交换机的组播地址表样式
包类型 | 组播IP | 所在端口 |
---|---|---|
IGMP | 224.0.0.251 | 1 |
IGMP | 224.0.0.251 |
2, 3, 4 |