Skenario uji¶
Checklist manual, dijalankan setelah lab.sh test lulus.
- Persistensi setelah reboot
- Commit gagal → rollback otomatis
- Rollback ke commit sebelumnya
- VPP restart / crash
- Bukti trafik lewat VPP
- Restart
cidr-configtanpa restart VPP - VM diperkecil (CPU worker tidak ada)
a. Persistensi setelah reboot¶
Tunggu sekitar 1 menit, lalu jalankan tests/qemu/lab.sh test. Semua test harus PASS, karena konfigurasi dimuat dari /config/config.boot oleh cidr-config.service.
b. Commit gagal → rollback otomatis¶
admin@r1# set interfaces eth9 unit 0 family inet address 10.9.9.9/24
admin@r1# commit
% configuration is not valid:
interfaces eth9: no such dataplane port (available: eth1, eth2, eth3)
admin@r1# discard
c. Rollback ke commit sebelumnya¶
admin@r1# delete protocols static route 2.2.2.2/32
admin@r1# commit
admin@r1# run ping 2.2.2.2 source 1.1.1.1 <- gagal
admin@r1# rollback 1
admin@r1# commit
admin@r1# run ping 2.2.2.2 source 1.1.1.1 <- jalan lagi
d. VPP restart / crash¶
Tunggu sekitar 15 detik, lalu jalankan lab.sh test. cidr-config.service menerapkan ulang seluruh konfigurasi setiap kali VPP start.
e. Bukti trafik lewat VPP¶
Trace menunjukkan paket dari R2 diproses node VPP (dpdk-input → ip4-lookup → nat44-… → eth2-output) tanpa melewati kernel.
f. Restart cidr-config tanpa restart VPP¶
tests/qemu/lab.sh ssh r2 "systemctl restart cidr-config && systemctl restart cidr-config && echo OK"
Keduanya berhasil. Log menunjukkan changes since the last apply (same VPP process), dan handoff tetap terpasang sekali per port:
g. VM diperkecil¶
tests/qemu/lab.sh ssh r1 "sed -i 's/^workers = .*/workers = 1-5/' /etc/cidr/dataplane.conf && systemctl restart vpp"
VPP tetap berjalan, dan show dataplane menampilkan 2 workers on CPU 1-2 (configured; ignored CPU 3-5: not available). Kembalikan dengan workers = auto.
Temuan yang ditemukan lab¶
Lab menemukan bug yang tidak terlihat di unit test. Semuanya sudah diperbaiki:
| Temuan | Perbaikan |
|---|---|
Paket vpp langsung start dan mengambil semua NIC yang down |
Start diblok saat install; no-pci kalau belum ada port |
/sys/class/net/X/device virtio menunjuk virtio2, bukan PCI |
Naik ke node PCI induk |
rx-buffer-size ditolak VPP 26.x (fatal) |
Diganti nl-rx-buffer-size |
| Kernel cloud Debian tanpa vfio no-IOMMU | Driver otomatis: vfio → no-IOMMU → uio_pci_generic |
| linux-nl VPP 26.x mengabaikan VLAN dari Linux | Sub-interface dot1q N exact-match dibuat di VPP |
| virtio membuang frame VLAN untuk DPDK | Port yang punya VLAN dijadikan promiscuous |
ping dari CLI bisa menunggu selamanya |
Selalu ada batas waktu |
| Handoff tercatat di dua arc, dan bisa terpasang ganda | Hanya device-input yang dihitung; enable idempoten |
Restart cidr-config membuat ulang loopback dan VLAN |
Penerapan inkremental untuk proses VPP yang sama |
Membuat bridge domain/BVI yang sudah ada ditolak VPP (returned -119) |
Error itu dikenali; aksi create dilewati kalau objeknya sudah ada |