SNMP Agent Extension -- Implementing the INTEL(R) LAN ADAPTERS MIB ================================================================== August 17, 2004 Contents ======== - Overview - Prerequisites - Installation - Functionality - Known Issues - License Overview ======== This file describes the Intel SNMP package for Linux* operating systems, version 1.8.x. This package supports the 2.4.x kernels. The SNMP agent extension extends the UCD-SNMP or NET-SNMP agent for Linux via a "pass-through" protocol. It provides information on the Intel(R) PRO LAN adapters (10/100/1000/10GbE) through the adapter drivers (e100, e1000, ixgb). It also provides information about advanced features, including teaming and VLANs, through the Advanced Network Services (ANS) module. The extension was tested on Red Hat* Enterprise Server 3 with the net-snmp-5.0.9 SNMP agent and on Red Hat 9.0 with the net-snmp-5.0.6 SNMP agent. Prerequisites ============== - An SNMP agent which supports the "pass-through" protocol should be installed on the system. - libstdc++-libc6.2-2.so.3 package - available in Red Hat* 7.2 and later. Located in either the libstdc++ or compat-libstdc++ package provided with the operating system. libstdc++.so.5 package is required for x86_64 architecture. Installation ============ 1. Copy the inic-snmp-xxx.tar.gz tar file to a directory of your choice. 2. Untar the archive: tar xzf inic-snmp-xxx.tar.gz The inic-snmp-x.x.x directory should be created. 3. Change directories to the inic-snmp-x.x.x directory: cd inic-snmp-x.x.x The following files should be in the directory: INSTALL ia32 ia64 INTELLAN.txt LICENSE README UNINSTALL inic-snmp_rh21.spec inic-snmp_rh3.spec inic-snmp_rh9.spec ldistrib.txt x86_64 4. Enter: ./INSTALL [-i ][-c ] The INSTALL script: - detects architecture () of the current machine (ia32, x86_64, or ia64) - copies the following files to the indicated location: - /inic-extension - to - /inic-daemon - to - LICENSE and README - to usr/share/doc/inic-snmp- - INTELLAN.txt - to - adds the following line anywhere in : pass .1.3.6.1.4.1.343.2.7.2 /inic_extension NOTES: is any preferred directory. If option -i is not used, is /usr/local/sbin. is any configuration file for the SNMP agent. If option -c is not used, is the file specified in the snmpd.conf man page. If this file does not exist, INSTALL script creates an empty file in the specified location. is the MIBS directory specified in the snmpd man page. 5. In order to receive both complete information on counters and SNMP traps, run the inic_daemon executable before using the extended agent. The inic_daemon executable is used for keeping track of internal counters and sending traps to the SNMP clients. The daemon recognizes the directives 'trapsink', 'trap2sink', 'informsink', 'trapcommunity', 'agentuser', 'agentaddress', and 'agentgroup' (for more information, see the snmpd.conf man page). These directives are optional and should be added manually to (see previous step, ). By default, the inic_daemon reads the trap directives from the configuration file specified in the snmpd.conf man page (see previous step, ). In order to use an alternative configuration file, specify the file from the inic_daemon command line using the '-c' option: inic_daemon -c Your SNMP agent is now ready to run. 6. Install the clients. Copy the MIB file (INTELLAN.txt) to every management station, placing it in the relevant MIBS directory. This varies according to the SNMP MIB browser/application you are using. For more information concerning the UCD-SNMP (NET-SNMP) package, go to http://net-SNMP.sourceforge.net. To uninstall enter: ------------------ ./UNINSTALL [-i ][-c ] The UNINSTALL script will remove all files installed in step 4 (see above). If is not specified, the default is the directory used when running the INSTALL script. The UNINSTALL script will remove the line pass .1.3.6.1.4.1.343.2.7.2 /inic_extension from . If is not specified, the default is the file used when running the INSTALL script. To keep all features of UNINSTALL script working properly, it is not recommended to relocate the files installed/edited by INSTALL script. To relocate them run UNINSTALL and then INSTALL with new parameters. NOTE: The UNINSTALL script will not remove any directives added manually to . Functionality ============ The SNMP extension implements the following MIB branch. The branch is located under the Intel branch at: .intel.products.nic-products.intel-lan-adapters Full OID: .1.3.6.1.4.1.343.2.7.2 +--intel-lan-adapters(2) | +--component-description(1) | | | +-- -R-- String company(1) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- String description(2) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- String operatingSystem(3) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- String mibVersion1-4-3(4) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- String mibVersionSupported(5) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- String agentExtensionVersion(6) | | Textual Convention: DisplayString | | Size: 0..255 | +-- -R-- EnumVal status(7) | Values: baseDriverNotLoadedAnsNotLoaded(0), | baseDriverLoadedAnsNotLoaded(1), | baseDriverNotLoadedAnsLoaded(2), | baseDriverLoadedAnsLoaded(3) | +--adaptersTables(2) | | | +--genericAdaptersAttrTables(1) | | | | | +--genericAdaptersAttrTable(1) | | | | | | | +--genericAdapterAttrEntry(1) | | | | Index: adapterIndex | | | | | | | +-- -R-- Integer32 adapterIndex(1) | | | | Textual Convention: InterfaceIndex | | | | Range: 1..2147483647 | | | +-- -R-- String adapterName(2) | | | | Textual Convention: DisplayString | | | | Size: 0..255 | | | +-- -R-- EnumVal adapterType(3) | | | | Values: standAlone(0), teamMember(1), virtual(2) | | | +-- -R-- EnumVal adapterDriverLoadStatus(4) (***) | | | Values: loaded(0), notLoaded(1) | | | | | +--genericAdaptersDriversAttrTable(2) | | | | | | | +--genericAdapterDriverAttrEntry(1) | | | | Index: adapterIndex | | | | | | | +-- -R-- String adapterDriverName(1) | | | | Textual Convention: DisplayString | | | | Size: 0..255 | | | +-- -R-- String adapterDriverInfo(2) | | | | Textual Convention: DisplayString | | | | Size: 0..255 | | | +-- -R-- String adapterDriverVersion(3) | | | | Textual Convention: DisplayString | | | | Size: 0..255 | | | +-- -R-- String adapterDriverPath(4) (***) | | | | Textual Convention: DisplayString | | | | Size: 0..255 | | | +-- -R-- String adapterDriverDate(5) (***) | | | | Textual Convention: DisplayString | | | | Size: 0..255 | | | +-- -R-- String adapterDriverSize(6) (***) | | | Textual Convention: DisplayString | | | Size: 0..255 | | | | | +--genericAdaptersTrafficStatsAttrTable(3) | | | | | +--genericAdapterTrafficStatsAttrEntry(1) | | | Index: adapterIndex | | | | | +-- -R-- Counter adapterRxPackets(1) | | +-- -R-- Counter adapterTxPackets(2) | | +-- -R-- Counter adapterRxBytes(3) | | +-- -R-- Counter adapterTxBytes(4) | | +-- -R-- Counter adapterRxErrors(5) | | +-- -R-- Counter adapterTxErrors(6) | | +-- -R-- Counter adapterRxDropped(7) | | +-- -R-- Counter adapterTxDropped(8) | | +-- -R-- Counter adapterRxMulticast(9) | | +-- -R-- Counter adapterCollisions(10) | | | +--physicalAdaptersAttrTables(2) | | | | | +--physicalAdaptersAttrTable(1) | | | | | | | +--physicalAdapterAttrEntry(1) | | | | Index: physicalAdapterIndex | | | | | | | +-- -R-- Integer32 physicalAdapterIndex(1) | | | | Textual Convention: InterfaceIndex | | | | Range: 1..2147483647 | | | +-- -R-- EnumVal physicalAdapterLinkStatus(2) | | | | Values: not-available(-1), link-up(0), link-down(1) | | | +-- -RW- Counter32 physicalAdapterLinkStatusChangesCounter(3) | | | +-- -R-- Gauge physicalAdapterSpeed(4) | | | +-- -R-- EnumVal physicalAdapterDplxMode(5) | | | | Values: not-available(0), half(1), full(2) | | | +-- -R-- EnumVal physicalAdapterAutoNegotiation(6) (***) | | | | Values: on(0), off(1) | | | +-- -R-- INTEGER physicalAdapterPciBus(7) | | | +-- -R-- INTEGER physicalAdapterPciSlot(8) | | | +-- -R-- INTEGER physicalAdapterIrq(9) | | | +-- -R-- String physicalAdapterCurrentNA(10) | | | | Textual Convention: PhysAddress | | | +-- -R-- String physicalAdapterPermanentNA(11) | | | | Textual Convention: PhysAddress | | | +-- -R-- INTEGER physicalAdapterOnlineDiagStatus(12) | | | Values: not-available(-1), failed(0), passed(1) | | | | | +--physicalAdaptersAttrChecksumOffloadTable(2) | | | | | +--physicalAdapterAttrChecksumOffloadEntry(1) | | | Index: physicalAdapterIndex | | | | | +-- -R-- EnumVal physicalAdapterTcpRxChecksumOffLoadEnable(1) (***) | | | Values: enabled(0), disabled(1) | | +-- -R-- Counter physicalAdapterTcpRxChecksumBad(2) (***) | | +-- -R-- EnumVal physicalAdapterTcpTxChecksumOffLoadEnable(3) (***) | | Values: enabled(0), disabled(1) | | | +--virtualAdaptersAttrTables(3) | | | | | +--virtualAdaptersAttrTable(1) | | | | | | | +--virtualAdapterAttrEntry(1) | | | | Index: virtualAdapterIndex | | | | | | | +-- -R-- Integer32 virtualAdapterIndex(1) | | | | Textual Convention: InterfaceIndex | | | | Range: 1..2147483647 | | | +-- -R-- INTEGER virtualAdapterAnsId(2) | | | | | +--virtualAdaptersVlanAttrTable(2) | | | | | +--virtualAdapterVlanAttrEntry(1) | | | Index: virtualAdapterIndex | | | | | +-- -R-- EnumVal virtualAdapterVlanId(1) | | Values: none(0) | | | +--ansAttrTables(4) | | | | | +--ansAttrTable(1) | | | | | | | +--ansAttrEntry(1) | | | | Index: ansId | | | | | | | +-- -R-- INTEGER ansId(1) | | | +-- -R-- INTEGER ansNumberOfMembers(2) | | | +-- -R-- INTEGER ansNumberOfVirtualAdapters(3) | | | | | +--ansVlansAttrTable(2) | | | | | | | +--ansVlanAttrEntry(1) | | | | Index: ansId | | | | | | | +-- -R-- EnumVal ansVlanTaggingType(1) | | | | Values: none(0), tag-802-1Q(1), tag-802-1P(2), | | | | tag-802-3AC(3), tag-iSL(4) | | | +-- -R-- EnumVal ansVlanGvrpSupport(2) | | | Values: enabled(0), disabled(1) | | | | | +--ansTeamsAttrTable(3) | | | | | +--ansTeamAttrEntry(1) | | | Index: ansId | | | | | +-- -R-- String ansTeamName(1) | | | Textual Convention: DisplayString | | | Size: 0..255 | | +-- -R-- EnumVal ansTeamMode(2) | | | Values: none(0), | | | adapter-fault-tolerance(1), | | | adaptive-load-balancing(2), | | | static-link-aggregation(3), | | | iEEE-802-3ad(5), | | | switch-fault-tolerance(6) | | +-- -R-- EnumVal ansTeamLinkState(3) | | | Values: up(0), down(1) | | +-- -R-- Gauge ansTeamSpeed(4) | | +-- -R-- EnumVal ansTeamProbesState(5) | | | Values: probes-enabled(0), probes-disabled(1) | | +-- -R-- EnumVal ansTeamProbesMode(6) | | | Values: broadcast(0), multicast(1), not-available(2) | | +-- -R-- EnumVal ansTeamLoadBalanceRefresh(7) (***) | | | Values: not-available(0) | | +-- -R-- EnumVal ansTeamProbesSendTime(8) | | | Values: not-available(0) | | +-- -R-- EnumVal ansTeamPreferredPrimaryIndex(9) (***) | | | Values: not-available(-1) | | +-- -R-- EnumVal ansTeamCurrentPrimaryIndex(10) | | | Values: not-available(-1) | | +-- -R-- EnumVal ansTeamPreviousPrimaryIndex(11) | | | Values: not-available(-1) | | +-- -RW- Counter32 ansTeamFailoverCounter(12) | | +-- -R-- EnumVal ansTeamSlaCompatible(13) (***) | | | Values: not-available(-1), yes(0), no(1) | | +-- -R-- EnumVal ansTeamAggrSelectionMode(14) | | | Values: not-available(-1), bandwidth(0), count(1) | | +-- -R-- EnumVal ansTeamRlbSupport(15) | | Values: not-available(-1), enabled(0), disable(1) | | | | | +--ansMembersAttrTables(5) | | | +--ansMembersAttrTable(1) | | | | | +--ansMemberAttrEntry(1) | | | Index: ansMemberIndex | | | | | +-- -R-- Integer32 ansMemberIndex(1) | | | Textual Convention: InterfaceIndex | | | Range: 1..2147483647 | | +-- -R-- INTEGER ansMemberAnsId(2) | | | +--ansTeamMembersAttrTable(2) | | | +--ansTeamMemberAttrEntry(1) | | Index: ansMemberIndex | | | +-- -R-- EnumVal ansTeamMemberState(1) | | Values: active(0), disabled(1), standby(2), | | active-secondary(3) | +-- -RW- Counter32 ansTeamMemberFailureCounter(2) | +-- -R-- EnumVal ansTeamMemberPriority(3) | Values: none(0), primary(1), secondary(2) | +--events(3) | +--physicalAdaptersEvents(1) | | | +--physicalAdaptersTraps(1) | | | | | +--physicalAdapterLinkUpTrap(1) | | +--physicalAdapterLinkDownTrap(2) | | +--physicalAdapterAddedTrap(3) (***) | | +--physicalAdapterRemovedTrap(4) (***) | | +--physicalAdapterOnlineDiagPassedTrap(5) | | +--physicalAdapterOnlineDiagFailedTrap(6) | | | +-- -RW- EnumVal physicalAdapterLinkUpDownTrapEnable(2) | | Values: disabled(0), enabled(1) | +-- -RW- EnumVal physicalAdapterAddedRemovedTrapEnable(3) (***) | | Values: disabled(0), enabled(1) | +-- -RW- EnumVal physicalAdapterOnlineDiagPassedFailedTrapEnable(4) | Values: disabled(0), enabled(1) | +--virtualAdaptersEvents(2) | | | +--virtualAdaptersTraps(1) | | | | | +--virtualAdapterAddedTrap(1) | | +--virtualAdapterRemovedTrap(2) | | | +-- -RW- EnumVal virtualAdaptersTrapEnable(2) | Values: disabled(0), enabled(1) | +--ansEvents(3) | | | +--ansTraps(1) | | | | | +--ansTeamFailoverTrap(1) | | +--ansAddedTrap(2) | | +--ansRemovedTrap(3) | | | +-- -RW- EnumVal ansTrapEnable(2) | Values: disabled(0), enabled(1) | +--teamMembersEvents(4) | +--teamMembersTraps(1) | | | +--teamMemberAddedTrap(1) | +--teamMemberRemovedTrap(2) | +-- -RW- EnumVal teamMemberTrapEnable(2) Values: disabled(0), enabled(1) (***) Not Implemented Known Issues ============ NOTE: For Linux distribution-specific information, see the ldistrib.txt file included in the SNMP tar file. Possible Memory Leak scenario ----------------------------- When informsink is set to a host that acknowledges the message, there is a memory leak in inic_daemon. This is due to a memory leak in net-snmp code and is a third party issue. License ======= This software program is released under the terms of a license agreement between you ('Licensee') and Intel. Do not use or load this software or any associated materials (collectively, the 'Software') until you have carefully read the full terms and conditions of the LICENSE located in this software package. By loading or using the Software, you agree to the terms of this Agreement. If you do not agree with the terms of this Agreement, do not install or use the Software. * Other names and brands may be claimed as the property of others.