معوقات تصنيف الحزم: قصور المرشحات البرمجية عند السرعات الفائقة

تتعامل بوابات VPN ومحطات تجميع حركة البيانات ذات الكثافة المرتفعة مع تدفقات هائلة من الحزم الشبكية. وعندما تصل سعة الروابط إلى 25 أو 40 أو 100 غيغابت في الثانية، غالباً ما يتخطى معدل التدفق الوارد عشرات الملايين من الحزم في الثانية الواحدة (Mpps). في مثل هذه البيئات، تصبح عملية تصنيف الحزم—أي تفكيك حقول الترويسات لاتخاذ قرارات التوجيه، وتطبيق جدران الحماية، والتحكم في النطاق الترددي، وتوزيع الأنفاق—هي العقبة الأساسية أمام استقرار النظام.

تاريخياً، اعتمد مديرو أنظمة لينكس على سلاسل قواعد iptables أو جداول nftables التأسيسية. ورغم كفاءة هذه الحلول في البيئات المتواضعة، إلا أنها تصطدم بحواجز بنيوية واضحة عند الأحمال الفائقة:

  1. المعالجة الخطية المتسلسلة ضمن مقاطعات النواة البرمجية: تفحص جدران الحماية البرمجية القواعد واحدة تلو الأخرى بتسلسل خطي. ومع تدفق ملايين الحزم عبر روتينات المقاطعة البرمجية ksoftirqd، يلتهم التدقيق في مئات القواعد معظم دورات المعالج المركزي. وعند تعرض منفذ VPN لطوفان غير مصرح به من حزم UDP، تصل أنوية المعالج إلى مرحلة التشبع التام قبل التحقق من هوية البيانات.
  2. هشاشة العمليات الحسابية المعتمدة على إزاحة البايتات: فرض المُصنِّف التقليدي u32 في نظام التحكم في حركة المرور بلينكس حسابات يدوية معقدة لإزاحة البتات عند مواقع بايتات محددة. ومع التباين في خيارات IPv4 وترويسات IPv6 الممتدة والأنفاق المتداخلة، كانت هذه الحسابات عرضة للأخطاء المتكررة.
  3. اختناق ممر البيانات البرمجي واستنزاف الذاكرة المخبأة: في المعالجة البرمجية الصرفة، يجب على كل حزمة واردة عبور ناقل PCIe وحجز بافر مقبس (sk_buff) داخل ذاكرة الوصول العشوائي. ومع كثافة المرور، تُفرغ سطور الذاكرة المخبأة L2 وL3 باستمرار، مما يحرم خوارزميات التشفير مثل ChaCha20-Poly1305 وAES-GCM من الموارد الحسابية الضرورية.

وللحفاظ على تدفق البيانات بسرعة الأسلاك الفيزيائية وتفادي شلل مقاطعات النواة، تحتاج بوابات VPN الحديثة إلى مُصنِّف منظم قادر على نقل منطق المعالجة مباشرة إلى شرائح بطاقة الشبكة الفيزيائية: Linux TC Flower (cls_flower).

بنية مُصنِّف التدفقات Linux TC Flower (cls_flower)

يوفر مُصنِّف Flower (cls_flower) المدمج في أنوية لينكس الحديثة نقلة نوعية لنظام التحكم في حركة المرور (tc)، محولاً إياه إلى محرك تصنيف تدفقات فائق الكفاءة. وبدلاً من الحسابات اليدوية الصعبة، يعتمد Flower على أداة تشريح التدفقات المدمجة في صلب النواة (flow dissector) لقراءة حقول الطبقات الثانية والثالثة والرابعة بدقة وتنظيم.

+-------------------------------------------------------------------------+
|                        إطار إيثرنت الوارد (Ingress)                     |
+-------------------------------------------------------------------------+
                                    |
                                    v
+-------------------------------------------------------------------------+
|                  محرك تشريح التدفقات في النواة                          |
|     - استخراج الطبقة 2: عناوين MAC، وسوم VLAN، نوع EtherType            |
|     - استخراج الطبقة 3: عناوين المصدر والوجهة IPv4/IPv6، حقل DSCP       |
|     - استخراج الطبقة 4: منافذ UDP/TCP، إشارات TCP، أنواع ICMP           |
|     - استخراج معرفات الأنفاق والتغليف المشفر (VNI، Tunnel ID)           |
+-------------------------------------------------------------------------+
                                    |
                                    v
+-------------------------------------------------------------------------+
|                   جدول تجزئة الأقنعة (Mask-and-Match)                   |
|   - مطابقة سريعة في زمن ثابت O(1) بالاعتماد على الحقول المحددة          |
+-------------------------------------------------------------------------+
         |                                  |
    تطابق ناجح                           عدم تطابق
         |                                  |
         v                                  v
+-----------------------+          +-----------------------+
|  الإجراء المحدد       |          | المسار الافتراضي      |
|  - drop (إسقاط فوري)  |          | مكدس IP التقليدي      |
|  - mirred redirect    |          +-----------------------+
|  - police (تحجيم سعة) |
|  - skbedit priority   |
+-----------------------+

السمات المعمارية البارزة لمُصنِّف TC Flower

  • جداول التجزئة المعتمدة على الأقنعة (Mask-and-Match): يصنف Flower القواعد وفق أنماط الأقنعة الثنائية. فبدلاً من فحص كل قاعدة بمفردها، تُجرى عملية تجزئة واحدة للحزمة الواردة بالاعتماد على الترويسات المطلوبة، محققة زمناً ثابتاً شبه فوري O(1) لا يتأثر بعدد القواعد الكلي.
  • إدراك عميق للمستويات الشبكية المتعددة: يتعرف Flower تلقائياً على خصائص الشبكة المعقدة دون الحاجة لتعليمات مساعدة، بما فيها وسوم الشبكات الافتراضية (vlan_id، vlan_prio)، وأولويات الخدمة (ip_tos)، وإشارات ضبط اتصال TCP (tcp_flags syn)، وسمات منافذ UDP.
  • سلاسل إجراءات متكاملة: بمجرد مطابقة التدفق، يمكن تنفيذ حزمة من التدابير المحددة؛ مثل الإسقاط الفوري للحزمة (action drop)، أو إعادة التوجيه العتادي المباشر (action mirred egress redirect)، أو تقييد معدل الحزم (action police)، أو تعديل أولويات المعالجة داخل النواة (action skbedit).

لتفعيل مُصنِّف Flower على واجهة الشبكة، يربط مدير النظام أولاً نظام الطوابير الواردة ingress:

# تفعيل طابور ingress على المنفذ الفيزيائي enp1s0f0
tc qdisc add dev enp1s0f0 ingress

# حظر حزم UDP غير المصرح بها المتجهة للمنافذ الداخلية فوراً
tc filter add dev enp1s0f0 ingress protocol ip prio 10 flower \
    ip_proto udp \
    dst_port 53 \
    action drop

تفريغ أعباء المعالجة إلى عتاد ASIC لبلوغ أقصى سرعات الاتصال

مع السرعة العالية التي يقدمها Flower برمجياً داخل النواة، فإن الميزة التشغيلية الأهم تكمن في قدرته على تفريغ أعباء المعالجة إلى العتاد (Hardware Offload) عبر بنية switchdev.

تشتمل بطاقات الشبكة المخصصة لمراكز البيانات (مثل Intel Columbiaville E810 وMellanox ConnectX-5/6/7) على معالجات داخلية متقدمة وذاكرة TCAM (ذاكرة المحتوى القابلة للتعيين ثلاثية الحالات). وعند تفعيل خيارات التفريغ العتادي، تترجم نواة لينكس قواعد Flower إلى تعليمات دقيقة وتثبتها مباشرة داخل جداول التدفق في شريحة البطاقة.

+-------------------------------------------------------------------+
|                     كابل الألياف الضوئية الفيزيائي                |
+-------------------------------------------------------------------+
                                  |
                                  v
+-------------------------------------------------------------------+
|               وحدة الاستقبال الضوئي وطبقة العتاد MAC/PHY           |
+-------------------------------------------------------------------+
                                  |
                                  v
+-------------------------------------------------------------------+
|         المعالج الداخلي للبطاقة وجداول تدفق TCAM العتادية         |
|              (قواعد Flower المثبتة في سيليكون البطاقة)            |
|                                                                   |
|   قاعدة: إسقاط طوفان UDP (skip_sw)  --> [إسقاط مباشر في العتاد]   |
|   قاعدة: توجيه منفذ 51820           --> [نقل DMA لأحدث أنوية المعالج|
+-------------------------------------------------------------------+
            | (تعبر فقط حزم VPN المشفرة والمصرح بها حصراً)
            v
+-------------------------------------------------------------------+
|                 ناقل PCIe وذاكرة الوصول العشوائي للخدم            |
+-------------------------------------------------------------------+
                                  |
                                  v
+-------------------------------------------------------------------+
|               محرك فك التشفير متعدد المسارات RiceGuard            |
+-------------------------------------------------------------------+

خيارات تنفيذ التفريغ العتادي في TC Flower

يتيح النظام لمهندس الشبكة تحديد بيئة التنفيذ بدقة:

  1. التفريغ التلقائي (الوضع الافتراضي): إذا كانت شريحة البطاقة تدعم القاعدة، تقوم النواة بتثبيتها داخل المعالج العتادي مع الاحتفاظ بنسخة برمجية احتياطية. وفي حال امتلاء جداول العتاد، يتحول النظام تلقائياً للمعالجة البرمجية.
  2. نمط skip_hw: يحصر تنفيذ القاعدة داخل ذاكرة النواة البرمجية دون استهلاك موارد بطاقة الشبكة العتادية.
  3. نمط skip_sw (التنفيذ العتادي الحصري): يفرض تطبيق القاعدة داخل سيليكون بطاقة الشبكة فقط. وإذا عجز العتاد عن دعم شرط المطابقة أو الإجراء، يتوقف الأمر tc مصدراً إشعار خطأ فوري.

مثال لتطبيق الحماية العتادية الكاملة على منفذ 100 غيغابت:

# إسقاط الحزم ذات العناوين المزيفة مباشرة داخل سيليكون البطاقة
tc filter add dev enp1s0f0 ingress protocol ip prio 1 flower \
    src_ip 198.51.100.0/24 \
    skip_sw \
    action drop

# توجيه حركة VPN المعتمدة إلى طابور عتادي ذي أولوية قصوى
tc filter add dev enp1s0f0 ingress protocol ip prio 2 flower \
    ip_proto udp \
    dst_port 51820 \
    skip_sw \
    action skbedit priority 1

بفضل خيار skip_sw، تُسقط الحزم المشبوهة عند الطبقة الفيزيائية للبطاقة. فلا يعبر أي بايت غير مرغوب فيه ناقل PCIe، ولا تُحجز مساحات في الذاكرة العشوائية، ويبقى استهلاك المعالج المركزي لمقاطعات النواة عند صفر بالمائة.

تطبيق سياسات الحماية المتقدمة ضمن بنية RiceGuard

في المنظومة الشبكية الموزعة لـ VPNRice، يجمع بروتوكول RiceGuard بين خوارزميات التشفير الحديثة والتوجيه العتادي للتدفقات، بهدف تأمين أعلى معدلات نقل مع ضمان العزل التام للمشتركين.

+-------------------------------------------------------------------+
|                    خادم بوابة VPNRice الطرفي                      |
|                                                                   |
|   +-----------------------------------------------------------+   |
|   |         بطاقة شبكة فيزيائية 100GbE (Intel / Mellanox)     |   |
|   |         ذاكرة TCAM العتادية: قواعد Flower (skip_sw)       |   |
|   +-----------------------------------------------------------+   |
|         |                                           |             |
|   [منفذ 51820: حزم VPN صالحة]             [حزم غير مصرح بها / طوفان|
|         |                                           |             |
|         v                                           v             |
|   نقل DMA لطابور RX مخصص                    إسقاط مباشر في السيليكون|
|         |                                   (0% حمل على المعالج)  |
|         v                                                         |
|  +-------------------------------------------------------------+  |
|  |                 نواة التشفير في RiceGuard                   |  |
|  |                 فك تشفير ChaCha20-Poly1305 بسرعة الأسلاك    |  |
|  +-------------------------------------------------------------+  |
|         |                                                         |
|         v                                                         |
|  +-------------------------------------------------------------+  |
|  | نطاقات شبكة معزولة وخوادم DNS محلية مشفرة                   |  |
|  | حماية شاملة من تسريب البيانات غير المشفرة نحو الخارج        |  |
|  +-------------------------------------------------------------+  |
+-------------------------------------------------------------------+

1. فرز التدفقات الواردة عند المدخل

بدلاً من استقبال كافة الحزم عبر طابور برمجي مشترك، يطبق RiceGuard قواعد TC Flower لفرز جلسات الاتصال المعتمدة فوراً. وتقوم شريحة البطاقة بتوزيعها عبر تقنية Receive Side Scaling (RSS) إلى طوابير استقبال مستقلة تتوافق مع أنوية معالجة محددة، مما يمنع تعارض الذاكرة ويضمن زمن استجابة دون الميلي-ثانية.

2. الوقاية العتادية من الضغط قبل التحقق

قد يتسبب التدفق المباغت من الحزم غير الموثقة في استنزاف قدرات بوابة VPN عبر الانشغال الدائم بالمصافحات التشفيرية. وعبر تفعيل ضوابط تنظيم السرعة العتادية (action police rate 100mbit burst 10k drop skip_sw)، تحجم البوابات حركة المرور عند المنافذ داخل شريحة البطاقة مباشرة. ويتم ضبط التدفق قبل ملامسته للمعالج، مما يحافظ على استقرار مسارات فك التشفير.

3. عزل نطاقات المشتركين وحجب التسريب

تُشغل كل مساحة عمل للمشتركين في بنية RiceGuard داخل نطاق شبكة لينكس مستقل (netns). وتضمن قواعد التحويل في TC Flower عدم تسرب أي حزم داخلية غير مشفرة نحو الواجهات الفيزيائية العامة. وبالتوازي مع ذلك، تعمل خوادم وساطة DNS محلية ومشفرة داخل كل نطاق شبكي، مما يمنع تسريب استعلامات أسماء النطاقات ويحافظ على خصوصية المستخدمين تحت مختلف الضغوط التشغيلية.