मानक #
जून 2018 के नवीनतम बेंचमार्क, iptables के बजाय डेटा पथ के रूप में nftables का उपयोग करने में प्रदर्शन में महत्वपूर्ण सुधार दिखाते हैं।
दो क्लाइंट्स द्वारा HTTP लोड स्ट्रेस टूल, एक लोड बैलेंसर और तीन बैकएंड्स के साथ एक टेस्टबेड वातावरण दिया गया है, जिसमें HTTP टर्मिनेटर लगभग 210 बाइट्स का रिस्पॉन्स देता है। इस स्थिति में हमें प्रति सेकंड HTTP फ्लो के निम्नलिखित बेंचमार्क प्राप्त होते हैं :
iptables DNAT 256.864,07 RPS / सीपीयू iptables SNAT 262.088,94 RPS / सीपीयू nftables DNAT 560.976,44 RPS / सीपीयू nftables SNAT 608.941,57 RPS / सीपीयू nftables DSR 7.302.517,31 RPS / सीपीयू
ऊपर दिए गए आंकड़े प्रति भौतिक सीपीयू के हिसाब से दिखाए गए हैं, क्योंकि कोर जोड़ने पर स्केलेबिलिटी लगभग रैखिक होती है। हालांकि ये बेंचमार्क केवल 3 बैकएंड के साथ किए गए हैं, लेकिन अधिक बैकएंड जोड़ने पर iptables का प्रदर्शन काफी गिर जाएगा , क्योंकि इससे अनुक्रमिक नियमों की संख्या बढ़ जाती है।
उन बेंचमार्कों को रेटपोलिन अक्षम (स्पेक्टर/मेल्टडाउन शमन नहीं) के साथ निष्पादित किया गया था, लेकिन एक बार जब वे सक्षम हो जाते हैं, तो iptables और nftables दोनों मामलों के लिए conntrack सक्षम होने पर NAT मामलों में पता चला प्रदर्शन दंड पहले वाले के लिए बहुत खराब है:
iptables: 40.77% CPU पेनाल्टी nftables: 17.27% CPU पेनाल्टी
प्रदर्शन कुंजी #
रेटपोलिन दंड को nftables की तुलना में iptables में बहुत अधिक अप्रत्यक्ष कॉल के उपयोग के कारण समझाया गया है। लेकिन इसके अलावा, कुछ और प्रदर्शन कुंजियाँ हैं जिन्हें नीचे समझाया जाएगा।
नियम अनुकूलन #
मुख्य प्रदर्शन कुंजी नियम अनुकूलन है। यह पहले से ही iptables में ज्ञात था कि ipset का उपयोग प्रदर्शन को बढ़ाता है क्योंकि यह अनुक्रमिक नियम प्रसंस्करण को कम करता है।
हालांकि nftlb को अन्य उद्देश्यों के लिए भी विस्तारित किया जा सकता है, फिर भी हम सेट और मैप के उपयोग का समर्थन करने वाली अभिव्यंजक भाषा का उपयोग करके प्रत्येक वर्चुअल सेवा के लिए बुनियादी नियम निर्धारित करते हैं। कृपया नीचे vs01 नामक एक वर्चुअल टीसीपी सेवा के लिए उत्पन्न नियमों को देखें जिसमें 2 बैकएंड हैं :
टेबल आईपी एनएफटीएलबी { मैप टीसीपी-सर्विसेज { टाइप आईपीवी4_एड्रेस . इनेट_सर्विस : फैसला
तत्व = { 192.168.0.100 . http : goto vs01 }
} चेन प्रीरूटिंग { प्रकार नेट हुक प्रीरूटिंग प्राथमिकता 0; नीति स्वीकार;
आईपी daddr . टीसीपी डीपोर्ट vmap @tcp-सेवाएँ
} चेन पोस्ट्राउटिंग { प्रकार नेट हुक पोस्ट्राउटिंग प्राथमिकता 100; नीति स्वीकार; }
चेन vs01 { dnat से jhash आईपी saddr मॉड 2 मैप { 0 : 192.168.1.10, 1 : 192.168.1.11 } }
}
एक बार जब हमें एक नया बैकएंड जोड़ने की आवश्यकता होती है, तो नए नियमों को शामिल किए बिना और अन्य वर्चुअल सेवाओं को प्रभावित किए बिना, वर्चुअल सेवा से संबंधित श्रृंखला को पुन: उत्पन्न करें।
चेन vs01 {
dnat से jhash ip saddr mod 3 मैप { 0 : 192.168.1.10, 1 : 192.168.1.11, 2 : 192.168.1.12 }
}
फिर, यदि एक नई वर्चुअल सेवा vs02 बनाने की आवश्यकता होती है, तो नियम सेट नीचे दिखाए गए अनुसार हो जाता है, बिना नए नियमों को जोड़े या अन्य वर्चुअल सेवाओं को प्रभावित किए बिना:
टेबल आईपी एनएफटीएलबी { मैप टीसीपी-सर्विसेज { टाइप आईपीवी4_एड्रेस . इनेट_सर्विस : फैसला तत्व = { 192.168.0.100 . http : गोटो vs01,
192.168.0.102 . https : गोटो vs02 } } चेन प्रीरूटिंग { प्रकार नेट हुक प्रीरूटिंग प्राथमिकता 0; नीति स्वीकार; आईपी डैडर . टीसीपी डीपोर्ट वीएमएपी @ टीसीपी-सर्विसेज } चेन पोस्टराउटिंग { प्रकार नेट हुक पोस्टराउटिंग प्राथमिकता 100; नीति स्वीकार; } चेन वीएस01 { डीएनएट टू जेएचएएसएच आईपी सैडर मॉड 3 मैप { 0 : 192.168.1.10, 1 : 192.168.1.11, 2 : 192.168.1.12 } }
चेन vs02 { dnat से jhash आईपी saddr मॉड 2 मैप { 0 : 192.168.2.10, 1 : 192.168.2.11 } }
}
प्रारंभिक हुक्स #
nftables , DSR परिदृश्यों के दौरान nftlb में उपयोग किए जाने वाले अर्ली इनग्रेस हुक के उपयोग की अनुमति देता है ।
इसके अलावा, इस शुरुआती हुक का उपयोग फ़िल्टरिंग उद्देश्यों के लिए किया जा सकता है जो पैकेट ड्रॉप करने के मामलों में प्रदर्शन को बढ़ाता है। इसे पैकेट प्रति सेकंड में iptables और nftables मामलों के सबसे शुरुआती चरण के साथ नीचे दिखाया गया है:
iptables प्रीरूटिंग रॉ ड्रॉप: 38.949.054,35 PPS / कोर nftables इनग्रेस ड्रॉप: 45.743.628,64 PPS / कोर
त्वरण तकनीक #
वास्तव में अनुकूलन के लिए अभी भी अधिक जगह है, क्योंकि एनएफटेबल्स पहले से ही तेज़ पथों और हल्के वजन वाली तकनीकों का समर्थन करता है जिनका उपयोग पैकेट मैनलिंग के लिए किया जा सकता है। इसके उदाहरण हैं:
Flowtables.Conntrack पहले से स्थापित कनेक्शनों को पूरे धीमे मार्ग से गुजरे बिना प्रवेश चरण तक पहुंचाने का तेज़ तरीका है। अधिक जानकारी यहाँ देखें ।
स्टेटलेस एनएटी । लोड बैलेंसिंग के कुछ मामलों में, स्टेटलेस एनएटी को कनेक्शन ट्रैकिंग के बिना और इनग्रेस स्टेज से ही किया जा सकता है ताकि एनएटी परिदृश्यों पर लागू होने वाले सभी प्रदर्शन को प्राप्त किया जा सके।