Виртуальные сетевые устройства в Linux

Может кто-нибудь объяснить подробно, каковы различия между парами veth и коснитесь интерфейсов и как эти устройства подключаются к мосту linux или openvswitch.

Я нашел это: "Veth - это специальные сетевые устройства, созданные в паре, я рассматриваю его как способ изменения направления трафика, то есть когда трафик направления направления отправляется на устройство veth из стека протоколов Linux, он был отправлен другому его зеркалу veth, поэтому зеркало рассматривает его как направленный трафик и возвращает его в стек протокола Linux для дальнейшего использования.

Устройство Tap является логическим сетевым устройством, но отличается от другого: он позволяет программе пользовательского пространства напрямую вставлять трафик в стек протоколов Linux, а также получать трафик из стека. Он открывает туннель для стека протоколов Linux на уровне 2 (или туннеле на уровне 3) в пользовательском пространстве, стек будет рассматривать данные из пользовательского пространства, как в направлении трафика "

но это не дало мне всей картины.

заблаговременно!

Ответы

Ответ 1

Цель этих виртуальных сетевых артефактов аналогична. Но есть тонкие различия и, следовательно, они используются в разных обстоятельствах:

  • TAP: приложение /VM для пользовательского пространства может считывать или записывать кадр ethernet на интерфейс перехода, и он достигнет ядра ядра, где он будет обрабатываться, как и любой другой ethernet который достиг ядра через физические (например, eth0) порты. Вы можете добавить его в программный мост (например, linux-bridge)

  • VETH. Обычно используется, когда вы пытаетесь подключить два объекта, которые хотели бы "схватить" (из-за отсутствия лучшей фразы) интерфейс для пересылки/приема кадров. Эти объекты могут быть контейнерами/мостами/ovs-switch и т.д. Предположим, вы хотите подключить контейнер докеров /lxc к OVS. Вы можете создать пару veth и нажать первый интерфейс на docker/lxc (скажем, как физический интерфейс) и нажать другой интерфейс для OVS. Вы не можете сделать это с помощью TAP.

Обратите внимание, что мы не должны неверно истолковывать, что нам нужно использовать VETH и не использовать при использовании OVS. Мы всегда можем создавать внутренние порты в OVS, которые ведут себя точно так же, как интерфейс крана. Но это не всегда возможно, например, когда вы хотите подключиться к объекту, который не может синтезировать подобный краску интерфейс. То есть:.

$ ovs-vsctl add-port ovs-switch-name tap0

Теперь вы можете использовать tap0, как мы используем интерфейсы крана.

Ответ 2

Интерфейсы подключений Linux, созданные с помощью ip tuntap, не могут быть использованы для присоединения пространств имен сетей к linuxbridges или openvswitch, поэтому нам нужно зависеть от пары veth.

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

Устройство TAP, такое как vnet0, - это то, как гипервизоры, такие как KVM и Xen, реализуют виртуальную сетевую карту интерфейса (, обычно называемую VIF или vNIC). Кадр Ethernet, отправленный на устройство TAP, принимается гостевой операционной системой.