Loading...

IPsec Hardware Offload: tăng tốc bằng NP trên FortiGate

1. Liên hệ thực tế

Sau khi dựng xong hàng chục tunnel Dialup cho các chi nhánh, khách hàng phàn nàn CPU FortiGate liên tục ở mức cao, dù model được quảng cáo hỗ trợ throughput VPN lớn hơn nhiều so với mức đang dùng thực tế. Anh Nam kiểm tra thấy CPU đúng là căng, nhưng không hiểu vì sao phần cứng "công suất lớn" lại không phát huy hết khả năng.

Chị Lan gợi ý kiểm tra: "Model FortiGate của khách hàng có chip NP (Network Processor) — nhớ bài FortiASIC ở đầu khóa học không? NP giúp offload xử lý mã hóa/giải mã IPsec ra khỏi CPU chính. Nếu traffic VPN không được offload đúng cách, toàn bộ gánh nặng dồn lên CPU, dù phần cứng chuyên dụng đang nằm không."

Bài này ôn lại khái niệm FortiASIC/NP (đã học ở đầu khóa) trong ngữ cảnh cụ thể của IPsec, và cách kiểm tra/khắc phục khi traffic VPN không được offload đúng.


2. Kiến thức cốt lõi

2.1 NP xử lý IPsec thay CPU chính như thế nào

Nhắc lại khái niệm đã học ở nhóm bài Nền tảng: NP (Network Processor) là chip chuyên dụng offload các tác vụ xử lý traffic khối lượng lớn khỏi CPU chính. Với IPsec, phần tốn tài nguyên nhất là mã hóa/giải mã gói tin ESP (Encapsulating Security Payload) cho từng gói — nếu để CPU chính xử lý toàn bộ, thông lượng VPN thực tế sẽ thấp hơn nhiều so với công suất lý thuyết của model.

IPsec Hardware Offload: NP Xử Lý Thay CPU Không Offload Được (CPU Xử Lý) Traffic đi qua CPU chính để mã hóa / giải mã ESP Thuật toán cũ (NP4 không hỗ trợ SHA-2/384...) Đặt set npu-offload disable thủ công Dùng feature không tương thích (dscp copy/etc) Offload Xuống NP (Hardware Accelerated) Traffic ESP xử lý trực tiếp bởi NP7 / NP6 Giảm tải hoàn toàn cho CPU Mặc định bật (set npu-offload enable) Thông lượng (Throughput) & PPS tăng gấp nhiều lần Kiểm tra: diagnose sys session list

Theo mặc định, tham số npu-offload được bật sẵn cho mọi tunnel IPsec:

config vpn ipsec phase1-interface
    edit "vpn-chi-nhanh-a"
        ...
        set npu-offload enable
    next
end

2.2 Vì sao đôi khi traffic KHÔNG được offload dù đã bật

Có một số điều kiện khiến traffic IPsec không thể offload xuống NP, buộc CPU chính phải xử lý dù npu-offload đang ở trạng thái enable:

Thuật toán không được NP hỗ trợ — theo tài liệu Fortinet, các chip NP đời cũ hơn (như NP4) không hỗ trợ SHA-256, SHA-384, SHA-512 — nếu Phase 1/Phase 2 chọn proposal dùng các thuật toán hash này trên model chỉ có NP4, toàn bộ traffic buộc phải xử lý bằng CPU, gây tụt hiệu năng đáng kể.

Sessions cần session-helper — các phiên cần xử lý đặc biệt qua session-helper hoặc ALG (Application Layer Gateway) của FortiOS không thể offload — dù đây không phải vấn đề riêng của IPsec, một số traffic đi trong tunnel (như FTP qua VPN) vẫn có thể gặp hạn chế tương tự.

Cấu hình mạng đặc thù — với virtual clustering (HA), nếu địa chỉ MAC của interface VLAN nhận traffic khác với MAC của interface vật lý chứa nó, traffic có thể không offload được trong một số điều kiện cấu hình cụ thể.

⚠️ Lưu ý: Nếu buộc phải dùng thuật toán không được NP hỗ trợ (ví dụ do yêu cầu tuân thủ bảo mật bắt buộc SHA-384 trên model chỉ có NP4), Fortinet khuyến nghị chủ động đặt npu-offload disable — vì để mặc định enable trong tình huống này "may rủi" tùy phiên bản FortiOS, có thể gây mất gói tin (packet loss) và các vấn đề hiệu năng khó chẩn đoán khác thay vì đơn giản là chạy chậm hơn.

2.3 Kiểm tra traffic có đang được offload hay không

Cách xác thực trực tiếp và đáng tin cậy nhất — dùng packet sniffer:

diagnose sniffer packet any "host 203.0.113.10" 4

⚠️ Lưu ý quan trọng: Traffic đã được offload sẽ không xuất hiện trong packet sniffer — vì gói tin được NP xử lý trực tiếp ở tầng phần cứng, không đi qua tầng CPU nơi sniffer bắt gói. Nếu đang gửi traffic qua tunnel mà sniffer không thấy gì, đây thực chất là dấu hiệu tốt cho thấy traffic đã offload thành công, không phải traffic bị mất.

Cách kiểm tra khác — xem chi tiết session:

diagnose sys session list

Nếu output của một session chứa trường npu info, đây là dấu hiệu session đó đang được offload; nếu không thấy trường này, session đang chạy qua CPU chính.

Với các chip NP cụ thể, có thể xem thống kê chuyên sâu:

diagnose npu np6 ipsec-stats
diagnose npu <tên-chip> npu-feature

2.4 Tắt Offload có kiểm soát cho một tunnel cụ thể

Trong một số tình huống debug hoặc thuật toán không tương thích, có thể tắt offload riêng cho từng tunnel:

config vpn ipsec phase1-interface
    edit "vpn-can-debug"
        ...
        set npu-offload disable
    next
end

⚠️ Lưu ý: Chỉ nên tắt npu-offload cho mục đích debug tạm thời hoặc khi thực sự cần thiết do giới hạn thuật toán — theo khuyến nghị thực tế từ cộng đồng kỹ thuật Fortinet, việc này có thể làm tăng đáng kể tải hệ thống, nên bật lại ngay khi hoàn tất việc kiểm tra thay vì để tắt vĩnh viễn trên hệ thống production.

2.5 Chọn thuật toán tương thích với NP khi thiết kế Phase 1/Phase 2

Để tận dụng tối đa khả năng offload, nên xác nhận model FortiGate đang dùng chip NP thế hệ nào (NP7, NP6, NP6XLite, NP4...) và chọn proposal Phase 1/Phase 2 tương thích với thế hệ đó — thay vì mặc định chọn thuật toán mạnh nhất mà không kiểm tra khả năng tương thích phần cứng.

Chip NPHỗ trợ SHA-256/384/512Ghi chú
NP4 Không Thuật toán mới hơn buộc chạy qua CPU
NP6 / NP6XLite / NP6Lite Hỗ trợ hầu hết thuật toán hiện đại
NP7 Thế hệ mới nhất, hiệu năng cao nhất

3. Hỏi & Đáp

Làm sao biết FortiGate đang dùng chip NP thế hệ nào?

Tra cứu theo datasheet chính thức của model đang dùng trên trang Fortinet, hoặc dùng lệnh CLI như get hardware npu np6 port-list (hoặc np7 tương ứng) để xem thông tin chip NP có trên thiết bị — thông tin cũng thường được liệt kê trong tài liệu Hardware Acceleration Guide của từng phiên bản FortiOS.

Nếu traffic không xuất hiện trong sniffer, làm sao chắc chắn đó là do offload chứ không phải traffic bị chặn/mất?

Kết hợp nhiều nguồn kiểm tra: xem diagnose sys session list có trường npu info hay không, kiểm tra bộ đếm traffic thực tế trên interface (traffic vẫn tăng dù sniffer không thấy chi tiết gói tin), và dùng thống kê chuyên biệt như diagnose npu np6 ipsec-stats để xác nhận traffic đang thực sự đi qua NP.

NTurbo có liên quan gì tới IPsec Offload không?

Có — theo tài liệu Fortinet, NTurbo là cơ chế offload các phiên có flow-based Security Profile (Antivirus, IPS, Application Control...) xuống NP7/NP6, và NTurbo cũng có khả năng offload luôn cả các phiên IPsec nếu SA có thể offload được — hai cơ chế phối hợp với nhau để tối đa hóa traffic được xử lý bằng phần cứng thay vì CPU.

Có nên luôn chọn thuật toán mạnh nhất (như AES256-SHA512) cho Phase 1/Phase 2 để bảo mật tối đa không?

Cần cân bằng giữa bảo mật và khả năng tương thích phần cứng — nếu model chỉ có NP4 (không hỗ trợ SHA-512), chọn thuật toán này sẽ buộc traffic chạy qua CPU, có thể gây nghẽn hiệu năng nghiêm trọng hơn lợi ích bảo mật tăng thêm mang lại. Nên chọn thuật toán đủ mạnh về mặt bảo mật (như AES256GCM, vốn được hỗ trợ rộng rãi trên các thế hệ NP hiện đại) đồng thời tương thích tốt với phần cứng đang dùng.


4. Quiz

Câu 1: Chip NP đời nào theo tài liệu Fortinet KHÔNG hỗ trợ các thuật toán hash SHA-256/384/512?

  • A. NP7
  • B. NP6
  • C. NP4
  • D. Tất cả các đời NP đều hỗ trợ

Câu 2: Vì sao traffic IPsec đã được offload thành công lại KHÔNG xuất hiện trong packet sniffer?

  • A. Vì traffic đó đã bị mất
  • B. Vì gói tin được NP xử lý trực tiếp ở tầng phần cứng, không đi qua tầng CPU nơi sniffer bắt gói
  • C. Vì sniffer bị lỗi
  • D. Vì offload chỉ hoạt động với traffic không mã hóa

Câu 3: Trường nào trong output của diagnose sys session list cho biết một session đang được offload?

  • A. proto_state
  • B. npu info
  • C. duration
  • D. timeout

Câu 4: Khi nào nên chủ động đặt npu-offload disable cho một tunnel cụ thể?

  • A. Luôn luôn, để đảm bảo an toàn
  • B. Khi buộc phải dùng thuật toán không được NP hỗ trợ, hoặc cần debug tạm thời
  • C. Không bao giờ nên tắt trong bất kỳ trường hợp nào
  • D. Chỉ khi dùng IKEv1

Câu 5: NTurbo có khả năng offload thêm loại phiên nào ngoài các phiên có flow-based Security Profile?

  • A. Chỉ phiên FTP
  • B. Các phiên IPsec, nếu SA có thể offload được
  • C. Chỉ phiên DNS
  • D. Không offload thêm được loại phiên nào khác

👉 Đáp án

Câu 1: C NP4 là chip đời cũ hơn, theo tài liệu Fortinet không hỗ trợ các thuật toán hash SHA-256, SHA-384, SHA-512 — traffic dùng các thuật toán này buộc phải xử lý qua CPU chính.

Câu 2: B Traffic đã offload được NP xử lý trực tiếp ở tầng phần cứng, không đi qua tầng xử lý của CPU nơi packet sniffer hoạt động — đây là dấu hiệu tốt, không phải traffic bị mất.

Câu 3: B Trường npu info xuất hiện trong output của session đang được offload xuống NP; nếu không thấy trường này, session đang chạy qua CPU chính.

Câu 4: B Nên chủ động tắt npu-offload khi buộc phải dùng thuật toán không tương thích với NP đang có, hoặc khi cần debug tạm thời — không nên để tắt vĩnh viễn vì có thể tăng tải hệ thống đáng kể.

Câu 5: B NTurbo có khả năng offload thêm các phiên IPsec nếu SA của phiên đó có thể offload được, ngoài việc offload các phiên có flow-based Security Profile như Antivirus, IPS, Application Control.


📚 Bài viết thuộc khóa học FortiGate của VNExperts

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
IPSec VPN qua Dynamic IP (Dialup) Mục lục khóa học FortiGate SSL-VPN: Tunnel Mode vs Web Mode