PIM
PIM (Protocol Independent Multicast) is a family of multicast routing protocols that enables efficient delivery of multicast traffic by building distribution trees independent of the underlying unicast routing protocol, supporting various operational modes including Dense Mode, Sparse Mode, and Source-Specific Multicast (SSM). It uses Rendezvous Points (RPs) in Sparse Mode to establish shared trees and supports features like Auto-RP and Bootstrap Router (BSR) for dynamic RP discovery and election. PIM provides scalable multicast forwarding for applications such as video streaming, software distribution, and real-time communications while optimizing bandwidth utilization through intelligent tree pruning and grafting mechanisms.
Diagram
Section titled “Diagram”Classes
Section titled “Classes”configuration (iosxe.devices)
Section titled “configuration (iosxe.devices)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| pim | Class | [pim] | No |
pim (iosxe.devices.configuration)
Section titled “pim (iosxe.devices.configuration)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| autorp | Boolean | true, false | No | |
| autorp_listener | Boolean | true, false | No | |
| bsr_candidate_interface_type | Choice | Loopback | No | |
| bsr_candidate_interface_id | Any | String or Integer[min: 0] | No | |
| bsr_candidate_mask | Integer | min: 0, max: 32 | No | |
| bsr_candidate_priority | Integer | min: 0, max: 255 | No | |
| bsr_candidate_accept_rp_candidate | String | No | ||
| register_source_interface_type | Choice | Loopback | No | |
| register_source_interface_id | Any | String or Integer[min: 0, max: 2147483647] | No | |
| ssm_range | String | No | ||
| ssm_default | Boolean | true, false | No | |
| rp_address | IP | No | ||
| rp_address_override | Boolean | true, false | No | |
| rp_address_bidir | Boolean | true, false | No | |
| rp_addresses | List | [rp_addresses] | No | |
| rp_candidates | List | [rp_candidates] | No | |
| vrfs | List | [vrfs] | No |
rp_addresses (iosxe.devices.configuration.pim)
Section titled “rp_addresses (iosxe.devices.configuration.pim)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| access_list | String | Yes | ||
| rp_address | IP | No | ||
| override | Boolean | true, false | No | |
| bidir | Boolean | true, false | No |
rp_candidates (iosxe.devices.configuration.pim)
Section titled “rp_candidates (iosxe.devices.configuration.pim)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| interface | String | Yes | ||
| group_list | String | No | ||
| interval | Integer | min: 1, max: 16383 | No | |
| priority | Integer | min: 0, max: 255 | No | |
| bidir | Boolean | true, false | No |
vrfs (iosxe.devices.configuration.pim)
Section titled “vrfs (iosxe.devices.configuration.pim)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| vrf | String | Yes | ||
| autorp | Boolean | true, false | No | |
| autorp_listener | Boolean | true, false | No | |
| bsr_candidate_interface_type | Choice | Loopback | No | |
| bsr_candidate_interface_id | Any | String or Integer[min: 0] | No | |
| bsr_candidate_mask | Integer | min: 0, max: 32 | No | |
| bsr_candidate_priority | Integer | min: 0, max: 255 | No | |
| bsr_candidate_accept_rp_candidate | String | No | ||
| register_source_interface_type | Choice | Loopback | No | |
| register_source_interface_id | Any | String or Integer[min: 0, max: 2147483647] | No | |
| cache_rpf_oif | Boolean | true, false | No | |
| ssm_range | String | No | ||
| ssm_default | Boolean | true, false | No | |
| rp_address | IP | No | ||
| rp_address_override | Boolean | true, false | No | |
| rp_address_bidir | Boolean | true, false | No | |
| rp_addresses | List | [rp_addresses] | No | |
| rp_candidates | List | [rp_candidates] | No |
By building multicast distribution trees independent of unicast routing, PIM enables scalable and efficient multicast traffic delivery for diverse applications.
PIM Parameters
Section titled “PIM Parameters”Key Components:
-
PIM Mode (
mode): Selects the operational mode (Sparse, Dense, Sparse-Dense, SSM). -
Auto-RP (
autorp,autorp_listener): Enables dynamic RP discovery and listener functionality. -
Bootstrap Router (BSR) Candidate (
bsr_candidate_interface_type,bsr_candidate_interface_id,bsr_candidate_mask,bsr_candidate_priority): Configures BSR candidate interface, mask, and priority. -
Register Source (
register_source_interface_type,register_source_interface_id): Specifies the source interface for PIM register messages. -
Rendezvous Point (RP) Address (
rp_address,rp_addresses): Sets static or dynamic RP addresses and group associations. -
Source-Specific Multicast (SSM) Range (
ssm_range): Defines the SSM address range. -
RP Candidate (
rp_candidates): Configures RP candidate interfaces and group lists. -
VRF-Specific PIM Settings (
vrfs): Enables PIM and configures parameters within specific VRF instances. -
RPF OIF Cache (
cache_rpf_oif): Enables caching of RPF Outgoing Interface information for improved multicast forwarding performance within VRF contexts.
Key Parameters Briefly Explained:
mode: PIM operational mode.autorp,autorp_listener: Auto-RP settings.bsr_candidate_interface_type,bsr_candidate_interface_id,bsr_candidate_mask,bsr_candidate_priority: BSR candidate configuration.register_source_interface_type,register_source_interface_id: Register source interface configuration.rp_address,rp_addresses: RP address settings.ssm_range: SSM range definition.rp_candidates: RP candidate configuration.vrfs: VRF-specific PIM settings.cache_rpf_oif: RPF OIF caching for VRF multicast optimization.
You can use these PIM parameters to control how multicast traffic is routed and managed in your network. Customize the PIM mode, RP discovery mechanisms, and SSM ranges to fit your network’s multicast applications and topology. Adjusting these parameters lets you tailor multicast forwarding for efficient bandwidth utilization and scalable delivery.
Sample Configuration
Section titled “Sample Configuration”The following configuration describes how to set up PIM on a Cisco IOS-XE device, including enabling PIM sparse mode, configuring Auto-RP, BSR candidate, static RP, SSM range, and VRF-specific settings.
ip multicast-routing!interface GigabitEthernet0/1 ip address 10.0.0.1 255.255.255.0 ip pim sparse-mode!interface Loopback0 ip address 192.168.1.100 255.255.255.255 ip pim sparse-mode!ip pim autorpip pim autorp listenerip pim bsr-candidate Loopback0 30 100ip pim register-source Loopback0ip pim ssm range 232.0.0.0/8ip pim rp-address 192.168.1.100 overrideip pim rp-address 10.1.1.1 group-list MULTICAST-GROUPSip pim rp-address 10.2.2.2 group-list BIDIR-GROUPS bidirip pim rp-candidate Loopback0 group-list 224.0.0.0 interval 60 priority 100ip pim vrf MULTICAST-VRF cache rpf-oif!ip access-list standard MULTICAST-GROUPS permit 239.0.0.0 0.0.0.255!ip access-list standard BIDIR-GROUPS permit 239.1.0.0 0.0.0.255Example YAML Code
Section titled “Example YAML Code”The following YAML code defines PIM configuration on an IOS-XE device, including Auto-RP, BSR candidate, SSM range, RP addresses, RP candidates, and VRF-specific settings.
iosxe: devices: - name: Device1 configuration: pim: autorp: true autorp_listener: true bsr_candidate_interface_type: Loopback bsr_candidate_interface_id: "0" bsr_candidate_mask: 30 bsr_candidate_priority: 100 bsr_candidate_accept_rp_candidate: ACCEPT-RP-ACL register_source_interface_type: Loopback register_source_interface_id: "0" ssm_range: 232.0.0.0/8 ssm_default: false rp_address: 192.168.1.100 rp_address_override: true rp_address_bidir: false rp_addresses: - access_list: MULTICAST-GROUPS rp_address: 10.1.1.1 override: false bidir: false - access_list: BIDIR-GROUPS rp_address: 10.2.2.2 override: true bidir: true rp_candidates: - interface: Loopback0 group_list: 224.0.0.0 interval: 60 priority: 100 bidir: false vrfs: - vrf: MULTICAST-VRF autorp: true register_source_interface_type: Loopback register_source_interface_id: "100" cache_rpf_oif: true ssm_range: 232.0.0.0/8 rp_address: 172.16.1.1 rp_addresses: - access_list: VRF-GROUPS rp_address: 172.16.2.2IPv6 PIM
Section titled “IPv6 PIM”IPv6 PIM (Protocol Independent Multicast for IPv6) provides multicast routing capabilities for IPv6 networks, supporting Sparse Mode, Source-Specific Multicast (SSM), and bidirectional shared trees. It uses IPv6 Rendezvous Points (RPs) for multicast group management and supports VRF-aware configurations for multi-tenant environments.
IPv6 PIM Parameters
Section titled “IPv6 PIM Parameters”Key Components:
-
Rendezvous Point (RP) Address (
rp_address): IPv6 address of the RP for multicast groups. -
RP Access List (
rp_address_access_list): Access list to filter which multicast groups use this RP. -
Bidirectional Mode (
rp_address_bidir): Enable bidirectional shared tree mode for the RP. -
VRF-Specific IPv6 PIM (
vrfs): Configure IPv6 PIM parameters within specific VRF instances.
Sample IPv6 PIM Configuration
Section titled “Sample IPv6 PIM Configuration”ipv6 multicast-routing!interface GigabitEthernet0/1 ipv6 address 2001:DB8:1::1/64 ipv6 pim!ipv6 pim rp-address 2001:db8:100::1 IPV6-MCAST-GROUPSipv6 pim rp-address 2001:db8:200::1 IPV6-BIDIR-GROUPS bidir!ipv6 access-list IPV6-MCAST-GROUPS permit ipv6 any FF3E::/32!ipv6 access-list IPV6-BIDIR-GROUPS permit ipv6 any FF3F::/32Example IPv6 PIM YAML
Section titled “Example IPv6 PIM YAML”iosxe: devices: - name: Device1 configuration: ipv6_pim: rp_address: 2001:db8:100::1 rp_address_access_list: IPV6-MCAST-GROUPS rp_address_bidir: false vrfs: - vrf: IPV6-MULTICAST-VRF rp_address: 2001:db8:200::1 rp_address_access_list: IPV6-VRF-GROUPS rp_address_bidir: truePIM (Protocol Independent Multicast) is a family of multicast routing protocols that enables efficient delivery of multicast traffic by building distribution trees independent of the underlying unicast routing protocol, supporting various operational modes including Dense Mode, Sparse Mode, and Source-Specific Multicast (SSM). It uses Rendezvous Points (RPs) in Sparse Mode to establish shared trees and supports features like Auto-RP and Bootstrap Router (BSR) for dynamic RP discovery and election. PIM provides scalable multicast forwarding for applications such as video streaming, software distribution, and real-time communications while optimizing bandwidth utilization through intelligent tree pruning and grafting mechanisms.
Diagram
Section titled “Diagram”Classes
Section titled “Classes”configuration (iosxe.devices)
Section titled “configuration (iosxe.devices)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| pim | Class | [pim] | No |
pim (iosxe.devices.configuration)
Section titled “pim (iosxe.devices.configuration)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| autorp | Boolean | true, false | No | |
| autorp_listener | Boolean | true, false | No | |
| bsr_candidate_interface_type | Choice | Loopback | No | |
| bsr_candidate_interface_id | Any | String or Integer[min: 0] | No | |
| bsr_candidate_mask | Integer | min: 0, max: 32 | No | |
| bsr_candidate_priority | Integer | min: 0, max: 255 | No | |
| bsr_candidate_accept_rp_candidate | String | No | ||
| ssm_range | String | No | ||
| ssm_default | Boolean | true, false | No | |
| rp_address | String | No | ||
| rp_address_override | Boolean | true, false | No | |
| rp_address_bidir | Boolean | true, false | No | |
| rp_addresses | List | [rp_addresses] | No | |
| rp_candidates | List | [rp_candidates] | No | |
| vrfs | List | [vrfs] | No |
rp_addresses (iosxe.devices.configuration.pim)
Section titled “rp_addresses (iosxe.devices.configuration.pim)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| access_list | String | Yes | ||
| rp_address | IP | No | ||
| override | Boolean | true, false | No | |
| bidir | Boolean | true, false | No |
rp_candidates (iosxe.devices.configuration.pim)
Section titled “rp_candidates (iosxe.devices.configuration.pim)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| interface | String | Yes | ||
| group_list | String | No | ||
| interval | Integer | min: 1, max: 16383 | No | |
| priority | Integer | min: 0, max: 255 | No | |
| bidir | Boolean | true, false | No |
vrfs (iosxe.devices.configuration.pim)
Section titled “vrfs (iosxe.devices.configuration.pim)”| Name | Type | Constraint | Mandatory | Default Value |
|---|---|---|---|---|
| vrf | String | Yes | ||
| autorp | Boolean | true, false | No | |
| autorp_listener | Boolean | true, false | No | |
| bsr_candidate_interface_type | Choice | Loopback | No | |
| bsr_candidate_interface_id | Any | String or Integer[min: 0] | No | |
| bsr_candidate_mask | Integer | min: 0, max: 32 | No | |
| bsr_candidate_priority | Integer | min: 0, max: 255 | No | |
| bsr_candidate_accept_rp_candidate | String | No | ||
| cache_rpf_oif | Boolean | true, false | No | |
| ssm_range | String | No | ||
| ssm_default | Boolean | true, false | No | |
| rp_address | String | No | ||
| rp_address_override | Boolean | true, false | No | |
| rp_address_bidir | Boolean | true, false | No | |
| rp_addresses | List | [rp_addresses] | No | |
| rp_candidates | List | [rp_candidates] | No |
By building multicast distribution trees independent of unicast routing, PIM enables scalable and efficient multicast traffic delivery for diverse applications.
PIM Parameters
Section titled “PIM Parameters”Key Components:
-
PIM Mode (
mode): Selects the operational mode (Sparse, Dense, Sparse-Dense, SSM). -
Auto-RP (
autorp,autorp_listener): Enables dynamic RP discovery and listener functionality. -
Bootstrap Router (BSR) Candidate (
bsr_candidate_interface_type,bsr_candidate_interface_id,bsr_candidate_mask,bsr_candidate_priority): Configures BSR candidate interface, mask, and priority. -
Rendezvous Point (RP) Address (
rp_address,rp_addresses): Sets static or dynamic RP addresses and group associations. -
Source-Specific Multicast (SSM) Range (
ssm_range): Defines the SSM address range. -
RP Candidate (
rp_candidates): Configures RP candidate interfaces and group lists. -
VRF-Specific PIM Settings (
vrfs): Enables PIM and configures parameters within specific VRF instances.
Key Parameters Briefly Explained:
mode: PIM operational mode.autorp,autorp_listener: Auto-RP settings.bsr_candidate_interface_type,bsr_candidate_interface_id,bsr_candidate_mask,bsr_candidate_priority: BSR candidate configuration.rp_address,rp_addresses: RP address settings.ssm_range: SSM range definition.rp_candidates: RP candidate configuration.vrfs: VRF-specific PIM settings.
You can use these PIM parameters to control how multicast traffic is routed and managed in your network. Customize the PIM mode, RP discovery mechanisms, and SSM ranges to fit your network’s multicast applications and topology. Adjusting these parameters lets you tailor multicast forwarding for efficient bandwidth utilization and scalable delivery.
Sample Configuration
Section titled “Sample Configuration”The following configuration describes how to set up PIM on a Cisco IOS-XE device, including enabling PIM sparse mode, configuring Auto-RP, BSR candidate, static RP, SSM range, and VRF-specific settings.
ip multicast-routing!interface GigabitEthernet0/1 ip address 10.0.0.1 255.255.255.0 ip pim sparse-mode!interface Loopback0 ip address 192.168.1.100 255.255.255.255 ip pim sparse-mode!ip pim autorpip pim autorp listenerip pim bsr-candidate Loopback0 30 100ip pim ssm range 232.0.0.0/8ip pim rp-address 192.168.1.100 overrideip pim rp-address 10.1.1.1 group-list MULTICAST-GROUPSip pim rp-address 10.2.2.2 group-list BIDIR-GROUPS bidirip pim rp-candidate Loopback0 group-list 224.0.0.0 interval 60 priority 100!ip access-list standard MULTICAST-GROUPS permit 239.0.0.0 0.0.0.255!ip access-list standard BIDIR-GROUPS permit 239.1.0.0 0.0.0.255Example YAML Code
Section titled “Example YAML Code”The following YAML code defines PIM configuration on an IOS-XE device, including Auto-RP, BSR candidate, SSM range, RP addresses, RP candidates, and VRF-specific settings.
iosxe: devices: - name: Device1 configuration: pim: autorp: true autorp_listener: true bsr_candidate_interface_type: Loopback bsr_candidate_interface_id: "0" bsr_candidate_mask: 30 bsr_candidate_priority: 100 bsr_candidate_accept_rp_candidate: ACCEPT-RP-ACL ssm_range: 232.0.0.0/8 ssm_default: false rp_address: 192.168.1.100 rp_address_override: true rp_address_bidir: false rp_addresses: - access_list: MULTICAST-GROUPS rp_address: 10.1.1.1 override: false bidir: false - access_list: BIDIR-GROUPS rp_address: 10.2.2.2 override: true bidir: true rp_candidates: - interface: Loopback0 group_list: 224.0.0.0 interval: 60 priority: 100 bidir: false vrfs: - vrf: MULTICAST-VRF autorp: true ssm_range: 232.0.0.0/8 rp_address: 172.16.1.1 rp_addresses: - access_list: VRF-GROUPS rp_address: 172.16.2.2