In Figure 1, SwitchE connects to HostA and has three equal-cost routes to the multicast source (Source). According to the default reverse path forwarding (RPF) check policy, SwitchE will select one of these equal-cost routes to transmit multicast data. When the rate of multicast traffic is high, the network will become congested, lowering the quality of multicast services. To ensure the quality of multicast services, multicast load splitting needs to be configured so that multicast data can be transmitted through multiple equal-cost routes.
In this scenario, to avoid loops, ensure that all connected interfaces have STP disabled and connected interfaces are removed from VLAN 1. If STP is enabled and VLANIF interfaces of switches are used to construct a Layer 3 ring network, an interface on the network will be blocked. As a result, Layer 3 services on the network cannot run normally.
The configuration roadmap is as follows:
Configure IP addresses for interfaces on the switches.
Configure a unicast routing protocol, Intermediate System-Intermediate System (IS-IS) in this example, to implement interworking among all switches and ensure that route costs are the same.
Enable multicast routing on all switches and enable PIM-SM on all Layer 3 interfaces. Configure the loopback interface on SwitchA as a candidate bootstrap router (C-BSR) and candidate rendezvous point (C-RP).
On SwitchE, configure stable-preferred multicast load splitting to ensure stable transmission of multicast services.
On SwitchE, configure static multicast groups on the interface connected to the network segment of HostA, because HostA needs to receive data of these groups for a long time.
On SwitchE, configure different multicast load splitting weights for the interfaces connected to the upstream switches to implement unbalanced load splitting, because HostA needs to receive multicast data of new groups.
# Create VLANs and add Layer 2 physical interfaces to the VLANs.
<HUAWEI> system-view [HUAWEI] sysname SwitchA [SwitchA] vlan batch 10 20 30 40 [SwitchA] interface gigabitethernet0/0/4 [SwitchA-GigabitEthernet0/0/4] port link-type trunk [SwitchA-GigabitEthernet0/0/4] port trunk allow-pass vlan 10 [SwitchA-GigabitEthernet0/0/4] quit [SwitchA] interface gigabitethernet0/0/1 [SwitchA-GigabitEthernet0/0/1] port link-type trunk [SwitchA-GigabitEthernet0/0/1] port trunk allow-pass vlan 20 [SwitchA-GigabitEthernet0/0/1] quit [SwitchA] interface gigabitethernet0/0/2 [SwitchA-GigabitEthernet0/0/2] port link-type trunk [SwitchA-GigabitEthernet0/0/2] port trunk allow-pass vlan 30 [SwitchA-GigabitEthernet0/0/2] quit [SwitchA] interface gigabitethernet0/0/3 [SwitchA-GigabitEthernet0/0/3] port link-type trunk [SwitchA-GigabitEthernet0/0/3] port trunk allow-pass vlan 40 [SwitchA-GigabitEthernet0/0/3] quit
# Configure IP addresses and masks for Layer 3 interfaces.
[SwitchA] interface vlanif 10 [SwitchA-Vlanif10] ip address 10.110.1.2 24 [SwitchA-Vlanif10] quit [SwitchA] interface vlanif 20 [SwitchA-Vlanif20] ip address 192.168.1.1 24 [SwitchA-Vlanif20] quit [SwitchA] interface vlanif 30 [SwitchA-Vlanif30] ip address 192.168.2.1 24 [SwitchA-Vlanif30] quit [SwitchA] interface vlanif 40 [SwitchA-Vlanif40] ip address 192.168.3.1 24 [SwitchA-Vlanif40] quit [SwitchA] interface loopback0 [SwitchA-LoopBack0] ip address 10.1.1.1 32 [SwitchA-LoopBack0] quit
[SwitchA] isis 1 [SwitchA-isis-1] network-entity 10.0000.0000.0001.00 [SwitchA-isis-1] quit [SwitchA] interface vlanif 10 [SwitchA-Vlanif10] isis enable 1 [SwitchA-Vlanif10] quit [SwitchA] interface vlanif 20 [SwitchA-Vlanif20] isis enable 1 [SwitchA-Vlanif20] quit [SwitchA] interface vlanif 30 [SwitchA-Vlanif30] isis enable 1 [SwitchA-Vlanif30] quit [SwitchA] interface vlanif 40 [SwitchA-Vlanif40] isis enable 1 [SwitchA-Vlanif40] quit [SwitchA] interface loopback0 [SwitchA-LoopBack0] isis enable 1 [SwitchA-LoopBack0] quit
[SwitchA] multicast routing-enable [SwitchA] interface vlanif 10 [SwitchA-Vlanif10] pim sm [SwitchA-Vlanif10] quit [SwitchA] interface vlanif 20 [SwitchA-Vlanif20] pim sm [SwitchA-Vlanif20] quit [SwitchA] interface vlanif 30 [SwitchA-Vlanif30] pim sm [SwitchA-Vlanif30] quit [SwitchA] interface vlanif 40 [SwitchA-Vlanif40] pim sm [SwitchA-Vlanif40] quit [SwitchA] interface loopback 0 [SwitchA-LoopBack0] pim sm [SwitchA-LoopBack0] quit
[SwitchA] pim [SwitchA-pim] static-rp 10.1.1.1 [SwitchA-pim] quit
[SwitchE] multicast load-splitting stable-preferred
# Configure static multicast groups 225.1.1.1 to 225.1.1.3 on VLANIF 140.
[SwitchE] interface Vlanif140 [SwitchE-Vlanif140] igmp static-group 225.1.1.1 inc-step-mask 32 number 3 [SwitchE-Vlanif140] quit
# Source (10.110.1.1/24) sends multicast data to multicast groups 225.1.1.1 to 225.1.1.3. HostA can receive multicast data from Source. Brief information about the PIM routing table on SwitchE is as follows:
[SwitchE] display pim routing-table brief VPN-Instance: public net Total 3 (*, G) entries; 3 (S, G) entries 00001.(*, 225.1.1.1) Upstream interface:Vlanif100 Number of downstream:1 00002.(10.110.1.1, 225.1.1.1) Upstream interface:Vlanif100 Number of downstream:1 00003.(*, 225.1.1.2) Upstream interface:Vlanif80 Number of downstream:1 00004.(10.110.1.1, 225.1.1.2) Upstream interface:Vlanif80 Number of downstream:1 00005.(*, 225.1.1.3) Upstream interface:Vlanif60 Number of downstream:1 00006.(10.110.1.1, 225.1.1.3) Upstream interface:Vlanif60 Number of downstream:1
(*, G) and (S, G) entries are evenly distributed on the three equal-cost routes. The upstream interfaces of the routes are VLANIF 100, VLANIF 80, and VLANIF 60, respectively.
The load splitting algorithm processes (*, G) and (S, G) entries separately using the same rule.
# Set the multicast load splitting weight of VLANIF 60 to 3.
[SwitchE] interface Vlanif60 [SwitchE-Vlanif60] multicast load-splitting weight 3 [SwitchE-Vlanif60] quit
# Set the multicast load splitting weight of VLANIF 80 to 2.
[SwitchE] interface Vlanif80 [SwitchE-Vlanif80] multicast load-splitting weight 2 [SwitchE-Vlanif80] quit
# Configure static multicast groups 225.1.1.4 to 225.1.1.6 on VLANIF 140.
[SwitchE] interface Vlanif140 [SwitchE-Vlanif140] igmp static-group 225.1.1.4 inc-step-mask 32 number 3 [SwitchE-Vlanif140] quit
# Source (10.110.1.1/24) sends multicast data to multicast groups 225.1.1.1 to 225.1.1.6. HostA can receive multicast data from Source. Brief information about the PIM routing table on SwitchE is as follows:
[SwitchE] display pim routing-table brief VPN-Instance: public net Total 6 (*, G) entries; 6 (S, G) entries 00001.(*, 225.1.1.1) Upstream interface:Vlanif60 Number of downstream:1 00002.(10.110.1.1, 225.1.1.1) Upstream interface:Vlanif60 Number of downstream:1 00003.(*, 225.1.1.2) Upstream interface:Vlanif80 Number of downstream:1 00004.(10.110.1.1, 225.1.1.2) Upstream interface:Vlanif80 Number of downstream:1 00005.(*, 225.1.1.3) Upstream interface:Vlanif100 Number of downstream:1 00006.(10.110.1.1, 225.1.1.3) Upstream interface:Vlanif100 Number of downstream:1 00007.(*, 225.1.1.4) Upstream interface:Vlanif60 Number of downstream:1 00008.(10.110.1.1, 225.1.1.4) Upstream interface:Vlanif60 Number of downstream:1 00009.(*, 225.1.1.5) Upstream interface:Vlanif60 Number of downstream:1 00010.(10.110.1.1, 225.1.1.5) Upstream interface:Vlanif60 Number of downstream:1 00011.(*, 225.1.1.6) Upstream interface:Vlanif80 Number of downstream:1 00012.(10.110.1.1, 225.1.1.6) Upstream interface:Vlanif80 Number of downstream:1
The upstream interfaces of existing (*, G) and (S, G) entries remain unchanged. VLANIF 60 has a larger multicast load splitting weight (3) than VLANIF 80 (2). Therefore, more new (*, G) and (S, G) entries are distributed to the route with VLANIF 60 as the upstream interface. The multicast load splitting weight of VLANIF 100 is 1 (default value), smaller than the weights of VLANIF60 and VLANIF80. Therefore, the route with VLANIF 100 as the upstream interface does not have new entries.
SwitchA configuration file
# sysname SwitchA # vlan batch 10 20 30 40 # multicast routing-enable # isis 1 network-entity 10.0000.0000.0001.00 # interface Vlanif10 ip address 10.110.1.2 255.255.255.0 isis enable 1 pim sm # interface Vlanif20 ip address 192.168.1.1 255.255.255.0 isis enable 1 pim sm # interface Vlanif30 ip address 192.168.2.1 255.255.255.0 isis enable 1 pim sm # interface Vlanif40 ip address 192.168.3.1 255.255.255.0 isis enable 1 pim sm # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 20 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 30 # interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 40 # interface GigabitEthernet0/0/4 port link-type trunk port trunk allow-pass vlan 10 # interface LoopBack0 ip address 10.1.1.1 255.255.255.255 isis enable 1 pim sm # pim static-rp 10.1.1.1 # return
SwitchB configuration file
# sysname SwitchB # vlan batch 20 60 # multicast routing-enable # isis 1 network-entity 10.0000.0000.0002.00 # interface Vlanif20 ip address 192.168.1.2 255.255.255.0 isis enable 1 pim sm # interface Vlanif60 ip address 192.168.4.1 255.255.255.0 isis enable 1 pim sm # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 20 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 60 # pim static-rp 10.1.1.1 # return
SwitchC configuration file
# sysname SwitchC # vlan batch 30 80 # multicast routing-enable # isis 1 network-entity 10.0000.0000.0003.00 # interface Vlanif30 ip address 192.168.2.2 255.255.255.0 isis enable 1 pim sm # interface Vlanif80 ip address 192.168.5.1 255.255.255.0 isis enable 1 pim sm # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 30 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 80 # pim static-rp 10.1.1.1 # return
SwitchD configuration file
# sysname SwitchD # vlan batch 40 100 # multicast routing-enable # isis 1 network-entity 10.0000.0000.0004.00 # interface Vlanif40 ip address 192.168.3.2 255.255.255.0 isis enable 1 pim sm # interface Vlanif100 ip address 192.168.6.1 255.255.255.0 isis enable 1 pim sm # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 40 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 100 # pim static-rp 10.1.1.1 # return
SwitchE configuration file
# sysname SwitchE # vlan batch 60 80 100 140 # multicast routing-enable multicast load-splitting stable-preferred # isis 1 network-entity 10.0000.0000.0005.00 # interface Vlanif60 ip address 192.168.4.2 255.255.255.0 isis enable 1 pim sm multicast load-splitting weight 3 # interface Vlanif80 ip address 192.168.5.2 255.255.255.0 isis enable 1 pim sm multicast load-splitting weight 2 # interface Vlanif100 ip address 192.168.6.2 255.255.255.0 isis enable 1 pim sm # interface Vlanif140 ip address 10.110.2.2 255.255.255.0 isis enable 1 pim sm igmp static-group 225.1.1.1 inc-step-mask 0.0.0.1 number 3 igmp static-group 225.1.1.4 inc-step-mask 0.0.0.1 number 3 # interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 60 # interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 80 # interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 100 # interface GigabitEthernet0/0/4 port link-type trunk port trunk allow-pass vlan 140 # pim static-rp 10.1.1.1 # return