معايير nftlb ومفاتيح الأداء

نُشرت في 28 يونيو 2018

المعايير

تُظهر معايير قياس أعياد الميلاد ، المؤرخة في يونيو 2018 ، تحسناً هاماً في الأداء في استخدام nftables كمسلك للبيانات بدلاً من iptables.

نظرًا لبيئة التشغيل لعملاء 2 الذين يقومون بتنفيذ أداة ضغط تحميل HTTP ، فإن موازن تحميل 1 و 3 تتم مع نهاية HTTP مما يوفر استجابة حول بايت 210 ، نحصل على المعايير التالية في تدفق HTTP في الثانية:

iptables DNAT		256.864,07 RPS / cpu
iptables SNAT		262.088,94 RPS / cpu

nftables DNAT		560.976,44 RPS / cpu
nftables SNAT		608.941,57 RPS / cpu
nftables DSR		7.302.517,31 RPS / cpu

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

تم تنفيذ هذه المعايير مع تعطيل retpoline (لا توجد وسائل تخفيف Specter / Meltdown) ، ولكن بمجرد تمكينها ، تكون عقوبات الأداء التي تم اكتشافها في حالات NAT مع تمكين conntrack لكل من iptables و nftables أسوأ بكثير بالنسبة للحالة الأولى:

iptables: 40.77% CPU penalty
nftables: 17.27% CPU penalty

مفاتيح الأداء

يتم تفسير العقوبات retpoline بسبب استخدام المزيد من المكالمات indirection في iptables من في nftables. ولكن أيضًا ، هناك بعض مفاتيح الأداء التي سيتم شرحها أدناه.

قواعد التحسين

مفتاح الأداء الرئيسي هو تحسين القواعد. كان من المعروف بالفعل في iptables أن استخدام ipset يعزز الأداء لأنه يقلل من معالجة القواعد المتسلسلة.

في nftlb ، على الرغم من إمكانية توسيعه لاستخدامه لأغراض أخرى ، فإننا نضع قواعد أساسية لكل خدمة افتراضية باستخدام اللغة التعبيرية التي تدعم استخدام المجموعات والخرائط. يرجى الاطلاع أدناه على القواعد التي تم إنشاؤها ل خدمة tcp افتراضية باسم vs01 مع الخلفية 2:

table ip nftlb {
    map tcp-services {
        type ipv4_addr . inet_service : verdict
        elements = { 192.168.0.100 . http : goto vs01 }
    }

    chain prerouting {
        type nat hook prerouting priority 0; policy accept;
        ip daddr . tcp dport vmap @tcp-services
    }

    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
    }

    chain vs01 {
        dnat to jhash ip saddr mod 2 map { 0 : 192.168.1.10, 1 : 192.168.1.11 }
    }
}

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

    chain vs01 {
        dnat to jhash ip saddr mod 3 map { 0 : 192.168.1.10, 1 : 192.168.1.11, 2 : 192.168.1.12 }
    }

ثم ، إذا كانت خدمة افتراضية جديدة vs02 يجب إنشاؤه ، ثم تصبح مجموعة القواعد كما هي معروضة أدناه ، دون إضافة قواعد جديدة أو التأثير على الخدمات الافتراضية الأخرى:

table ip nftlb {
    map tcp-services {
        type ipv4_addr . inet_service : verdict
        elements = { 192.168.0.100 . http : goto vs01,
                     192.168.0.102 . https : goto vs02 }
    }

    chain prerouting {
        type nat hook prerouting priority 0; policy accept;
        ip daddr . tcp dport vmap @tcp-services
    }

    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
    }

    chain vs01 {
        dnat to jhash ip saddr mod 3 map { 0 : 192.168.1.10, 1 : 192.168.1.11, 2 : 192.168.1.12 }
    }

    chain vs02 {
        dnat to jhash ip saddr mod 2 map { 0 : 192.168.2.10, 1 : 192.168.2.11 }
    }
}

السنانير المبكرة

تسمح nftables استخدام المبكر ربط الدخول يُستخدم في nftlb أثناء سيناريوهات DSR.

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

iptables prerouting raw drop: 38.949.054,35 PPS
nftables ingress drop: 45.743.628,64 PPS

تقنيات التسريع

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

Flowtables. مسار سريع conntrack لتفويض اتصالات المنشأة بالفعل إلى مرحلة الدخول دون المرور عبر المسار البطيء كله. مزيد من المعلومات هنا.

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

مشاركة مع :

وثائق بموجب شروط رخصة جنو للوثائق الحرة.

هل كان المقال مساعدا؟!

مقالات ذات صلة