组播基础 IGMP
IP组播基础
例如OSPF中的两个组播
224.0.0.5
224.0.0.4 这两个组播都是属于协议组播 特点是只传一跳
-
组播地址范围224----239
-
组播地址不可能是源地址(就是可用主机地址)
-
D类地址没有掩码
-
也可以理解为D类地址都是32位的地址
组播基本架构
- 组播源到路由器之间是不需要做任何操作的,但是路由器到路由器之间需要进行
- 第一台组播路由器收到组播源发来的数据后 会使用 组播路由协议 PIM 然后生成组播路由表
- 有了这个组播路由表之后,就会把这个数据转发给接收者的网关
- 接收者的网关需要做 接收者管理(IGMP 互联网组管理协议)
- 这个组管理协议可以管理 谁加入 谁没有加入
组播IP地址
-
组播IP地址分为两大类 ASM模型 和SSM模型
-
ASM Any-source Multicast 任意源 就是无所谓是那个源
-
SSM 指定源
-
本地认证源 就是组播源和接收者在同一个广播域里面
组播mac地址
- 0X01005e 前面的0X代表是十六进制的
组播IP与MAC的映射
- 后面23位mac地址会对应组播的ip地址
IGMP
组成员管理-IGMP
- 通过这个IGMP协议来维护主机测和路由器侧之间的关系
IGMPv1的工作机制
-
路由器RTA会周期性(60秒)的向224.0.0.1这个组中发送消息,询问谁要加组 这就是普遍组查询
-
所有运行了IGMP协议的设备都会加入到224.0.0.1这个组地址中
-
当主机收到了RTA发来的消息,就会发送报告响应自己需要加组,每个组只需要有一台设备发送报告就行了 一般都是最后一个加组的设备发送
IGMPv1成员加入
- 为了不需要等RTA的周期性更新普遍组查询,所以成员加入的时候会主动发送报告,告诉RTA有新的组需要加入进来了
IGMPv1问题1:组成员离开
- 成员的离开是静默的,RTA是不知道的, 只有等待130秒后如果这个组中没有发送报告消息才会老化,由于RTA不知道所以在这130秒内会持续向下转发组播报文,但是下面已经没有接收者了,就会浪费这个资源
IGMPv1问题2:查询器选举
- 当两个路由器都做查询器的时候,不能分谁是主次,两个都是发,这样也会导致出问题
- 只有通过PIM的方式选择一个IP地址大的作为PIM DR来选出主次
查询IGMP的组成员
[R1]dis igmp group interface g0/0/1
- 由于IGMP协议一 有以上两个问题 所以就更新了第二个版本
IGMPv2:组成员离开
- 开启了IGMP协议的路由器会接收来自224.0.0.2这个组播中
- 当主机离开这个组之后会向224.0.0.2中发送离开的消息
- 当查询器收到了来自组二中的离开消息后,会发送两次特定组查询信息,确定这个组中是否还有其他成员,这个查询的时间为1秒一次 一共是2秒
IGMPv2:查询器选举
- 当运行了IGMPV2的查询器 会根据两个ip地址小的作为查询器 不会两个都发
SSM模型中的新需求
- 当有两个源发送的组播数据,IGMPV2也就没法区分那个组播源了,这时候就需要使用IGMPv3版本了
IGMPv3工作机制
IGMP V3版本中还是保留了路由器周期发送查询信息,
但是主机是每个组中的每个主要都需要发送报告报文
In(includ)类似与白名单,就是我可以接收那些组成员发来的消息
Ex(exclud)黑名单,我不想接收那些组成员发来的消息
V3发送的组地址为224.0.0.22
查看详细信息
[R1]dis igmp group interface g0/0/1 verbose
IGMP各版本间的差异
二层中组播数据转发的问题
- 这个产生的问题就是当路由器发给一个交换机的时候,交换机连接的所有设备都会被发送一份组播的报文
IGMP Snooping工作原理
- 用于解决二层中组播数据转发的问题
实验
开启组播功能
[R1]multicast routing-enable
开启组播协议
[R1]pim
在各个接口上开启组播协议的功能
这条命令需要在接收者上开启,也需要在组播源对应的端口上开启
[R1-GigabitEthernet0/0/0]pim dm
在接收者的接口上开启组管理协议
这条命令只有在接收者的接口上开启
[R1-GigabitEthernet0/0/2]igmp enable