router : bgp
Use this command to set or unset BGP-4 routing parameters. BGP can be used to perform Classless Interdomain Routing (CIDR) and to route traffic between different autonomous systems or domains using an alternative route if a link between a FortiGate unit and a BGP peer (such as an ISP router) fails. FortiOS BGP4 complies with RFC 1771 and supports IPv4 addressing.
FortiOS supports IPv6 over BGP4 via the BGP4+ protocol defined in RFC 2545, and RFC 2858. IPv6 configuration for BGP is accomplished with the aggregate-address6, network6, and redistribute6 variables. Also almost every variable in config neighbour has an IPv4 and IPv6 version such as activate and activate6. Any variable ending with a “6” is an IPv6 variable.
When BGP is enabled, the FortiGate unit sends routing table updates to the upstream ISP router whenever any part of the routing table changes. The update advertises which routes can be used to reach the FortiGate unit. In this way, routes are made known from the border of the internal network outwards (routes are pushed forward) instead of relying on upstream routers to propagate alternative paths to the FortiGate unit.
FortiGate unit BGP supports the following extensions to help manage large numbers of BGP peers:
Communities — The FortiGate unit can set the COMMUNITY attribute of a route to assign the route to predefined paths (see RFC 1997). The FortiGate unit can examine the COMMUNITY attribute of learned routes to perform local filtering and/or redistribution.
Internal BGP (IBGP) route reflectors — The FortiGate unit can operate as a route reflector or participate as a client in a cluster of IBGP peers (see RFC 1966).
External BGP (EBGP) confederations — The FortiGate unit can operate as a confederation member, using its AS confederation identifier in all transactions with peers that are not members of its confederation (see RFC 3065).
Bi-directional Forwarding Detection (BFD) is a protocol used by BGP, and OSPF. It is used to quickly locate hardware failures in the network. Routers running BFD send unicast messages to each other, and if a timer runs out, meaning no messages have been received, on a connection then that unresponsive router is declared down. BFD then communicates this information to the routing protocol and the routing information is updated. BFD support can only be configured through the CLI.
config router bgp
set always-compare-med {enable | disable}
set as <local_as_id>
set bestpath-as-path-ignore {enable | disable}
set bestpath-cmp-confed-aspath {enable | disable}
set bestpath-cmp-routerid {enable | disable}
set bestpath-med-confed {enable | disable}
set bestpath-med-missing-as-worst {enable | disable}
set client-to-client-reflection {enable | disable}
set cluster-id <address_ipv4>
set confederation-identifier <peerid_integer>
set dampening {enable | disable}
set dampening-max-suppress-time <minutes_integer>
set dampening-reachability-half-life <minutes_integer>
set dampening-reuse <reuse_integer>
set dampening-route-map <routemap-name_str>
set dampening-suppress <limit_integer>
set dampening-unreachability-half-life <minutes_integer>
set default-local-preference <preference_integer>
set deterministic-med {enable | disable}
set distance-external <distance_integer>
set distance-internal <distance_integer>
set distance-local <distance_integer>
set ebgp-multipath {enable | disable}
set enforce-first-as {disable | enable}
set fast-external-failover {disable | enable}
set graceful-restart {disable | enable}
set graceful-restart-time <restart_time>
set graceful-stalepath-time <stalepath_time>
set graceful-update-delay <delay_time>
set holdtime-timer <seconds_integer>
set ibgp-multipath {enable | disable}
set ignore_optional_capability {disable | enable}
set keepalive-timer <seconds_integer>
set log-neighbor-changes {disable | enable}
set network-import-check {disable | enable}
set router-id <address_ipv4>
set scan-time <seconds_integer>
set synchronization {enable | disable}
config admin-distance
edit <route_entry_id>
set distance <integer>
set neighbor-prefix <ip_and_netmask>
set route-list <string>
config aggregate-address, config aggregate-address6
edit <aggr_addr_id>
set as-set {enable | disable}
set prefix <address_ipv4mask>
set summary-only {enable | disable}
config aggregate-address, config aggregate-address6
edit <aggr_addr_id>
set as-set {enable | disable}
set prefix6 <address_ipv6mask>
set summary-only {enable | disable}
config neighbor
edit <neighbor_address_ipv4>
set activate {enable | disable}
set activate6 {enable | disable}
set advertisement-interval <seconds_integer>
set allowas-in <max_num_AS_integer>
set allowas-in6 <max_num_AS_integer>
set allowas-in-enable {enable | disable}
set allowas-in-enable6 {enable | disable}
set as-override {enable | disable}
set as-override6 {enable | disable}
set attribute-unchanged [as-path] [med] [next-hop]
set attribute-unchanged6 [as-path] [med] [next-hop]
set bfd {enable | disable}
set capability-default-originate {enable | disable}
set capability-default-originate6 {enable | disable}
set capability-dynamic {enable | disable}
set capability-graceful-restart {enable | disable}
set capability-graceful-restart6 {enable | disable}
set capability-orf {both | none | receive | send}
set capability-orf6 {both | none | receive | send}
set capability-route-refresh {enable | disable}
set connect-timer <seconds_integer>
set default-originate-routemap <routemap_str>
set default-originate-routemap6 <routemap_str>
set description <text_str>
set distribute-list-in <access-list-name_str>
set distribute-list-in6 <access-list-name_str>
set distribute-list-out <access-list-name_str>
set distribute-list-out6 <access-list-name_str>
set dont-capability-negotiate {enable | disable}
set ebgp-enforce-multihop {enable | disable}
set ebgp-multihop-ttl <seconds_integer>
set filter-list-in <aspath-list-name_str>
set filter-list-in6 <aspath-list-name_str>
set filter-list-out <aspath-list-name_str>
set filter-list-out6 <aspath-list-name_str>
set holdtime-timer <seconds_integer>
set interface <interface-name_str>
set keep-alive-timer <seconds_integer>
set maximum-prefix <prefix_integer>
set maximum-prefix6 <prefix_integer>
set maximum-prefix-threshold <percentage_integer>
set maximum-prefix-threshold6 <percentage_integer>
set maximum-prefix-warning-only {enable | disable}
set maximum-prefix-warning-only6 {enable | disable}
set next-hop-self {enable | disable}
set next-hop-self6 {enable | disable}
set override-capability {enable | disable}
set passive {enable | disable}
set password <string>
set prefix-list-in <prefix-list-name_str>
set prefix-list-in6 <prefix-list-name_str>
set prefix-list-out <prefix-list-name_str>
set prefix-list-out6 <prefix-list-name_str>
set remote-as <id_integer>
set remove-private-as {enable | disable}
set remove-private-as6 {enable | disable}
set retain-stale-time <seconds_integer>
set route-map-in <routemap-name_str>
set route-map-in6 <routemap-name_str>
set route-map-out <routemap-name_str>
set route-map-out6 <routemap-name_str>
set route-reflector-client {enable | disable}
set route-reflector-client6 {enable | disable}
set route-server-client {enable | disable}
set route-server-client6 {enable | disable}
set send-community {both | disable | extended | standard}
set send-community6 {both | disable | extended | standard}
set shutdown {enable | disable}
set soft-reconfiguration {enable | disable}
set strict-capability-match {enable | disable}
set unsuppress-map <route-map-name_str>
set update-source <interface-name_str>
set weight <weight_integer>
config conditional-advertise
edit <map_name>
set condition-routemap <map_name>
set condition-type {exist | non‑exist}
config network, config network6
edit <network_id>
set backdoor {enable | disable}
set prefix <address_ipv4mask>
set route-map <routemap-name_str>
config network, config network6
edit <network_id>
set backdoor {enable | disable}
set prefix6 <address_ipv6mask>
set route-map <routemap-name_str>
config redistribute, config redistribute6 {connected | static | rip | ospf}
set status {enable | disable}
set route-map <route-map-name_str>
config redistribute, config redistribute6 {connected | static | rip | ospf}
set status {enable | disable}
set route-map <route-map-name_str>