使用IGMP 的原因
l 组播服务器与需要接收组播信息的主机在同一个子网内;只要主机开启了组播流接收程序,都可以
l 组播服务器与需要接收组播信息的主机不在同一个子网内;需要一种机制,能够让路由器将组播数据转发到有接收需求的主机所在的子网。
IGMP概述
l IGMP定义
Ø IGMP:Internet 组管理协议,用于主机与路由器之间交互信息的一种协议
Ø 所有要加入组播组的主机和所有连接到有组播主机的子网中的路由器都必须使用IGMP
Ø IGMP消息不能被路由器转发,只能限制在本地网段内部。IGMP的TTL参数永远是1,保证了IGMP的使用范围。
Ø IGMP的版本目前有V1/V2/V3三种。
IGMP v2报文概述
l TYPE:IGMP报文类型
Ø Membership Report:TYPE值为0X16
Ø Leave Group,TYPE值为0X17
Ø General Query,TYPE值为0X11
Ø Group-Specific Query,TYPE值为0X11
l MAX Resp Time:最大响应时间,缺省10s(以0.1s为单位)
l Checksum: 校验和
l Group Address:
Ø IGMPv2普通查询:组地址为0.0.0.0,目的地址为224.0.0.1
Ø IGMPv2特定组查询:组地址和目的地址为要查询的特定组地址
Ø IGMPv2成员报告:组地址和目的地址为要报告的组地址
Ø IGMPv2离开报文:组地址为要离开的组地址,目的地址为224.0.0.2
Membership Report
l Membership Report用于指示一台主机希望加入一个组播组
Ø 当主机首次加入到一个组时,它会主动向组发送Membership Report。
l Membership Report还用来响应本地路由器发出的General Query和Group-Specific Query消息
Leave Group
l 当主机退出一个组时,它用Leave Group消息通知本地的路由器
l 这个消息包含有退出的组的地址,但与Membership Report消息不同的是,Leave group消息是发向“子网中的所有路由器”地址224.0.0.2的,而Membership Report是发向想要加入的组播组地址
General Query
l 路由器通过General Query消息向与其连接的所有子网进行轮询来发现是否有组员存在,并在子网中没有组员时检测到这一情况
l General Query消息被发向“子网中的所有主机”224.0.0.1这个地址,而且不涉及任何一个具体组播组
注意:如果一台组播路由器在3次查询的时间间隔里没有收到一个特定子网的Membership Report消息,那么这个路由器将宣布这个子网中没有组员,不再向这个子网发送组播数据。
Group-Specific Query
l 路由器的Group-Specific Query消息是根据主机发出的Leave Group消息而发出的,当路由器收到LeaveGroup消息时,必须判断子网中是否仍有组员存在。目的地址为该发出Leave Group的主机所在组的组地址
IGMP成员关系报告抑制机制
l 主机收到其他相同子网内主机所发送的Membership report时,该主机将不再向相同的组播组发送Membership report,因为IGMP路由器已经知道本地子网中有对该组播组感兴趣的主机了。
l 该机制有助于减少本地子网的信息流量。
IGMPv3
l 在IGMPv3中主要增加了Group-and-Source-Specific Query ,它能允许一个组不仅用组地址进行识别,而且也能被源地址识别。
l 当一个组有多个源时,IGMPv3路由器可以根据组员的请求对源进行过滤
IGMP Snooping背景
l 需要一个机制,让二层交换机只把组播数据转发给需要接收组播的主机
l IGMP Snooping能使二层交换机将组播数据只朝需要接收的用户所在的端口转发,从而不会影响到其它的用户
IGMP Snooping工作模式
l IVGL:在该模式下,各VLAN间的组播流是相互独立的。主机只能朝与自己处于同一个VLAN的路由连接口请求组播。
l SVGL:在该模式下, 主机可以跨VLAN申请组播流。指定一个Multicast VLAN,在该VLAN收到的组播数据流可以向其他VLAN的主机转发