Bug 1027480

Summary: alb_send_learning_packets using an obsolete EtherType
Product: Red Hat Enterprise Linux 6 Reporter: noah davids <ndavids>
Component: kernelAssignee: Jarod Wilson <jarod>
kernel sub component: Bonding QA Contact: Amit Supugade <asupugad>
Status: CLOSED ERRATA Docs Contact:
Severity: medium    
Priority: high CC: ccui, kzhang, network-qe, peterm, ptalbert, vanhoof, zhchen, zshi
Version: 6.4   
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: kernel-2.6.32-469.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-10-14 05:32:12 UTC Type: Bug
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: 994246, 1056239    

Description noah davids 2013-11-06 22:36:57 UTC
Description of problem:
alb_send_learning_packets usses the old (very old) DIX EtherType of 0x0060 for its test packet. Devices using an 802.3 interpretation treat this as a length of 96 bytes but since the frame is only 60 bytes some devices report an invalid frame.

Version-Release number of selected component (if applicable):


How reproducible:
100% 

Steps to Reproduce:
1. Configure a bonding mode of either 5 or 6 and look at the test frames generated
2.
3.

Actual results:
Output from Wireshark:

Frame 54: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0
IEEE 802.3 Ethernet 
    Destination: Universa_3d:c2:58 (fc:4d:d4:3d:c2:58)
    Source: Universa_3d:c2:58 (fc:4d:d4:3d:c2:58)
    Length: 96
        [Expert Info (Error/Malformed): Length field value goes past the end of the payload]
            [Message: Length field value goes past the end of the payload]
            [Severity level: Error]
            [Group: Malformed]
Logical-Link Control
Data (42 bytes)



Expected results:


Additional info:

In linux/if_ether.h

#define ETH_P_LOOP      0x0060          /* Ethernet Loopback packet     */

should be changed to

#define ETH_P_LOOP      0x9000          /* Ethernet Loopback packet     */


See http://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml

Comment 5 RHEL Program Management 2013-11-11 22:07:22 UTC
This request was not resolved in time for the current release.
Red Hat invites you to ask your support representative to
propose this request, if still desired, for consideration in
the next release of Red Hat Enterprise Linux.

Comment 14 Rafael Aquini 2014-05-22 16:30:39 UTC
Patch(es) available on kernel-2.6.32-469.el6

Comment 17 Zhenjie Chen 2014-09-13 07:59:48 UTC
Reproduce on kernel 2.6.32-431.el6.x86_64

[root@dhcp-66-86-232 ~]# uname -r
2.6.32-431.el6.x86_64
[root@dhcp-66-86-232 ~]# modprobe -r bonding
[root@dhcp-66-86-232 ~]# modprobe bonding mode=5 miimon=100 
[root@dhcp-66-86-232 ~]# ifconfig bond0 up
[root@dhcp-66-86-232 ~]# ifenslave bond0 eth1

[root@dhcp-66-86-232 ~]# tshark -i eth1 -V -x
Running as user "root" and group "root". This could be dangerous.
Capturing on eth1
Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0
    Interface id: 0
    WTAP_ENCAP: 1
    Arrival Time: Sep 13, 2014 03:51:34.012998000 EDT
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1410594694.012998000 seconds
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 60 bytes (480 bits)
    Capture Length: 60 bytes (480 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:llc:data]
IEEE 802.3 Ethernet 
    Destination: 02:00:00:00:00:11 (02:00:00:00:00:11)
        Address: 02:00:00:00:00:11 (02:00:00:00:00:11)
        .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: 02:00:00:00:00:11 (02:00:00:00:00:11)
        Address: 02:00:00:00:00:11 (02:00:00:00:00:11)
        .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Length: 96
        [Expert Info (Error/Malformed): Length field value goes past the end of the payload]
            [Message: Length field value goes past the end of the payload]
            [Severity level: Error]
            [Group: Malformed]
Logical-Link Control
    DSAP: NULL LSAP (0x00)
    IG Bit: Individual
    SSAP: NULL LSAP (0x00)
    CR Bit: Command
    Control field: I, N(R)=0, N(S)=0 (0x0000)
        0000 000. .... .... = N(R): 0
        .... .... 0000 000. = N(S): 0
        .... .... .... ...0 = Frame type: Information frame (0x0000)
Data (42 bytes)
    Data: 000000000000000000000000000000000000000000000000...
    [Length: 42]

0000  02 00 00 00 00 11 02 00 00 00 00 11 00 60 00 00   .............`..
0010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0030  00 00 00 00 00 00 00 00 00 00 00 00               ............


-----

Verified on kernel 2.6.32-498.el6.x86_64

[root@dhcp-66-86-232 ~]# uname -r
2.6.32-498.el6.x86_64
[root@dhcp-66-86-232 ~]# modprobe bonding mode=5 miimon=100 
[root@dhcp-66-86-232 ~]# ifconfig bond0 up
[root@dhcp-66-86-232 ~]# ifenslave bond0 eth1
[root@dhcp-66-86-232 ~]# tshark -i eth1 -V -x
Running as user "root" and group "root". This could be dangerous.
Capturing on eth1
Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0
    Interface id: 0
    WTAP_ENCAP: 1
    Arrival Time: Sep 13, 2014 03:54:42.916605000 EDT
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1410594882.916605000 seconds
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 60 bytes (480 bits)
    Capture Length: 60 bytes (480 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:loop:data]
Ethernet II, Src: 02:00:00:00:00:11 (02:00:00:00:00:11), Dst: 02:00:00:00:00:11 (02:00:00:00:00:11)
    Destination: 02:00:00:00:00:11 (02:00:00:00:00:11)
        Address: 02:00:00:00:00:11 (02:00:00:00:00:11)
        .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Source: 02:00:00:00:00:11 (02:00:00:00:00:11)
        Address: 02:00:00:00:00:11 (02:00:00:00:00:11)
        .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
    Type: Loopback (0x9000)
Configuration Test Protocol (loopback)
    skipCount: 0
    Relevant function:
    Function: Unknown (0)
Data (42 bytes)
    Data: 000000000000000000000000000000000000000000000000...
    [Length: 42]

0000  02 00 00 00 00 11 02 00 00 00 00 11 90 00 00 00   ................
0010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0030  00 00 00 00 00 00 00 00 00 00 00 00               ............

Comment 19 errata-xmlrpc 2014-10-14 05:32:12 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2014-1392.html