Jaka jest różnica między tun / tap vs bridge + vnet vs macvtap? (W przypadku wirtualizacji KVM)

28

Właśnie znalazłem wiele różnych sposobów tworzenia sieci KVM. Ale utknąłem na tym, jaki sposób to zrobić. Odkryłem, że openstack używa macvtap do tworzenia sieci neutronowych. I wygląda dobrze.

Ale jaka jest różnica i dlaczego korzystać z każdej strony.

Sposób 1 [STARY? TUN / TAP]

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

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

Przestarzałe, prawda?

Way 2 [Bridge + Vnet] <- Tak właśnie robi virt-manager

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

Zasadniczo tworzysz interfejs pomostowy z fizycznym interfejsem wewnątrz i

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

A kiedy uruchamiasz maszynę wirtualną z virt-manager, interfejs vnet jest tworzony i dodawany do mostu. Przynajmniej dopóki nie wiem. Nie jest wymagany interfejs tun / tap.

Przez długi czas działało całkiem dobrze, ale teraz z pyskatą mam problemy.

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

Dlaczego możesz dodać nowy interfejs vnet do mostu bez interfejsu TAP?

Sposób 3 [MACVTAP]

Ostatni to interfejs macvtap.

http://virt.kernelnewbies.org/MacVTap

Kopiuje interfejs oprogramowania TUN / TAP, ale robi to w lepszy sposób. Nie wiem w jaki sposób, ale wydaje się, że jest lepiej.

Jaka jest przewaga macvtap nad drugim sposobem?

Co lepsze?

Jakaś pomoc na ten temat?

Gonzalo Aguilar Delgado
źródło

Odpowiedzi:

4

To naprawdę zależy od tego, co dokładnie chcesz osiągnąć

  • TAP / TUN

Nie ma znaczenia, że ​​jest to maszyna wirtualna lub fizyczna. TUN oferuje tunelowaną sieć i TAP urządzenie. Krótko mówiąc, przechodzisz przez sieć tunelowaną, aby dotrzeć do innej sieci.

Na przykład podczas konfigurowania sieci OpenVPN otrzymasz od klienta 10.8.0.6. Serwer VPN 10.8.0.1 kieruje twoje żądanie do innej sieci (np. 192.168.xx) z tyłu. Korzystając z TAP, otrzymasz adres IP (192.168.10.10/24) bezpośrednio z sieci docelowej (192.168.10.x / 24). Prosty.

  • Most

„Linux Bridge” łączy VNET (z VM) z fizycznym ethernetem. Jeśli potrzebujesz maszyny wirtualnej (opartej na KVM), konieczny jest most pomiędzy vnet i ethernet na hoście

j3ffyang
źródło
MMmmm. Dziękuję za odpowiedź, ale tak naprawdę nie rozwiązuje moich wątpliwości. Jeśli zobaczysz linki, przekonasz się, że istnieje więcej powodów, aby użyć jednego lub drugiego. W rzeczywistości mostkowanie nie działa teraz dobrze na bieżącym stosie linux dla vm. Musiałem więc użyć MACVTAP.
Gonzalo Aguilar Delgado,
2

Powiedziałbym, że to zależy od twojego przypadku użycia.

Zautomatyzowane dodawanie / usuwanie wirtualnych hostów?

Spróbuj macvtap. Powinny być również wydajniejsze niż macvlan (co jest mniej więcej tak, jak dodanie kolejnego MAC do urządzenia fizycznego, informacje przychodzące tam są obsługiwane przez stos sieciowy) lub dodatkowy most, ponieważ macvtap omija stos sieciowy i eksportuje bezpośrednio urządzenie znakowe. Ale nie dręcz mnie tym. Poza tym oba (macvlan / macvtap) współużytkują te same dostępne tryby (VEPA / spinka do włosów, mostkowanie, prywatne), spinanie włosów działa tylko wtedy, gdy twój przełącznik obsługuje tryb przekaźnika odblaskowego. (Pakiety docierające do fizycznego przełącznika na porcie x muszą mieć możliwość opuszczenia przełącznika ponownie na tym samym porcie x.)

Ponieważ eth0 (lub cokolwiek, którego używasz) jest przełączany w tryb rozwiązawczy podczas korzystania z mostu, mówi się, że tryby macvXXX mają wyższą przepustowość.

Tryby określają również „stopień” izolacji (czy vhosty widzą się nawzajem w ruchu? A co z HV?). Jak to działa pod maską jeszcze nie wiem.

veth (wirtualne pary ethernetowe) są nieco podobne do izolacji, definiujesz dwa wirtualne interfejsy, jeden zostaje przymocowany do mostu, drugi do twojej maszyny wirtualnej. Tam izolacja odbywa się poprzez umieszczenie interfejsu vm we własnej przestrzeni nazw, aby urządzenia były nieco odizolowane. Cały ruch zbiera się na moście, ale jeden vhost nie widzi innych vNIC.

Jeśli pracujesz z mostem, musisz wykonać dodatkową konfigurację, a kiedy most jest wyłączony, wszystkie połączenia są dostępne. Podczas przywracania mostu może być konieczne ponowne podłączenie wszystkich wirtualnych interfejsów do mostu (lub po prostu zrestartowanie pełnego hv ...).

Konkluzja: Jeśli nie zmieniasz często swojej topologii, po prostu przejdź do mostkowania, ponieważ znajdziesz najwięcej informacji w Internecie, co jest lepsze niż czytanie kodu jądra. Heck, nawet sam pakiet iproute2-doc nie ma większości informacji, które faktycznie posiada iproute2, nawet jeśli korzystasz z najnowocześniejszych wersji. Spróbuj dowiedzieć się o tym man ip-tcp_metricsz dostępnych stron lub ip-crefs.ps ...

sjas
źródło
Nawet nie pamiętam, żeby to pisać, tym bardziej, gdy znalazłem wszystkie te informacje. :(
sjas
0

Te metody robią zasadniczo różne rzeczy. Aby zrozumieć dlaczego, musisz zrozumieć warstwowy model sieci. Dla naszych celów tutaj warstwy 1, 2 i 3 są ważne:

  • Warstwa 1 jest warstwą fizyczną - określa takie rzeczy, jak kable, których można użyć, jakie wzorce napięcia / prądu reprezentują wartości 1 i 0 na tym kablu, jak urządzenia na każdym końcu kabla negocjują, przy jakiej prędkości bitowej działają i tak dalej.
  • Warstwa 2 jest warstwą łącza - określa, w jakim języku rzeczy na każdym końcu kabla rozmawiają ze sobą. Urządzenia Ethernet na tej warstwie mają takie elementy, jak ramki i adresy MAC.
  • Warstwa 3 jest warstwą sieciową - określa, w jaki sposób urządzenia używają bezpośredniego łącza warstwy 2 do innego urządzenia, aby dotrzeć do trzeciego urządzenia, do którego nie mogą dotrzeć bezpośrednio w warstwie 2. Urządzenia w tej warstwie mają adresy IP i tabele routingu.

MACVLAN / MACVTAP

MACVLAN tworzy wirtualne urządzenie warstwy 2 lub warstwy łącza z własnym adresem MAC, który dzieli warstwę 1 lub warstwę fizyczną z istniejącym urządzeniem. Najbardziej zrozumiałym przypadkiem jest podłączenie urządzenia Ethernet do sieci i utworzenie urządzenia MACVLAN na podstawie tego urządzenia Ethernet; teraz masz dwa „urządzenia” Ethernetowe o różnych adresach MAC, ale oba przesyłają swoje ramki tym samym kablem. Porozmawiam o MACVTAP nieco dalej.

Interfejsy MACVLAN mogą oddziaływać na kilka różnych sposobów z istniejącym interfejsem Ethernet, w szczególności gdy ramka pojawia się na jednym z interfejsów, który jest adresem do drugiego:

  • W trybie prywatnym ramka jest wyrzucana; oba interfejsy nie mogą się ze sobą komunikować, tylko z urządzeniami zewnętrznymi.
  • W trybie vepa ramka jest przesyłana przez warstwę fizyczną, jak każda inna ramka. Jeśli masz urządzenie podłączone do przełącznika, który jest wystarczająco sprytny, aby wykryć, że ramka musi zostać odesłana z powrotem przez ten sam port, do którego przybył, wtedy zostanie odebrana przez tę samą warstwę fizyczną, która ją wysłała, a następnie warstwa 2 będzie użyj MAC, aby wysłać go do zamierzonego interfejsu sieciowego.
  • W trybie mostu , gdy ramka pojawia się na jednym urządzeniu, sprawdza się, czy jest przeznaczona dla drugiego, a jeśli tak, to jest tam przesyłana bez przechodzenia przez warstwę 1.
  • Istnieje również kilka bardziej niejasnych trybów.

Należy pamiętać, że interfejsy MACVLAN mają ważne ograniczenie: nie są one zdolne do uczenia się adresów. Nie można więc zmostkować interfejsu MACVLAN z drugim urządzeniem fizycznym i oczekiwać, że będzie można uzyskać dostęp do tego drugiego urządzenia fizycznego przez pierwsze. Działa to z oryginalnym interfejsem Ethernet, ale nie z podłączonym do niego interfejsem MACVLAN.

TUN / TAP

Interfejs TAP jest również nowym wirtualnym urządzeniem warstwy 2, ale bez dołączonej warstwy 1. Zamiast tego program może uzyskać deskryptor pliku reprezentujący warstwę fizyczną. Następnie może zapisać surowe dane ramki Ethernet do tego deskryptora pliku, a jądro będzie traktować je jak każdy inny pakiet Ethernet otrzymany na prawdziwym interfejsie fizycznym.

Wielką zaletą interfejsów TAP jest to, że warstwa fizyczna jest w trybie użytkownika; dowolne oprogramowanie z odpowiednimi uprawnieniami może generować ramki Ethernet w dowolny sposób i wrzucić je w coś, co jądro traktuje tak samo jak prawdziwy interfejs fizyczny. To sprawia, że ​​są bardzo przydatne w takich rzeczach jak VPN i tunelowanie; możesz pisać dowolne oprogramowanie do tunelowania w przestrzeni użytkownika i nie ma potrzeby wtrącania się w przestrzeń jądra, aby wprowadzić ramki do stosu sieciowego, wystarczy utworzyć urządzenie TAP i zapisać ramki w deskryptorze pliku.

Urządzenia TUN są takie same jak urządzenia TAP, tyle że działają na warstwie 3 zamiast na warstwie 2, a oprogramowanie trybu użytkownika musi zapisywać surowe pakiety IP w deskryptorze plików zamiast surowych ramek Ethernet.

Wracając do urządzeń MACVTAP , są one swego rodzaju pomieszaniem między interfejsami MACVLAN i TAP. Podobnie jak interfejsy TAP, program trybu użytkownika może uzyskać deskryptor pliku i zapisać w nim surowe ramki Ethernet. Ramki te, podobnie jak interfejs MACVLAN, są następnie przesyłane przez fizyczną warstwę rzeczywistego urządzenia Ethernet. Umożliwia to łatwe dostosowanie oprogramowania napisanego do korzystania z urządzeń TAP do korzystania z urządzenia MACVLAN.

VNet

Jest to koncepcyjnie podobne do sieci TUN / TAP, ale ma bardziej rozwiniętą płaszczyznę sterowania (dzięki czemu oprogramowanie w trybie użytkownika może konfigurować interfejs bardziej elastycznie) i bardziej zoptymalizowaną płaszczyznę danych (dzięki czemu można przenosić dane przez wirtualne urządzenie sieciowe więcej wydajnie).

Wszystkie z nich robią podobne rzeczy, ale mają nieco inne możliwości. Wszystkie z nich można wykorzystać do podłączenia maszyny wirtualnej do sieci Ethernet:

  • Produkt wirtualizacji może pobierać ramki Ethernet od gościa i zapisywać je w deskryptorze pliku dla urządzenia TAP. To urządzenie TAP może zostać przypisane przez hosta do własnego adresu IP lub może zostać podłączone do mostu wraz z interfejsem Ethernet w celu współdzielenia adresu IP hosta, lub można skonfigurować iptables do przekazywania ruchu na nim za pomocą NAT.
  • Produkt do wirtualizacji może łączyć ramki Ethernet od gościa i zapisywać je w deskryptorze pliku dla urządzenia MACVTAP; są one następnie przesyłane bezpośrednio w warstwie fizycznej urządzenia Ethernet, co skutecznie daje maszynie wirtualnej „rzeczywiste” urządzenie Ethernet (choć należy pamiętać, że możliwe jest tworzenie urządzeń MACVLAN / MACVTAP dla innych typów interfejsów sieciowych, takich jak mosty).
  • Produkt wirtualizacji może połączyć sterownik virtio u gościa ze sterownikiem virtio na hoście, aby uzyskać bardzo wydajną sieć.
Tomek
źródło