Почему ed начинается с последней строки?

How exactly are the virtual-machine interface and the TAP device in host machine connected?

qemu(или программа-оболочка, которая запускает qemuили другой симулятор )сначала открывает /dev/net/tunустройство мультиплексор . Это возвращает дескриптор файла, который можно было бы подключить к интерфейсу TAP, вызвав ioctl(TUNSETIFF)на этом fd с именем интерфейса TAP в поле ifreq->ifr.name.

Это не удастся, если TAP-интерфейс с таким именем уже был подключен таким образом.

Затем fd можно использовать для записи пакетов, которые будут отображаться на интерфейсе TAP, как если бы они были получены с удаленной стороны, и чтения пакетов, которые были маршрутизированы ядром через интерфейс TAP.

Если вызывающий процесс имеет возможность CAP_NET_ADMIN(, например root), а TAP-интерфейс с таким именем еще не существует, он будет создан автоматически. Если имя не указано, будет использовано первое свободное имя.

Тот факт, что /dev/net/tunявляется мультиплексором, означает, что open()на нем будет каждый раз возвращать дескриптор другой «удаленной половины». И эта «удаленная половина» может быть подключена к одному TAP-интерфейсу.

Кроме того, как и любой другой файловый дескриптор, он может быть передан другой программе, если эта программа может использовать его таким образом (, как qemuс опцией -netdev tap,fd=FD).

См. пример очень простой opentapфункции в этом ответе .

Дополнительные сведения + пример кода в tuntap.txt из документации ядра.

Or is there only one TAP device? If yes, then how are the MAC addresses different?

Нет, для каждого клиента существует отдельное устройство. Вы можете подключить несколько TAP-устройств к одному и тому же интерфейсу с помощью моста на хосте.

However, there is a TAP device in host machine with the same vnet0 name.....but with different MAC address:

Интерфейсы хоста и гостя совершенно разные; думайте об этом как о виртуальном кабеле UTP --, где каждое устройство на обоих концах имеет свой собственный MAC-адрес.

-device...,mac=...устанавливает аппаратный адрес эмулируемого устройства на гостевой , а не TAP-устройства на хосте.

3
19.04.2021, 04:23
0 ответов

Теги

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