组播基础与IGMP协议
作者:互联网
组播基础与IGMP协议
常见的通信形式有:单播、广播、组播
组播(Multicast)
组播面对“一对多”的场景,当发送一个组播报文,只有加入到特定组播组的成员可以收到组播数据。对于源,只用发送一份数据,组播网络设备会根据实际需要转发或者拷贝数据。
优点
-
在一段链路上面只有一份数据,减少了冗余流量,大大提高了网络资源的利用率(相比起广播面对“一对多”时的表现)
-
降低网络流量,减轻了硬件负荷(相比起单播形式的泛滥)
劣势
-
组播是基于UDP传输的,所有没有了可靠传输、拥塞避免机制
-
可能会出现报文重复、报文失序的现象。
组播IP地址
在IPV4空间里面,D类地址(224.0.0.0/4)被用于组播。
又对组播进行了进一步的地址划分
组播MAC地址
组播的报文荷载会在四层封装UDP头部、在三层封装IP头部(源ip是组播源的IP,目的ip是组播IP),在第二层会封装一个以太网帧头(源mac地址是组播源的mac,而目的mac就是组播mac地址)
对于组播MAC地址,如何识别它是组播mac还是普通的单播mac地址?
如图所示,在mac地址的前八个比特的最后一位,如果是1则为组播mac地址,如果是0则是单播mac地址。
组播IP和组播MAC的映射
组播ip地址的后23不变,直接映射到mac地址的后23位
然后,组播mac的前面25(48-23)为固定位
也就是对于mac地址,01-00-5E开头的就是一个组播mac地址。
组播ip和组播mac的映射关系式32:1
因为在组播ip映射到组播mac的时候,ip有五位比特位被丢弃,导致会有多个组播ip对应一个组播mac。
路由表项
组播的路由表是通过PIM协议建立的
存在两种两种路由表项(S是组播源,G是组播组,*表示任意)
(S,G):知道组播源S
(*,G):只知道组播组G的存在,
SPT(组播分发树)
SPT(Shortest-Path or Source Distribution Trees)
最短路径或者源树,是以组播源为树根分发的树
RPT(共享树)
是以RP作为树根,可以有多个组播源向RP发送数据,在RP上进行汇聚后沿着RPT向下转发。
IGMP协议
Internet Group Management Protocal互联网组管理协议
主要用于组播成员(PC)和最后一跳路由器之间,
PC使用IGMP来向路由器申请加入或者退出组播组
路由器通过IGMP查询网段中是否有组播组的成员
IGMP版本差异
IGMPv1中定义了基本的组成员查询和报告过程
v1组播成员没有离开信息,路由器用基于超时的机制去发现。
IGMPv2在此基础上添加了查询器选举和组成员离开的机制,
IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。
三个版本在演进过程中对协议报文的处理是向后兼容的,因此尽管各个版本的协议报文格式不同,但是运行IGMP高版本的路由器可以识别低版本的IGMP报文。
IGMP报文类型
常规查询报文
也叫普遍组查询
路由器通过常规查询报文来向网段中的所有主机进行查询,目的地址是224.0.0.1即面向所有主机和路由器查询。
正常组播成员收到查询报文后应该回复IGMP成员关系报告
如果超过一定时间未回复(最大响应时间)路由器则认为子网中没有这个组成员
特定组查询报文
当IGMP查询器收到一个组播成员要离开报文,就发送IGMP特定组查询报文用来确认这个组播组里面是否还有其他成员存在
目标地址是要离开的组成员所在的组地址
成员关系报告
Membership Report ,用来pc宣告自己假如某个组的报文,目标地址是期望加入组的组地址
离组报文
当一个组成员要离开发送的报文
当一个组成员要离开时,需要在网络里面泛洪IGMP离组报文(目的地址224.0.0.2,所有路由),当IGMP查询器收到了一个离组报文,就要发送一个特定组查询报文来确认组内是否还存在成员。
标签:协议,组播,报文,mac,地址,路由器,IGMP 来源: https://www.cnblogs.com/cjz12138/p/13977745.html