FortiGate
FortiGate Next Generation Firewall utilizes purpose-built security processors and threat intelligence security services from FortiGuard labs to deliver top-rated protection and high performance, including encrypted traffic.
vpalli
Staff
Staff
Article Id 282627
Description This article provides an explanation of the root cause and offers a solution for the 'No RPF neighbor' error that may occur when steering multicast traffic via SD-WAN interface members using the FortiOS v7.4 feature 'pim-use-sdwan'.
Scope FortiGate.
Solution

With the introduction of the 'pim-use-sdwan' option, FortiGate can leverage SD-WAN for PIM (Protocol Independent Multicast) operations, including the verification of RP (Rendezvous Point) neighbors and the transmission of multicast packets. SD-WAN rules can now steer multicast traffic.

When an SD-WAN member is out of SLA, multicast traffic can fail over to another SD-WAN member, and switch back when SLA recovers.


CLI Configuration: 

 

config router multicast
    set multicast-routing enable
        config pim-sm-global
            set pim-use-sdwan enable 
                config rp-address
                    edit 1
                        set ip-address 172.17.0.1
                    next
                end
            end


config interface
    edit "port1"
        set pim-mode sparse-mode
            config igmp
                set version 2
             end
                 set dr-priority 2
             next
                 edit "vpn1"
                     set pim-mode sparse-mode
                         config igmp
                             set version 2
                         end
                             set dr-priority 2
                         next
                      end
                   end

 

In specific scenarios, particularly when multiple SD-WAN zones exist on the FortiGate with Internet circuits as members of 'Internet SD-WAN Zone' and VPN tunnels as members of 'VPN SD-WAN Zone', there is a possibility that Multicast PIM traffic may be routed incorrectly via the Internet circuits instead of the intended VPN tunnels. 


Multicast Topology.png

 
This is primarily because the SD-WAN rules prioritizing Internet-bound traffic are at the top of the rule sequence. 

As a result, when a Multicast client requests a multicast stream through IGMP JOIN, FortiGate will refrain from transmitting the PIM JOIN as dictated by the SDWAN rule because there is no PIM neighborship established over the interfaces of Internet SD-WAN zone. 

FGT-BurnabyDot9 (root) # di ip router pim-sm all enable
Debug messages will be on for 30 minutes.

FGT-BurnabyDot9 (root) # diagnose ip router pim-sm level info
Debug messages will be on for 30 minutes.

FGT-BurnabyDot9 (root) # di de enable


image.png


Solution:
Set up an SD-WAN rule with the following parameters:

On GUI, go to Network -> SDWAN -> SDWAN Rules.
Source Subnet: 'all, (Note: Source Subnet must be designated as 'all' and cannot be set to any specific subnet).
Destination Subnet: '172.17.0.1/32' (RP IP Address).
Protocol: '103' (PIM).
Members: VPN Tunnel Interfaces, since the PIM neighborship and RP is across the IPSec VPN Tunnels.

And ensure to position it at the top of the SD-WAN rule list.


CLI Configuration:

 

config system sdwan
    set status enable
        config zone
            edit "Internet-sdwan"
            next
            edit "vpn-sdwan"
            next
        end
        config members
            edit 1
                set interface "wan1"
                set zone "Internet-sdwan"
                set gateway 172.218.187.112
            next
            edit 2
                set interface "wan2"
                set zone "Internet-sdwan"
                set gateway 208.91.115.10
            next
            edit 3
                set interface "vpn1"
                set zone "vpn-sdwan"
            next
            edit 4
                set interface "vpn2"
                set zone "vpn-sdwan"
            next
        end
        config service
            edit 3   <-----  Place Multicast SD-WAN Rule on the Top of the Sequence.
                set name "Multicast-SDWAN"  
                set protocol 103
                set dst "172.17.0.1/32"
                set src "all"
                set priority-members 3 4 (VPN Tunnel Interfaces)
                set priority-zone "vpn-sdwan"
            next
            edit 2
                set name "LANtoVPN"
                set dst "10.10.76.3/32" "10.10.77.0/24" "10.10.78.0/24"
                set src "10.10.9.0/24"
                set priority-members 3 4
                set priority-zone "vpn-sdwan"
            next
            edit 1
                set name "LANtoWAN"
                set mode priority
                set dst "all"
                set src "all"
                set health-check "google.com"
                set link-cost-factor packet-loss
                set priority-members 1 2
                set priority-zone "dot9-sdwan"
            next
        end
end