Яка різниця між tun / tap vs bridge + vnet vs macvtap? (Для віртуалізації KVM)


28

Я щойно знайшов багато різних способів зробити KVM-мережу. Але я застряг у тому, що це правильний спосіб зробити це. Я виявив, що Opentack використовує macvtap для створення нейтронних мереж. І це добре виглядає.

Але в чому різниця і навіщо використовувати кожен спосіб.

Шлях 1 [СТАРИЙ? TUN / TAP]

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

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

Застаріло, правда?

Шлях 2 [Bridge + Vnet] <- Ось що робить virt-менеджер

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

І коли ви запускаєте віртуальну машину від virt-менеджера, створюється інтерфейс vnet і додається до мосту. Принаймні, доки я не знаю. Інтерфейс настройки тун / дотик не потрібен.

Він працював досить довго, але зараз з пікантністю я знайшов проблеми.

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

Чому ви можете додати новий інтерфейс vnet до мосту без інтерфейсу TAP?

Шлях 3 [MACVTAP]

Останній - інтерфейс macvtap.

http://virt.kernelnewbies.org/MacVTap

Він копіює інтерфейс програмного забезпечення TUN / TAP, але це робить кращим чином. Не знаю, яким шляхом, але, здається, краще.

Яка перевага macvtap над другим способом?

Що краще?

Будь-яка допомога з цього приводу?

Відповіді:


4

Це дійсно залежить, чого саме ви хочете досягти

  • TAP / TUN

Не має значення це VM чи фізична машина. TUN приносить вам тунельну мережу та TAP-пристрій. Коротше кажучи, ви проходите через тунельну мережу, щоб вийти в іншу мережу.

Наприклад, під час налаштування мережі OpenVPN вам буде надано 10.8.0.6 для вашого клієнта. Сервер VPN 10.8.0.1 спрямовує ваш запит до іншої мережі (наприклад, 192.168.xx) позаду. Використовуючи TAP, ви отримаєте IP (192.168.10.10/24) безпосередньо від цільової мережі (192.168.10.x / 24). Простий.

  • Міст

"Linux Bridge" мости VNET (від VM) до фізичної мережі. Якщо ви хочете VM (на базі KVM), міст є обов'язковим між vnet та ethernet на хості


ММммм. Дякую за відповідь, але це насправді не вирішує моїх сумнівів. Якщо ви побачите посилання, ви побачите, що є більше причин використовувати те чи інше. Насправді мостинг зараз не працює добре на поточному стеку Linux для vm. Тому мені довелося користуватися MACVTAP.
Гонсало Агілар Дельгадо,

2

Я б сказав, що це залежить від вашого випадку використання.

Автоматизовані додавання / видалення віртуальних хостів?

Спробуйте macvtap. Слід також performanter ніж macvlan (це приблизно як додавання інший MAC до фізичного пристрою, інформація про які прибувають там обробляються мережевий стек) або додатковий міст, а macvtap обходить мережевий стек як - то і експортує пристрої символ крана безпосередньо. Але не прикувай мене до цього. Крім того, що обидва (macvlan / macvtap) мають однакові доступні режими (VEPA / шпилька, мостикові, приватні), шпилька працює лише у тому випадку, якщо ваш перемикач підтримує рефлекторний режим реле. (Пакетам, що надходять на фізичний перемикач на порт x, слід дозволити знову залишати комутатор на тому ж порту x.)

Оскільки eth0 (або той, який ви використовуєте) переводиться в розмитий режим при використанні моста, мовляв, режими macvXXX мають більш високу пропускну здатність.

Режими також визначають "кількість" ізоляції (чи можуть хто-небудь побачити трафік один одного? Як щодо HV?). Як це працює під капотом, я поки не знаю.

veth's (віртуальні пари Ethernet) дещо схожі за ізоляцією, ви визначаєте два віртуальних інтерфейси, один приєднується до мосту, а інший до вашої VM. Там ізоляція робиться шляхом введення інтерфейсу vm у власний простір імен, тому пристрої дещо ізольовані. Весь трафік збирається на мосту, але один vhost не може побачити vNIC іншого.

Якщо ви працюєте з мостом, у вас є додаткова конфігурація, і коли міст не працює, такі і всі ваші з'єднання. При поверненні моста до резервного копіювання, можливо, вам доведеться знову підключити всі віртуальні інтерфейси до мосту (або просто перезавантажити повний hv ...).

Підсумок: Якщо ви часто не змінюєте топологію, просто переходьте до мосту, оскільки ви знайдете в Інтернеті найбільшу інформацію про це, що краще, ніж читання коду ядра. Хек, навіть у пакеті iproute2-doc не вистачає більшості інформації, яку насправді має iproute2, навіть коли ви користуєтесь крайніми версіями. Спробуйте дізнатися про man ip-tcp_metricsдоступні довідки або ip-crefs.ps ...


Я навіть не пам'ятаю, як писати це, тим більше, де я знайшов всю цю інформацію. :(
sjas

0

Ці методи роблять принципово різні речі. Щоб зрозуміти чому, потрібно зрозуміти шарувату модель мереж. Для наших цілей тут важливі шари 1, 2 і 3:

  • Шар 1 - це фізичний рівень - він визначає такі речі, як, які кабелі ви можете використовувати, які схеми напруги / струму позначають 1 і 0 на цьому кабелі, як пристрої на кожному кінці кабелю узгоджують, якою швидкістю передачі вони працюють і так далі.
  • Шар 2 - це шар зв'язку - це вказує, які мовні речі на кожному кінці кабелю розмовляють один з одним. Пристрої Ethernet на цьому шарі мають такі речі, як кадри та MAC адреси.
  • Рівень 3 - це мережевий рівень - це визначає, як пристрої використовують пряму посилання рівня 2 до іншого пристрою, щоб дістатись до третього пристрою, до якого вони не можуть безпосередньо дійти на рівні 2. Пристрої цього рівня мають IP-адреси та таблиці маршрутизації.

MACVLAN / MACVTAP

MACVLAN створює віртуальний рівень 2 або пристрій рівня шару зв’язку із власною MAC-адресою, яка розділяє рівень 1 або фізичний рівень з існуючим пристроєм. Найбільш зрозумілий випадок, коли у вас підключений до мережі Ethernet пристрій, і ви створюєте пристрій MACVLAN на основі цього пристрою Ethernet; тепер у вас є два "пристрої" Ethernet з різними MAC-адресами, але вони обидва передають свої кадри по одному кабелю. Я розповім про MACVTAP трохи далі.

Інтерфейси MACVLAN можуть взаємодіяти декількома різними способами з існуючим інтерфейсом Ethernet, зокрема, коли кадр з'являється на одному з інтерфейсів, який адресований іншому:

  • В приватному режимі кадр викидається; неможливо, щоб два інтерфейси спілкувалися між собою, лише із зовнішніми пристроями.
  • У режимі vepa кадр надсилається над фізичним шаром, як і будь-який інший кадр. Якщо у вас пристрій підключено до комутатора, який є досить розумним, щоб помітити, що кадр потрібно повернути назад у той самий порт, на який він прийшов, він отримає той самий фізичний рівень, який його надіслав, і тоді шар 2 буде використовуйте MAC, щоб надіслати його до призначеного мережевого інтерфейсу.
  • У мостовому режимі, коли кадр з’являється на одному пристрої, він перевіряється, чи призначений він для іншого, і якщо так, він надсилається туди, не проходячи через шар 1.
  • Також є ще кілька незрозумілих режимів.

Зауважте, що інтерфейси MACVLAN мають важливе обмеження: вони не здатні навчатись адресам. Таким чином, ви не можете перемикати інтерфейс MACVLAN на другий фізичний пристрій і очікуєте, що зможете досягти цього другого фізичного пристрою над першим. Це працює з оригінальним інтерфейсом Ethernet, але не з приєднаним до нього інтерфейсом MACVLAN.

TUN / TAP

Інтерфейс TAP - це також новий віртуальний пристрій рівня 2, але до нього не додається шар 1. Натомість програма може отримати дескриптор файлів, що представляє фізичний рівень. Потім він може записувати необроблені дані кадру Ethernet у цей дескриптор файлу, і ядро ​​буде обробляти його, як і будь-який інший пакет Ethernet, який він отримує у реальному фізичному інтерфейсі.

Найважливіше в інтерфейсах TAP - фізичний рівень знаходиться в режимі користувача; будь-який біт програмного забезпечення з відповідними дозволами може генерувати кадри Ethernet будь-яким способом, який йому подобається, і встромляти їх у те, що ядро ​​трактує так само, як і реальний фізичний інтерфейс. Це робить їх дуже корисними для таких речей, як VPN та тунелювання; ви можете писати будь-яке програмне забезпечення для тунелювання, яке вам подобається, в просторі користувачів, і немає необхідності втручатися в простір ядра, щоб потрапити кадри в мережевий стек, ви просто створите пристрій TAP і записуєте кадри в його дескриптор файлів.

Пристрої TUN так само, як пристрої TAP, за винятком того, що вони працюють на рівні 3 замість рівня 2, і програмне забезпечення в режимі користувача повинно записувати необроблені пакети IP в дескриптор файлів замість сирих кадрів Ethernet.

Повертаючись до пристроїв MACVTAP , це свого роду змішування між інтерфейсами MACVLAN та TAP. Як і інтерфейси TAP, програма в режимі користувача може отримати дескриптор файлів і записати в нього сирі кадри Ethernet. Як і в інтерфейсі MACVLAN, ці кадри потім надсилаються через фізичний рівень реального пристрою Ethernet. Це дозволяє легко адаптувати програмне забезпечення, написане для використання пристроїв TAP для використання пристрою MACVLAN.

VNet

Це концептуально схоже на мережу TUN / TAP, але має більш розвинену площину управління (тому програмне забезпечення в режимі користувача, яке використовує його, може гнучкіше налаштувати інтерфейс) та більш оптимізовану площину даних (так що ви можете переміщувати дані через віртуальний мережевий пристрій більше ефективно).

Усі вони роблять подібні речі, але мають дещо інші можливості. Усі вони можуть бути використані для підключення VM до мережі Ethernet:

  • Продукт віртуалізації може приймати у гостя кадри Ethernet і записувати їх у дескриптор файлів для пристрою TAP. Цей TAP-пристрій може призначити хост власною IP-адресою, або він може вестись на містку разом з інтерфейсом Ethernet для спільного використання IP-адреси хоста, або iptables можуть бути налаштовані для пересилання трафіку на ньому за допомогою NAT.
  • Продукт віртуалізації може, що Ethernet обрамляє від гостя і записує їх у дескриптор файлу для пристрою MACVTAP; Потім вони передаються безпосередньо на фізичний рівень пристрою Ethernet, ефективно надаючи VM "справжній" пристрій Ethernet (хоча зауважте, що можна створити пристрої MACVLAN / MACVTAP для інших типів мережевих інтерфейсів, таких як мости).
  • Продукт віртуалізації може підключити драйвер virtio в гості до драйвера virtio в хості для дуже ефективних мереж.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.