مدیریت گیت‌وی‌های سازمانی شبکه خصوصی مجازی (VPN) نیازمند پردازش میلیون‌ها بسته رمزنگاری‌شده در هر ثانیه در بسترهای توزیع‌شده است. در سیستم‌عامل لینوکس، کلیه تبدیلات رمزنگاری پروتکل IPsec (بار کاری امنیتی ESP) توسط زیرسیستم تبدیل هسته تحت عنوان XFRM (Transform Subsystem) مدیریت می‌شود.

از لحاظ تاریخی، معماری سنتی IPsec مبتنی بر سیاست (Policy-Based IPsec) چالش‌های عملیاتی متعددی به همراه داشت:

  1. انطباق ضمنی بسته‌ها: بسته‌ها پس از مرحله مسیریابی در صورت تطابق با سیاست امنیت (SP) به‌صورت ضمنی رهگیری می‌شدند. این سازوکار غیرشفاف تداخلات پیچیده‌ای با فایروال Netfilter، مسیریابی بر مبنای مبدأ و جدول رهگیری اتصالات (conntrack) ایجاد می‌کرد.
  2. فقدان رابط مستقل برای پایش: به دلیل نبود یک کارت شبکه مجازی مشخص، ابزارهای تحلیلی مانند tcpdump قادر به ثبت مستقیم بسته‌ها قبل از رمزگذاری یا پس از رمزگشایی بدون تنظیمات پیچیده در هسته نبودند.
  3. بار اضافی پروتکل‌های تونل: روش‌های جایگزین نظیر رابط‌های تونل مجازی (VTI) یا GRE-over-IPsec موجب افزایش اندازه سرآیندها، کاهش MTU موثر و پیچیدگی پیکربندی پروتکل‌های مسیریابی پویا (نظیر BGP و OSPF) می‌شدند.

برای برطرف ساختن این موانع، هسته مدرن لینوکس از معماری رابط‌های XFRM مبتنی بر مسیریابی (Route-Based XFRM موسوم به xfrmi) در کنار واگذاری محاسبات به سخت‌افزار (Hardware Crypto Offload) پشتیبانی می‌کند. این طراحی منطق رمزنگاری را از تصمیمات مسیریابی تفکیک کرده و انجام محاسبات سنگین الگوریتم‌های رمزنگاری متقارن را مستقیماً به تراشه کارت شبکه (NIC ASIC) واگذار می‌نماید.

+--------------------------------------------------------------------------+
|          معماری LINUX XFRM: مقایسه سیاست‌های سنتی با رابط XFRMI          |
+--------------------------------------------------------------------------+
|                                                                          |
| ۱. پروتکل سنتی IPsec مبتنی بر سیاست (Policy-Based):                      |
|    بسته -> مسیریابی -> فیلتر Netfilter -> انطباق با سیاست SP             |
|         -> بررسی ارتباط SA -> رمزنگاری نرم‌افزاری CPU -> خروج             |
|    (عدم وجود رابط مشخص، پایش دشوار، تداخل در جدول مسیریابی)              |
|                                                                          |
| ۲. رابط مدرن XFRM مبتنی بر مسیریابی (Route-Based xfrmi):                 |
|    بسته -> مسیریابی استاندارد به xfrm0 (شناسه if_id 42) -> صف مجزا Qdisc  |
|         -> پایش شفاف در tcpdump -> ارتباط با SA از طریق if_id            |
|         -> واگذاری به سخت‌افزار کارت شبکه ASIC -> حداکثر سرعت فیزیکی     |
|                                                                          |
+--------------------------------------------------------------------------+

ارکان ساختاری زیرسیستم XFRM: پایگاه‌های SA و SP و شناسه if_id

زیرسیستم XFRM در هسته لینوکس بر مبنای سه ساختار داده‌ای اساسی که در حافظه رم هسته مقیم هستند فعالیت می‌کند:

۱. پایگاه داده ارتباط امنیتی (SAD / xfrm_state)

هر ارتباط امنیتی (Security Association - SA) بیانگر یک توافق رمزنگاری یک‌طرفه بین دو نقطه پایانی است. داده‌های ذخیره‌شده در SA شامل موارد زیر است:

  • شاخص پارامترهای امنیت (SPI): شناسه عددی ۳۲ بیتی جهت تفکیک جریان‌های محافظت‌شده.
  • الگوریتم‌ها و کلیدهای رمزنگاری: مجموعه‌های مدرن مانند AES-GCM-256 یا ChaCha20-Poly1305.
  • شماره توالی گسترش‌یافته (ESN): شمارنده‌های ۶۴ بیتی جهت مقابله با حملات ارسال مجدد.
  • زمینه واگذاری سخت‌افزاری: نشانگری که ارتباط مستقیمی با بخش شتاب‌دهنده درایور کارت شبکه برقرار می‌کند.

۲. پایگاه داده سیاست‌های امنیت (SPD / xfrm_policy)

سیاست امنیت (Security Policy - SP) تعیین می‌کند کدام ترافیک الزاماً باید تحت پردازش رمزنگاری قرار گیرد. قوانین SP شامل بازه‌های آدرس IP، پروتکل‌های لایه انتقال و جهت جریان (dir in، dir out، dir fwd) می‌باشند.

۳. نقش شناسه رابط (if_id)

پارامتر if_id به منزله یک شناسه پیونددهنده عمل می‌کند که رابط مجازی xfrmi را مستقیماً به سیاست‌ها و ارتباطات امنیتی مربوطه متصل می‌سازد:

  • هنگامی که بسته‌ای از طریق رابط xfrm0 مجهز به شناسه if_id 42 ارسال می‌شود، هسته تنها سیاست‌های SP و رکوردهای SA دارای نشان if_id 42 را اعمال می‌کند.
  • چندین رابط مجازی می‌توانند روی یک سرور بدون تداخل در محدوده‌های آدرس‌دهی به‌طور هم‌زمان فعالیت نمایند.
+--------------------------------------------------------------------------+
|          مسیر هدایت بسته از طریق رابط XFRM مبتنی بر مسیریابی             |
+--------------------------------------------------------------------------+
|                                                                          |
|       برنامه کاربردی / جریان داده سوکت‌های سیستم‌عامل                     |
|                           │                                              |
|                           v                                              |
|       جدول مسیریابی هسته لینوکس (FIB Routing Table)                      |
|       [ مسیر: 10.100.0.0/16 از طریق دستگاه xfrm0 ]                       |
|                           │                                              |
|                           v                                              |
|       رابط مجازی 'xfrm0' (متصل به شناسه if_id 42)                        |
|       [ مشاهده شفاف بسته‌های داده با دستور tcpdump -i xfrm0 ]            |
|                           │                                              |
|                           v                                              |
|       مسیر پردازش تبدیلات XFRM (انطباق با if_id 42)                      |
|       - بررسی سیاست: تطابق قانون SP با شناسه if_id 42                    |
|       - بررسی ارتباط: انتخاب رکورد SA بر اساس SPI و آدرس مقصد            |
|                           │                                              |
|             ┌─────────────┴─────────────┐                                |
|             ▼ (پردازش نرم‌افزاری هسته)  ▼ (شتاب‌دهی سخت‌افزاری کارت)     |
|       Kernel Crypto API           تراشه پردازش سخت‌افزاری NIC ASIC       |
|       (دستورات برداری AES-NI)     (عدم اشغال پردازنده اصلی سیستم)        |
|             │                           │                                |
|             └─────────────┬─────────────┘                                |
|                           │                                              |
|                           v                                              |
|       درگاه فیزیکی شبکه (eth0 / پیوند نوری 100GbE)                       |
|       [ بسته رمزنگاری‌شده ESP: شناسه SPI 0x1001، شماره توالی N ]         |
|                           │                                              |
|                           v                                              |
|       ارسال فیزیکی داده‌ها با حداکثر توان عملیاتی خط                     |
|                                                                          |
+--------------------------------------------------------------------------+

شتاب‌دهی سخت‌افزاری: معماری XFRM Crypto Offload

رمزنگاری ترافیک در حجم‌های ۱۰۰ گیگابیت بر ثانیه با تکیه بر پردازنده مرکزی بار محاسباتی سنگینی ایجاد می‌نماید. حتی با فعال بودن دستورات AES-NI، رمزنگاری نرم‌افزاری ترافیک‌های بسیار سنگین باعث گرمای شدید پردازنده، ایجاد صف‌های وقفه و افزایش تأخیر پردازش می‌شود.

کارت‌های شبکه پیشرفته سازمانی (نظیر Mellanox ConnectX-6/7، Intel E810 و Broadcom NetXtreme) از واحدهای اختصاصی شتاب‌دهنده سخت‌افزاری IPsec روی تراشه خود بهره می‌برند.

پروتکل Linux XFRM از دو رویکرد واگذاری محاسبات پشتیبانی می‌کند:

  • واگذاری کامل بسته (Full Offload): ایجاد سرآیندهای ESP، تنظیم شماره‌های توالی، مدیریت پنجره مقابله با ارسال مجدد و رمزنگاری داده‌ها تماماً توسط کارت شبکه صورت می‌گیرد.
  • واگذاری محاسبات رمزنگاری (Crypto Offload): هسته ساختار سرآیند بسته را آماده کرده، اما عملیات سنگین ریاضی رمزنگاری و اعتبارسنجی روی تراشه کارت شبکه هنگام تبادل داده با حافظه اجرا می‌شود.
+--------------------------------------------------------------------------+
|          مقایسه عملکرد: پردازش با CPU در برابر شتاب‌دهی سخت‌افزاری XFRM   |
+--------------------------------------------------------------------------+
| شاخص ارزیابی            | رمزنگاری نرم‌افزاری      | شتاب‌دهی سخت‌افزاری XFRM|
+-------------------------+-------------------------+----------------------+
| میزان مصرف هسته‌های CPU | ۸ تا ۱۶ هسته پردازشی    | کمتر از ۰.۵ هسته     |
| میانگین تأخیر رمزنگاری  | ۱۵ تا ۳۵ میکروثانیه     | ۱.۲ تا ۲.۵ میکروثانیه|
| نرخ افت بسته در بار بالا| افزایش از ۸ تا ۱۲ Mpps  | عدم افت بسته در خط   |
| تداخل روی گذرگاه حافظه  | اشغال مداوم حافظه DMA   | تبادل مستقیم در کارت |
| توان مصرفی و حرارت سیستم| گرمای زیاد پردازنده     | عملکرد خنک کارت شبکه |
+-------------------------+-------------------------+----------------------+

مراحل پیکربندی در سیستم‌عامل لینوکس

راه‌اندازی رابط‌های XFRM مبتنی بر مسیریابی به همراه شتاب‌دهی سخت‌افزاری با ابزارهای استاندارد مجموعه iproute2 (ip link و ip xfrm) انجام می‌پذیرد:

مرحله اول: ایجاد رابط مجازی XFRM

متصل ساختن رابط مجازی به کارت شبکه فیزیکی همراه با تعیین شناسه if_id:

# ایجاد رابط xfrm0 متصل به درگاه فیزیکی eth0 با شناسه if_id 42
ip link add name xfrm0 type xfrm dev eth0 if_id 42

# تخصیص آدرس IP ترانزیت به رابط
ip addr add 10.254.1.1/30 dev xfrm0

# فعال‌سازی رابط
ip link set dev xfrm0 up

مرحله دوم: ثبت ارتباطات امنیتی (SA) همراه با شتاب‌دهی سخت‌افزاری

افزودن رکوردهای امنیتی ورودی و خروجی به حافظه هسته با پیوند دادن به شناسه if_id 42:

# ثبت رکورد SA خروجی با پرچم شتاب‌دهی سخت‌افزاری
ip xfrm state add \
    src 198.51.100.1 dst 198.51.100.2 \
    proto esp spi 0x1001 \
    reqid 1 \
    mode tunnel \
    if_id 42 \
    aead 'rfc4106(gcm(aes))' 0x0123456789abcdef0123456789abcdef01234567 128 \
    offload dev eth0 dir out \
    sel src 0.0.0.0/0 dst 0.0.0.0/0

# ثبت رکورد SA ورودی با پرچم شتاب‌دهی سخت‌افزاری
ip xfrm state add \
    src 198.51.100.2 dst 198.51.100.1 \
    proto esp spi 0x2001 \
    reqid 1 \
    mode tunnel \
    if_id 42 \
    aead 'rfc4106(gcm(aes))' 0x0123456789abcdef0123456789abcdef01234567 128 \
    offload dev eth0 dir in \
    sel src 0.0.0.0/0 dst 0.0.0.0/0

مرحله سوم: تنظیم سیاست‌های امنیتی (SP) متصل به رابط

تعریف قوانین سیاست امنیت متصل به شناسه if_id 42:

# سیاست امنیتی برای ترافیک خروجی از طریق رابط xfrm0
ip xfrm policy add \
    src 0.0.0.0/0 dst 0.0.0.0/0 \
    dir out \
    if_id 42 \
    tmpl src 198.51.100.1 dst 198.51.100.2 proto esp reqid 1 mode tunnel

# سیاست امنیتی برای ترافیک دریافتی از گیت‌وی راه دور
ip xfrm policy add \
    src 0.0.0.0/0 dst 0.0.0.0/0 \
    dir in \
    if_id 42 \
    tmpl src 198.51.100.2 dst 198.51.100.1 proto esp reqid 1 mode tunnel

مرحله چهارم: مسیریابی ترافیک به سمت رابط XFRM

پس از آماده‌سازی رابط، هدایت بسته‌های شبکه‌های راه دور با دستورات متعارف مسیریابی لینوکس انجام می‌شود:

# مسیریابی زیرشبکه مقصد از طریق رابط xfrm0
ip route add 10.100.0.0/16 dev xfrm0

# مشاهده آمار ترافیک و وضعیت شتاب‌دهی سخت‌افزاری
ip -s link show dev xfrm0
ip -s xfrm state show

کاربرد در بستر شبکه RiceGuard و VPNRice

در زیرساخت سرورهای توزیع‌شده بین‌المللی VPNRice، پروتکل XFRM و شتاب‌دهی سخت‌افزاری نقشی بنیادین ایفا می‌کنند:

  1. خطوط اصلی ارتباطی میان مراکز داده: پیوندهای بین‌قاره‌ای که گیت‌وی‌های لبه را به نودهای مرکزی متصل می‌سازند از رابط‌های XFRM به همراه شتاب‌دهی سخت‌افزاری بهره می‌برند. واگذاری محاسبات الگوریتم AES-GCM به کارت‌های SmartNIC ۱۰۰ گیگابیت ثبات پهنای باند را بدون افزایش بار CPU تضمین می‌کند.
  2. همگامی با پروتکل‌های مسیریابی پویا: رابط‌های XFRM ماهیتی مشابه کارت‌های شبکه واقعی دارند؛ بنابراین فرآیندهای BGP ارتباطات خود را مستقیماً روی xfrm0 برقرار کرده و تغییر مسیر داده‌ها در مواجهه با قطعی کابل‌های نوری در کسر کوچکی از ثانیه رخ می‌دهد.
  3. تفکیک کامل ترافیک مشترکین: استفاده از شناسه‌های مستقل if_id به سیستم امکان می‌دهد جریان‌های کاربران گوناگون را در رابط‌های مجازی مجزا تفکیک نموده و سیاست‌های فایروال را با دقت بالا اعمال کند.

توصیه‌های فنی برای محیط‌های عملیاتی

در پیاده‌سازی معماری XFRM رعایت موارد فنی زیر ضروری است:

  • سازگاری درایور کارت شبکه: بررسی نمایید درایور کارت شبکه از قابلیت شتاب‌دهی سخت‌افزاری IPsec پشتیبانی نماید (ethtool -k eth0 | grep esp). درایورهای mlx5_core و ice سازگاری کاملی با این قابلیت دارند.
  • تنظیم ابعاد MTU و MSS: افزودن سرآیندهای پروتکل ESP بین ۵۰ تا ۷۰ بایت به اندازه بسته اضافه می‌کند. برای جلوگیری از قطعه‌قطعه شدن بسته‌ها، MTU رابط xfrm0 را حدود ۱۴۳۰ بایت تنظیم کنید یا فیلتر محدودسازی MSS (TCPMSS --clamp-mss-to-pmtu) را فعال سازید.
  • فعال‌سازی شمارنده‌های گسترده ESN: در سرعت‌های ۴۰GbE و ۱۰۰GbE شمارنده‌های ۳۲ بیتی معمول در چند دقیقه به حداکثر مقدار می‌رسند. همواره از شماره توالی ۶۴ بیتی (ESN) و پنجره مقابله با ارسال مجدد با ظرفیت دست‌کم ۱۰۲۴ بسته استفاده کنید (replay-window 1024 flag esn).

ترکیب رابط‌های XFRM مبتنی بر مسیریابی و شتاب‌دهی سخت‌افزاری، سرورهای لینوکس را به گیت‌وی‌های امنیتی فوق‌پایدار تبدیل نموده و زیرساختی مقاوم برای راهکارهای نوین VPN فراهم می‌آورد.