Technical Tip: Configuring BGP TCP Authentication Option (TCP-AO) Between FortiGate and Third party vendor
| Description | This article describes how to configure TCP Authentication Option (TCP-AO) for BGP peering between FortiGate firewalls and third-party vendors (Cisco or Juniper routers, for example). It also provides comprehensive troubleshooting guidance based on real interoperability issues, including:
|
| Scope | FortiGate 7.4 / 7.6. |
| Solution | Background TCP Authentication Option (TCP-AO) enhances BGP session security by replacing TCP-MD5 with modern, stronger cryptographic methods. However, interoperability between vendors requires precise alignment of:
Any mismatch causes the peer to silently drop SYN packets, preventing BGP from forming.
Creating a Key-Chain for TCP-AO (FortiGate):
Example using HMAC-SHA256:
config router key-chain end
Example using AES-128 CMAC:
config router key-chain
Applying the Key-Chain to a BGP Neighbor:
One command links the key-chain to the BGP Neighbor:
config router bgp
FortiGate automatically assigns send/receive identifiers internally - there is no manual ID configuration on FortiOS.
Verifying TCP-AO on a FortiGate:
diagnose sys tcp-auth-options
The command confirms:
Cisco Configuration:
Key-Chain for TCP-AO:
key chain BGP-AO-CHAIN tcp
Bind the key-chain to a BGP Neighbor.
router bgp 65000
Ensure TCP Options are included in AO MAC
Some Cisco platforms do not include MSS, SACK, timestamps, or window-scaling in the AO digest unless explicitly configured. This will cause errors such as:
Enforce option inclusion:
tcp ao include-options
Juniper Configuration:
set routing-options tcp-session authentication algorithm hmac-sha-256
set protocols bgp group FGT type internal
Troubleshooting: why TCP-AO BGP sessions fail to establish.
Peer silently drops SYN packets.
Symptoms:
Cause:
Algorithm compatibility problems:
Common platform behavior:
Resolution:
TCP Options not included in AO Computation:
If one peer includes TCP:
If the other peer does not, AO digests differ.
Symptoms:
Fix:
tcp ao include-options
Key-Chain Not Activated / TCB Not Initialized:
Symptoms:
Key-chain not bound to AO subsystem:
Resolution:
Key-Chain lifetime or ID mismatches: AO requires:
Any mismatch prevents TCP session establishment.
Interoperability best practices:
For Cisco, always evaluate:
tcp ao include-options
Verify SYN packets contain the same TCP options.
Conclusion: TCP-AO significantly enhances BGP security, but successful operation in multi-vendor environments requires strict alignment of algorithms, key parameters, and TCP option handling. |
