ये तरीके मौलिक रूप से अलग-अलग चीजें कर रहे हैं। यह समझने के लिए कि, आपको नेटवर्किंग के स्तरित मॉडल को समझने की आवश्यकता क्यों है। यहाँ हमारे उद्देश्यों के लिए, परत 1, 2 और 3 महत्वपूर्ण हैं:
- लेयर 1 भौतिक परत है - यह चीजों को निर्दिष्ट करता है कि आप किस केबल का उपयोग कर सकते हैं, किस वोल्टेज / वर्तमान पैटर्न उस केबल पर 1s और 0s का प्रतिनिधित्व करते हैं, कैसे एक केबल के प्रत्येक छोर पर डिवाइस बातचीत करते हैं कि वे किस बिट दर पर और इतने पर काम करते हैं।
- लेयर 2 लिंक लेयर है - यह निर्दिष्ट करता है कि केबल के प्रत्येक छोर पर कौन सी भाषा चीजें एक दूसरे से बात करती हैं। इस लेयर में इथरनेट डिवाइस में फ्रेम और मैक एड्रेस जैसी चीजें होती हैं।
- लेयर 3 नेटवर्क लेयर है - यह निर्दिष्ट करता है कि तीसरे डिवाइस तक पहुंचने के लिए डिवाइस किसी अन्य डिवाइस पर डायरेक्ट लेयर 2 लिंक का उपयोग कैसे करते हैं कि वे सीधे लेयर पर नहीं पहुंच सकते हैं। इस लेयर में डिवाइसों में आईपी एड्रेस और राउटिंग टेबल होते हैं।
MACVLAN / MACVTAP
MACVLAN एक वर्चुअल लेयर 2 या लिंक लेयर डिवाइस बनाता है, जिसका अपना MAC एड्रेस होता है, जो लेयर 1 या फिजिकल लेयर को मौजूदा डिवाइस के साथ शेयर करता है। सबसे स्पष्ट रूप से समझने योग्य मामला है जहां आपके पास नेटवर्क में प्लग किया गया ईथरनेट डिवाइस है और आप उस ईथरनेट डिवाइस के आधार पर एक MACVLAN डिवाइस बनाते हैं; अब आपके पास अलग-अलग मैक पते के साथ दो ईथरनेट "डिवाइस" हैं लेकिन दोनों एक ही केबल पर अपने फ्रेम को प्रसारित करते हैं। मैं MACVTAP के बारे में थोड़ा और नीचे बात करूंगा।
MACVLAN इंटरफेस मौजूदा ईथरनेट इंटरफेस के साथ कई अलग-अलग तरीकों से बातचीत कर सकता है, विशेष रूप से जब एक इंटरफेस एक इंटरफेस पर दिखाई देता है जो दूसरे को संबोधित करता है:
- में निजी मोड, फ्रेम फेंक दी जाती है; दो इंटरफेस के लिए एक दूसरे के साथ संवाद करना संभव नहीं है, केवल बाहरी उपकरणों के साथ।
- में वेपा मोड, फ्रेम किसी अन्य फ्रेम की तरह भौतिक परत पर भेजा जाता है। यदि आपके पास एक ऐसा उपकरण है जो एक स्विच में प्लग किया गया है जो कि उस जगह को देखने के लिए काफी चालाक है, तो उसे वापस उसी पोर्ट पर भेजना होगा जो उस पर पहुंचा था, फिर उसे उसी भौतिक परत द्वारा प्राप्त किया जाएगा जिसने इसे भेजा है और फिर परत 2 मैक का उपयोग इसे इच्छित नेटवर्क इंटरफेस में भेजने के लिए करें।
- में पुल मोड, जब एक फ्रेम एक डिवाइस पर दिखाई देता है, यह अगर यह अन्य के लिए है देखने के लिए जाँच की जाती है और यदि ऐसा है तो, यह परत 1 से गुजर रही बिना वहाँ भेज दिया जाता है।
- अधिक अस्पष्ट मोड के एक जोड़े भी हैं।
ध्यान दें कि MACVLAN इंटरफेस में एक महत्वपूर्ण प्रतिबंध है: वे पते सीखने में सक्षम नहीं हैं। इसलिए आप MACVLAN इंटरफ़ेस को किसी दूसरे भौतिक उपकरण पर नहीं रख सकते हैं और यह उम्मीद कर सकते हैं कि वह पहले भौतिक उपकरण तक पहुँच सके। यह मूल ईथरनेट इंटरफ़ेस के साथ काम करता है लेकिन इसके साथ संलग्न MACVLAN इंटरफ़ेस के साथ नहीं।
TUN / नल
एक TAP इंटरफ़ेस भी एक नया वर्चुअल लेयर 2 डिवाइस है लेकिन इसके साथ कोई लेयर 1 नहीं जुड़ी है। इसके बजाय, एक प्रोग्राम भौतिक परत का प्रतिनिधित्व करने वाला एक फ़ाइल विवरणक प्राप्त कर सकता है। फिर यह उस फ़ाइल डिस्क्रिप्टर में कच्चे ईथरनेट फ्रेम डेटा लिख सकता है और कर्नेल इसे किसी भी अन्य ईथरनेट पैकेट की तरह व्यवहार करेगा जो इसे वास्तविक भौतिक इंटरफ़ेस पर प्राप्त होता है।
टीएपी इंटरफेस के बारे में बड़ी बात यह है कि भौतिक परत उपयोगकर्ता मोड में है; उपयुक्त अनुमतियों वाला कोई भी साफ्टवेयर ईथरनेट फ्रेम को किसी भी तरह से उत्पन्न कर सकता है जो उसे पसंद आता है और उन्हें कुछ में ढाल देता है जिसे कर्नेल वास्तविक भौतिक इंटरफ़ेस के समान मानता है। यह उन्हें वीपीएन और टनलिंग जैसी चीजों के लिए बहुत उपयोगी बनाता है; आप जिस भी प्रकार के टनलिंग सॉफ्टवेयर को यूजर स्पेस में पसंद करते हैं उसे लिख सकते हैं और नेटवर्किग स्टैक में फ्रेम प्राप्त करने के लिए कर्नेल स्पेस में मेडल करने की आवश्यकता नहीं है, आप बस एक TAP डिवाइस बनाएं और उसके फाइल डिस्क्रिप्टर में फ्रेम लिखें।
TUN डिवाइस TAP डिवाइसों की तरह ही हैं सिवाय इसके कि वे लेयर 2 के बजाय लेयर 3 पर काम करते हैं और यूजर मोड सॉफ्टवेयर को कच्चे ईथरनेट फ्रेम के बजाय फाइल डिस्क्रिप्टर में कच्चे आईपी पैकेट्स लिखने होते हैं।
MACVTAP उपकरणों पर वापस जा रहे हैं, ये MACVLAN और TAP इंटरफेस के बीच मिश्रण-अप हैं। TAP इंटरफेस की तरह, एक उपयोगकर्ता-मोड प्रोग्राम एक फ़ाइल विवरणक प्राप्त कर सकता है और उसमें कच्चे ईथरनेट फ्रेम लिख सकता है। MACVLAN इंटरफ़ेस की तरह, उन फ़्रेमों को वास्तविक ईथरनेट डिवाइस की भौतिक परत पर भेजा जाता है। यह आपको आसानी से सॉफ़्टवेयर को अनुकूलित करने की अनुमति देता है जो कि TAP उपकरणों का उपयोग करने के लिए MACVLAN डिवाइस का उपयोग करने के लिए लिखा जाता है।
VNET
यह वैचारिक रूप से TUN / TAP नेटवर्किंग के समान है, लेकिन इसमें अधिक विकसित नियंत्रण विमान है (इसलिए इसका उपयोग करने वाला उपयोगकर्ता-मोड सॉफ़्टवेयर इंटरफ़ेस को अधिक लचीले ढंग से कॉन्फ़िगर कर सकता है) और अधिक अनुकूलित डेटा प्लेन (ताकि आप वर्चुअल नेटवर्क डिवाइस के माध्यम से डेटा स्थानांतरित कर सकें कुशलता से)।
ये सभी समान कार्य करते हैं लेकिन इनमें थोड़ी भिन्न क्षमताएं होती हैं। इन सभी का उपयोग VM को ईथरनेट नेटवर्क से जोड़ने के लिए किया जा सकता है:
- एक वर्चुअलाइजेशन उत्पाद ईथरनेट फ्रेम को अतिथि से ले सकता है और उन्हें TAP डिवाइस के लिए फ़ाइल डिस्क्रिप्टर में लिख सकता है। उस TAP डिवाइस को होस्ट द्वारा अपना स्वयं का IP पता सौंपा जा सकता है, या यह होस्ट के IP पते को साझा करने के लिए ईथरनेट इंटरफ़ेस के साथ एक पुल पर स्लैव किया जा सकता है, या NAT का उपयोग करके उस पर आगे के ट्रैफ़िक को iptables कॉन्फ़िगर किया जा सकता है।
- एक वर्चुअलाइजेशन उत्पाद उस अतिथि से फ़्रेम ले सकता है और उन्हें MACVTAP डिवाइस के लिए फ़ाइल डिस्क्रिप्टर में लिख सकता है; ये तब ईथरनेट डिवाइस की भौतिक परत पर सीधे प्रसारित हो जाते हैं, प्रभावी रूप से VM को "वास्तविक" ईथरनेट डिवाइस देते हैं (हालांकि ध्यान दें कि अन्य प्रकार के नेटवर्क इंटरफेस जैसे पुलों के लिए MACVLAN / MACVTAP डिवाइस बनाना संभव है)।
- एक वर्चुअलाइजेशन उत्पाद अतिथि में एक virtio ड्राइवर को बहुत कुशल नेटवर्किंग के लिए होस्ट में virtio ड्राइवर से जोड़ सकता है।