SD-WAN traffic steering

Introduction

This article demonstrates the SD-WAN traffic steering strategy called “Remote Health Signaling”.

In this strategy, the Spoke firewalls ping the Hub firewall loopback IP address. When the ping occurs, the SD-WAN health information is embedded into the ping.

  • If the Spoke determines the ping to the hub is within the defined SLA parameters, the Spoke will attach an additional route attribute to it’s own advertised prefix with an attractively low (and therefore more preferred) value.
  • Similarly, if it falls out of SLA, it will attach a more “expensive” route value, making it a less preferred path to the Spoke prefix, but still a path which could be usable.

The topology used to demonstrate this feature is shown below:

Configuration – Hub

The following unique configuration is implemented on the Hub.

  • Both vpn1 and vpn2 interfaces are placed into an SD-WAN zone.
  • The following additional configuration is added for the Hub to participate in remote health signaling:
    BGP:
    config router bgp
    set recursive-inherit-priority enable
    SD-WAN:
    config system sdwan
    config health-check
    edit "Remote_health_check"
    set detect-mode remote <--- use the spoke's SLA value
    set sla-id-redistribute 1 <--- check this
    set members 1 2
    config sla
    edit 1
    set link-cost-factor remote <--- check this
    next
    end
    next
    end
    end

    Configuration – Spokes

    The following unique configuration is implemented on the Spokes.

    • Both vpn1 and vpn2 interfaces are placed into an SD-WAN zone.
    • SD-WAN
      • config system sdwan
        • config members
          • edit 1
            • set priority-in-sla 60
            • set priority-out-sla 120
          • next
          • edit 2
            • set priority-in-sla 70
            • set priority-out-sla 140
          • next
        • end
      • config health-check
        • edit “HUB”
          • set embed-measured-health enable
          • set sla-id-redistribute 1

    Full Configuration

    The sections below shows the full configuration so you can understand the overall configuration. I have used BGP on Loopback as my site to site VPN type.

    Hub – Full Configuration

    IPSec VPN

    FW-01 (LAB1) # show vpn ipsec phase1-interface
    config vpn ipsec phase1-interface
    edit "vpn1-hub1"
    set type dynamic
    set interface "LAB1-VLAN211"
    set ike-version 2
    set peertype any
    set net-device disable
    set exchange-ip-addr4 10.250.1.1
    set proposal aes256-sha256
    set add-route disable
    set dpd on-idle
    set dhgrp 21
    set auto-discovery-sender enable
    set network-overlay enable
    set network-id 1
    set transport auto
    set psksecret ENC xxxxxxx
    set dpd-retryinterval 5
    next
    edit "vpn1-hub2"
    set type dynamic
    set interface "LAB1-VLAN212"
    set ike-version 2
    set peertype any
    set net-device disable
    set exchange-ip-addr4 10.250.1.1
    set proposal aes256-sha256
    set add-route disable
    set dpd on-idle
    set dhgrp 21
    set auto-discovery-sender enable
    set network-overlay enable
    set network-id 2
    set transport auto
    set psksecret xxxxxxx
    next
    end
    FW-01 (LAB1) #

    BGP:

    FW-01 (LAB1) # show router bgp
    config router bgp
    set as 65000
    set router-id 10.250.1.1
    set keepalive-timer 15
    set holdtime-timer 45
    set ibgp-multipath enable
    set additional-path enable
    set recursive-next-hop enable
    set recursive-inherit-priority enable <---- added for Remote Health Signaling
    config neighbor-group
    edit "spoke-sites"
    set advertisement-interval 1
    set next-hop-self enable
    set soft-reconfiguration enable
    set interface "loopback1-lab1"
    set remote-as 65000
    set connect-timer 1
    set update-source "loopback1-lab1"
    set additional-path send
    set route-reflector-client enable
    next
    end
    config neighbor-range
    edit 1
    set prefix 10.250.1.0 255.255.255.0
    set neighbor-group "spoke-sites"
    next
    end
    config network
    edit 1
    set prefix 10.1.100.0 255.255.255.0
    next
    edit 2
    set prefix 10.1.101.0 255.255.255.0
    next
    edit 3
    set prefix 10.251.1.1 255.255.255.255
    next
    end
    end
    FW-01 (LAB1) #

    SD-WAN:

    config system sdwan
    set status enable
    config zone
    edit "VPN"
    next
    end
    config members
    edit 1
    set interface "vpn1-hub1"
    set zone "VPN"
    next
    edit 2
    set interface "vpn1-hub2"
    set zone "VPN"
    next
    end
    config health-check
    edit "Remote_health_check"
    set detect-mode remote <--- to accept remote health check signaling on the hub
    set sla-id-redistribute 1 <---- what is this?
    set members 1 2
    config sla
    edit 1
    set link-cost-factor remote <--- not sure
    next
    end
    next
    end
    end

    Spokes – Full Configuration

    IPSec VPN

    I use the localid value on the spokes phase1 configuration. When you do this, it populates a user friendly name on the VPN tunnel list when you view the tunnels on the hub.

    config vpn ipsec phase1-interface
    edit "To_Hub"
    set localid "Branch_Office_A"
    next
    end

    SD-WAN:

    FW-01 (LAB2) # show system sdwan
    config system sdwan
    set status enable
    config zone
    edit "VPN"
    next
    end
    config members
    edit 1
    set interface "LAB2-VLAN221"
    set zone "Internet"
    set gateway 10.252.1.9
    next
    edit 2
    set interface "LAB2-VLAN222"
    set zone "Internet"
    set gateway 10.252.1.13
    next
    edit 3
    set interface "vpn1"
    set zone "VPN"
    set source 10.251.1.2
    set cost 10
    set priority 10
    set priority-in-sla 60 <----- When the ping to the hub loopback is within SLA, apply the route metric of 60
    set priority-out-sla 120 <----- When the ping to the hub loopback is out of SLA, apply the route metric of 120
    next
    edit 4
    set interface "vpn2"
    set zone "VPN"
    set source 10.251.1.2
    set priority 10
    set priority-in-sla 70 <----- When the ping to the hub loopback is within SLA, apply the route metric of 70
    set priority-out-sla 140 <----- When the ping to the hub loopback is out of SLA, apply the route metric of 140
    next
    end
    config health-check
    edit "HUB"
    set server "10.251.1.1"
    set update-static-route disable
    set embed-measured-health enable <----- When the firewall pings the hub, insert the priority-in/out-sla metric as well.
    set sla-id-redistribute 1 <----- to be confirmed
    set members 3 4
    config sla
    edit 1
    set link-cost-factor latency jitter packet-loss
    set latency-threshold 100
    set jitter-threshold 150
    set packetloss-threshold 10
    next
    end
    next
    end
    config service
    edit 1
    set name "To_LAB1_LAN"
    set mode sla
    set dst "LAB1_LAN"
    set src "all"
    config sla
    edit "HUB"
    set id 1
    next
    end
    set priority-members 3 4
    next
    end
    end
    FW-01 (LAB2) #

    BGP:

    FW-01 (LAB2) # show router bgp
    config router bgp
    set as 65000
    set router-id 10.250.1.2
    set keepalive-timer 15
    set holdtime-timer 45
    set ibgp-multipath enable
    set recursive-next-hop enable
    set tag-resolve-mode merge
    config neighbor
    edit "10.250.1.1"
    set advertisement-interval 1
    set soft-reconfiguration enable
    set interface "loopback1-lab2"
    set remote-as 65000
    set connect-timer 1
    set update-source "loopback1-lab2"
    next
    end
    config neighbor-group
    edit "spoke-sites"
    set advertisement-interval 1
    set next-hop-self enable
    set soft-reconfiguration enable
    set interface "loopback1-lab2"
    set remote-as 65000
    set update-source "loopback1-lab2"
    set route-reflector-client enable
    next
    end
    config neighbor-range
    edit 1
    set prefix 10.250.1.0 255.255.255.0
    set neighbor-group "spoke-sites"
    next
    end
    config network
    edit 1
    set prefix 10.1.102.0 255.255.255.0
    next
    edit 2
    set prefix 10.251.1.2 255.255.255.255
    next
    end
    end
    FW-01 (LAB2) #