العودة إلى المقالات

نفق واحد أم عدة أنفاق؟ توزيع الحمل لشبكات مزوّدي الإنترنت

نفق واحد أم عدة أنفاق؟ توزيع حمل VPN لمزوّدي الإنترنت | مرام هوست - نفق واحد أم عدة أنفاق؟ توزيع الحمل لشبكات مزوّدي الإنترنت

تشتري خطاً أكبر وسيرفراً بعدد أنوية كبير، ثم تجد أن سرعة النفق توقفت عند حد معين لا تتجاوزه، بينما معظم الأنوية شبه فارغة. هذا مشهد مألوف عند من يمرّر حركة كبيرة عبر نفق واحد، وسببه ليس الخط في الغالب، بل طريقة توزيع العمل داخل السيرفر.

في هذا المقال نوضح متى يكفي نفق واحد، ومتى يستحق التقسيم عناءه، وكيف توزّع الحركة دون أن تكسر جلسات المشتركين.

لماذا يتوقف النفق الواحد عند سقف؟

النفق الواحد لا يتوزّع جيداً على الأنوية. فمهما كان عدد أنوية السيرفر، تقع الحركة الأثقل غالباً على نواة واحدة أو عدد قليل منها. على معالج AMD EPYC 7452 مثلاً، سقف النفق الواحد نحو 1–1.5 Gbps، رغم أن سرعة التشفير الخام للنواة نحو 10.7 Gbps، إذ تبلغ إنتاجية WireGuard الفعلية نحو 10–15% من الرقم الخام.

أما AMD EPYC 9655 فيصل الرقم الخام للنواة فيه إلى نحو 23.3 Gbps، وهو ما يرفع السقف دون أن يلغيه. لهذا فالقرار دائماً بين طريقين: نواة أقوى، أو عدة أنفاق.

مقارنة بين نفق واحد يشغل نواة واحدة بالكامل وأربعة أنفاق موزعة على أربع أنوية
رسم توضيحي لا قياس: في اليمين نواة ممتلئة والبقية فارغة، وفي اليسار يتوزّع الحمل نفسه على أنوية أكثر

قبل التقسيم: تأكد أن المشكلة هي النفق

لا تعالج مشكلة لم تثبت. افتح هذا الأمر في وقت الذروة:

mpstat -P ALL 1

إن رأيت نواة قرب الامتلاء والبقية مرتاحة، فالاختناق داخل السيرفر. وإن كانت الأنوية كلها هادئة والسرعة ضعيفة، فابحث في الخط أو الوجهة أو MTU، وليس في عدد الأنوية. ويفيدك هنا دليل تشخيص مشاكل النفق.

ويجب النظر أيضاً إلى الكرت نفسه. إن كان بطابور واحد، فقد تكفي خطوة أبسط من تقسيم النفق: توزيع الحزم (RPS). في تجربة لدينا على كرت بطابور واحد، انخفضت النواة الأكثر انشغالاً من نحو 84% إلى 74% بلا توقف للخدمة. هذا تحسن محدود لكنه سريع ويمنحك وقتاً للتخطيط:

# القناع ff يعني الأنوية الثماني الأولى، عدّله حسب سيرفرك
echo ff > /sys/class/net/eth0/queues/rx-0/rps_cpus

نفق واحد أم عدة أنفاق؟

المعيارنفق واحدعدة أنفاق
الإعداد والتشخيصبسيط وواضحيحتاج خطة وتوثيقاً
سقف السرعةسقف النفق الواحد على المعالجأعلى، لكنه ليس جمعاً مباشراً
تعطّل نفقتتوقف الحركة كلهايمكن نقل الحركة إلى الأنفاق الباقية
يناسبذروة أقل بوضوح من السقفذروة تقترب من السقف أو تتجاوزه

القاعدة البسيطة: إذا كانت ذروتك أقل بوضوح من السقف، فابق على نفق واحد. كل نفق إضافي هو إعداد آخر يجب أن تراقبه وتوثّقه.

كيف توزّع الحركة بلا كسر الجلسات؟

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

مخطط راوتر يوزع المشتركين حسب العنوان على ثلاثة أنفاق تصل إلى سيرفر VPN
كل مشترك يثبت على نفق واحد حسب عنوانه، فلا تتغيّر جلسته ولا يتغيّر عنوان خروجه

مثال افتراضي على راوتر MikroTik ينشئ نفقين wg1 وwg2، ويقسم المشتركين القادمين من الواجهة lan-subs بحسب عنوان المصدر:

/ip/firewall/mangle/add chain=prerouting in-interface=lan-subs \
    connection-state=new per-connection-classifier=src-address:2/0 \
    action=mark-connection new-connection-mark=via-wg1
/ip/firewall/mangle/add chain=prerouting in-interface=lan-subs \
    connection-state=new per-connection-classifier=src-address:2/1 \
    action=mark-connection new-connection-mark=via-wg2
/ip/firewall/mangle/add chain=prerouting connection-mark=via-wg1 \
    action=mark-routing new-routing-mark=to-wg1
/ip/firewall/mangle/add chain=prerouting connection-mark=via-wg2 \
    action=mark-routing new-routing-mark=to-wg2

ثم تربط كل علامة توجيه بجدول فيه مسار عبر النفق المناسب. وعلى السيرفر يأخذ كل نفق واجهة ومنفذاً مستقلين، مثل wg1 بعنوان 10.0.0.1 وwg2 بعنوان 10.0.0.5. اختلاف المنفذ مهم، إذ يساعد الكرت والنواة على رؤية كل نفق كتدفق مستقل بدل تكديس الأنفاق كلها على نواة واحدة.

لا تنسَ مسار العودة. إن عادت الحركة من نفق غير الذي خرجت منه، فستنكسر الاتصالات أو تُرفض. الطريقة الأبسط هي تطبيق NAT إلى عنوان النفق عند مدخل كل نفق، أو تخصيص مجموعة عناوين ثابتة لكل نفق.

أين تضع الأنفاق؟

لديك ثلاثة خيارات، بترتيب تصاعدي في التكلفة والعزل: عدة أنفاق داخل نظام واحد، أو كل نفق في ضيف مستقل على السيرفر نفسه، أو كل نفق على سيرفر مختلف. الخيار الأخير وحده يحميك من تعطّل عتاد السيرفر، أما الأولان فيعالجان السعة فقط.

وطبّق التغيير تدريجياً: انقل مجموعة صغيرة من المشتركين إلى النفق الجديد، وراقب الأنوية وشكاوى الجلسات خلال ذروة كاملة، ثم وسّع النسبة. وإن ظهرت مشكلة، فإن إعادة المجموعة إلى النفق القديم أسهل كثيراً من التراجع عن تغيير شمل الجميع.

قائمة الضيوف على عقدة Proxmox تعرض ثلاث حاويات LXC وأربعة أجهزة افتراضية
عرض Search في العقدة يجمع الحاويات lxc والأجهزة qemu في جدول واحد، ويسهّل مقارنة استهلاك كل ضيف إن وزّعت الأنفاق عليها

راقب أيضاً ما يهمّ المستخدم في النهاية. المسافة تكلّف عشرات الملّي ثانية والعتاد الضعيف يكلّف آلافاً، إذ يتراوح زمن الشبكة في العراق بين 70 و150ms، بينما يبلغ توليد الصفحة من 150ms إلى أكثر من ثانيتين حسب العتاد. لذا اسأل عن المعالج والتخزين لا عن المدينة وحدها.

لمن تناسب هذه الخدمة؟

  • مزوّد ثبت أن نواة واحدة تمتلئ في الذروة بينما البقية فارغة.
  • شبكة تريد ألا يوقف تعطّل نفق واحد الحركة كلها.
  • فريق لديه القدرة على توثيق خطة العناوين والمسارات ومراقبتها.

إن أردت تشغيل عدة أنفاق في ضيوف مستقلة، فخدمة سيرفرات Proxmox تمنحك هذه المرونة. وإن احتجت فصل الأنفاق على عتاد مستقل، فاطّلع على السيرفرات المخصّصة.

أخطاء شائعة

  • توزيع حزم الاتصال الواحد: يسبب وصول الحزم بغير ترتيبها، فتنخفض السرعة بدل أن ترتفع.
  • توقّع جمع السرعات حرفياً: أربعة أنفاق لا تعني أربعة أضعاف، فالكرت والخط وعدد الجلسات تحدّد النتيجة كذلك.
  • نسيان حالة التعطّل: اختبر سقوط نفق عمداً في وقت هادئ، وتأكد أن الباقي يتحمّل الحركة المنقولة إليه.
  • توزيع غير متوازن: التقسيم بالعنوان لا يوزّع الحمل بالتساوي، فقد يقع المشترك الأثقل كله على نفق واحد.
  • رفع قيم rmem وbacklog احتياطاً: لا تفعل ذلك بلا عدّاد خطأ مثل UdpRcvbufErrors.

أسئلة شائعة

كم نفقاً أحتاج؟

اقسم ذروتك المتوقعة على سقف النفق الواحد في معالجك، ثم أضف نفقاً احتياطياً إن كنت تريد تحمّل تعطّل أحدها. وابدأ بأقل عدد يحقق ذلك.

هل يغني معالج أقوى عن تعدد الأنفاق؟

نعم في كثير من الحالات، وهو الحل الأبسط تشغيلياً. لكن المعالج الأقوى لا يحميك من تعطّل النفق الوحيد.

هل يفيد التقسيم على خط واحد؟

يفيد إن كان الاختناق في نواة السيرفر. أما إن كان الخط نفسه ممتلئاً، فلن تزيده الأنفاق سعة.

الخطوة التالية

قِس أولاً، ثم قرّر. إن كان الاختناق في النواة الواحدة، فلديك خياران واضحان: عتاد أقوى، أو أنفاق موزعة. راجع صفحة سيرفرات Proxmox أو تواصل مع فريق المبيعات، ومعك رقم ذروتك ونتيجة mpstat، لتحديد الخيار المناسب لشبكتك.

Powered by WHMCompleteSolution