Я пытаюсь изучить OVS и KVM, и в целом разбираюсь в основных мостовых сетях в виртуальном мире (то есть между OVS, хостом VM и гостями KVM/Libvirt). Я использую ClearLinux (на основе systemd) на хосте VM.
Мой фактический вопрос выделен жирным шрифтом ниже, остальная часть этого поста, я надеюсь, поможет людям проконсультировать меня по этому вопросу.
РЕДАКТИРОВАТЬ:
Получил указание на SU от сетевого инжиниринга StackExchange. Если кто-нибудь знает какие-либо хорошие учебные курсы по OVS и KVM, пожалуйста, дайте мне знать :-)
Ссылки на данный момент:https://libvirt.org/formatdomain.html http://docs.openvswitch.org/en/latest/howto/libvirt/
Итак, я дошел до точки:
- Иметь мост овс (тестбридж)
- Подключил физическую сеть хоста (enp5s0) к тестбриджу
- Создано два виртуальных отводных устройства (virtualport1 и 2)
- Подключил краны к тестбриджу
OVS выглядит так:
sudo ovs-vsctl show
010aff41-dc37-410d-87dc-842a1a2cebeb
Bridge testbridge
Port "virtualport2"
Interface "virtualport2"
Port "enp5s0"
Interface "enp5s0"
Port testbridge
Interface testbridge
type: internal
Port "vnet0"
Interface "vnet0"
Port "virtualport1"
Interface "virtualport1"
ovs_version: "2.8.1"
'enp5s0' - это физический порт на хосте vm. Он подключен к Cisco SG-300 (общий интерфейс switchport, транкинг связки vlans, общий pvid 25 и vlan 25 без тегов).
Существует внешний DHCP-сервер, работающий на всех соответствующих VLANS.
У меня есть гость libvirt под названием 'debian' (бонусные баллы за креативность), который настроен с помощью:
<interface type='bridge'>
<mac address="00:16:3E:EF:61:91"/>
<model type='virtio'/>
<source bridge='testbridge'/>
<virtualport type='openvswitch'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<graphics type='vnc' port='-1' autoport='yes' sharePolicy='allow-exclusive' passwd='PleaseDontHaxorMe'>
<listen type='address' listen='0.0.0.0'/>
</graphics>
Во всяком случае, вот где я застрял. Мой вопрос:как получить удовольствие от L3 на интерфейсе vnet0 (т. Е. На гостевом vm 'debian'), поэтому у меня есть IP для VNC, чтобы выполнить установку (я использую debian netinst.iso)?
Никогда раньше этого не делал, я вроде предполагал, что он будет arp и появится через DHCP, а ip address show vnet0 покажет адрес VM для VNC ...Очевидно, нет, хотя. Это выглядит как на L2 (как показано ниже):
ip address show vnet0
16: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq master ovs-system state UNKNOWN group default qlen 1000
link/ether fe:16:3e:ef:61:91 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc16:3eff:feef:6191/64 scope link
valid_lft forever preferred_lft forever
Но делать:
sudo ovs-appctl fdb/show testbridge
Только кажется, что список Mac на порт 1 (enp5s0) не vnet0 ...
Если мне это удастся, я также хотел бы узнать, как настроить vnet0 на тестовом мосту ovs:
- Как порт доступа в vlan 100?
- Как транковый порт, на vlan 100, 150 и 151?
- Соединить какие-либо / все помеченные VLAN'ы с тем, что существуют на тестбридже?
- То же, что 3, но в том числе без тегов vlans?
РЕДАКТИРОВАТЬ 3:
https://blog.scottlowe.org/2012/11/07/using-vlans-with-ovs-and-libvirt/ Это в значительной степени охватывает перечисленные выше моменты. Также рассматривается, как использовать домен libvirt xml для исправления в виртуальной машине. Еще не все закончил, завтра попробую.
Тем не менее, я, вероятно, смогу решить эти последние 4 вещи самостоятельно, если я смогу запустить виртуальную машину, чтобы перехватить трафик на vnet0 и посмотреть, что на самом деле происходит ...
ПРИМЕЧАНИЕ: я намеревался подключить виртуальную машину к virtualport1, но где-то пропустил, и вместо этого он создал новый порт на тестбридже под названием «vnet0». Я уверен, что это можно исправить в libvirt domainxml с параметрами ovs здесь (приведу в порядок позже, а сейчас vnet0!): Https://libvirt.org/formatdomain.html#elementsNICSBridge
РЕДАКТИРОВАТЬ 2:
Я думаю, что этот бит решен согласно ссылке выше:
Вытащите uuid соответствующего порта, к которому хотите подключиться:
sudo ovs-vsctl list Port | grep 'name\|_uuid'
Добавьте его в XML-файл Libvirt соответствующей виртуальной машины:
<interface type='bridge'>
<mac address="00:16:3E:EF:61:91"/>
<model type='virtio'/>
<source bridge='testbridge'/>
<virtualport type='openvswitch'/>
<parameters interfaceid='YOUR_UUID_GOES_HERE'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
ура