IGMP Snooping over EVPN MPLS
当用户在网络中部署EVPN功能来承载组播业务时,如果不在PE设备上配置IGMP Snooping(Internet Group Management Protocol Snooping,互联网组管理协议窥探),则组播数据报文会在网络内广播,即使不需要接收该组播数据报文的设备也会收到这些报文,导致网络带宽资源的浪费,因此用户需要部署IGMP Snooping over EVPN MPLS功能。部署IGMP Snooping over EVPN MPLS后,IGMP Snooping协议报文将通过EVPN路由在网络中传播,最终在设备上生成组播转发表项,从而控制组播源发来的组播业务数据报文仅发布给需要这些报文的设备,节省了网络带宽资源。
IGMP Snooping over EVPN MPLS功能所使用的EVPN路由类型请参见相关路由,路由传播与流量转发的过程请参见路由传播与流量转发。
相关路由
SMET路由
SMET路由用于在BGP EVPN对等体间传输组播组信息,收到SMET路由的设备可以根据路由信息构建本地的(*, G)或(S, G)表项。如图12-62所示,路由信息中各个字段含义如下:Route Distinguisher:EVPN实例下设置的RD(Route Distinguisher)值;
Ethernet Tag ID:对于使用VLAN Based或VLAN Bundle的服务模式接入用户网络的场景,该字段设置为全0;
Multicast Source Length:组播源地址长度。对于任意组播源,该字段将设置为0;
Multicast Source Address:组播源地址。对于任意组播源,报文中将没有该字段;
Multicast Group Length:组播组地址长度;
Multicast Group Address:组播组地址;
Originator Router Length:产生该SMET路由的设备的地址长度;
Originator Router Address:产生该SMET路由的设备的地址;
Flags:该字段共计8个Bit,前4个为预留位。最后三位用来标识IGMP的版本,例如Bit5置为1,则表示该路由携带的组播表项对应的IGMP版本为IGMPv3版本,此三位同时只能有一位置为1。Bit4表示IGMPv3版本组记录的过滤模式,0表示Include,1表示Exclude。
IGMP Join Synch路由
IGMP Join Synch路由用于在接入侧双归的设备间同步新的成员加入组播组的信息,收到IGMP Join Synch路由的设备可以根据路由信息添加相关成员表项到本地的(S,G)表项,确保和接入同一用户网络的设备上的表项一致。如图12-63所示,路由信息中各个字段含义如下:Route Distinguisher:EVPN实例下设置的RD值;
Ethernet Segment Identifier:设备对于连接接入侧网络而定义的唯一标识;
Ethernet Tag ID:对于使用VLAN Based或VLAN Bundle的服务模式接入用户网络的场景,该字段设置为全0;
Multicast Source Length:组播源地址长度。对于任意组播源,该字段将设置为0;
Multicast Source Address:组播源地址。对于任意组播源,报文中将没有该字段;
Multicast Group Length:组播组地址长度;
Multicast Group Address:组播组地址;
Originator Router Length:产生该IGMP Join Synch路由的设备的地址长度;
Originator Router Address:产生该IGMP Join Synch路由的设备的地址;
Flags:该字段共计8个Bit,前4个为预留位。最后三位用来标识IGMP的版本,例如Bit5置为1,则表示该路由携带的组播表项对应的IGMP版本为IGMPv3版本,此三位同时只能有一位置为1。Bit4表示IGMPv3版本组记录的过滤模式,0表示Include,1表示Exclude。
路由传播与流量转发
IGMP Snooping over EVPN MPLS功能支持单归接入和双归接入。
IGMP Snooping over EVPN单归接入
如图12-64所示,该组网为IGMP Snooping over EVPN MPLS单归接入组网图,PE1、PE2和PE3均配置EVPN实例,并均配置Bridge Domain(BD)且与EVPN实例绑定。PE1、PE2和PE3间相互建立BGP EVPN邻居,同时在各个PE上部署EVPN IGMP proxy功能。其中PE1部署为Sender PE,PE2和PE3部署为Receiver PE。PE1、PE2和PE3的EVPN实例对应的BD1上均配置IGMP Snooping和IGMP Proxy功能。PE1、PE2和PE3的BD1分别与CE1、CE2、CE3通过VLAN Dot1q子接口连接,其中CE1接口配置PIM SM,与PE1相连接口配置IGMP功能。
PE1、PE2、PE3在BD1内向接入侧周期性的发送IGMP Query报文。
Receiver A和Receiver B分别向CE2和CE3返回IGMP Report报文,以Receiver A发送IGMPv3 (S, G) Report报文,Receiver B发送IGMPv2 (*, G) Report报文为例。
PE2和PE3收到IGMP Report报文后,分别建立BD1的IGMP Snooping的(S, G)和(*, G)表项并分别添加连接CE2和CE3的接口为出接口。
PE2通过BGP EVPN邻居关系向其它PE发送EVPN SMET路由,该路由携带(S, G)表项,路由中的Flags字段设置为IGMPv3版本和include模式。
PE3通过BGP EVPN邻居关系向其它PE发送EVPN SMET路由,该路由携带(*, G)表项,路由中的Flags字段设置为IGMPv2版本。
PE1收到BGP EVPN SMET路由后将建立BD1的IGMP Snooping的(S, G)和(*, G)表项并添加对应EVPN实例的mLDP隧道作为出接口。
PE1向CE1发送IGMPv3 (S, G) Report和IGMPv2 (*, G) Report报文,CE1建立IGMP和PIM表项,并开始转发组播流量到PE1。
PE1收到组播流量后,将基于BD1的(S, G)和(*, G)表项通过mLDP隧道接口往PE2和PE3转发组播流量。
PE2和PE3通过mLDP隧道收到来自PE1的组播流量后分别根据(S, G)和(*, G)表项向Receiver A和Receiver B转发。
IGMP Snooping over EVPN组播源侧双归接入
如图12-65所示,该组网为IGMP Snooping over EVPN MPLS组播源侧双归接入组网图,PE1、PE2、PE3和PE4均配置EVPN实例,并均配置BD且与EVPN实例绑定。PE1、PE2、PE3和PE4间相互建立BGP EVPN邻居,同时在各个PE上部署EVPN IGMP proxy功能。其中PE1和PE2部署为Sender PE,PE3和PE4部署为Receiver PE。PE3、PE4的BD1分别与CE3、CE4通过vlan dot1q子接口连接。CE1通过Eth-Trunk接口连接到PE1和PE2,并在接口配置PIM SM和IGMP功能。PE1和PE2配置E-Trunk联动连接CE1的Eth-Trunk接口,并分别配置静态路由器端口,且设置相同的ESI值,其中E-Trunk需要设置为双活模式,PE1和PE2的Eth-Trunk接口均处于Up状态。
PE3和PE4在BD1内向接入侧周期性的发送IGMP Query报文。
Receiver A和Receiver B分别向CE2和CE3返回IGMP Report报文,以Receiver A发送IGMPv3 (S, G) Report,Receiver B发送IGMPv2 (*, G) Report报文为例。
PE3和PE4收到IGMP Report报文后,分别建立BD1的IGMP Snooping的(S, G)和(*, G)表项并分别添加连接CE2和CE3的接口为出接口。
PE3通过BGP EVPN邻居关系向其它PE发送EVPN SMET路由,该路由携带(S, G)表项,路由中的Flags字段设置为IGMPv3版本和include模式。
PE4通过BGP EVPN邻居关系向其它PE发送EVPN SMET路由,该路由携带(*, G)表项,路由中的Flags字段设置为IGMPv2版本。
PE1和PE2接收PE3、PE4的BGP EVPN SMET路由,创建IGMP Snooping的(S, G)和(*, G)表项并添加对应EVPN实例的mLDP隧道作为出接口。
CE1的Eth-Trunk接口周期性发送IGMP Query报文,根据Hash规则发送到PE1或PE2之一的BD1,然后PE1或PE2周期性向CE1响应发送IGMP Report报文。
CE1收到IGMP Report报文后将建立IGMP和PIM表项,并开始转发组播流量到PE1。
CE1将从组播源收到的组播流量根据Hash规则从CE1转发到PE1或PE2之一的BD1,PE1或PE2根据BD1的(*, G)和(S, G)表项通过mLDP隧道向PE3和PE4转发组播流量。
PE2和PE3通过mLDP隧道收到来自PE1的组播流量后分别根据(S, G)和(*, G)表项向Receiver A和Receiver B转发。
IGMP Snooping over EVPN接入侧双归接入
如图12-66所示,该组网为IGMP Snooping over EVPN MPLS接入侧双归接入接收者组网图,PE1、PE2和PE3均配置EVPN实例,并均配置BD且与EVPN实例绑定。PE1、PE2和PE3间相互建立BGP EVPN邻居,同时在各个PE上部署EVPN IGMP proxy功能。其中PE1部署为Sender PE,PE2和PE3部署为Receiver PE。PE1、PE2和PE3的EVPN实例对应的BD1上均配置IGMP Snooping和IGMP Proxy功能。PE1、PE2和PE3的BD1分别与CE1、CE2、CE3通过VLAN Dot1q子接口连接,其中CE1接口配置PIM SM和IGMP,CE2通过Eth-Trunk接口分别连接PE2和PE3。PE2和PE3配置E-Trunk联动连接CE2的Eth-Trunk接口,并分别配置到CE2网段的相同ESI值。PE2和PE3的E-Trunk设置为单活模式,并选择PE2为主,PE2的Eth-Trunk接口状态为Up。
接入侧双归接入场景不支持IGMPv3。
PE2在BD1内向接入侧周期性的发送IGMP Query报文。
Receiver向CE2发送IGMP Report报文,以Receiver发送IGMPv2 (*, G) Report报文为例。
PE2收到IGMP report报文后将建立IGMP Snooping的(*, G)表项并添加到CE2的Eth-Trunk接口作为出端口,然后向其他PE发送BGP EVPN的IGMP Join Synch路由,IGMP Join Synch路由会携带PE2的接入侧的ESI值,并包含IGMP版本和V2源过滤模式。
PE3收到IGMP Join Synch路由后,BD1中创建对应的IGMP Snooping(*,G)表项,由于PE3为NDF,则不需要发送BGP EVPN SMET路由,同时由于到CE2的Eth-Trunk为Down也不添加到CE2的Eth-Trunk接口作为出接口。
PE2作为DF根据IGMP Snooping (*, G)表项发送BGP EVPN SMET路由。
PE1收到来自PE2的BGP EVPN SMET路由后创建IGMP Snooping (*, G)表项并向CE1发送IGMP Report。
CE1收到IGMP Report报文后将建立IGMP和PIM表项,并开始转发组播流量到PE1。
CE1将从组播源收到的组播流量发送给PE1。
PE1收到组播流量后,将基于BD1的(*, G)表项通过mLDP隧道接口往PE2和PE3转发组播流量。
PE2和PE3收到组播流量后,PE2将根据(*, G)表项向CE2转发,而PE3不会向CE2转发,使Receiver仅接收一封组播流量。
如果部分接收者断连或不在需要接收组播流量,则PE2将会根据从CE2收到的IGMP Report报文刷新(*, G)表项,然后向PE3发送IGMP Join Synch路由撤销消息,确保PE3上删除对应接收者的表项,使其与PE2上的(*, G)表项一致。
如果PE2的接入侧故障,EVPN实例将选择PE3为DF,PE3的Eth-trunk接口状态将变为Up,然后PE3将添加到CE2的Eth-Trunk接口作为出接口,使组播流量从PE3向CE2转发。