VLAN Trunking berarti satu interface (fisik atau virtual) membawa banyak VLAN sekaligus. VM kemudian dapat:
- menerima semua VLAN (trunk)
- atau hanya satu VLAN tertentu (access VLAN)
Di Linux bridge, ini dilakukan dengan VLAN filtering. Di OVS, VLAN trunking bahkan lebih fleksibel.
Konfigurasi Host (Linux Bridge VLAN Filtering) #
Misal NIC fisik = enp3s0
Konfigurasi netplan dengan VLAN-filtering.
network:
version: 2
ethernets:
enp3s0:
dhcp4: no
bridges:
br0:
interfaces: [enp3s0]
parameters:
vlan-filtering: true
dhcp4: no
Terapkan:
netplan apply
Sekarang br0 adalah trunk port.
Tambahkan VLAN yang akan dibawa oleh Bridge #
Misalnya bridge ingin membawa VLAN:
- VLAN 10
- VLAN 20
- VLAN 30
bridge vlan add dev br0 vid 10
bridge vlan add dev br0 vid 20
bridge vlan add dev br0 vid 30
Tambahkan juga ke interface fisik:
bridge vlan add dev enp3s0 vid 10
bridge vlan add dev enp3s0 vid 20
bridge vlan add dev enp3s0 vid 30
Kini NIC dan bridge adalah full trunk.
Virtual Network Libvirt Mode Bridge (Trunk) #
File: vlan-trunk.xml
<network>
<name>vlan-trunk</name>
<forward mode='bridge'/>
<bridge name='br0'/>
<!-- Portgroup ini untuk VM yang ingin menerima banyak VLAN (trunk) -->
<portgroup name='trunk' default='yes'>
<vlan trunk='yes'>
<tag id='10'/>
<tag id='20'/>
<tag id='30'/>
</vlan>
</portgroup>
<!-- Portgroup access VLAN -->
<portgroup name='vlan10'>
<vlan>
<tag id='10'/>
</vlan>
</portgroup>
<portgroup name='vlan20'>
<vlan>
<tag id='20'/>
</vlan>
</portgroup>
<portgroup name='vlan30'>
<vlan>
<tag id='30'/>
</vlan>
</portgroup>
</network>
Apply:
virsh net-define vlan-trunk.xml
virsh net-start vlan-trunk
virsh net-autostart vlan-trunk
Menyetel NIC VM (domain XML) #
Ada dua tipe konfigurasi:
- Trunk = VM membawa banyak VLAN
- Access = VM hanya pada 1 VLAN
VM sebagai Trunk (menerima banyak VLAN) #
VM akan menerima tagged VLAN (802.1Q). Biasanya OS guest perlu membuat interface VLAN sendiri (misal eth0.10, eth0.20).
<interface type='network'>
<source network='vlan-trunk' portgroup='trunk'/>
<model type='virtio'/>
</interface>
Di dalam VM (Linux):
ip link add link eth0 name eth0.10 type vlan id 10
ip link add link eth0 name eth0.20 type vlan id 20
ip link add link eth0 name eth0.30 type vlan id 30
VM sebagai Access VLAN (misal VLAN 20) #
VM mendapat VLAN 20 untagged, seolah-olah terhubung ke port switch biasa.
<interface type='network'>
<source network='vlan-trunk' portgroup='vlan20'/>
<model type='virtio'/>
</interface>
Tidak perlu konfigurasi VLAN di guest.
Versi Open vSwitch (Opsional — untuk Data Center) #
OVS trunk port: #
ovs-vsctl add-br ovs-br0
ovs-vsctl add-port ovs-br0 enp3s0
Tambahkan trunk ke VM: #
<interface type='bridge'>
<source bridge='ovs-br0'/>
<virtualport type='openvswitch'/>
<vlan trunk='yes'>
<tag id='10'/>
<tag id='20'/>
<tag id='30'/>
</vlan>
</interface>
OVS jauh lebih fleksibel untuk SDN atau jaringan besar.