ट्यून / टैप बनाम ब्रिज + vnet बनाम मैकवाप के बीच क्या अंतर है? (वर्चुअलाइजेशन केवीएम के लिए)


28

मैंने केवीएम नेटवर्किंग करने के लिए बहुत सारे अलग-अलग तरीके खोजे हैं। लेकिन मैं इसके बारे में अटक गया हूं कि इसे करने का सही तरीका क्या है। मुझे पता चला कि ओपनस्टैक मैकट्रैप का उपयोग न्यूट्रॉन नेटवर्किंग करने के लिए करता है। और यह अच्छा लग रहा है।

लेकिन क्या अंतर है और प्रत्येक तरीके का उपयोग क्यों करना है।

रास्ता 1 [OLD TUN / TAP]

http://www.shakthimaan.com/installs/debian-tun-tap-setup.html

/--------\   /----\   /----\   /----\   /--------\
|Internet|---|eth0|---|br0 |---|tap0|---|Guest NIC
\--------/   \----/   \----/   \----/   \--------/

पदावनत, सही?

रास्ता 2 [ब्रिज + वीनेट] <- यही पुण्य-प्रबंधक करता है

http://www.linux-kvm.com/content/using-bridged-networking-virt-manager

मूल रूप से आप अपने भौतिक इंटरफ़ेस के साथ और अंदर एक पुल इंटरफ़ेस बनाते हैं

auto br0
#iface br0 inet dhcp
iface br0 inet static
address 172.16.0.100
network 172.16.0.0
netmask 255.255.0.0
broadcast 172.16.255.255
gateway 172.16.0.1
   bridge_ports eth2
   bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

और जब आप पुण्य-प्रबंधक से एक आभासी मशीन शुरू करते हैं तो एक vnet इंटरफ़ेस बनाया जाता है और पुल में जोड़ा जाता है। कम से कम जब तक मैं नहीं जानता। कोई ट्यून / टैप इंटरफ़ेस की आवश्यकता नहीं है।

लंबे समय तक इसने काफी अच्छा काम किया, लेकिन अब सॉसी के साथ मुझे समस्याएं मिलीं।

https://bugs.launchpad.net/ubuntu/+source/core-network/+bug/1255516

आप TAP इंटरफ़ेस के बिना पुल में एक नया vnet इंटरफ़ेस क्यों जोड़ सकते हैं?

रास्ता 3 [MACVTAP]

अंतिम macvtap इंटरफ़ेस है।

http://virt.kernelnewbies.org/MacVTap

यह TUN / TAP सॉफ़्टवेयर इंटरफ़ेस की प्रतिलिपि बनाता है लेकिन यह बेहतर तरीके से कार्य करता है। पता नहीं क्या तरीका है, लेकिन यह बेहतर हो रहा है।

दूसरे तरीके से मैकवैप का क्या फायदा?

बेहतर क्या है?

इस पर कोई मदद?

जवाबों:


4

यह वास्तव में निर्भर करता है कि आप वास्तव में क्या हासिल करना चाहते हैं

  • नल / ट्यून

कोई फर्क नहीं पड़ता कि यह वीएम या भौतिक मशीन है। TUN आपके लिए एक टनल नेटवर्क और TAP डिवाइस लाता है। संक्षेप में, आप किसी अन्य नेटवर्क तक पहुंचने के लिए एक सुरंग वाले नेटवर्क से गुजरते हैं।

उदाहरण के लिए, OpenVPN नेटवर्क को कॉन्फ़िगर करते समय, आपको अपने क्लाइंट पर 10.8.0.6 दिया जाएगा। वीपीएन सर्वर 10.8.0.1 आपके अनुरोध को दूसरे नेटवर्क (जैसे 192.168.xx) को पीछे छोड़ देता है। TAP का उपयोग करते समय, आपको सीधे अपने लक्ष्य नेटवर्क (192.168.10.x / 24) से एक IP (192.168.10.10/24) प्राप्त होगा। सरल।

  • पुल

"लिनक्स ब्रिज" शारीरिक ईथरनेट के लिए VNET (VM से) पुल। यदि आप एक वीएम (केवीएम आधारित) चाहते हैं, तो पुल होस्ट पर vnet और ईथरनेट के बीच होना चाहिए


Mmmmm। उत्तर के लिए धन्यवाद, लेकिन यह वास्तव में मेरी शंकाओं का समाधान नहीं करता है। यदि आप लिंक देखते हैं तो आप पाएंगे कि एक या दूसरे का उपयोग करने के अधिक कारण हैं। वास्तव में ब्रिजिंग अब vm के लिए मौजूदा लिनक्स स्टैक पर अच्छी तरह से काम नहीं कर रही है। इसलिए मुझे MACVTAP का उपयोग करना पड़ा।
गोंजालो एगुइलर डेलगाडो

2

मैं कहूंगा कि यह आपके उपयोग के मामले पर निर्भर करता है।

आभासी मेजबानों के स्वचालित जोड़ / विलोपन?

मैकवैप को एक कोशिश दें। मैकवलन की तुलना में प्रदर्शन करने वाला भी होना चाहिए (जो कि मोटे तौर पर एक भौतिक उपकरण में एक और मैक जोड़ने की तरह है, वहां पहुंचने वाले इन्फोटेक नेटवर्किंग स्टैक द्वारा संभाला जाता है) या एक अतिरिक्त पुल, चूंकि मैकवैटप किसी तरह नेटवर्क स्टैक को बायपास करता है और सीधे एक टैप कैरेक्टर डिवाइस को निर्यात करता है। लेकिन मुझे उस पर नीचे कील मत करो। दोनों (macvlan / macvtap) एक ही उपलब्ध मोड (VEPA / हेयरपिन, ब्रिडिंग, प्राइवेट) साझा करते हैं, हेयरपिनिंग केवल तभी काम करता है जब आपका स्विच चिंतनशील रिले मोड का समर्थन करता है। (पोर्ट x पर भौतिक स्विच पर पहुंचने वाले पैकेट को उसी पोर्ट x पर फिर से स्विच छोड़ने की अनुमति दी जानी चाहिए।)

क्योंकि एक पुल का उपयोग करते समय eth0 (या जो भी आप उपयोग करते हैं) को उचित मोड में डाल दिया जाता है, कहा जाता है कि macvXXX मोड में उच्चतर थ्रूपुट हैं।

मोड अलगाव की 'राशि' को भी परिभाषित करते हैं (क्या vhosts एक दूसरे को ट्रैफ़िक दिखा सकते हैं? Hv के बारे में कैसा है)। यह हुड के तहत कैसे काम करता है मुझे अभी तक नहीं पता है।

वीथ (वर्चुअल ईथरनेट जोड़े) अलगाव के लिए कुछ समान हैं, आप दो वर्चुअल इंटरफेस को परिभाषित करते हैं, एक पुल से जुड़ा होता है, दूसरा आपके वीएम से। वहाँ vm- इंटरफ़ेस को स्वयं के नामस्थान में रखकर पृथक्करण किया जाता है ताकि उपकरण कुछ अलग-थलग हों। सभी ट्रैफ़िक पुल पर एक साथ आते हैं, लेकिन एक vhost दूसरे का vNIC नहीं देख सकता है।

यदि आप एक पुल के साथ काम करते हैं, तो आपके पास करने के लिए अतिरिक्त कॉन्फ़िगरेशन है, और जब पुल नीचे है, तो आपके सभी कनेक्शन हैं। ब्रिज को वापस लाते समय, आपको सभी वर्चुअल इंटरफेस को फिर से ब्रिज पर फिर से कनेक्ट करना पड़ सकता है (या सिर्फ पूरा hv रिबूट करें ...)।

नीचे पंक्ति: यदि आप अपनी टोपोलॉजी को अक्सर नहीं बदलते हैं, तो बस ब्रिजिंग के साथ जाएं क्योंकि आपको इस पर सबसे अधिक जानकारी ऑनलाइन मिलती है, जो कर्नेल कोड को पढ़ने से बेहतर है। हेक, यहां तक ​​कि iproute2-doc पैकेज में ही अधिकांश जानकारी का अभाव है iproute2 वास्तव में है, तब भी जब आप ब्लीडिंग-एज संस्करण चलाते हैं। man ip-tcp_metricsउपलब्ध मैनपेज़ या ip-crefs.ps के बारे में जानने की कोशिश करें ...


मैं यह भी नहीं लिख रहा हूँ, बहुत कम जहाँ मुझे वह सारी जानकारी मिली। :(
सेज

0

ये तरीके मौलिक रूप से अलग-अलग चीजें कर रहे हैं। यह समझने के लिए कि, आपको नेटवर्किंग के स्तरित मॉडल को समझने की आवश्यकता क्यों है। यहाँ हमारे उद्देश्यों के लिए, परत 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 ड्राइवर से जोड़ सकता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.