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?
źródło
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_metrics
z dostępnych stron lub ip-crefs.ps ...źródło
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:
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:
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:
źródło