Bug 84951 - 8021q: kernel doesn't take into account ethernet header bytes for received packets
Summary: 8021q: kernel doesn't take into account ethernet header bytes for received pa...
Status: NEW
Alias: None
Product: Networking
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-09-21 18:47 UTC by Garri
Modified: 2014-09-21 18:47 UTC (History)
0 users

See Also:
Kernel Version: 3.16.1
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Garri 2014-09-21 18:47:13 UTC
Statistics exported by the kernel for received packets on 802.1q subinterfaces don't consider Ethernet header bytes (dst MAC, src MAC, type). Statistics for transmitted packets is not affected. The problem is more prominent on high-speed links (>100Mb/s), as networking tools (nload, iftop, ...) display lower bandwidth utilization (>5Mb/s difference) than a report from neighboring routing device (FreeBSD, Cisco). Also, someone monitoring Linux router interfaces will find that the router generates more information than it receives.

Tested on CentOS kernel 2.6.32-431.29.2.el6.x86_64 and vanilla 3.16.1 with drivers: bnx2, atl1c and igb.

How to reproduce:

1. Create dot1q subinterfaces on two boxes (vconfig add eth0 4040).
2. Assign IP addresses to subinterfaces.
3. Check the connection using ping.
4. Check the output from ifconfig eth0.4040 or 'cat /sys/class/net/eth0.4040/statistics/rx_{packets,bytes}'.
5. Issue standard 56 byte payload ping using 'ping -c 1 neighboring_ip'.
6. Recheck statistics using step 4.

Expected results:

Received packets value should increase by 1 and received bytes value should increase by 98.

dst MAC - 6
src MAC - 6
ethertype - 2
IP header - 20
ICMP header - 8
ICMP Payload - 56
Total: 98 bytes.


Actual results:

Received packets value increases by 1 and received bytes value increases by 84 bytes.

Note You need to log in before you can comment on or make changes to this bug.