
Output error: "could not add network device X to ofproto" muncul ketika saya menjalankan perintah untuk menambahkan bridge vbr0 dan menambahkan port enp1s0 ke dalam bridge. Output log ini juga akan muncul ketika menjalankan perintah ovs-vsctl show.
Nah, pada postingan ini saya akan membahas tentang log error tersebut, di bawah ini adalah poin-poin yang akan dibahas:
Mencari petunjuk "Apa yang menyebabkan log error di atas muncul?"
Cari referensi terkait log error tersebut di Google
Coba untuk menyelesaikan log error tersebut
Kesimpulan
Disclaimer: saya menggunakan Distro OS Ubuntu 22.04.5 LTS.
Penyebab Error
Untuk mengetahui penyebab error tersebut pertama saya coba untuk melihat isi log ovs-vswitchd.log
less /var/log/openvswitch/ovs-vswitchd.logPada file log tersebut saya menemukan output log error yang sama seperti diatas

Pada log tersebut system beberapa kali memberitahu kalau OVS gagal menambahkan port enp1s0 karena device tersebut sibuk (Device or resource busy). Terlihat juga system gagal menambahkan port internal vbr0 karena File exists.
Namun, meskipun OVS gagal menambahkan kedua port tersebut, OVS berhasil membuat bridge vbr0. Berikut buktinya:
sudo ovs-vsctl list Bridge vbr0
Bridge vbr0 juga berhasil diinisialisasi system dan mendapatkan datapath ID unik

Dari gambar di atas, masih belum menemukan petunjuk lebih untuk menghilangkan log error: "could not add network device X to ofproto. Oleh karena itu, saya lanjut untuk mencari referensi di internet, mungkin ada komunitas yang pernah bahas atau mengalami hal yang sama.
Analisa Error
Mencari Referensi
Saat mencari refrensi, saya menemukan user yang mengalami hal serupa pada website Canonical Juju.

User tersebut mengalami error saat konfigurasi OVS bridge pada Juju. Kenapa saya bisa bilang issue tersebut relate dengan yang saya alami? karena log error yang didapat mirip sekali dengan yang saya alami.

Masalah diatas muncul karena fitur omitempty yang ada pada platform Juju. Jadi, saat melakukan konfigurasi netplan dan menambahkan parameter openvswitch: {} juju akan menganggapnya sebagai blok kosong dan akan mengabaikan konfigurasi tersebut (tidak tersimpan di file netplan).
User tersebut juga mengatakan, dia menambahkan parameter openvswitch: {} untuk memberitahu netplan, kalau interface bridge br0 itu sudah ada (dibuat oleh OVS) dan tidak perlu dibuat lagi.

Fungsi dari parameter openvswitch: {}
Akhirnya saya menemukan referensi yang menjelaskan fungsi parameter openvswitch: {}. Pada referensi tersebut menjelaskan, jika ingin mengonfigurasi network device OVS, itu harus menambahkan parameter openvswitch: {}.

Menyelesaikan Log Error OVS
Konfigurasi ulang netplan
Berdasarkan referensi yang sebelumnya saya dapatkan, saya memutuskan untuk mencoba menerapkan parameter openvswitch: {} ke dalam file netplan pada host saya.
sudo vim /etc/netplan/99-custom-network.yamlnetwork:
version: 2
renderer: networkd
bridges:
vbr0:
dhcp4: false
addresses:
- 192.168.20.100/24
openvswitch: {} ### Saya menambahkan parameter ini ###
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
interfaces: [ enp1s0 ]
routes:
- to: default
via: 192.168.20.1sudo netplan applyApply konfigurasi Netplan
Setelah konfigurasi ulang netplan dan menambahkan parameter openvswitch: {}. Saya coba apply netplan saya. Setelah diterapkan tetap muncul error yang sama.

Tapi tunggu dulu, ketika saya melihat log pada /var/log/syslog

Dari log diatas, bisa kita simpulkan kalau system berhasil membersihkan konfigurasi network lamanya, terlihat dari kotak berwarna merah. Lalu dilanjutkan dengan OVS yang berhasil memulai dan mengatur bridge vbr0, port enp1s0, dan konfigurasi lainnya (lihat kotak kuning).
Reboot Host
Setelah host direboot, bisa dilihat pada gambar di bawah ini. Log error sudah hilang dan saya berhasil menyelesaikan masalah output log error: "could not add network device X to ofproto.

Saya juga cek pada log ovs-vswitchd.log dan terlihat tidak ada error log lagi.

Kesimpulan
Jadi kesimpulan yang saya dapatkan adalah OVS gagal menambahkan interface enp1s0 dan vbr0 ke dalam bridge vbr0, karena adanya race condition atau konflik dengan netplan dalam mengelola atau manage kedua interface tersebut. Akibatnya netplan akan menganggap konfigurasi OVS sebagai error.

Jika ada penjelasan yang kurang dari postingan ini, bisa kalian tanyakan dan tambahkan di komentar.