Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Oct 2008 02:41:40 +0800
From:      Eugene Grosbein <eugen@kuzbass.ru>
To:        Hartmut Brandt <hartmut.brandt@dlr.de>
Cc:        net@freebsd.org
Subject:   Re: SNMP High Capacity Counters
Message-ID:  <20081018184140.GA71679@svzserv.kemerovo.su>
In-Reply-To: <48FA1A7C.5060801@dlr.de>
References:  <20081018092405.GA91929@svzserv.kemerovo.su> <48FA1A7C.5060801@dlr.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Oct 18, 2008 at 07:18:52PM +0200, Hartmut Brandt wrote:

> >I've just found that ports/net-snmp (version 5.4) built
> >WITH_MFD_REWRITES=yes supports IF-MIB, and in theory should show 64-bit
> >ifHC* counters but it does not.
> >
> >It seems agent/mibgroup/if-mib/data_access/interface_sysctl.c that obtains
> >interface statistics from the kernel.
> >The function netsnmp_arch_interface_container_load() has the following 
> >code:
> >
> >        /* get counters */
> >        entry->stats.ibytes.low = ifp->ifm_data.ifi_ibytes;
> >        entry->stats.ibytes.high = 0;
> >        entry->stats.iucast.low = ifp->ifm_data.ifi_ipackets;
> >        entry->stats.iucast.high = 0;
> >        entry->stats.imcast.low = ifp->ifm_data.ifi_imcasts;
> >        entry->stats.imcast.high = 0;
> >
> >So, it always produce 32-bit quantities. My question is:
> >does FreeBSD/i386 kernel maintain 64-bit counters for interface statictics
> >these days? If yes, since what version?

> It does not, because not all architectures have atomic 64-bit increments 
> and adds. Implementing 64-bit counters on these architectures would 
> require some kind of locking. This was discussed in the past.

Yes, I've read archives and saw a discussion dated 2002 or 2003.
Some time has passed since than, generic CPU horsepower has changed.
And I'm sure IPFW maintains 64-bit counters for FreeBSD/i386
without a problem. Yes, IPFW is additional feature and needs to be enables
explicitly. I run it since 2.2.8 in every kernel and had no problems with
(lots of) its 64-bit counters. Would (optionally) having
another pack of them hurt? I've read someone made a path for 64-bit
statictics counters in 2002.

> You might look at the IF-MIB implementation of bsnmp (it is in the base 
> system). It uses periodic polling to detect wraps of the 32-bit 
> counters. The poll interval is tuned to the fastest interface in the 
> system (given that all interfaces reported the correct speed).
> 
> Note, that the netsnmp implementation is plain wrong - if the daemon 
> does not support the HC counters it should never pretend to do. This is 
> explicitely stated somewhere in the RFCs.

It does really support them for Linux and Solaris.
They seem to have solved this problem somehow.
It would be very nice to have, say, kernel option to enable
the support. Just like options IPFIREWALL.

Eugene Grosbein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081018184140.GA71679>