This is an old revision of the document!
Accélération hardware sur un Fortigate
L'offloading (ou accélération hardware) est le fait de déléguer certains calculs pour décharger le CPU du Fortigate. Cela peut être le cas pour le chiffrement des tunnels IPSec ou SSL par exemple.
Normalement l'accélération hardware est activée par défaut mais on peut l'activer (ou la désactiver) pour les tunnels IPSec :
# Pour les tunnels routés cela se configure dans la phase1-interface : config vpn ipsec phase1-interface edit VPN_CC set npu-offload enable / disable end # pour les tunnel "policés" cela se configure dans la règle de sécurité (policy rule) : config firewall policy edit 666 set auto-asic-offload enable / disable end
On peut vérifier si un tunnel déjà en fonctionnement est offloader avec la commande :
diagnose vpn tunnel list ------------------------------------------------------ name=VPN_CC ver=2 serial=6 10.1.0.2:0->10.1.0.1:0 lgwy=static tun=intf mode=auto bound_if=63 proxyid_num=1 child_num=0 refcnt=14 ilast=0 olast=0 stat: rxp=6368841 txp=6731147 rxb=4398430118 txb=3970892477 dpd: mode=active on=1 idle=5000ms retry=3 count=0 seqno=782898 natt: mode=none draft=0 interval=0 remote_port=0 proxyid=VPN_CC proto=0 sa=1 ref=2 serial=8 auto-negotiate src: 0:0.0.0.0/0.0.0.0:0 dst: 0:0.0.0.0/0.0.0.0:0 SA: ref=13 options=0000002d type=00 soft=0 mtu=8942 expire=16144/0B replaywin=0 seqno=15da81 life: type=01 bytes=0/0 timeout=28776/28800 dec: spi=3b375eb8 esp=aes key=32 3f886d511bbd876b51e773d81f224b1996795f3cab45bf1a8cbe75db8bd5c5c7 ah=sha1 key=20 3c759708cf49b7b8e5e2cba53bbfed4a5a227db0 enc: spi=2504abb2 esp=aes key=32 ee4bf12fd1bc4890a33ab3b2b01c3c38cac9e577a1e1f5fd05aba91fed63be07 ah=sha1 key=20 ff7b549870d3178a36e058701c6c47af0850155d dec:pkts/bytes=1264385/998573510, enc:pkts/bytes=1435424/911313083 npu_flag=03 npu_rgwy=10.1.0.1 npu_lgwy=10.1.0.2 npu_selid=11
En fonction du retour de npu_flag :
- npu_flag=00 = le trafic de ce tunnel n'est pas offloadé, il est traité par le kernel / le CPU
- npu_flag=01 = seul le trafic ESP egress (chiffrement du trafic sortant) est offloadé
- npu_flag=02 = seul le trafic ESP ingress (déchiffrement du trafic entrant) est offloadé
- npu_flag=03 = le trafic est complètement offloadé (chiffrement/déchiffrement)
On peut consulter les statistiques globales des paquets offloadés par type de chiffrement/hachage :
diagnose vpn ipsec status All ipsec crypto devices in use: NP4_0 null: 0 0 des: 1705631651 1192070656 3des: 0 0 aes: 5878223616 5638495744 aria: 0 0 seed: 0 0 null: 1350134 1330944 md5: 7153174737 6497740928 sha1: 429330396 331494528 sha256: 0 0 sha384: 0 0 sha512: 0 0 NPU HARDWARE null: 0 0 des: 1705737077 0 3des: 0 0 aes: 5865489387 0 aria: 0 0 seed: 0 0 null: 940 0 md5: 7151362270 0 sha1: 419358130 0 sha256: 0 0 sha384: 0 0 sha512: 0 0 CP8: null: 0 0 des: 3518 19562 3des: 0 0 aes: 89251217 134711660 aria: 0 0 seed: 0 0 null: 11 8 md5: 1916481 36449376 sha1: 101 12495755 sha256: 1770094 1397917 sha384: 0 0 sha512: 85568242 84395409 SOFTWARE: null: 0 0 des: 0 0 3des: 0 0 aes: 0 0 aria: 0 0 seed: 0 0 null: 0 0 md5: 0 0 sha1: 0 0 sha256: 0 0 sha384: 0 0 sha512: 0 0
Ici, un 800c (doté d'un NP4 et un CP8) offloade tous ses flux. S'il ne le faisait pas on aurait les compteurs SOFTWARE:
qui s'incrémenteraient.
La prise en charge de chaque type de chiffrement/hachage est fonction de la version des ASICs (NPU et CP) présents sur le Fortigate ; un peu plus de détails ici : Fortigate : architecture interne