非常教程

Erlang 20参考手册

snmp

管理Netif 的定义 | 13. Definition of Manager Net if

图13.1:Manager Net的用途

网络接口(Net if)进程将SNMP PDU传递给管理器服务器,并从管理器服务器接收SNMP PDU。Net if进程的最常见行为是从管理器服务器接收请求PDU,将PDU编码为字节并将字节传输到网络中的代理。当代理的回复被Net if进程接收时,它将其解码为一个SNMP PDU,并发送给管理服务器。

但是,这种简单的行为可以通过多种方式进行修改。例如,Net if进程可以对字节应用某种加密/解密方案。

snmp应用程序提供了两个不同的模块snmpm_net_if(默认),并且snmpm_net_if_mt都使用UDP作为传输协议,即传输域transportDomainUdpIpv4和/或transportDomainUdpIpv6。两个模块之间的区别在于后者是“多线程”的,即对于每个消息/请求,创建一个新的进程来处理消息/请求,然后退出。

也可以编写自己的Net if进程,本节将介绍如何执行此操作。

13.1项强制性职能

Net if进程必须实现SNMP管理器network interface behaviour

13.2 消息

消息 ”部分描述必需的消息,如果必须发送给管理服务器进程,则为网络。

在本节中,域字段是传输域,即transportDomainUdpIpv4或transportDomainUdpIpv6之一,Addr字段是{IpAddr,IpPort}元组。

Net如果从网络接收到针对MasterAgent的SNMP PDU时必须发送以下消息:

Server ! {snmp_pdu, Pdu, Domain, Addr}
    
  • Pdusnmp_types.hrlSNMP请求中定义的SNMP PDU记录。
  • Domain源传输域。
  • Addr是源地址。Server ! {snmp_trap, Trap, Domain, Addr}
  • Trapsnmp_types.hrlSNMP请求中定义的SNMP pdu记录或trappdu记录。
  • Domain源传输域。
  • Addr是源地址。
Server ! {snmp_inform, Ref, Pdu, PduMS, Domain, Addr}
    
  • Ref是原子忽略或可用于识别通知请求的内容(例如request-id)。 如果对inform-request的响应(确认)已经发送(这意味着服务器不会调用inform_response函数),则使用ignore。 有关更多信息,请参阅通知请求行为配置选项。
  • Pdusnmp_types.hrlSNMP请求中定义的SNMP PDU记录。
  • Domain源传输域。
  • Addr是源地址。
Server ! {snmp_report, Data, Domain, Addr}
    
  • 数据是{ok,Pdu}或{error,ReqId,ReasonInfo,Pdu}。 使用哪一个取决于来自MPD process_msg函数的返回值。 如果MsgData正确,则使用第一个,如果它是{error,ReqId,Reason},则使用后者。
  • Pdusnmp_types.hrlSNMP请求中定义的SNMP PDU记录。
  • ReqId是个整数。
  • ReasonInfo 是一个术语()。
  • Domain源传输域。
  • Addr是源地址。

注记

由于Net if进程负责编码和解码SNMP消息,因此它还必须更新MIB-II中的SNMP组中的相关计数器。它可以将模块中的功能snmpm_mpd用于此目的(有关更多详细信息,请参阅参考手册的章节snmp模块snmpm_mpd)。

在模块中还有一些用于编码和解码SNMP消息的有用功能snmp_pdus

snmp相关

1.1. SNMP简介 | 1. SNMP Introduction
2.2.代理功能描述 | 2. Agent Functional Description
3.3.管理功能描述 | 3. Manager Functional Description
4.4. MIB编译器 | 4. The MIB Compiler
5.5.运行应用程序 | 5. Running the application
6.6.代理配置文件的定义 | 6. Definition of Agent Configuration Files
7.7. Manager配置文件的定义 | 7. Definition of Manager Configuration Files
8.8.代理实现示例 | 8. Agent Implementation Example
9.9.管理实施例 | 9. Manager Implementation Example
10.10.检测函数 | 10. Instrumentation Functions
11.检测函数的定义 | 11. Definition of Instrumentation Functions
12.Net if的定义 | 12. Definition of Agent Net if
13.14.审计跟踪日志 | 14. Audit Trail Log
14.15.高级代理主题 | 15. Advanced Agent Topics
15.16. SNMP Appendix A
16.17. SNMP Appendix B
17.snmp
18.snmpa
19.snmpa_conf
20.snmpa_discovery_handler
21.snmpa_error
22.snmpa_error_io
23.snmpa_error_logger
24.snmpa_error_report
25.snmpa_local_db
26.snmpa_mib_data
27.snmpa_mib_storage
28.snmpa_mpd
29.snmpa_network_interface
30.snmpa_network_interface_filter
31.snmpa_notification_delivery_info_receiver
32.snmpa_notification_filter
33.snmpa_supervisor
34.snmpc
35.snmpm
36.snmpm_conf
37.snmpm_mpd
38.snmpm_network_interface
39.snmpm_network_interface_filter
40.snmpm_user
41.snmp_community_mib
42.snmp_framework_mib
43.snmp_generic
44.snmp_index
45.snmp_notification_mib
46.snmp_pdus
47.snmp_standard_mib
48.snmp_target_mib
49.snmp_user_based_sm_mib
50.snmp_view_based_acm_mib
Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1