IGMP Snooping笔记

  • 格式:pdf
  • 大小:446.79 KB
  • 文档页数:5

由于组播MAC地址永远不会作为源MAC地址出现在数据帧中,交换机难以获知组播成员所在端口。因此,默认下交换机会将收到的组播帧泛洪至所有端口。为解决上述问题,可以使用IGMP Snooping。通过IGMP Snooping,交换机可以监听(甚至控制)穿越交换机的IGMP消息,并据此构造CAM表中相关组播组与对应成员接口的条目。

IGMP Snooping加组工作过程如下————

Tips:由于要识别3层协议,因此支持IGMP Snooping的交换机必然具有三层感知功能:)交换机启用IGMP Snooping后,CAM表中会创建一个条目,匹配3层IGMP消息,相关端口为CPU;1.

Tips:主机为快速加组而主动发送的IGMP Report消息也被称为IGMP Join消息;PC1想要加组224.1.2.3,主动发送一条IGMP Report消息,目标地址为224.1.2.3;2.交换机截获该IGMP Report消息,创建CAM表条目,MAC地址为224.1.2.3对应的组播MAC(0100.5E01.0203),3层匹配“非IGMP”消息,相关接口为收到该IGMP Report消息的成员端口(接口1),以及连接路由器的接口(接口5);3.

Tips:如果子网中有224.1.2.3的组播源,也只会将流量转发至成员端口和路由器接口当交换机收到目标组地址为224.1.2.3的组播流量时(目标MAC必然为0100.5E01.0203),由于交换机已拥有相应的CAM表项,只会将该组播流转发至接口1,而不需要泛洪;

4.

CPUSwitchingEngine

PC1PC2PC3PC4CAMMAC-Address L3 Port0100.5Exx.xxxx IGMP CPU0100.5E01.0203 !IGMP 1,5IGMP Report224.1.2.3①②③1 2 3 4④224.1.2.3组播数据流5IGMP Snooping2014年6月9日14:12

分区Multicast 的第1 页 IGMP Snooping相关端口————

CAM表中,成员端口的老化时间为QueryInterval(默认60s)x Robust-Count(默认2)+ Max Response Time(默认10s);需要依靠周期性的Query/Report来刷新其老化时间。交换机收到Report消息的接口称为成员端口(靠近组成员一侧的接口)1.

CAM表中,因为IGMP General Query而创建的路由器接口的老化时间默认为180s;因为PIM Hello而创建的路由器接口老化时间为PIM Hello中的Holdtime;需要依靠周期性的Query或PIM Hello来刷新其老化时间;Tips1:创建路由器接口是因为组播路由器必须不加区分地接收所有组播流量。路由器接口会出现在CAM表的通过IGMP Snooping创建的所有条目中Tips2:由于只有IGMP查询者才会发送General Query,因此交换机还会监听某些特殊的协议数据包来“发现”路由器接口,例如Huawei VRP还会监听PIM Hello消息。一些其他厂商的交换机,可能还会监听OSPF、HSRP、VRRP等消息来“发现”路由器接口交换机收到IGMP General Query或PIM Hello的接口称为路由器接口(靠近组播路由器一侧的接口)。

2.PC1PC2PC3

PC4路由器接口成员端口

IGMP Snooping离组工作过程如下————

分区Multicast 的第2 页 ————

假设现在PC1和PC4都是组224.1.2.3的成员,交换机的CAM表中有依靠IGMP Snooping而建立的相关表项1.PC1想要离组,发送Leave消息,目标地址为224.0.0.22.交换机截获该Leave消息,为确认成员端口1是否还有其他224.1.2.3的成员,交换机将会发送Group-Specific Query消息(成员端口下可能还会连接其他交换机,因此可能有多个组成员)3.

Tips1:收到Leave消息后,成员端口的老化时间为LastMemberQueryInterval(默认1s)x Robust-Count(默认2)Tips2:如果CAM表中某条目所有成员端口都不存在了,则删除该条目如果交换机在老化时间内没有收到224.1.2.3的Report消息,便删除CAM表中相应表项的相应成员端口(接口1)

4.

CPUSwitchingEngine

PC1224.1.2.3PC2PC3PC4224.1.2.3CAMMAC-Address L3 Port0100.5Exx.xxxx IGMP CPU0100.5E01.0203 !IGMP 1,4,5

IGMP Leave224.0.0.2①

②③1 2 3 4④5Group-Specific Query

MAC-Address L3 Port0100.5Exx.xxxx IGMP CPU0100.5E01.0203 !IGMP 1,4,5Group-Specific Query后没有收到响应,删除相应表项中的接口

IGMP Snooping维护组信息————

分区Multicast 的第3 页

CPUSwitchingEngine

PC1224.1.2.3PC2PC3PC4224.1.2.3CAMMAC-Address L3 Port0100.5Exx.xxxx IGMP CPU0100.5E01.0203 !IGMP 1,4,5①

1 2 3 45General Query224.0.0.1

对于路由器周期性发送的General Query,交换机CPU截获后会向所有接口泛洪1.

CPUSwitchingEngine

PC1224.1.2.3PC2PC3PC4224.1.2.3CAMMAC-Address L3 Port0100.5Exx.xxxx IGMP CPU0100.5E01.0203 !IGMP 1,4,51 2 3 45

IGMP Report224.1.2.3②IGMP Report224.1.2.3②③同一组的Report消息,只会转发一条给路由器

Tips:由于所有Report消息都直接被CPU截获,所以IGMP的报告抑制机制会被“覆盖(override)”,最终所有组成员都会发送Report消息。因此,交换机可以根据每个接口收到的Report消息来创建或刷新相应的CAM表条目组成员PC1和PC4收到General Query后,均会向224.1.2.3回送Report消息。2.

同一组的Report消息被交换机CPU截获后,只需要转发其中一条给路由器即可(根据厂家实现不同,也有可能是多条)3.————

分区Multicast 的第4 页 IGMP Snooping与网络中的组播源————

交换机启用IGMP Snooping后,CAM表中会创建一个条目,匹配3层IGMP消息,相关端口为CPU;但网络中的组播服务器,不需要发送IGMP消息(如果他不是接收者),因此交换机不能靠监听IGMP消息来建立与之相关的CAM表项;1.当组播源开始往224.1.2.3发送第一个组播数据包,由于此时交换机CAM表中没有相关条目,因此这个数据包会网所有接口泛洪。包括交换机的CPU,也会收到这个泛洪的数据包。2.当CPU“察觉”到这是一个未被抑制的组播数据流后,马上创建CAM表条目,MAC地址为224.1.2.3对应的组播MAC(0100.5E01.0203),3层匹配“非IGMP”消息,相关接口为路由器接口(接口5);3.此时交换机再收到224.1.2.3后续的组播数据流,就只会往路由器接口转发,而不再需要泛洪;

4.

CPUSwitchingEngine

PC1PC2PC3CAMMAC-Address L3 Port0100.5Exx.xxxx IGMP CPU①②③1 2 3 4④224.1.2.3第一个组播数据包5

组播源224.1.2.3MAC-Address L3 Port0100.5Exx.xxxx IGMP CPU0100.5E01.0203 !IGMP 5CPU收到未被抑制的组播数据流后,马上创建相关条目,对应接口为路由器接口224.1.2.3后续组播数据流

分区Multicast 的第5 页