1 / 10

EPICS devSNMP Extensions

EPICS devSNMP Extensions. Euan Troup, Euan.Troup@csiro.au CSIRO Australia Telescope National Facility ASKAP Project Paul Wild Observatory. What Is devSNMP ?. devSNMP connects a set of objects on a network to an EPICS IOC SNMP is the Simple Network Management Protocol

kioko
Download Presentation

EPICS devSNMP Extensions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EPICS devSNMP Extensions • Euan Troup, Euan.Troup@csiro.au • CSIRO Australia Telescope National Facility • ASKAP Project • Paul Wild Observatory

  2. What Is devSNMP ? • devSNMP connects a set of objects on a network to an EPICS IOC • SNMP is the Simple Network Management Protocol • Found in routers, switches, embedded devices etc • Provides for set, get and notification messages • Existing version at http://www-mks2.desy.de/content/e4/e40/e41/e12212/index_ger.html • SNMP support based on Net-SNMP API http://www.net-snmp.org • Earlier versions of devSNMP only supported get, now supports SNMP set and notification messages (traps)

  3. A Bit More SNMP • SNMP objects consist of an OID and a value • An OID is a numerical string in dotted decimal format such as .1.3.6.1.2.1.1.1 • Numeric OIDs are given a more descriptive name using MIB files • MIBS use ASN.1 to give structure to names • .1.3.6.1.2.1.1.1 becomes .iso.org.dod.internet.mgmt.mib-2.system.sysDescr • OID + value corresponds to EPICS PV name + value • SNMP includes basic data types similar to EPICS data types e.g. integer, octet string… • MIB file parsing is provided by the Net-SNMP library so you can abbreviate above to MIB-2::sysDescr

  4. devSNMP Features And Extensions • devSNMP 1.03 supports ai, longin, stringin, waveform, longin with support for truncated 64-bit values (Counter64 SNMP type) • Added support for ao, longout, stringout • Support for I/O Intr processing of trap messages • Supported directly so no need for snmptrapd config • Overhead removed in asynch processing • Original used polling once per second per object • Now transaction only when requested • Can have updates faster than once per second • Explicit SNMP v1 support • Compile-time option for sending float or double data types directly over SNMP • Tested on Linux & OS X with Net-SNMP 5.4

  5. devSNMP In Practice • Rabbit microcontroller • Analogue and digital I/O for monitor & control • Low power mode for data acquisition – low RFI • Wakes up periodically and sends stored data via SNMP trap • (Proposed) DC PSU monitor ATCA crate 4.5 kW DC supply with SNMP monitoring

  6. How Do You Use It? • Patched source can be provided by Euan Troup, Euan.Troup@csiro.au • Compiles to a support library & soft IOC • Makefile for application needs the following added: USR_CFLAGS += `net-snmp-config --cflags` USR_CFLAGS += -DNETSNMP_NO_INLINE USR_LDFLAGS += `net-snmp-config –libs`

  7. How Do You Use It (2)? • Use field (DTYP,"Snmp") • Instrument I/O setup e.g. field (INP,"@localhost public IF-MIB::ifInUcastPkts.1 Counter32: 11") for ai,longin,stringin and • Hostname of remote object • SNMP community name • MIB name to be converted to OID • Data type of object • Size of buffer for processing returned value • Same for output records • Add v1 to end of string for SNMP v1 support • If omitted defaults to SNMP v2c

  8. How Does It Work? • Record processing pass 1 through device support sets record->pact = true, puts device private info on list of active requests, starts an asynch SNMP transaction and sends an epicsEvent to asynch read thread • Read thread waits on event which can be sent by any record then processes all outstanding requests using snmp_sess_select_info() call • After calling select() an SNMP callback function or timeout function is triggered • SNMP callback starts an EPICS callbackRequest() which starts record processing again and completes pass 2 through device support

  9. How Does It Work (2)? • Trap support creates a separate thread listening on udp port 162 or specified using an environment variable • Port 162 is privileged under unix so root or suid executable is required • Records structures for records using I/O Intr scanning are put on a list which is traversed each time a trap is received • Thread receives traps and matches hostnames and OID for active records then uses callback mechanism to process the record • Records can be added or removed from trap processing by changing the SCAN field which uses get_ioint_info() device support function

  10. Possible Future Developments • rbv (readback value) support for ao record • Make traps with multiple updates of database records atomic • Full support for Counter64 – probably requires 64-bit record in EPICS

More Related