مدیریت گیت‌وی‌های شبکه خصوصی مجازی (VPN) پرظرفیت و شبکه‌های هم‌پوشان (Overlay) در مراکز داده مستلزم توان پردازش بالای بسته در ثانیه (PPS) روی سرورهای چند‌هسته‌ای است. با ارتقای پیوندهای فیزیکی شبکه به ۴۰ گیگابیت و ۱۰۰ گیگابیت، پروتکل‌های سنتی لایه ۳ با چالش‌های ساختاری در استفاده از قابلیت‌های سخت‌افزاری مدرن روبه‌رو شده‌اند.

روش‌های سنتی کپسوله‌سازی—نظیر IP-in-IP (پروتکل IP 4)، IPv6-in-IPv4 (پروتکل IP 41) و GRE (پروتکل IP 47)—بسته بار مفید را مستقیماً در لایه بیرونی IP قرار می‌دهند. اگرچه این ساختار در نگاه اول ساده است، اما فقدان سرآیند لایه انتقال (UDP یا TCP) پیامدهای عملیاتی مشخصی در سطح سخت‌افزار به همراه دارد:

  1. غیرفعال شدن توزیع سخت‌افزاری Receive-Side Scaling (RSS): کارت‌های شبکه مدرن (NIC) با استفاده از موتورهای هش سخت‌افزاری (الگوریتم Toeplitz) بسته‌های ورودی را میان چندین صف دریافت (RX queues) متصل به هسته‌های مختلف پردازنده توزیع می‌کنند. در نبود پورت‌های لایه ۴، کارت شبکه هش را تنها بر اساس آدرس‌های IP مبدأ و مقصد بیرونی محاسبه می‌کند. در نتیجه، کل ترافیک حجیم یک تونل تنها به یک صف دریافت و یک هسته CPU هدایت می‌شود که منجر به اشباع پردازش وقفه نرم‌افزاری (softirq) و افت بسته‌ها می‌گردد در حالی که سایر هسته‌ها بدون بار کاری باقی می‌مانند.
  2. عدم تعادل در مسیریابی چندمسیره هم‌هزینه (ECMP): سوئیچ‌های ساختار Spine-Leaf و روترهای زیرساخت، بار ترافیکی را با روش ECMP و بر مبنای ۵ پارامتر اصلی (آدرس‌های IP، پروتکل، پورت‌های مبدأ و مقصد) موازنه می‌کنند. بدون پورت‌های لایه ۴، سوئیچ‌ها تمامی جریان‌های تونل را به یک مسیر فیزیکی واحد هدایت می‌کنند که مانع از بهره‌برداری متوازن از پهنای باند موجود می‌شود.

برای رفع این محدودیت‌های سخت‌افزاری، هسته لینوکس از دو فناوری Foo-over-UDP (FOU) و کپسوله‌سازی عمومی در UDP (GUE، استانداردشده در RFC 8150) پشتیبانی می‌کند. با قرار دادن پروتکل‌های گوناگون در قالب دیتاگرام‌های استاندارد UDP، لینوکس بستر بهره‌گیری کامل از شتاب‌دهنده‌های سخت‌افزاری، توزیع چند‌هسته‌ای و پایداری در هدایت ترافیک را فراهم می‌آورد.

+--------------------------------------------------------------------------+
|          مقایسه ساختار بسته: تونل سنتی IPIP در برابر FOU و GUE          |
+--------------------------------------------------------------------------+
|                                                                          |
| ۱. پروتکل سنتی IP-in-IP:                                                |
|    +-------------------+-----------------------------------------------+ |
|    | سرآیند IP بیرونی  | بسته IP درونی (داده‌های کاربر)                | |
|    | پروتکل: 4 (IPIP)  | (فاقد پورت‌های L4 برای توزیع سخت‌افزاری RSS)  | |
|    +-------------------+-----------------------------------------------+ |
|                                                                          |
| ۲. پروتکل Foo-over-UDP (کپسوله‌سازی مستقیم UDP بدون بار اضافی):           |
|    +-------------------+-------------------+---------------------------+ |
|    | سرآیند IP بیرونی  | سرآیند UDP (۸ بایت| بسته IP درونی             | |
|    | پروتکل: 17 (UDP)  | پورت مبدأ پویا    | پروتکل وابسته به پورت     | |
|    +-------------------+-------------------+---------------------------+ |
|                                                                          |
| ۳. پروتکل Generic UDP Encapsulation (استاندارد RFC 8150):                |
|    +-------------------+-------------------+-------------+-------------+ |
|    | سرآیند IP بیرونی  | سرآیند UDP (۸ بایت| سرآیند GUE  | بسته داده   | |
|    | پروتکل: 17 (UDP)  | پورت مبدأ پویا    | ۴ بایت (+)  | درونی       | |
|    +-------------------+-------------------+-------------+-------------+ |
|                                                                          |
+--------------------------------------------------------------------------+

سازوکار عملکرد Foo-over-UDP (FOU)

پروتکل Foo-over-UDP (FOU) امکان کپسوله‌سازی مستقیم پروتکل‌های لایه ۳ را در قالب استاندارد UDP و بدون اضافه کردن فیلدهای کنترلی میانی فراهم می‌سازد. بار کاری UDP دقیقاً از نخستین بایت سرآیند بسته درونی آغاز می‌شود.

محاسبه پویای پورت مبدأ بر اساس جریان داده

شاخص‌ترین ویژگی فنی FOU شیوه تعیین پورت مبدأ خارجی UDP (sport) است. هنگام ارسال بسته از مسیر تونل FOU، هسته لینوکس مقداری هش بر پایه مشخصات جریان داده درونی (آدرس‌های IP و پورت‌های جلسه کاربر) محاسبه می‌کند.

سپس این مقدار هش به محدوده پورت‌های موقت (معمولاً ۳۲۷۶۸ تا ۶۰۹۹۹) نگاشت شده و به عنوان پورت مبدأ UDP بیرونی تنظیم می‌شود:

  • هر اتصال TCP یا جریان UDP مجزای کاربر در داخل تونل، پورت مبدأ خارجی منحصربه‌فردی دریافت می‌کند.
  • سوئیچ‌ها و روترهای میانی با بررسی سرآیند UDP، بار را به‌طور یکنواخت از طریق روش ECMP روی مسیرهای فیبر نوری موازی پخش می‌کنند.
  • کارت شبکه در گیت‌وی مقصد با بررسی ۵ پارامتر بیرونی، بسته‌ها را از طریق مکانیزم بومی RSS میان صف‌های دریافت سخت‌افزاری تقسیم کرده و تمام هسته‌های پردازنده را به کار می‌گیرد.
+--------------------------------------------------------------------------+
|          توزیع سخت‌افزاری RSS با استفاده از پورت‌های پویای FOU/GUE       |
+--------------------------------------------------------------------------+
|                                                                          |
|   جریان‌های کاربران داخل تونل VPN:                                       |
|   - جریان A: 10.0.0.2:443 -> 10.0.0.8:5201  (هش A -> پورت: 41205)         |
|   - جریان B: 10.0.0.3:80  -> 10.0.0.9:38192 (هش B -> پورت: 53891)         |
|   - جریان C: 10.0.0.4:53  -> 10.0.0.10:53   (هش C -> پورت: 36712)         |
|                           │                                              |
|                           v (انتقال از طریق یک تونل فیزیکی مشترک)        |
|   ورود به کارت شبکه گیت‌وی مقصد                                          |
|                           │                                              |
|                           v [محاسبه سخت‌افزاری هش ۵ پارامتری Toeplitz]    |
|             ┌─────────────┼─────────────┐                                |
|             ▼             ▼             ▼                                |
|         [صف RX 0]     [صف RX 1]     [صف RX 2]   (صف‌های سخت‌افزاری NIC)  |
|             │             │             │                                |
|             ▼             ▼             ▼                                |
|          هسته CPU 0    هسته CPU 1    هسته CPU 2 (بستر پردازش SoftIRQ)    |
|                                                                          |
|   نتیجه: تعادل کامل بار پردازشی و حذف تراکم روی یک هسته پردازنده         |
|                                                                          |
+--------------------------------------------------------------------------+

کپسوله‌سازی عمومی GUE (RFC 8150)

اگرچه پروتکل FOU برای ارتباطات ثابت نقطه-به-نقطه با یک نوع پروتکل اختصاصی به ازای هر درگاه کارایی دارد، زیرساخت‌های چند‌کاربره VPN نیازمند پشتیبانی از چندین پروتکل و متادیتای کنترلی هستند. این قابلیت از طریق پروتکل Generic UDP Encapsulation (GUE، استاندارد RFC 8150) مهیا می‌شود.

پروتکل GUE سرآیندی به اندازه ۴ بایت را بلافاصله پس از سرآیند UDP اضافه می‌کند:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver|C|  Hlen   |  Proto/Ptype  |            Flags              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     فیلدهای اختیاری توسعه                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

بخش‌های اصلی سرآیند GUE عبارتند از:

  • نسخه (Ver, ۲ بیت): در مشخصات RFC 8150 بر روی مقدار 00b تنظیم می‌شود.
  • کنترل (C, ۱ بیت): تفکیک پیام‌های عملیاتی و نظارتی (C=1) از بسته‌های داده کاربر (C=0).
  • طول سرآیند (Hlen, ۵ بیت): اندازه فیلدهای توسعه را با واحدهای ۳۲ بیتی مشخص می‌کند.
  • نوع پروتکل (Proto/Ptype, ۸ بیت): پروتکل لایه درونی را معین می‌سازد (4 برای IPv4، 41 برای IPv6، و 47 برای GRE).
  • پرچم‌های کنترلی (۱۶ بیت): پشتیبانی از واگذاری محاسبه چکسام از راه دور (RCO)، شناسه شبکه‌های مجازی (VNI) و داده‌های رهگیری مسیر.

مقایسه مشخصات فنی: FOU در برابر GUE

+--------------------------------------------------------------------------+
|                  مقایسه فنی: پروتکل‌های FOU و GUE (RFC 8150)             |
+--------------------------------------------------------------------------+
| مشخصه فنی               | پروتکل Foo-over-UDP    | پروتکل GUE (RFC 8150) |
+-------------------------+------------------------+-----------------------+
| سرآیند افزوده           | دقیقاً ۸ بایت (UDP)    | ۱۲+ بایت (UDP + GUE)  |
| مالتی‌پلکس پروتکل‌ها     | تک‌پروتکل در هر پورت   | چند‌پروتکل روی یک پورت|
| بسته‌های تحت پشتیبانی   | IPv4, IPv6, GRE        | IPv4, IPv6, GRE, Eth  |
| سیگنال‌های کنترلی       | فاقد پشتیبانی          | بسته‌های تعبیه‌شده OAM|
| مدیریت چکسام            | چکسام استاندارد UDP    | محاسبه از راه دور RCO |
| سادگی پیکربندی          | بسیار ساده و سبک       | انعطاف‌پذیری بالا     |
| کاربرد متداول           | ترانزیت پرسرعت ثابت    | شبکه‌های هم‌پوشان ابری |
+--------------------------------------------------------------------------+

پیکربندی و راه‌اندازی در لینوکس

پشتیبانی از FOU و GUE در هسته استاندارد لینوکس از طریق ماژول CONFIG_NET_FOU تعبیه شده است.

مرحله اول: بارگذاری ماژول‌های هسته

ماژول‌های موردنیاز را فعال نمایید:

modprobe fou
modprobe ipip
modprobe ip_gre

مرحله دوم: راه‌اندازی تونل Foo-over-UDP (FOU)

تنظیم تونل FOU برای دریافت داده‌های IPv4 روی درگاه ۵۵۵۵ پروتکل UDP:

# ثبت درگاه دریافت برای پروتکل IPv4 (ipproto 4)
ip fou add port 5555 ipproto 4

# ایجاد رابط شبکه تونل کپسوله‌شده
ip link add name fou0 type ipip \
    remote 198.51.100.2 local 198.51.100.1 \
    ttl 64 \
    encap fou \
    encap-sport auto \
    encap-dport 5555 \
    encap-csum

# تخصیص آدرس داخلی و فعال‌سازی رابط
ip addr add 10.200.1.1/30 dev fou0
ip link set dev fou0 up

گزینه encap-sport auto هسته را موظف می‌سازد پورت مبدأ را بر مبنای هش جریان داخلی تولید کند تا توازن بار RSS در سمت گیرنده تضمین شود.

مرحله سوم: راه‌اندازی تونل GUE (RFC 8150)

پیکربندی رابط چندپروتکلی GUE روی درگاه ۶۶۶۶:

# ثبت درگاه شنود پروتکل GUE
ip fou add port 6666 gue

# ساخت رابط GRE کپسوله‌شده در GUE
ip link add name gue0 type gre \
    remote 198.51.100.2 local 198.51.100.1 \
    ttl 64 \
    encap gue \
    encap-sport auto \
    encap-dport 6666 \
    encap-csum

# فعال‌سازی رابط
ip addr add 10.200.2.1/30 dev gue0
ip link set dev gue0 up

مرحله چهارم: ارزیابی شتاب‌دهنده‌های سخت‌افزاری

پشتیبانی سخت‌افزاری کارت شبکه را از واگذاری قطعه‌بندی ترافیک بررسی کنید:

ethtool -k eth0 | grep -E "tx-udp_tnl|rx-udp_tunnel"

خروجی استاندارد:

tx-udp_tnl-segmentation: on
tx-udp_tnl-csum-segmentation: on
rx-udp_tunnel-port-offload: on

فعال بودن این پارامترها نشان می‌دهد که عملیات قطعه‌بندی و محاسبه چکسام روی تراشه کارت شبکه انجام شده و بار پردازشی هسته‌های CPU کاهش می‌یابد.

هم‌پوشانی فنی با شبکه RiceGuard و VPNRice

در ساختار جهانی سرورهای VPNRice، پروتکل‌های FOU و GUE وظیفه انتقال امن داده‌ها بین مراکز داده را عهده‌دار هستند:

  1. توزیع بار چند‌هسته‌ای در مقیاس وسیع: سرورهای لبه‌ای ترافیک رمزگذاری‌شده کاربران را در خطوط پرسرعت تجمیع می‌کنند. به واسطه کپسوله‌سازی UDP، کارت شبکه مقصد جریان‌ها را از طریق RSS میان کلیه هسته‌ها تقسیم می‌کند و دستیابی به سرعت بالای ۴۰ گیگابیت بر ثانیه را روی هر سرور میسر می‌سازد.
  2. بهره‌برداری کامل از اتصالات Spine-Leaf: در مراکز داده با ساختارهای سوئیچینگ متراکم، پورت‌های مبدأ تصادفی به الگوریتم‌های ECMP اجازه می‌دهند تا داده‌ها را به‌طور متقارن روی خطوط موازی فیبر نوری توزیع نمایند.
  3. پایداری عبور از تجهیزات میانی: بسته‌های لایه ۳ فاقد پورت‌های L4 (نظیر فریم‌های خالص GRE) معمولاً با محدودیت یا مسدودیت در تجهیزات میانی یا گیت‌وی‌های CGNAT روبه‌رو می‌شوند. قرارگیری در قالب استاندارد UDP این ناپایداری‌ها را خنثی می‌سازد.

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

در پیاده‌سازی سازمانی پروتکل‌های FOU و GUE توجه به نکات زیر ضروری است:

  • تنظیم دقیق MTU: فرایند کپسوله‌سازی ۸ بایت (در FOU) یا ۱۲ بایت (در GUE) به همراه سرآیند IP بیرونی اضافه می‌کند. بنابراین باید مقدار MTU رابط تونل را در حدود ۱۴۲۰ تا ۱۴۴۰ بایت تنظیم کرده یا فیلتر تنظیم خودکار اندازه سگمنت (TCPMSS --clamp-mss-to-pmtu) را فعال نمود.
  • چکسام در بستر IPv6: در استاندارد IPv6 استفاده از چکسام معتبر UDP الزامی است (RFC 8200). همواره هنگام اتصال روی IPv6 پارامتر encap-csum را مشخص کنید تا از افت خاموش بسته‌ها جلوگیری شود.
  • تثبیت تنظیمات در راه‌اندازی مجدد: دستورات ip fou add پس از راه‌اندازی دوباره سیستم حفظ نمی‌شوند؛ از این رو باید در سرویس‌های مدیریت شبکه سیستم‌عامل (systemd-networkd) یا اسکریپت‌های بوت ذخیره گردند.

تلفیق FOU و GUE با قابلیت‌های سخت‌افزاری کارت‌های شبکه، زیرساختی مطمئن و کارآمد برای انتقال داده‌های حجیم در شبکه‌های مدرن VPN ایجاد می‌نماید.