IPv6 multicast routing BSR support New
FortiGate supports BSR (Bootstrap Router) for IPv6 multicast, enabling dynamic RP discovery and aligning IPv6 multicast capabilities with existing IPv4 PIM-SM deployments. BSR is a mechanism in PIM-SM that automates the discovery and advertisement of Rendezvous Points (RPs), simplifying configuration and improving scalability for large-scale multicast environments.
Commands to support multicast flows for IPv6 to be used for static-group in PIM6 interface:
config router multicast6-flow
edit <name>
config flows
edit <id>
set *group-addr <IPv6 addr>
next
end
next
end
|
Command or option |
Description |
|---|---|
|
config router multicast6-flow |
Configure IPv6 multicast-flow. |
|
config flows |
IPv6 multicast-flow entries. |
|
id |
Flow ID. |
|
*group-addr <IPv6 addr> |
Multicast group IP address. |
Commands to support PIM6 RP configurations for PIM6 interface:
config router multicast6
config interface
edit <name>
set rp-candidate {enable | disable}
set static-group <string>
set rp-candidate-group <string>
set rp-candidate-priority <value>
set rp-candidate-interval <integer>
next
end
end
|
Command or option |
Description |
|---|---|
|
config interface |
Protocol Independent Multicast (PIM) interfaces. |
|
rp-candidate {enable | disable} |
Enable/disable compete to become RP in elections:
|
|
static-group <string> |
Statically set IPv6 multicast groups to forward out. |
|
rp-candidate-group <string> |
Multicast groups managed by this RP. |
|
rp-candidate-priority <value> |
Router's priority as RP (0 - 255, default = 192). |
|
rp-candidate-interval <integer> |
RP candidate advertisement interval (1 - 16383 sec, default = 60). |
Commands to support PIM6 BSR configurations without VRF:
config router multicast6
config pim-sm-global
set bsr-candidate {enable | disable}
set bsr-interface <string>
set bsr-priority <integer>
set bsr-hash <integer>
set bsr-allow-quick-refresh {enable | disable}
set cisco-crp-prefix {enable | disable}
set cisco-ignore-rp-set-priority {enable | disable}
set spt-threshold {enable | disable}
set spt-threshould-group <string>
config rp-address
edit <id>
set *ip6-address <IPv6 addr>
set group <string>
next
end
end
end
|
Command or option |
Description |
|---|---|
|
config pim-sm-global |
PIM sparse-mode global settings. |
|
bsr-candidate {enable | disable} |
Enable/disable allowing this router to become a bootstrap router (BSR). |
|
bsr-interface <string> |
Interface to advertise as candidate BSR. |
|
bsr-priority <integer> |
BSR priority (0 - 255, default = 0). |
|
bsr-hash <integer> |
BSR hash length (0 - 32, default = 10). |
|
bsr-allow-quick-refresh {enable | disable} |
Enable/disable accept BSR quick refresh packets from neighbors. |
|
cisco-crp-prefix {enable | disable} |
Enable/disable making candidate RP compatible with old Cisco IOS:
|
|
cisco-ignore-rp-set-priority {enable | disable} |
Use only hash for RP selection (compatibility with old Cisco IOS):
|
|
spt-threshold {enable | disable} |
Enable/disable switching to source specific tree:
|
|
spt-threshould-group <string> |
Groups allowed to switch to source tree. |
|
config rp-address |
Statically configure RP addresses. |
|
*ip6-address <IPv6 addr> |
RP router IPv6 address. |
|
group <string> |
Groups to use this RP. |
Commands to support PIM6 BSR configurations per VRF:
config router multicast6
config pim-sm-global-vrf
edit <id>
set bsr-candidate {enable | disable}
set bsr-interface <string>
set bsr-priority <integer>
set bsr-hash <integer>
set bsr-allow-quick-refresh {enable | disable}
set cisco-crp-prefix {enable | disable}
config rp-address
edit <id>
set *ip6-address <IPv6 addr>
set group <string>
next
end
next
end
end
|
Command or option |
Description |
|---|---|
|
config pim-sm-global-vrf |
Per-VRF PIM sparse-mode global settings. |
|
bsr-candidate {enable | disable} |
Enable/disable allowing this router to become a bootstrap router (BSR). |
|
bsr-interface <string> |
Interface to advertise as candidate BSR. |
|
bsr-priority <integer> |
BSR priority (0 - 255, default = 0). |
|
bsr-hash <integer> |
BSR hash length (0 - 32, default = 10). |
|
bsr-allow-quick-refresh {enable | disable} |
Enable/disable accept BSR quick refresh packets from neighbors. |
|
cisco-crp-prefix {enable | disable} |
Enable/disable making candidate RP compatible with old Cisco IOS:
|
|
config rp-address |
Statically configure RP addresses. |
|
*ip6-address <IPv6 addr> |
RP router IPv6 address. |
|
group <string> |
Groups to use this RP. |
Example
This example about large-scale deployments shows how BSR (Bootstrap Router) can be used to dynamically learn the RP info and avoid mis-configurations.
In this example, three FortiGates are configured to support IPv6 multicast routing using PIM-SM. FGT1 and FGT2 are configured as RP and BSR candidates for IPv6 multicast groups, while port4 on FGT3 is connected to a multicast receiver:
-
FGT1:
config router access-list6 edit "list6" config rule edit 1 set prefix6 ff05::10/128 next end next edit "list11" config rule edit 1 set prefix6 ff05::11/128 next end next endconfig router multicast6 set multicast-routing enable config interface edit "port1" set rp-candidate enable set rp-candidate-group "list11" next edit "port2" set rp-candidate enable set rp-candidate-group "list6" set rp-candidate-priority 200 next edit "fortilink" next end config pim-sm-global set bsr-candidate enable set bsr-interface "port1" end end -
FGT2
config router access-list6 edit "list6" config rule edit 1 set prefix6 ff05::10/128 next end next endconfig router multicast6 set multicast-routing enable config interface edit "port1" set rp-candidate enable set rp-candidate-group "list6" next edit "npu0_vlink0" next end config pim-sm-global set bsr-candidate enable set bsr-interface "port1" end end -
FGT3
config router multicast6 set multicast-routing enable config interface edit "npu0_vlink1" next edit "port4" next end end
Verification of BSR Election and RP Mapping in IPv6 PIM Sparse Mode Across FortiGates:
-
FGT1:
# get router info6 multicast pim sparse-mode bsr-router PIMv2 Bootstrap information for VRF 0 BSR address: 2000:172:16:200::4 Uptime: 02:02:12, BSR Priority: 0, Hash mask length: 126 Expires: 00:01:12 Role: Candidate BSR State: Candidate BSR Candidate RP: 2000:172:16:205::1(port2) Advertisement interval 60 seconds Next Cand_RP_advertisement in 00:00:15 Candidate RP: 2000:172:16:200::1(port1) Advertisement interval 60 seconds Next Cand_RP_advertisement in 00:00:02# get router info6 multicast pim sparse-mode rp mapping PIM Group-to-RP Mappings for VRF 0 Group(s): ff05::10/128 RP: 2000:172:16:200::4 Info source: 2000:172:16:200::4, via bootstrap, priority 192 Uptime: 00:54:11, expires: 00:02:19 RP: 2000:172:16:205::1 Info source: 2000:172:16:200::4, via bootstrap, priority 200 Uptime: 00:55:18, expires: 00:02:19 Group(s): ff05::11/128 RP: 2000:172:16:200::1 Info source: 2000:172:16:200::4, via bootstrap, priority 192 Uptime: 00:55:18, expires: 00:02:19# get router info6 multicast pim sparse-mode rp-hash ff05::11 VRF 0 RP: 2000:172:16:200::1 Info source: 2000:172:16:200::4, via bootstrap# get router info6 multicast pim sparse-mode rp-hash ff05::10 VRF 0 RP: 2000:172:16:200::4 Info source: 2000:172:16:200::4, via bootstrap# get router info6 multicast pim sparse-mode nexthop Flags: N = New, R = RP, S = Source, U = Unreachable VRF Destination Type Nexthop Nexthop Nexthop Nexthop Metric Pref Refcnt Num Addr Ifindex Name ______________________________________________________________________________________________ 0 2000:172:16:200::1 .R.. 1 2000:172:16:200::1 7 0 0 1 0 2000:172:16:200::4 .RS. 1 2000:172:16:200::4 7 0 0 3 0 2000:172:16:205::11 ..S. 1 2000:172:16:205::11 8 0 0 1# get router info6 multicast pim sparse-mode mroute IP Multicast Routing Table (*,*,RP) Entries: 0 (*,G) Entries: 1 (S,G) Entries: 1 (S,G,rpt) Entries: 0 FCR Entries: 0 VRF 0 (2000:172:16:205::11, ff05::10) RPF nbr: :: RPF idx: None SPT bit: 1 Upstream State: JOINED Local: Joined: port1 Asserted: Outgoing: port1 VRF 0 (*, ff05::11) RP: 2000:172:16:200::1 RPF nbr: :: RPF idx: None Upstream State: JOINED Local: Joined: port1 Asserted: FCR: -
FGT2
# get router info6 multicast pim sparse-mode bsr-router PIMv2 Bootstrap information for VRF 0 This system is the Bootstrap Router (BSR) BSR address: 2000:172:16:200::4 Uptime: 00:55:37, BSR Priority: 0, Hash mask length: 126 Next bootstrap message in 00:00:28 Role: Candidate BSR State: Elected BSR Candidate RP: 2000:172:16:200::4(port1) Advertisement interval 60 seconds Next Cand_RP_advertisement in 00:00:25# get router info6 multicast pim sparse-mode rp mapping PIM Group-to-RP Mappings for VRF 0 This system is the Bootstrap Router (v2) Group(s): ff05::10/128 RP: 2000:172:16:200::4 Info source: 2000:172:16:200::4, via bootstrap, priority 192 Uptime: 00:55:51, expires: 00:01:39 RP: 2000:172:16:205::1 Info source: 2000:172:16:205::1, via bootstrap, priority 200 Uptime: 00:57:36, expires: 00:01:54 Group(s): ff05::11/128 RP: 2000:172:16:200::1 Info source: 2000:172:16:200::1, via bootstrap, priority 192 Uptime: 00:57:49, expires: 00:01:41 -
FGT3
# get router info6 multicast pim sparse-mode bsr-router PIMv2 Bootstrap information for VRF 0 BSR address: 2000:172:16:200::4 Uptime: 02:04:31, BSR Priority: 0, Hash mask length: 126 Expires: 00:01:53 Role: Non-candidate BSR State: Accept Preferred
# get router info6 multicast pim sparse-mode rp mapping PIM Group-to-RP Mappings for VRF 0 Group(s): ff05::10/128 RP: 2000:172:16:200::4 Info source: 2000:172:16:200::4, via bootstrap, priority 192 Uptime: 00:56:21, expires: 00:02:09 RP: 2000:172:16:205::1 Info source: 2000:172:16:200::4, via bootstrap, priority 200 Uptime: 00:57:28, expires: 00:02:09 Group(s): ff05::11/128 RP: 2000:172:16:200::1 Info source: 2000:172:16:200::4, via bootstrap, priority 192 Uptime: 00:57:28, expires: 00:02:09