From owner-freebsd-net@FreeBSD.ORG Sat Oct 18 18:41:49 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A84E1065690 for ; Sat, 18 Oct 2008 18:41:49 +0000 (UTC) (envelope-from eugen@kuzbass.ru) Received: from www.svzserv.kemerovo.su (www.svzserv.kemerovo.su [213.184.65.80]) by mx1.freebsd.org (Postfix) with ESMTP id 847EE8FC17 for ; Sat, 18 Oct 2008 18:41:47 +0000 (UTC) (envelope-from eugen@kuzbass.ru) Received: from www.svzserv.kemerovo.su (eugen@localhost [127.0.0.1]) by www.svzserv.kemerovo.su (8.13.8/8.13.8) with ESMTP id m9IIffsc073033; Sun, 19 Oct 2008 02:41:41 +0800 (KRAST) (envelope-from eugen@www.svzserv.kemerovo.su) Received: (from eugen@localhost) by www.svzserv.kemerovo.su (8.13.8/8.13.8/Submit) id m9IIfees073032; Sun, 19 Oct 2008 02:41:40 +0800 (KRAST) (envelope-from eugen) Date: Sun, 19 Oct 2008 02:41:40 +0800 From: Eugene Grosbein To: Hartmut Brandt Message-ID: <20081018184140.GA71679@svzserv.kemerovo.su> References: <20081018092405.GA91929@svzserv.kemerovo.su> <48FA1A7C.5060801@dlr.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <48FA1A7C.5060801@dlr.de> User-Agent: Mutt/1.4.2.3i Cc: net@freebsd.org Subject: Re: SNMP High Capacity Counters X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Oct 2008 18:41:49 -0000 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