Saya mencoba mempelajari OVS dan KVM, dan secara umum memahami jaringan jembatan dasar di dunia virtual (yaitu antara OVS, Host VM, dan tamu KVM / Libvirt). Saya menggunakan ClearLinux (berbasis systemd) pada host VM.
Pertanyaan saya yang sebenarnya adalah huruf tebal lebih jauh ke bawah , sisa posting ini adalah semoga membantu orang menyarankan saya tentang hal itu.
SUNTING:
Mengarah ke SU dari Network Engineering StackExchange. Jika ada yang tahu kursus pelatihan yang bagus tentang OVS dan KVM, beri tahu saya :-)
Referensi sejauh ini: https://libvirt.org/formatdomain.html http://docs.openvswitch.org/en/latest/howto/libvirt/
Jadi, saya sampai pada titik:
- Memiliki jembatan ovs (testbridge)
- Menghubungkan ethernet fisik host (enp5s0) ke testbridge
- Membuat dua perangkat keran virtual (virtualport1 dan 2)
- Menghubungkan ketukan ke testbridge
OVS terlihat seperti ini:
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' adalah port fisik pada host vm. Terhubung ke Cisco SG-300 (antarmuka umum switchport, trunking sekelompok vlan, pvid umum 25 dan vlan 25 tidak ditandai).
Ada server DHCP eksternal yang bekerja pada semua VLAN yang relevan.
Saya memiliki tamu libvirt bernama 'debian' (tanda bonus untuk kreativitas) yang dikonfigurasi dengan:
<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>
Bagaimanapun, di sinilah aku terjebak. Pertanyaan saya: Bagaimana cara saya mendapatkan kesenangan L3 yang terjadi di antarmuka vnet0 (yaitu di guest vm 'debian'), jadi saya memiliki IP ke VNC, untuk melakukan instalasi (Saya menggunakan debian netinst.iso)?
Karena belum pernah melakukan ini sebelumnya, saya berasumsi bahwa itu akan arp dan muncul melalui DHCP dan alamat ip menunjukkan vnet0 akan menunjukkan alamat VM ke VNC untuk itu ... Jelas tidak. Sepertinya ada di L2 (seperti di bawah ini):
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
Tetapi melakukan:
sudo ovs-appctl fdb/show testbridge
Sepertinya hanya daftar mac di Port 1 (enp5s0) bukan vnet0 ...
Jika saya bisa menjalankannya, saya juga ingin belajar cara mengkonfigurasi 'vnet0' di ovs testbridge:
- Sebagai port akses di vlan 100?
- Sebagai port trunk, pada vlan 100, 150 dan 151?
- Untuk trunk semua / semua vlan yang ditandai untuk yang ada di testbridge?
- Sama dengan 3, tetapi termasuk vlan yang tidak diberi tag?
EDIT 3:
https://blog.scottlowe.org/2012/11/07/using-vlans-with-ovs-and-libvirt/ Ini cukup banyak mencakup poin-poin di atas. Juga lihat cara menggunakan domain libvirt xml untuk menambal di VM. Belum menyelesaikan semuanya, akan mengujinya besok.
Yang mengatakan, saya mungkin bisa mengerjakan 4 hal terakhir ini sendiri jika saya bisa mendapatkan VM di tempat pertama untuk mengendus lalu lintas di vnet0 dan melihat apa yang sebenarnya terjadi ...
CATATAN: Saya bermaksud menghubungkan VM ke virtualport1 tetapi melewatkannya di suatu tempat dan alih-alih itu menciptakan port baru pada testbridge yang disebut 'vnet0'. Cukup yakin itu dapat diperbaiki di libvirt domainxml dengan parameter ovs di sini (akan merapikannya nanti, untuk saat ini, vnet0 itu!): Https://libvirt.org/formatdomain.html#elementsNICSBridge
EDIT 2:
Saya pikir bit ini diselesaikan sesuai tautan di atas dengan:
Tarik uuid port terkait yang ingin Anda lampirkan:
sudo ovs-vsctl list Port | grep 'name\|_uuid'
Tambahkan ke domain Libvirt XML dari VM yang relevan:
<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>
Tepuk tangan