Bug 287471

Summary: /proc/net/snmp6 and /proc/net/dev_snmp6/* do not contain Icmp6OutEchos
Product: Red Hat Enterprise Linux 5 Reporter: Jan Safranek <jsafrane>
Component: kernelAssignee: Neil Horman <nhorman>
Status: CLOSED UPSTREAM QA Contact: Martin Jenner <mjenner>
Severity: medium Docs Contact:
Priority: medium    
Version: 5.1CC: davem, nhorman
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-11-27 16:30:03 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On:    
Bug Blocks: 231191    
Attachments:
Description Flags
new patch none

Description Jan Safranek 2007-09-12 11:13:11 UTC
Description of problem:
/proc/net/snmp6 and /proc/net/dev_snmp6/* contain various statistics which
net-snmp uses to allow remote management of a network node. These statistics
include counter of incoming IPv6 echo request, incoming echo replies and
outgoing echo replies, but number of outgoing echo requests is missing.

Net-snmp cannot implement part of its functionality because of missing nr. of
sent IPv6 echo requests.

Version-Release number of selected component (if applicable):
kernel-2.6.18-8.el5 (x86_64)

How reproducible:
always

Steps to Reproduce:
1. cat /proc/net/snmp6 | grep Echo
2. cat /proc/net/dev_snmp6/eth0 | grep Echo

Actual results:
Icmp6InEchos           1
Icmp6InEchoReplies     2
Icmp6OutEchoReplies    3

Expected results:
Icmp6InEchos           1
Icmp6InEchoReplies     2
Icmp6OutEchoReplies    3
Icmp6OutEchos          4

Additional info:

Comment 1 Neil Horman 2007-09-17 14:57:51 UTC
It just occured to me why we don't nominally count OutEchos: Its because the
kernel doesn't send them.  User space applications send them using raw or udp
sockets in which the hdrincl bit is set for outgoing messages.  The kernel just
sees these as raw data, and there is no code path through which we can acurately
count on all the outgoing echos to pass.  I'm going to see if I can come up with
something, but this may have to be a CANTFIX issue.

Comment 2 Neil Horman 2007-09-18 20:28:24 UTC
my upstream development on this can be tracked here:
http://git.infradead.org/?p=users/nhorman/linux-2.6.git;a=shortlog;h=snmp

Comment 3 Neil Horman 2007-10-11 18:19:13 UTC
Jan, I've got a patch that could use some testing.  kernels are build in brew under:

brewroot/scratch/nhorman/task_1006335

They should implement ICMPOUTECHOS

If you could test and confrim, I would appreciate it.  Thanks!

Comment 4 Jan Safranek 2007-10-12 08:48:41 UTC
It does not work for me (at least in my KVM virtualized environment) -
Icmp6OutEchos is still zero:

$ uname -a
Linux rhel5-x86_64 2.6.18-53.el5.bz287471 #1 SMP Thu Oct 11 11:16:08 EDT 2007
x86_64 x86_64 x86_64 GNU/Linux

$ ping6 -c 3 2001:0db8:0:f101::1
PING 2001:0db8:0:f101::1(2001:db8:0:f101::1) 56 data bytes
64 bytes from 2001:db8:0:f101::1: icmp_seq=0 ttl=64 time=2.58 ms
64 bytes from 2001:db8:0:f101::1: icmp_seq=1 ttl=64 time=0.348 ms
64 bytes from 2001:db8:0:f101::1: icmp_seq=2 ttl=64 time=0.608 ms
...

$ grep Echo /proc/net/snmp6
Icmp6InEchos                            6
Icmp6InEchoReplies                      16
Icmp6OutEchos                           0
Icmp6OutEchoReplies                     6

Is here any way how I can help you to localize the problem?

Comment 5 Jan Safranek 2007-11-14 15:29:11 UTC
One of the patches in bug #253278 adds the necessary counters.

Comment 6 Neil Horman 2007-11-15 19:45:21 UTC
Created attachment 260331 [details]
new patch

ok, heres a new test patch.  It seems to work reasonably well for me.  Please
confirm and I'll send it upstream and for RHEL5 review.  Thanks!

Comment 7 Jan Safranek 2007-11-20 10:06:41 UTC
By comment #5 I had in my mind that you do not need to care about this bug
anymore and close it when bug #253278 is fixed, but I checked the patch in
comment #6 and it works. Thank you very much.

I noticed slightly strange results - if I ping link-local IPv6 address, I get
outgoing echo requests counted on eth0, but incoming echo requests on loopback:
$ ifconfig
eth0 inet6 addr: fe80::216:3eff:fe74:fd65/64 Scope:Link

$ ping -I eth0 fe80::216:3eff:fe74:fd65/64
64 bytes from fe80::216:3eff:fe74:fd65: icmp_seq=0 ttl=64 time=0.357 ms
64 bytes from fe80::216:3eff:fe74:fd65: icmp_seq=1 ttl=64 time=0.070 ms

$  grep Echo /proc/net/dev_snmp6/*
/proc/net/dev_snmp6/eth0:Icmp6InEchos        0
/proc/net/dev_snmp6/eth0:Icmp6InEchoReplies  0
/proc/net/dev_snmp6/eth0:Icmp6OutEchos       2
/proc/net/dev_snmp6/eth0:Icmp6OutEchoReplies 0
/proc/net/dev_snmp6/lo:Icmp6InEchos          2
/proc/net/dev_snmp6/lo:Icmp6InEchoReplies    2
/proc/net/dev_snmp6/lo:Icmp6OutEchos         0
/proc/net/dev_snmp6/lo:Icmp6OutEchoReplies   2

I would expect that all packets go through the same interface, eth0 in this
case. I do not necessarily mean it is a bug, the results are just a little
surprising.

Comment 8 Neil Horman 2007-11-27 16:30:03 UTC
Looks like upstream already has support for outEchos from this commit:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=14878f75abd5bf1d38becb405801cd491ee215dc

Looks like our work here is done for RHEL6