Configuring PIMv6-SM
Overview
Function Introduction
The Protocol Independent Multicasting-Sparse Mode for IPv6 (PIMv6-SM) is a multicast routing protocol designed to operate efficiently across Wide Area Networks (WANs) with sparsely distributed groups. It helps network nodes that are geographically dispersed to conserve bandwidth, and reduces traffic by simultaneously delivering a single stream of information to multiple locations.
PIMv6-SM uses the IPv6 multicast model of receiver-initiated membership, supporting both shared and shortest-path trees, and uses soft-state mechanisms to adapt to changing network conditions. It relies on a topology-gathering protocol to populate a multicast routing table with routes.
Principle Description
The PIMv6-SM module is based on the following IETF standard: RFC 4601
Terminology
Rendezvous Point (RP): A Rendezvous Point (RP) router is configured as the root of the non-source-specific distribution tree for a multicast group. Join messages from receivers for a group are sent towards the RP. Data from senders is sent to the RP so that receivers can discover who the senders are, and receive traffic destined for the group.
Multicast Routing Information Base (MRIB): The MRIB is a multicast topology table derived from the unicast routing table. In PIMv6-SM, the MRIB is used to decide where to send Join/Prune messages. It also provides routing metrics for destination addresses. These metrics are used when sending and processing Assert messages.
Reverse Path Forwarding: Reverse Path Forwarding (RPF) is a concept of an optimized form of flooding, where the router accepts a packet from SourceA through Interface IF1 only if IF1 is the interface the router would use in order to reach SourceA. It determines whether the interface is correct by consulting its unicast routing tables. The packet that arrives through interface IF1 is forwarded because the routing table lists this interface as the shortest path to the network. The router’s unicast routing table determines the shortest path for the multicast packets. Because a router accepts a packet from only one neighbor, it floods the packet only once, meaning that (assuming point-to-point links) each packet is transmitted over each link once in each direction.
Tree Information Base (TIB): The TIB is the collection of state at a PIM router storing the state of all multicast distribution trees at that router. It is created by receiving Join/Prune messages, Assert messages, and MLD information from local hosts.
Upstream: Towards the root of the tree. The root of the tree might be either the Source or the RP.
Downstream: Away from the root of the tree. The root of tree might be either the Source or the RP.
Source-Based Trees: In the Source-Based Trees concept, the forwarding paths are based on the shortest unicast path to the source. If the unicast routing metric is hop counts, the branches of the multicast Source-Based Trees are minimum hop. If the metric is delay, the branches are minimum delay. For every multicast source, there is a corresponding multicast tree that directly connects the source to all receivers. All traffic to the members of an associated group passes along the tree made for their source. Source-Based Trees have two entries with a list of outgoing interfaces– the source address and the multicast group.
Shared Trees: Shared trees or RP trees (RPT) rely on a central router called the Rendezvous Point (RP) that receives all traffic from the sources, and forwards that traffic to the receivers. All hosts might not be receivers. There is a single tree for each multicast group, regardless of the number of sources. Only the routers on the tree know about the group, and information is sent only to interested receivers. With an RP, receivers have a place to join, even if no source exists. The shared tree is unidirectional, and information flows only from the RP to the receivers. If a host other than the RP has to send data on the tree, the data must first be tunneled to the RP, and then multicast to the members. This means that even if a receiver is also a source, it can only use the tree to receive packets from the RP, and not to send packets to the RP (unless the source is located between the RP and the receivers).
Bootstrap Router (BSR): When a new multicast sender starts sending data packets, or a new receiver starts sending the Join message towards the RP for that multicast group, it needs to know the next-hop router towards the RP. The BSR provides group-to-RP mapping information to all the PIMv6 routers in a domain, allowing them to map to the correct RP address.
Sending out Hello Messages: PIMv6 routers periodically send Hello messages to discover neighboring PIMv6 routers. Hello messages are multicast using the address ff02::d (ALL-PIMv6-ROUTERS group). Routers do not send any acknowledgement that a Hello message was received. A hold time value determines the length of time for which the information is valid. In PIMv6-SM, a downstream receiver must join a group before traffic is forwarded on the interface.
Electing a Designated Router: In a multi-access network with multiple routers connected, one of them is selected to act as a designated router (DR) for a given period of time. The DR is responsible for sending Join/Prune messages to the RP for local members.
Determining the RP: PIMv6-SM uses a BootStrap Router (BSR) to originate Bootstrap messages, and to disseminate RP information. The messages are multicast to the group on each link. If the BSR is not apparent, the routers flood the domain with advertisements. The router with the highest priority (if priorities are same, the higher IPv6 address applies) is selected to be the RP. Routers receive and store Bootstrap messages originated by the BSR. When a DR gets a membership indication from MLD for (or a data packet from) a directly connected host, for a group for which it has no entry, the DR maps the group address to one of the candidate RPs that can service that group. The DR then sends a Join/Prune message towards that RP. In a small domain, the RP can also be configured statically.
Joining the Shared Tree: To join a multicast group, a host sends an MLD message to its upstream router, after which the router can accept multicast traffic for that group. The router sends a Join message to its upstream PIMv6 neighbor in the direction of the RP. When a router receives a Join message from a downstream router, it checks to see if a state exists for the group in its multicast routing table. If a state already exists, the Join message has reached the shared tree, and the interface from which the message was received is entered in the Outgoing Interface list. If no state exists, an entry is created, the interface is entered in the Outgoing Interface list, and the Join message is again sent towards the RP.
Registering with the RP: A DR can begin receiving traffic from a source without having a Source or a Group state for that source. In this case, the DR has no information on how to get multicast traffic to the RP through a tree. When the source DR receives the initial multicast packet, it encapsulates it in a Register message, and unicasts it to the RP for that group. The RP decapsulates each Register message, and forwards the extracted data packet to downstream members on the RPT. Once the path is established from the source to the RP, the DR begins sending traffic to the RP as standard IPv6 multicast packets, as well as encapsulated within Register messages. The RP temporarily receives packets twice. When the RP detects the normal multicast packets, it sends a Register-Stop message to the source DR, meaning it should stop sending register packets.
Sending Register-Stop Messages: When the RP begins receiving traffic from the source, both as Register messages and as unencapsulated IPv6 packets, it sends a Register-Stop message to the DR. This notifies the DR that the traffic is now being received as standard IPv6 multicast packets on the SPT. When the DR receives this message, it stops encapsulating traffic in Register messages.
Pruning the Interface: Routers attached to receivers send Prune messages to the RP to disassociate the source from the RP. When an RP receives a Prune message, it no longer forwards traffic from the source indicated in the Prune message. If all members of a multicast group are pruned, the MLD state of the DR is deleted, and the interface is removed from the Source and Group lists of the group.
Forwarding Multicast Packets: PIMv6-SM routers forward multicast traffic onto all interfaces that lead to receivers that have explicitly joined a multicast group. Messages are sent to a group address in the local subnetwork, and have a Time to Live (TTL) of 1. The router performs an RPF check, and forwards the packet. Traffic that arrives on the correct interface is sent onto all outgoing interfaces that lead to downstream receivers if the downstream router has sent a join to this router, or is a member of this group.
Configuration
Configuring General PIMv6 Sparse-mode ( With static RP)
PIMv6-SM is a soft-state protocol. The main requirement is to enable PIMv6-SM on desired interfaces, and configure the RP information correctly, through static or dynamic methods. All multicast group states are maintained dynamically as the result of MLD Report/Leave and PIMv6 Join/Prune messages. Currently, we support only one RP for all multicast groups (ff00::/8).
This section provides PIMv6-SM configuration examples for two relevant scenarios.
In this example, using the above topology, Switch1 is the Rendezvous Point (RP), and all routers are statically configured with RP information. While configuring the RP, make sure that:
Every router includes the ipv6 pim rp-address 2001:1::1 statement, even if it does not have any source or group member attached to it.
There is only one RP address for a group scope in the PIMv6 domain.
All interfaces running PIMv6-SM must have sparse-mode enabled.
PIMv6 Sparse-mode
The graphic above displays the network topology used in these examples:
The following configuration should be operated on all switches if the switch ID is not specified.
step 1 Enter the configure mode
Switch# configure terminal
step 2 Enable IPv6 & IPv6 multicast globally
Switch(config)# ipv6 enable
Switch(config)# ipv6 multicast-routing
step 3 Enter the interface configure mode and set the attributes of the interface
Interface configuration for Switch1:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:1::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Interface configuration for Switch2:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:2::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::2/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
step 4 Create static unicast routes
Configuring Switch1:
Switch(config)# ipv6 route 2001:2::/64 2001:9::2
Configuring Switch2:
Switch(config)# ipv6 route 2001:1::/64 2001:9::1
step 5 Configure static RP address
Switch(config)# ipv6 pim rp-address 2001:1::1
step 6 Exit the configure mode
Switch(config)# end
step 7 Validation
Configure all the routers with the same ipv6 pim rp-address 2001:1::1 command as shown above. Use the following commands to verify the RP configuration, interface details, and the multicast routing table.
RP Details
At Switch1, the show ip pim sparse-mode rp mapping command shows that 11.1.1.1 is the RP for all multicast groups ff00::/8, and is statically configured. All other routers will have a similar output.
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
Group(s): ff00::/8, Static
RP: 2001:1::1
Uptime: 00:00:04
Embedded RP Groups:
Interface Details
The show ipv6 pim sparse-mode interface command displays the interface details for Switch1.
Switch# show ipv6 pim sparse-mode interface
Interface VIFindex Ver/ Nbr DR
Mode Count Prior
eth-0-1 2 v2/S 0 1
Address : fe80::fc94:efff:fe96:2600
Global Address: 2001:1::1
DR : this system
eth-0-9 0 v2/S 0 1
Address : fe80::fc94:efff:fe96:2600
Global Address: 2001:9::1
DR : this system
IPv6 Multicast Routing Table
The show ipv6 pim sparse-mode mroute detail command displays the IPv6 multicast routing table.
Display the result on Switch1:
Switch# show ipv6 pim sparse-mode mroute detail
IPv6 Multicast Routing Table
| (,,RP) Entries: 0 | (*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
| *, ff0e::1234:5678
Type: (\*,G)
Uptime: 00:01:37
RP: 2001:1::1, RPF nbr: None, RPF idx: None
Upstream:
State: JOINED, SPT Switch: Enabled, JT: off
Macro state: Join Desired,
Downstream:
eth-0-1:
State: NO INFO, ET: off, PPT: off
Assert State: NO INFO, AT: off
Winner: ::, Metric: 4294967295, Pref: 4294967295, RPT bit: on
Macro state: Could Assert, Assert Track
Local Olist:
eth-0-1
Display the result on Switch2:
Switch# show ipv6 pim sparse-mode mroute detail
IPv6 Multicast Routing Table
| (,,RP) Entries: 0 | (*,G) Entries: 1
(S,G) Entries: 0
(S,G,rpt) Entries: 0
FCR Entries: 0
| *, ff0e::1234:5678
Type: (\*,G)
Uptime: 00:00:06
RP: 2001:1::1, RPF nbr: None, RPF idx: None
Upstream:
State: JOINED, SPT Switch: Enabled, JT: off
Macro state: Join Desired,
Downstream:
eth-0-1:
State: NO INFO, ET: off, PPT: off
Assert State: NO INFO, AT: off
Winner: ::, Metric: 4294967295, Pref: 4294967295, RPT bit: on
Macro state: Could Assert, Assert Track
Local Olist:
eth-0-1
Configuring General PIMv6 Sparse-mode ( With dynamic RP)
A static configuration of RP works for a small, stable PIMv6 domain; however, it is not practical for a large and not-suitable internet work. In such a network, if the RP fails, the network administrator might have to change the static configurations on all PIMv6 routers. Another reason for choosing dynamic configuration is a higher routing traffic leading to a change in the RP.
We use the BSR mechanism to dynamically maintain the RP information. For configuring RP dynamically in the above scenario, Switch1 on eth-0-1 and Switch2 on eth-0-9 are configured as Candidate RP using the ipv6 pim rp candidate command. Switch2 on eth-0-9 is also configured as Candidate BSR. Since no other router has been configured as Candidate BSR, the Switch2 becomes the BSR router, and is responsible for sending group-to-RP mapping information to all other routers in this PIMv6 domain.
The following output displays the complete configuration at Switch1 and Switch2.
The following configuration should be operated on all switches if the switch ID is not specified.
step 1 Enter the configure mode
Switch# configure terminal
step 2 Enable IPv6 & IPv6 multicast globally
Switch(config)# ipv6 enable
Switch(config)# ipv6 multicast-routing
step 3 Enter the interface configure mode and set the attributes of the interface
Interface configuration for Switch1:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:1::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Interface configuration for Switch2:
Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:2::1/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
Switch(config)# interface eth-0-9
Switch(config-if)# no shutdown
Switch(config-if)# no switchport
Switch(config-if)# ipv6 address 2001:9::2/64
Switch(config-if)# ipv6 pim sparse-mode
Switch(config-if)# exit
step 4 Create static unicast routes
Configuring Switch1:
Switch(config)# ipv6 route 2001:2::/64 2001:9::2
Configuring Switch2:
Switch(config)# ipv6 route 2001:1::/64 2001:9::1
step 5 Configure the candidate rp
Configuring Switch1:
Switch(config)# ipv6 pim rp-candidate eth-0-1
Configuring Switch2:
Switch(config)# ipv6 pim rp-candidate eth-0-9
step 6 Configure the candidate bsr
Configuring Switch2:
Switch(config)# ipv6 pim bsr-candidate eth-0-9
The highest priority router is chosen as the RP. If two or more routers have the same priority, a hash function in the BSR mechanism is used to choose the RP, to make sure that all routers in the PIMv6-domain have the same RP for the same group.
step 7 Exit the configure mode
Switch(config)# end
step 8 Validation
PIMv6 group-to-RP mappings
Use the show ip pim sparse-mode rp mapping command to display the group-to-RP mapping details. The output displays information about RP candidates. There are two RP candidates for the group range ff00::/8. RP Candidate 2001:1::1 has a default priority of 192, whereas, RP Candidate 2001:9::2 has been configured to have a priority of 2. Since RP candidate 2001:1::1 has a higher priority, it is selected as RP for the multicast group ff00::/8. Only permit filters would be cared in group list. .
Display the result on Switch2:
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)
Group(s): ff00::/8
RP: 2001:9::2
Info source: 2001:9::2, via bootstrap, priority 2
Uptime: 00:00:32, expires: 00:02:02
RP: 2001:1::1
Info source: 2001:1::1, via bootstrap, priority 192
Uptime: 00:00:31, expires: 00:02:03
Embedded RP Groups:
To display information about the RP router for a particular group, use the following command. This output displays that 2001:9::2 has been chosen as the RP for the multicast group ff02::1234.
Display the result on Switch2:
Switch# show ipv6 pim sparse-mode rp-hash ff02::1234
Info source: 2001:9::2, via bootstrap
After RP information reaches all PIMv6 routers in the domain, various state machines maintain all routing states as the result of Join/Prune from group membership. To display information on interface details and the multicast routing table, refer to the Configuring RP Statically section above.
Configuring Boostrap Router
BSR
Every PIMv6 multicast group needs to be associated with the IPv6 address of a Rendezvous Point (RP). This address is used as the root of a group-specific distribution tree whose branches extend to all nodes in the domain that want to receive traffic sent to the group. For all senders to reach all receivers, all routers in the domain use the same mappings of group addresses to RP addresses. In order to determine the RP for a multicast group, a PIMv6 router maintains a collection of group-to-RP mappings, called the RP-Set.
The Bootstrap Router (BSR) mechanism for the class of multicast routing protocols in the PIMv6 domain use the concept of a Rendezvous Point as a means for receivers to discover the sources that send to a particular multicast group. The BSR mechanism is one way that a multicast router can learn the set of group-to-RP mappings required in order to function.
Some of the PIMv6 routers within a PIMv6 domain are configured as Candidate-RPs (C-RPs). A subset of the C-RPs will eventually be used as the actual RPs for the domain. An RP configured with a lower value in the priority field has higher a priority.
Some of the PIMv6 routers in the domain are configured to be Candidate-BSRs (C-BSRs). One of these C-BSRs is elected to be the bootstrap router (BSR) for the domain, and all PIMv6 routers in the domain learn the result of this election through BSM (Bootstrap messages). The C-BSR with highest value in priority field is Elected-BSR.
The C-RPs then reports their candidacy to the elected BSR, which chooses a subset of the C-RPs and distributes corresponding group-to-RP mappings to all the routers in the domain through Bootstrap messages.
The following configuration should be operated on all switches if the switch ID is not specified.
step 1 Enter the configure mode
Switch# configure terminal
step 2 Enable IPv6 & IPv6 multicast globally
Switch(config)# ipv6 enable
Switch(config)# ipv6 multicast-routing
step 3 Configure the candidate bsr
Configuring Switch1:
Switch(config)# ipv6 pim bsr-candidate eth-0-1
Configuring Switch2:
Switch(config)# ipv6 pim bsr-candidate eth-0-1 10 25
step 4 Configure the candidate rp
Configuring Switch2:
Switch(config)# ipv6 pim rp-candidate eth-0-1 priority 0
step 5 Enter the interface configure mode and set the attributes of the interface
Interface configuration for Switch2:
Switch(config)# interface eth-0-1
Switch(config-if)# ipv6 pim dr-priority 10
Switch(config-if)# ipv6 pim unicast-bsm
Switch(config-if)# exit
step 5 Exit the configure mode
Switch(config)# end
step 6 Validation
Verify the C-BSR state on rtr1
Switch# show ipv6 pim sparse-mode bsr-router
PIM6v2 Bootstrap information
This system is the Bootstrap Router (BSR)
BSR address: 2001:9::1 (?)
Uptime: 00:01:27, BSR Priority: 64, Hash mask length: 126
Next bootstrap message in 00:00:16
Role: Candidate BSR
State: Elected BSR
Verify the C-BSR state on rtr2. The initial state of C-BSR is P-BSR before transitioning to C-BSR.
Switch# show ipv6 pim sparse-mode bsr-router
PIM6v2 Bootstrap information
BSR address: 2001:9::1 (?)
Uptime: 00:01:34, BSR Priority: 64, Hash mask length: 126
Expires: 00:01:51
Role: Candidate BSR
State: Candidate BSR
Candidate RP: 2001:9::2(eth-0-9)
Advertisement interval 60 seconds
Next C-RP advertisement in 00:00:35
Verify RP-set information on E-BSR
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
This system is the Bootstrap Router (v2)
Group(s): ff00::/8
RP: 2001:9::2
Info source: 2001:9::2, via bootstrap, priority 0
Uptime: 00:45:37, expires: 00:02:29
Embedded RP Groups:
Verify RP-set information on C-BSR
Switch# show ipv6 pim sparse-mode rp mapping
PIM Group-to-RP Mappings
Group(s): ff00::/8
RP: 2001:9::2
Info source: 2001:9::1, via bootstrap, priority 0
Uptime: 00:03:14, expires: 00:01:51
Embedded RP Groups:
Configuring PIMv6-SSM feature
PIMv6-SSM can work with PIMv6-SM on the multicast router. By default, PIMv6-SSM is disabled.
step 1 Enter the configure mode
Switch# configure terminal
step 2 Enable PIMv6-ssm globally
Switch(config)# ipv6 pim ssm default
Switch(config)# ipv6 pim ssm range ipv6acl
step 3 Exit the configure mode
Switch(config)# end
Application cases {application-cases-95}
N/A