В чем разница между настройками Tun / Tap против Bridge + Vnet и Macvtap? (Для виртуализации KVM)

Я только что нашел много разных способов создания сетей KVM. Но я застрял о том, как правильно это сделать. Я обнаружил, что openstack использует macvtap для создания нейтронных сетей. И это выглядит хорошо.

Но в чем разница и зачем использовать каждый способ.

Способ 1 [СТАРЫЙ? TUN / TAP]

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

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

Устаревший, верно?

Способ 2 [Bridge + Vnet] < - это то, что делает virt-manager

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-manager, создается интерфейс vnet и добавил к мосту. По крайней мере, до тех пор, пока я не знаю. Интерфейс TUN / TAP не требуется.

Это работало довольно долго, но теперь с дерзостью я обнаружил проблемы.

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

Почему вы можете добавить новый интерфейс vnet на мост без интерфейс TAP?

Способ 3 [MACVTAP]

Последний - это интерфейс Macvtap.

http://virt.kernelnewbies.org/MacVTap

Копирует программный интерфейс TUN / TAP, но делает это лучше. Не знаю, как, но, похоже, лучше.

В чем преимущество macvtap перед вторым способом?

Что лучше?

Любая помощь в этом?

28
задан 28 November 2013 в 00:22

3 ответа

Это действительно зависит от того, что именно вы хотите достичь

  • TAP / TUN

Не имеет значения, виртуальная машина или физическая машина. TUN приносит вам туннелированную сеть и TAP устройство. Короче говоря, вы проходите через туннельную сеть, чтобы связаться с другой сетью.

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

  • Мост

«Мост Linux» соединяет VNET (от ВМ) до физического Ethernet. Если вам нужна виртуальная машина (на основе KVM), необходимо использовать мост между vnet и ethernet на хосте

0
ответ дан 28 November 2013 в 00:22

Я бы сказал, что это зависит от вашего варианта использования.

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

Попробуйте macvtap. Должен ли быть также более производительным, чем macvlan (что примерно соответствует добавлению другого MAC к физическому устройству, информация, поступающая туда, обрабатывается сетевым стеком) или дополнительным мостом, поскольку macvtap как-то обходит сетевой стек и экспортирует нажмите символьное устройство напрямую. Но не приставай ко мне. Помимо того, что оба (macvlan / macvtap) используют одни и те же доступные режимы (VEPA / шпилька, мостовой режим, приватный), шпилька работает только в том случае, если ваш коммутатор поддерживает режим отражательного реле. (Пакеты, поступающие на физический коммутатор через порт x, должны иметь возможность снова покинуть коммутатор через тот же порт x.)

Поскольку eth0 (или любой другой используемый вами) переводится в смешанный режим при использовании моста Говорят, что режимы macvXXX имеют более высокую пропускную способность.

Режимы также определяют «количество» изоляции (могут ли vhosts видеть трафик друг друга? Как насчет hv?). Как это работает под капотом, я пока не знаю.

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

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

Итог: если вы не часто меняете свою топологию, просто переходите к мостовому соединению, поскольку вы найдете в нем наибольшую информацию, что лучше, чем чтение кода ядра. Черт возьми, даже самому пакету iproute2-doc не хватает большей части информации, которую действительно имеет iproute2, даже когда вы запускаете новейшие версии. Попробуйте узнать о man ip-tcp_metrics из доступных manpages или ip-crefs.ps ...

0
ответ дан 28 November 2013 в 00:22

Эти методы делают принципиально разные вещи. Чтобы понять, почему, вам нужно понять многоуровневую модель сети. Для наших целей здесь важны уровни 1, 2 и 3:

  • Уровень 1 - это физический уровень - он определяет такие вещи, как то, какие кабели вы можете использовать, какие схемы напряжения / тока представляют единицы и нули на этом кабеле, как устройства на каждом конце кабеля согласовывают скорость передачи данных и т. д.
  • Уровень 2 - это канальный уровень - он определяет, на каком языке устройства на каждом конце кабеля разговаривают друг с другом. Устройства Ethernet на этом уровне имеют такие вещи, как фреймы и MAC-адреса.
  • Уровень 3 - это сетевой уровень - он определяет, как устройства используют прямую ссылку уровня 2 на другое устройство для доступа к третьему устройству, к которому они не могут напрямую подключиться на уровне 2. Устройства на этом уровне имеют IP-адреса и таблицы маршрутизации.

MACVLAN / MACVTAP

MACVLAN создает устройство виртуального уровня 2 или канального уровня со своим собственным MAC-адресом, которое разделяет уровень 1 или физический уровень с существующим устройством. Наиболее понятный случай - это когда у вас есть устройство Ethernet, подключенное к сети, и вы создаете устройство MACVLAN на основе этого устройства Ethernet; теперь у вас есть два «устройства» Ethernet с разными MAC-адресами, но оба передают свои кадры по одному и тому же кабелю. Я расскажу о MACVTAP чуть позже.

Интерфейсы MACVLAN могут по-разному взаимодействовать с существующим интерфейсом Ethernet, в частности, когда на одном из интерфейсов появляется кадр, который адресуется другому:

  • В частном режиме, рама выброшена; два интерфейса не могут взаимодействовать друг с другом, только с внешними устройствами.
  • В режиме вепа кадр отправляется через физический уровень, как и любой другой кадр. Если у вас есть устройство, подключенное к коммутатору, который достаточно умен, чтобы определить, что затем фрейм нужно отправить обратно через тот же порт, на который он прибыл, тогда он будет получен тем же физическим уровнем, который его отправил, а затем уровень 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, но имеет более развитую плоскость управления (так что программное обеспечение пользовательского режима, использующее ее, может более гибко настраивать интерфейс) и более оптимизированную плоскость данных (так что вы можете перемещать данные через виртуальное сетевое устройство более эффективно).

Все они делают похожие вещи, но имеют немного разные возможности. Все они могут использоваться для подключения виртуальной машины к сети Ethernet:

  • Продукт виртуализации может принимать кадры Ethernet от гостя и записывать их в файловый дескриптор для устройства TAP. Этому устройству TAP может быть назначен собственный IP-адрес хостом, или оно может быть подчинено мосту вместе с интерфейсом Ethernet для совместного использования IP-адреса хоста, или iptables может быть настроен для пересылки трафика на нем с помощью NAT.
  • Продукт виртуализации может передавать кадры Ethernet от гостя и записывать их в файловый дескриптор для устройства MACVTAP; затем они передаются непосредственно на физический уровень устройства Ethernet, фактически предоставляя виртуальной машине «настоящее» устройство Ethernet (хотя обратите внимание, что можно создавать устройства MACVLAN / MACVTAP для других типов сетевых интерфейсов, таких как мосты).
  • Продукт виртуализации может подключать драйвер virtio в гостевой системе к драйверу virtio на хосте для очень эффективной работы в сети.
4
ответ дан 2 December 2019 в 10:46

Другие вопросы по тегам:

Похожие вопросы: