From owner-freebsd-net@FreeBSD.ORG Sat Oct 18 17:32:10 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 540451065686 for ; Sat, 18 Oct 2008 17:32:10 +0000 (UTC) (envelope-from Hartmut.Brandt@dlr.de) Received: from smtp-1.dlr.de (smtp-1.dlr.de [195.37.61.185]) by mx1.freebsd.org (Postfix) with ESMTP id E14AA8FC1B for ; Sat, 18 Oct 2008 17:32:09 +0000 (UTC) (envelope-from Hartmut.Brandt@dlr.de) Received: from [129.247.12.15] ([129.247.12.15]) by smtp-1.dlr.de with Microsoft SMTPSVC(6.0.3790.1830); Sat, 18 Oct 2008 19:18:51 +0200 Message-ID: <48FA1A7C.5060801@dlr.de> Date: Sat, 18 Oct 2008 19:18:52 +0200 From: Hartmut Brandt Organization: German Aerospace Center User-Agent: Thunderbird 2.0.0.16 (Windows/20080708) MIME-Version: 1.0 To: Eugene Grosbein References: <20081018092405.GA91929@svzserv.kemerovo.su> In-Reply-To: <20081018092405.GA91929@svzserv.kemerovo.su> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 18 Oct 2008 17:18:51.0802 (UTC) FILETIME=[97522FA0:01C93145] 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 17:32:10 -0000 Eugene Grosbein wrote: > Hi! > > 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. 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. harti