Bug 602205
Summary: | Could not ping guest successfully after changing e1000 MTU | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Amos Kong <akong> | |
Component: | qemu-kvm | Assignee: | Michael S. Tsirkin <mst> | |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | |
Severity: | medium | Docs Contact: | ||
Priority: | medium | |||
Version: | 6.0 | CC: | ailan, ehabkost, gcosta, gyue, juzhang, jyang, knoel, llim, mkenneth, nachandr, rprice, tburke, virt-maint | |
Target Milestone: | beta | |||
Target Release: | 6.1 | |||
Hardware: | All | |||
OS: | Linux | |||
Whiteboard: | ||||
Fixed In Version: | qemu-kvm-0.12.1.2-2.144.el6 | Doc Type: | Bug Fix | |
Doc Text: |
Cause: qemu-kvm e1000 emulation didn't support multi-buffer packets larger than rxbuf_size.
Consequence: setting MTU of e1000 virtual NIC to 16110 caused networking to stop working.
Fix: implemented support to multi-buffer packets larger than rxbuf_size in e1000 emulation code.
Result: setting MTU of e1000 virtual NIC to 16110 now works.
|
Story Points: | --- | |
Clone Of: | ||||
: | 678338 (view as bug list) | Environment: | ||
Last Closed: | 2011-05-19 11:29:47 UTC | Type: | --- | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 580954, 678338 |
Description
Amos Kong
2010-06-09 11:58:28 UTC
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux major release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Major release. This request is not yet committed for inclusion. Were you able to set mtu to 16610 in guest? What I get is: # ifconfig eth0 16610 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:57 inet addr:0.0.64.226 Bcast:255.255.255.255 Mask:0.0.0.0 inet6 addr: fe80::5054:ff:fe12:3457/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1180 (1.1 KiB) TX bytes:1152 (1.1 KiB) so mtu can not be set to 16610. Please confirm. (In reply to comment #3) > Were you able to set mtu to 16610 in guest? > What I get is: > # ifconfig eth0 16610 The right cmd should be "# ifconfig eth0 mtu 16610" > # ifconfig eth0 > eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:57 > inet addr:0.0.64.226 Bcast:255.255.255.255 Mask:0.0.0.0 > inet6 addr: fe80::5054:ff:fe12:3457/64 Scope:Link > UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 > RX packets:2 errors:0 dropped:0 overruns:0 frame:0 > TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 > collisions:0 txqueuelen:1000 > RX bytes:1180 (1.1 KiB) TX bytes:1152 (1.1 KiB) > > so mtu can not be set to 16610. > Please confirm. Does it succeed for you? I see: # ifconfig eth0 mtu 16610 SIOCSIFMTU: Invalid argument # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:57 inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::5054:ff:fe12:3457/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:590 (590.0 b) TX bytes:810 (810.0 b) # dmesg|tail Adding 2064376k swap on /dev/mapper/vg_dhcp74172-lv_swap. Priority:-1 extents:1 across:2064376k SELinux: initialized (dev binfmt_misc, type binfmt_misc), uses genfs_contexts NET: Registered protocol family 10 lo: Disabled Privacy Extensions ip6_tables: (C) 2000-2006 Netfilter Core Team e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX ADDRCONF(NETDEV_UP): eth0: link is not ready ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready eth0: no IPv6 routers present e1000: eth0: e1000_change_mtu: Invalid MTU setting It seems that qemu allows packets up to 16384. Please try with mtu 16384. Hi mst, (linux-2.6/Documentation/networking/e1000.txt) The max MTU of e1000 is _16110_, Some Intel gigabit adapters that support Jumbo Frames have a frame size limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes. -------- guest)# ifconfig eth0 mtu 16110 guest)# echo $? 0 guest)# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 02:A9:7C:6C:7D:8C inet addr:10.66.91.102 Bcast:10.66.91.255 Mask:255.255.255.0 inet6 addr: fe80::a9:7cff:fe6c:7d8c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:16110 Metric:1 RX packets:610 errors:0 dropped:0 overruns:0 frame:0 TX packets:42 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:41973 (40.9 KiB) TX bytes:7234 (7.0 KiB) guest)# dmesg eth0: no IPv6 routers present hdc: drive_cmd: status=0x41 { DriveReady Error } hdc: drive_cmd: error=0x04 { AbortedCommand } ide: failed opcode was: 0xec mtrr: type mismatch for f0000000,100000 old: uncachable new: write-combining mtrr: type mismatch for f0000000,400000 old: uncachable new: write-combining e1000: eth0 changing MTU from 1500 to 16110 e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX guest)# lspci |grep Eth 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03) guest)# ifconfig eth0 mtu 16111 SIOCSIFMTU: Invalid argument -------- I can only set mtu of my host e1000 nic to 9216. # lspci |grep Eth 00:19.0 Ethernet controller: Intel Corporation 82567LM-3 Gigabit Network Connection (rev 02) In the description of problem you say: guest)# ifconfig eth0 mtu 16610 host)# ifconfig $tap 16610 Since 16610 > 16110, is this why this works? Does it work with mtu 16110? (In reply to comment #8) > In the description of problem you say: > guest)# ifconfig eth0 mtu 16610 > host)# ifconfig $tap 16610 This is a write error. I found this bug with 16110. > Since 16610 > 16110, is this why this works? > Does it work with mtu 16110? When set mtu to 16110, host could not ping guest successfully. # ping $guest_ip -I e1000_0_6001 -s 16082 -M do guest) # ifconfig eth0 mtu 16110 host) # ifconfig t0-165012-Ywsy mtu 16110 host) # arp -s 10.66.82.167 9a:0c:2b:2e:ab:13 -i t0-165012-Ywsy host) # ping 10.66.82.167 -I t0-165012-Ywsy -s 16082 -M do PING 10.66.82.167 (10.66.82.167) from 10.66.83.176 t0-165012-Ywsy: 16082(16110) bytes of data. 16090 bytes from 10.66.82.167: icmp_seq=1 ttl=64 time=1.65 ms 16090 bytes from 10.66.82.167: icmp_seq=2 ttl=64 time=0.576 ms 16090 bytes from 10.66.82.167: icmp_seq=3 ttl=64 time=0.426 ms ... Bug can't be reproduced with qemu-kvm-0.12.1.2-2.145.el6.x86_64. Moving to VERIFIED. Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Cause: qemu-kvm e1000 emulation didn't support multi-buffer packets larger than rxbuf_size. Consequence: setting MTU of e1000 virtual NIC to 16110 caused networking to stop working. Fix: implemented support to multi-buffer packets larger than rxbuf_size in e1000 emulation code. Result: setting MTU of e1000 virtual NIC to 16110 now works. An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2011-0534.html An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2011-0534.html |