Я пытаюсь изучить OVS и KVM и в целом понять основные мостовые сети в виртуальном мире (т. е. между OVS, хостом виртуальной машины и гостями KVM/Libvirt). Я использую ClearLinux (на основе systemd в) на хост.
My собственно вопрос еще в смелый, в остальной части этот пост, мы надеемся помочь людям советуешь мне на это.
EDIT:
получил указал на SU из инженерной сети StackExchange.
Если любой знает хорошие курсы по ОВС и КВМ, пожалуйста, дайте мне знать: -)
ссылки до сих пор:
https://libvirt.org/formatdomain.html
http://docs.openvswitch.org/en/latest/howto/libvirt/
Итак, я дошел до точки:
- наличие моста ovs (testbridge)
- подключил физический ethernet хоста (enp5s0) к testbridge
- создано два виртуальных крана устройства (virtualport1 и 2)
- подключен краны на testbridge
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' - это физический порт на хост. Это связано с Cisco SG-300 (общий интерфейс порта коммутатора, транкинг связка VLAN, общий pvid 25 и vlan 25 без меток).
существует внешний сервер DHCP, работающий на всех соответствующих VLAN.
у меня гость libvirt под названием 'debian' (бонусные баллы за creativity), который настроен на:
<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 (т. е. в гостевой виртуальной машине "debian"), поэтому у меня есть IP для VNC, чтобы провести установку (я использую debian netinst.iso)?
никогда не делал этого раньше, я вроде бы предположил, что это будет arp и придумать через DHCP и IP-адрес показать vnet0 хотел показать адрес ВМ VNC к нему...Хотя, очевидно, нет. Это вроде похоже на Л2 (как ниже):
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 testbridge:
- как порт доступа в vlan 100?
- как магистральный порт, на vlan 100, 150 и 151?
- в багажник все тегированных VLAN на что существуют на testbridge?
- то же, что и 3, но включая немаркированные VLAN?
EDIT 3:
https://blog.scottlowe.org/2012/11/07/using-vlans-with-ovs-and-libvirt/
Это в значительной степени охватывает выше, указывает. Также рассматривается использование XML-кода домена libvirt для исправления виртуальной машины. Еще не закончил, завтра проверю.
тем не менее, я, вероятно, могу работать эти последние 4 вещи из себя, если я могу получить VM собирается в первую очередь нюхать трафик на vnet0 и посмотреть, что на самом деле происходит...
Примечание.:
Я намеревался присоединить ВМ к virtualport1 но пропустил что-то и вместо него создать новый порт на testbridge под названием 'vnet0'. Довольно уверен, что это исправимо в libvirt domainxml с параметрами ovs здесь (уберет его позже, на данный момент, vnet0 есть!):
https://libvirt.org/formatdomain.html#elementsNICSBridge
EDIT 2:
Я думаю, что этот бит решена в соответствии с приведенной выше ссылке:
потяните uuid соответствующего порта, к которому вы хотите подключиться:
sudo ovs-vsctl list Port | grep 'name|_uuid'
добавить его в libvirt в области XML соответствующих ВМ:
<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>
Ура