igmp实现原理

组播vs单播

组播地址

组播报文的目的地址使用 d 类 ip 地址,

范围是从 224.0.0.0 到 239.255.255.255。d 类地址不能出现在 ip 报文的源 ip 地址字段。

224.0.0.0~224.0.0.255 为预留的组播地址(永久组地址) 只能用于局域网中,路由器是不会转发的地址。

224.0.0.0 保留不做分配,其它地址供路由协议使用。

224.0.1.0~238.255.255.255 为用户可用的组播地址(临时组地址),可以用于 Internet 上的。

239.0.0.0~239.255.255.255 为本地管理组播地址,仅在特定的本地范围内有效。

例如:224.0.0.1子网所有系统               

        224.0.0.2 子网所有路由器

       224.0.0.22 igmp v3组地址

 

igmp版本对比

 

IGMP(Internet组管理协议)是用于记录和跟踪组播路由器以及其相连网络中组成员变化情况的一种协议。IGMP只是用于路由器及其组内成员管理的,而组内成员不能通过这个协议获知网络中其他组成员的信息,也不能用于在广域网上完成组播信息的路由。

IGMP中主要有两种报文:查询报文(membership_query)和应答报文(membership_report)。Query一般用于路由器在查询与它相连接的节点所加入的所有组播组,路由器希望每个组播组至少有一个成员发回一个应答,所以它的目的IP字段为224.0.0.1,这个地址是一个代表所有主机组的地址,只要主机支持组播,则这个IP地址就会成为相应接口的一个地址。这样就保证了只要主机支持组播,则它就能够收到query查询报文(不管它具体属于哪个组播组)。

Report报文用于组播组成员通知路由器,这时它的目的地址改成了相应的组地址,正因为这样,子网内所有属于此组的成员都能收到report报文。路由器收到report报文后在其接口的路由表上标识出至少还有一个主机的属于该组播组。当路由器收到要转发的组播数据报时,它就会将数据报转发到还拥有属于那个组主机的接口上。

报文分类     

0x11     成员关系查询报文(Membership Qeury)

                  版本3成员关系查询报文

                  通用成员查询

                   特定成员查询

     0x22     版本 3 成员关系报告报文(version 3 Membership Report)

     0x12     版本 1 成员关系报告报文(version 1 Membership Report)

     0x16     版本 2 成员关系报告报文(version 2 Membership Report)

     0x17     版本 2 离开报文(version 2 Leave Group)。

组播交互过程

 

报文分析

成员关系报告信息,加入源为55.1.1.1的组播232.1.1.1,224.0.0.22为固定的组播地址,指代的是v3 管理器

成员关系普遍组查询,组地址为0.0.0.0

成员关系报告,离开源为55.1.1.1的组232.1.1.1

 

 

 

igmp snooping和igmp proxy

IGMP Snooping(窥探)监听IGMP协议包,提取相应的信息,形成组播成员关系表,然后对组播业务按照组成员关系进行转发,保证组成员收到正确的的组播业务,而其余主机无法收到。
IGMP Proxy(代理)是靠拦截用户和路由器之间的IGMP报文建立组播表 , Proxy设备的上联端口执行主机的角色,下联端口执行路由器的角色。
IGMP Proxy与IGMP Snooping实现功能相同但机理相异:IGMP Snooping只是通过侦听IGMP的消息来获取有关信息,而IGMP Proxy则拦截了终端用户的IGMP请求并进行相关处理后,再将它转发给上层路由器。所以在IGMP snooping里面形成的table是组成员和交换机接口的对应关系,在IGMP Proxy里面形成的是组播路由表.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

版权声明:本文为time_youger原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。