Ці методи роблять принципово різні речі. Щоб зрозуміти чому, потрібно зрозуміти шарувату модель мереж. Для наших цілей тут важливі шари 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 в хості для дуже ефективних мереж.