05 Other Features - fortinet-solutions-cse/sdwan-advpn-reference GitHub Wiki
Jinja Orchestrator versions: 7.2+
Multiple System Zones are created by default, in order to simplify generic Firewall Policy creation. This zone creation is optional, and for each zone there is a default name that can be changed.
Variable | Scope | Description | Values | Default | stateful |
---|---|---|---|---|---|
create_lan_zone |
project | Create a zone for LAN interfaces | true / false | true | no |
create_hub2hub_zone |
project | Create a zone for Hub-to-Hub tunnels | true / false | true | no |
create_vrf_leak_zone |
project | Create a zone for VRF links | true / false | true | no |
Variable | Scope | Description | Values | Default | stateful |
---|---|---|---|---|---|
lan_zone |
project | Name of the zone for LAN interfaces | lan_zone | yes | |
hub2hub_zone |
project | Name of the zone for Hub-to-Hub tunnels | hub2hub_overlay | yes | |
vrf_leak_zone |
project | Name of the zone for VRF links (CE side) | vrfs_leak_zone | yes | |
pevrf_leak_zone |
project | Name of the zone for VRF links (PE side) | pevrf_leak_zone | yes |
Jinja Orchestrator versions: 7.4+
Variable | Scope | Description | Values | Default | stateful |
---|---|---|---|---|---|
hub_crl_check |
project | Enable CRL validation on Hubs | true / false | false | yes* |
crl_scep_url |
project | SCEP URL for CRL validation | - | yes | |
crl_http_url |
project | HTTP URL for CRL validation | - | yes |
* - stateful only in force_cleanup
mode (deleting the CRL config entry)
CRL validation can be configured (supported only on Hubs), using either SCEP or HTTP. For example:
{% set hub_crl_check = true %}
{% set crl_scep_url = 'http://10.1.0.20/app/cert/scep/' %}
Jinja Orchestrator versions: 7.2+
Variable | Scope | Description | Values | Default | stateful |
---|---|---|---|---|---|
short_community_as |
project | Substitute ASN in BGP communities (for 4-byte ASN regions) | e.g. '65000' | - | yes |
FOS supports 4-byte Autonomous System Numbers (ASNs), but it doesn't support using them in BGP communities (rfc5668).
For this reason, a new global optional parameter short_community_as
is introduced.
Its effect is the following:
- For regions with
as
< 65536 (2-byte ASN), this parameter is ignored. The actual ASN of the region is used in the generated BGP communities. - For regions with
as
>= 65536 (4-byte ASN), this parameter is used in the generated BGP communities.
For example, one of the communities we generate is "SLA_OK", and its value is defined as:
edit "SLA_OK"
config rule
edit 1
set set-community "{{ community_as }}:99"
next
end
next
- For a region with a 2-byte ASN = 65001, the SLA_OK community will simply have a value of "65001:99".
- For a region with a 4-byte ASN > 65536, the SLA_OK community will use the new parameter. Its default value is "65000", so that the SLA_OK community will, by default, have a value of "65000:99" for such regions.
Jinja Orchestrator versions: 7.4+
Variable | Scope | Description | Values | Default | stateful |
---|---|---|---|---|---|
vdom |
project or profiles.options | SD-WAN VDOM name | e.g. 'CustX' | 'root' | no |
By default, it is assumed that the SD-WAN is configured in the "root" VDOM.
If this is not the case, you can specify the VDOM name, using vdom
parameter.
This optional parameter can be set either globally (for the entire project):
{% set vdom = "CustX" %}
...or per profile (this overrides the global value):
{% set profiles = {
'MultiVdomBranch': {
'options': {
'vdom': "CustX"
},
'interfaces': [
# ...
]
}
}
%}
Note that we DO NOT support multiple SD-WAN VDOMs on the same device. For example, we generate several special interfaces with fixed names (such as "Lo", "Lo-HC"...), and this would cause conflicts if you tried to do it in multiple VDOMs. That is why there must be only one SD-WAN VDOM on the device. It's just that it doesn't have to be the "root" VDOM.
Jinja Orchestrator versions: 7.4+
Variable | Scope | Description | Values | Default | stateful |
---|---|---|---|---|---|
dia |
profiles.interfaces | WAN interface used for Direct Internet Access | true / false | false | no |
transport_group |
profiles.interfaces | ADVPN 2.0 Transport Group | <int> | 0 | yes |
sdwan_mode |
profiles.options | SD-WAN rule mode for Corporate traffic | 'sla' / 'priority' | 'sla' | yes |
hub_strict_syn |
project | Enable strict SYN check for Spoke-to-Spoke traffic on Hubs | true / false | false | yes |
During offline rendering (without the FortiManager), the Jinja Orchestrator also renders the firewall policies and the SD-WAN configuration. Several optional parameters are available to control this behavior, as summarized in the table above.
These parameters are currently ignored, when using the Jinja Orchestrator for the FortiManager-based deployment.
Jinja Orchestrator versions: 7.4+
Variable | Scope | Description | Values | Default |
---|---|---|---|---|
strict_peering |
project or profiles.options | Allow purging BGP neighbors and neighbor-groups | true / false | true |
strict_pbr |
project or profiles.options | Allow purging policy routes (PBR) | true / false | true |
strict_firewall |
project or profiles.options | Allow purging Firewall Policies (offline rendering) | true / false | true |
force_cleanup |
project or profiles.options | Allow deleting static routes, BGP networks and more | true / false | false |
With the introduction of the "stateful variable" concept, the Jinja Orchestrator attempts to reconfigure devices, bringing them to the new state. This means not only adding the configuration, but also trying to cleanup the configuration which is no longer needed or even unwanted.
However, this is not always safe, due to the limited visibility of the Jinja rendering engine.
The variables listed here help limiting the degree of automatic cleaning that the Jinja Orchestrator can "afford". The default values should be good for standard deployments.
All the listed variables can be configured globally (on the project level) and overriden per profile, using the options
structure.
For example:
{% set strict_peering = true %}
{% set profiles = {
'MyBranch': {
'options': {
'strict_peering': false,
}
'interfaces': [
# ...
]
}
}
%}
The force_cleanup
option is different from the rest, because it attempts to explicitly delete table entries that could be previously created by
the Jinja Orchestrator (such as specific static routes etc.). This is safe, as long as you do not reuse names and indexes listed on this page. However, in FortiManager-based deployment, this can result in install failures, when the entries in question
are not found in the device configuration. That is why we have to keep this mode disabled by default. It is intended for an "ad-hoc" use: enable it
when the cleanup is required, install the configuration and then disable it.
When upgrading the Jinja Orchestrator to version 7.4+ from an earlier version, it is recommended to enable
force_cleanup
during the first configuration install. This will help to cleanup deprecated entries and those entries that followed older numbering conventions (such as BGP networks). After the first install, theforce_cleanup
option can be disabled.
Following is a detailed specification of the elements purged by each of the above options:
On Spokes:
- Purge and reconfigure all BGP neighbors
- Purge and reconfigure all BGP neighbor-groups and neighbor-ranges
- Purge and reconfigure all BGP networks
On Hubs:
- Purge and reconfigure all BGP neighbor-groups and neighbor-ranges
- Purge and reconfigure all BGP aggregate-addresses
To purge and reconfigure all BGP networks on the Hubs, it is required to enable both
strict_peering
andforce_cleanup
On Hubs:
- Purge and reconfigure all policy routes
On Spokes and Hubs:
- Purge and reconfigure all firewall policies (only in offline rendering mode)
On Spokes:
- Cleanup unused inter-VRF links based on the region's VRF list (can be used for offline rendering)
On Hubs:
- Purge and reconfigure all BGP networks (requires also
strict_peering
) - Delete unused static route entry 101 (reserved for the LAN summary blackhole)
- Delete unused static route entry 103 (reserved for the regional loopback summary)
- Cleanup unused inter-VRF links based on the region's VRF list (can be used for offline rendering)
- Delete unused "TheCA" CRL entry