Using Tunnel in Libvirt

Ada beberapa tunnel yang dapat Anda gunakan pada interface VM di libvirt untuk kebutuhan komunikasi baik antar VM baik di mesin host yang sama atau antar mesin host.

Multicast tunnel

Jaringan ini membuat antar VM dapat terhubung dan berkomunikasi pada multicast group yang sama baik pada mesin host yang sama atau antar host.

Perhatikan pada source address yang digunakan harus dari blok alamat multicast.

Domain XML

<interface type="mcast">
  <source address="224.0.1.1" port="5558"/>
  <model type="virtio"/>
</interface>

TCP tunnel

TCP tunnel untuk konfigurasinya membutuhkan satu VM sebagai server lalu untuk semua VM lainnya dapat dikonfigurasi sebagai client. Semua lalu lintas jaringan akan dirutekan antar VM melalui server.

Domain XML VM-1

<interface type="server">
  <mac address="52:54:00:4c:f8:fd"/>
  <source address="10.10.100.1" port="5558"/>
  <model type="virtio"/>
</interface>

Domain XML VM-2

<interface type="client">
  <mac address="52:54:00:4c:f8:fd"/>
  <source address="10.10.100.1" port="5558"/>
  <model type="virtio"/>
</interface>

UDP unicast tunnel

UDP unicast tunnel menyediakan jaringan virtual yang memungkinkan koneksi antara instans QEMU menggunakan infrastruktur UDP QEMU. Untuk source address adalah alamat sebagai endpoint pengiriman paket UDP. Sedangkan local address adalah alamat untuk menentukan darimana paket UDP berasal.

Jadi untuk source ini bisa dikatakan source port VM sedangkan local adalah destination port karena akan dipasang sebagai source pada VM lain agar dapat terhubung.

Domain XML VM-1

<interface type="udp">
  <source address="127.0.0.1" port="11115">
    <local address="127.0.0.1" port="11116"/>
  </source>
  <model type="virtio"/>
</interface>

Domain XML VM-2

<interface type="udp">
  <source address="127.0.0.1" port="11116">
    <local address="127.0.0.1" port="11115"/>
  </source>
  <model type="virtio"/>
</interface>

Vhost-user tunnel

Dengan menggunakan vhost-user, Anda dapat membuat jaringan virtual untuk memungkinkan komunikasi antar mesin virtual (VM) melalui unix socket.

Domain XML VM-1

  <interface type='vhostuser'>
    <mac address='52:54:00:3b:83:1a'/>
    <source type='unix' path='/tmp/vhost1.sock' mode='server'/>
    <model type='virtio'/>
  </interface>

Domain XML VM-2

  <interface type='vhostuser'>
    <mac address='52:54:00:3b:83:1b'/>
    <source type='unix' path='/tmp/vhost2.sock' mode='client'>
      <reconnect enabled='yes' timeout='10'/>
    </source>
    <model type='virtio'/>
    <driver queues='5'/>
  </interface>