Saya mencoba menerapkan MTU 9000 byte untuk komunikasi penyimpanan antara tamu KVM dan sistem host. Tuan rumah memiliki jembatan ( br1
) dengan MTU 9000 byte:
host# ip link show br1
8: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP
link/ether fe:54:00:50:f3:55 brd ff:ff:ff:ff:ff:ff
inet 172.16.64.1/24 brd 172.16.64.255 scope global br1
inet6 fe80::21b:21ff:fe0e:ee39/64 scope link
valid_lft forever preferred_lft forever
Para tamu memiliki antarmuka yang terhubung ke jembatan ini yang juga memiliki MTU 9000 byte:
guest# ip addr show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:50:f3:55 brd ff:ff:ff:ff:ff:ff
inet 172.16.64.10/24 brd 172.16.64.255 scope global eth2
inet6 fe80::5054:ff:fe50:f355/64 scope link
valid_lft forever preferred_lft forever
Saya bisa ping dari host ke tamu:
host# ping -c4 172.16.64.10
PING 172.16.64.10 (172.16.64.10) 56(84) bytes of data.
64 bytes from 172.16.64.10: icmp_seq=1 ttl=64 time=1.15 ms
64 bytes from 172.16.64.10: icmp_seq=2 ttl=64 time=0.558 ms
64 bytes from 172.16.64.10: icmp_seq=3 ttl=64 time=0.566 ms
64 bytes from 172.16.64.10: icmp_seq=4 ttl=64 time=0.631 ms
--- 172.16.64.10 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.558/0.727/1.153/0.247 ms
Tetapi jika saya meningkatkan ukuran paket ping melampaui 1490 byte, saya tidak lagi memiliki konektivitas:
host# ping -c4 -s 1491 172.16.64.10
PING 172.16.64.10 (172.16.64.10) 1491(1519) bytes of data.
--- 172.16.64.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3000ms
Paket jejak menunjukkan bahwa paket-paket ini tidak pernah mencapai tamu. Semua yang saya baca menunjukkan bahwa antarmuka Linux bridge dan virtio
drive jaringan semua mendukung frame jumbo, tapi ini jelas terlihat seperti masalah MTU bagi saya.
Apakah saya melewatkan sesuatu yang sangat jelas?
Memperbarui
Menampilkan sisi host dari antarmuka tamu:
host# brctl show
bridge name bridge id STP enabled interfaces
br1 8000.fe540050f355 no vnet2
host# ip addr show vnet2
11: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master br1 state UNKNOWN qlen 500
link/ether fe:54:00:50:f3:55 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe50:f355/64 scope link
valid_lft forever preferred_lft forever
linux
networking
kvm-virtualization
bridge
mtu
larsks
sumber
sumber
brctl
danip addr show
untuk antarmuka itu.Jawaban:
Meskipun ini adalah masalah MTU, ternyata itu tidak ada hubungannya dengan pengaturan MTU di salah satu perangkat komponen. Seperti yang saya tunjukkan dalam pertanyaan awal, host bridge, host tun interface, dan guest interface semuanya memiliki pengaturan MTU yang sama (9000 bytes).
Masalah sebenarnya adalah masalah konfigurasi libvirt / kvm. Secara default, libvirt tidak menggunakan
virtio
perangkat. Tidak ada konfigurasi eksplisit Anda berakhir dengan RealTek RTL-8139 NIC. NIC virtual ini tidak mendukung bingkai jumbo .Untuk menggunakan
virtio
perangkat, Anda perlu menentukan model eksplisit. Saat menggunakanvirt-install
:Atau setelah fakta dengan menambahkan
<model>
tag ke<interface>
elemen yang sesuai di domain XML:Dengan perubahan ini pada tempatnya, semuanya berfungsi sebagaimana mestinya.
sumber
agar MTU yang lebih besar berfungsi, seluruh tumpukan harus memiliki MTU yang lebih tinggi, yang mencakup tamu, tapdev, dan NIC fisik yang terhubung dengan jembatan (jika Anda memiliki ikatan dan vlan dalam perjalanan - juga)
sumber