闲言少叙,直奔主题,开说之前先做点铺垫,回顾一下网络的基础知识。
D类地址划分回顾
组播是IPv4地址分类中的D类,我们回顾一下IPv4的地址划分
A类:首bit=0,0-127网段,网络掩码8,其中0.0.0.0和127.0.0.0/8是保留的;
B类:前2bit=10,128-191网段,掩码16;
C类:前3bit=110,192-223网段,掩码24;
D类:前4bit=1110,224-239网段,掩码是用来区分网络位和主机位的,组播不存在这个概念,没有掩码;
E类:前5bit=1111,240-255网段,保留。
单播是1对1通信,广播是1对所有,而组播是1对多通信,任播是路由谁离得近找谁,既可以负载分担也可备份;
IP组播服务模型分类
ASM Any-Source Multicast(IGMPv1/v2/v3 都兼容ASM,虽然v3是专门为SSM开发的)
SFM Source-Filtered Multicast(一种特殊的ASM)
SSM Source-Specific Multicast
组播IP地址分类
224.0.0.0-224.0.0.255为路由协议预留永久组地址
224.0.1.0-238.255.255.255 ASM临时组地址
232.0.0.0-232.255.255.255 SSM临时组地址 (除了224永久预留的和这段全是ASM的)
239.0.0.0-239.255.255.255 本地管理组播地址,类似本地局域网使用的ASM地址
组播MAC地址及生成规则
组播流量要在数据链路层上传输,组播IP和组播MAC要有个对应关系。组播MAC第一个字节最后1位为1,单播MAC第一个字节最后1位为0。组播MAC前25bit是固定的,样式都是0100.5exx.xxxx,其中第25bit固定是0。低23bit映射组播IP地址的低23bit。除去这后23bit,前9bit中前4位是1100固定,这会导致后5个bit对应出的32个IPv4组播地址,会映射到同一个MAC地址上。例如:224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等,映射出的结果都是1-00-5e-00-01-01。
常用的组播概念
MDT(Multicast Distribution Tree):组播分发树,描述IP组播报文在网络中经过的路径;
SPT(Shortest Path Tree):以组播源为根,组播组成员为叶子的组播分发树;
RPT(RP Tree):以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树;
RPF检查:收到组播报文的接口,必须是RPF检查成功的接口,这个接口是路由器到源的单播路由的出接口;
IGMPv1
2种报文:普遍组查询报文(General Query)和成员报告报文(Member Report),General Query默认60秒1次;
抑制机制:多个成员收到General Query会随机产生个定时器,谁先超时谁发,有人发了其他人就不用发了;
组成员离开:默默离开,v1的天生缺陷;
IGMPv2
3种报文:成员管理查询、成员关系报告、离开组报告;
成员管理查询细化2种:普遍组查询报文和特定组查询报文;
离开组消息:路由器收到Leave Group消息之后,立即特定组查询(默认最大响应时间1秒)3次无响应流量快速切断。
报文:与v1相比增加了个最大响应时间:0.1秒为单位,默认值100,默认10秒;
抑制功能:同v1;
查询器选举:IGMPv1种PIM协议的DR充当查询器;IGMPv2是自己选举,IP地址小获胜;
IGMPv3
核心思想:主机既可以指定组播组又可以指定组播源,所以特别注意的是主机加入组播组时,地址是224.0.0.22(专用于IGMPv3),不再是加入的组地址了,因为主机可以指定组播源了。如图主机加入了239.1.1.1、239.1.1.3、239.1.1.5三个组播组,限定了只从10.123.123.1-4个源地址接收。