Khung Jumbo giữa khách KVM và máy chủ?


11

Tôi đang cố gắng thực hiện MTU 9000 byte để liên lạc lưu trữ giữa khách KVM và hệ thống máy chủ. Máy chủ có một cầu nối ( br1) với 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

Các khách có giao diện được gắn với cây cầu này cũng có 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

Tôi có thể ping từ máy chủ đến khách:

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

Nhưng nếu tôi tăng kích thước gói ping vượt quá 1490 byte, tôi không còn kết nối:

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

Một dấu vết gói cho thấy những gói này không bao giờ đến được với khách. Tất cả mọi thứ tôi đã đọc chỉ ra rằng cả giao diện cầu nối Linux và các virtioổ đĩa mạng đều hỗ trợ các khung khổng lồ, nhưng điều này chắc chắn giống như một vấn đề MTU đối với tôi.

Tôi có thiếu một cái gì đó thực sự rõ ràng?

Cập nhật

Hiển thị phía máy chủ của giao diện khách:

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

MTU trên giao diện điều chỉnh cho VM trên máy chủ là gì?
mgorven

Đó cũng là 9000 byte; Tôi đã cập nhật câu hỏi với đầu ra brctlip addr showcho giao diện đó.
larsks

Chính xác thì hệ thống máy chủ là gì?
Michael Hampton

Arch Linux, với Linux 3.6.10 (x86_64), qemu-kvm 1.2.0, libvirt 1.0.1.
larsks

Câu trả lời:


7

Mặc dù đây là sự cố MTU, nhưng hóa ra nó không liên quan gì đến cài đặt MTU trên bất kỳ thiết bị thành phần nào. Như tôi đã chỉ ra trong câu hỏi ban đầu, cầu nối máy chủ, giao diện điều chỉnh máy chủ và giao diện khách đều có cùng cài đặt MTU (9000 byte).

Vấn đề thực tế là vấn đề cấu hình libvirt / kvm. Theo mặc định, libvirt không sử dụng virtiothiết bị. Không có cấu hình rõ ràng, bạn kết thúc với RealTek RTL-8139 NIC. NIC ảo này không hỗ trợ các khung jumbo .

Để sử dụng virtiothiết bị, bạn cần chỉ định một mô hình rõ ràng. Khi sử dụng virt-install:

virt-install ... -w bridge=br1,model=virtio

Hoặc sau thực tế bằng cách thêm một <model>thẻ vào thành <interface>phần thích hợp trong miền XML:

<interface type="bridge">
  <model type="virtio"/>
  <source bridge="br1"/>
  <target dev="vnet2"/>
</interface>

Với sự thay đổi này, mọi thứ hoạt động như dự định.


0

để MTU lớn hơn hoạt động, toàn bộ ngăn xếp phải có MTU cao hơn, bao gồm cả khách, tapdev và các NIC vật lý mà cây cầu được gắn vào (nếu bạn có liên kết và vlans trên đường - chúng cũng vậy)


Bạn có biết nếu các ví dụ cụ thể, như GigaEthernet và hơn thế nữa, nơi đây sẽ là kết quả của đàm phán tự động? Bài đăng này có thể trùng lặp: google.com/
Kẻ

không, phải được thực hiện thủ công, tất cả các ngăn xếp được đặt thành MTU cao nhất của bất kỳ thành phần nào
dyasny

Vâng, tôi nhận ra rằng; đó là tài liệu tốt ở khắp mọi nơi. Như bạn có thể thấy từ câu hỏi, khách, tapdev và cây cầu đều có MTU cao hơn. Bạn có thấy bất cứ điều gì được định cấu hình sai trong các ví dụ tôi đã đưa ra không?
larsks

để sử dụng cài đặt MTU không mặc định, mọi thứ phải tuân thủ MTU không mặc định. Rằng, từ trên xuống dưới, nên là NIC khách, vòi, cầu, eth (+ vlan + bond) dưới cầu và dĩ nhiên là cổng chuyển đổi. Tôi đã thử nghiệm nó chỉ một vài phút trước và nó hoạt động hoàn hảo trên RHEL với
kvm

Phải, và tôi nghĩ rằng tôi đã thể hiện rõ ràng trong câu hỏi về giá trị ở tất cả các phần của ngăn xếp. Bạn có thấy bất kỳ thông tin bị thiếu hoặc một cái gì đó không được cấu hình chính xác?
larsks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.