CN102594611B - 一种网管代理更新Trap会话链表的方法 - Google Patents
一种网管代理更新Trap会话链表的方法 Download PDFInfo
- Publication number
- CN102594611B CN102594611B CN201210076855.3A CN201210076855A CN102594611B CN 102594611 B CN102594611 B CN 102594611B CN 201210076855 A CN201210076855 A CN 201210076855A CN 102594611 B CN102594611 B CN 102594611B
- Authority
- CN
- China
- Prior art keywords
- address
- trap
- array
- session
- conversation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明涉及一种网管代理更新Trap会话链表的方法。该方法包括如下步骤:管理端向代理端发送广播UDP包;代理端从接收的UDP包中提取管理端IP地址;将提取的IP地址与数组中存储的IP地址比较,如果IP地址已经存在则丢弃提取的IP,如果不存在且数组有空间,则把提取的IP存储到数组中,如果IP不存在且数组空间已满,则用提取的IP替换数组中最旧的IP;数组存储IP地址的同时,调用函数创建Trap会话;如果总的Trap会话个数小于2个,把新Trap会话加入到Trap会话链表中,否则先关闭旧的Trap会话,然后删除Trap链表中的旧Trap会话,再把新Trap会话加入到Trap会话链表中。
Description
技术领域
本发明是针对简单网络管理协议中代理端更新Trap会话链表的方案,主要用于解决网络中管理端临时改变IP地址,代理端不能向更新后的IP发送告警消息的问题,属于网络管理技术领域。
背景技术
在网络系统中,被管设备中的代理可以在任何时候向管理工作站报告错误情况,例如预定阈值越界程度等等。代理并不需要等到管理工作站轮询它的时候才会报告。Trap是发送给SNMP管理者的通知网络状况的警告消息。
代理端snmpd.conf配置文件中保存有管理端的IP地址,例如“Trap2sink192.168.0.123162”,snmp代理进程启动的时候会读取snmpd.conf配置文件并根据管理端的IP地址生成相应的Trap会话,添加到Trap会话链表中。当代理端出现异常时,遍历整个Trap会话链表,向管理端发送Trap告警消息。但是snmp只有在启动进程的时候(而不是在snmp进程运行过程中)会读取snmpd.conf配置文件,因此在进程运行过程中,Trap会话链表并不会改变。如果在进程运行过程中,管理端临时改变自己的IP地址,但代理端的Trap会话链表没有更新,那代理端就不能向新的管理端IP发送Trap告警来告知异常。
发明内容
技术问题:本发明的目的是提供一种当管理端改变自己的IP地址,代理端能够更新Trap会话链表的方法。
技术方案:本发明的方法是一种策略性的方法,通过截取管理端的IP地址,代理端可以实时,动态的更新Trap会话链表。
体系结构:
管理工作站向代理设备获取信息的途径有两种:一是查询,由管理工作站向代理端发出查询消息,代理端处理后回送应答消息;二是接收从代理端发送的Trap消息。TRAP是从代理端到管理站的异步报告机制。当代理设备出现故障,或代理设备参数超标,为了使管理站能够及时而又有效地对代理设备进行监控,同时又不过分增加网络的通信负载,必须使用TRAP来主动向管理进程发送消息。代理进程负责在必要时向管理站报告异常事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析。
因为网络事件随时都可能发生,因此Trap的发送也是随机的。发送给哪个管理工作站,也就是Trap的目的地,是事先在代理端的配置文件snmpd.conf中指定的。接收到Trap后,管理工作站不需要给代理发送确认消息。因此,在较差的网络环境中,Trap的传输是不可靠的。具体如何处理接收到的Trap,视具体网络管理应用程序的实现而不同。一般情况下,首先解析Trap包含的信息,再进一步判断Trap的具体意义,进而确定是否需要做出反应动作。
代理端向管理站发送Trap消息中,PDU的变量绑定列表中也包含了代理端本地的对象实例值,因此,Trap也被认为是一种管理站访问代理端本地对象的方式。
管理站一般是在162端口来接收trap消息,RFC1157中,定义了代理端向管理工作站传递Trap的PDU格式,如图1所示。
各项意义如下:
PDU类型(PDU-type):指出这是一个TrapPDU;
Enterprise:指出产生告警的子系统;
代理地址(agent-addr):指出产生告警的对象的IP地址;
一般告警(generic-trap):预定义的告警类型,对所有SNMPTRAP通用;
特定告警(specific-trap):自定义的告警类型;
时间戳(time-stamp):在发出告警的网络实体的最后一次初始化和告警产生之间的时间间隔;
变量绑定(variable-binding):关于告警的附加信息;
其中一般告警(generic-trap):字段为以下7个值中一个。
方法流程:
代理端的开发,一般使用NET-SNMP源码包,当配置好SNMP代理端后,运行snmpd进程,代理端就可以向管理端发送Trap。当启动进程后,进程会首先读取配置文件中的管理端IP地址和162端口,代理端就是根据这个IP地址和端口号发送Trap消息的。但是,配置文件中的IP地址是在运行整个snmpd进程过程中是固定的,即代理端只能向固定的管理端发送Trap消息,当有另外的管理端加入到整个网络时,代理端不能向新加入的管理端传递代理端异常消息。所以提出一种学习型Trap,当有新的管理端加入网路时,代理端能够学习新的管理端的IP地址,并且能向这个新的管理端发送Trap。
我们知道管理端会向代理端发送广播UDP包,UDP包中含有源地址即管理端IP地址,代理端获取这个源地址,然后向这个IP地址发送Trap消息,这就完成了向新加入网络的管理端发送Trap的功能。NET-SNMP源码包中几个文件涉及了代理端接收管理端的UDP包和自己发送Trap的相关代码。一般情况下,管理端的数目是远远小于代理端的,因此设计代理端最多只能同时向两个管理端发送Trap。
通常snmp启动进程的时候会先读取snmpd.conf配置文件,配置文件中保存管理端的IP地址和端口号。
trap2sink192.168.0.123162
trap2sink192.168.5.123162
在源码包的Agent_read_config.c文件下,函数
register_app_config_handler("trap2sink",
snmpd_free_trapsinks,
"host[community][port]");
就是读取snmpd.conf配置文件中与"trap2sink"字符串相匹配的管理端IP地址和端口号,并且调用函数snmpd_parse_config_trap2sink("trap2sink",ip+port),来创建trap会话。但是在整个进程运行过程中,如果新的管理端加入到网络中,配置文件中的IP地址并不会自动更新。并且,由于进程启动时是先读取配置文件的,所以即使配置文件手动的修改,进程也不会读取到新的IP地址。这样,代理端就不能向新加入网络的管理端发送Trap。我们所要改正的就是从代理端接收服务端的UDP包中提取服务端的IP地址,使用提取的IP地址来创建Trap会话。
Snmp_agent.c文件下
netsnmp_agent_check_packet()函数检查代理端从服务端接收到的UDP数据包。
addr_string=transport->f_fmtaddr(transport,transport_data,
transport_data_length);
字符串指针addr_string存储代理端和服务端的IP地址和端口号,例如:192.168.5.167:33126->192.168.5.172服务端IP为192.168.5.167,代理端IP为192.168.5.172。通过函数strtok_r分离出服务端的IP地址:192.168.5.167,因为服务端发送UDP包统一为162端口,所以直接在IP地址后面添加162端口:192.168.5.167162。我们将分离的IP地址存储在一个具有两个元素的数组中,同时调用snmpd_parse_config_trap2sink("trap2sink","192.168.5.167162")函数来创建trap会话。
代理端最多只能向两个管理端发送Trap,因此下一次接收服务端UDP包时先将接收的IP地址与数组中的IP地址比较,如果有相同的,则将新接收的IP地址丢弃,如果不同,则将新的IP地址存储在数组中并且调用函数创建会话。数组最多能够存储两个IP地址,当有第三个新的IP地址出现时,将数组中最旧的IP地址更新,同时删除旧IP的trap会话,创建新IP的trap会话。
Agent_trap.c文件下create_trap_session2()函数将新的IP地址和端口号生成netsnmp_session*sesp结构体指针,调用add_trap_session()函数添加新的trap会话。由于代理端最多向两个服务端发送trap,当有第三个IP地址加入时,旧的IP地址将被丢弃,旧的trap会话也会被关闭。通过snmp_close(sesp)函数关闭旧的trap会话,通过remove_trap_session(sesp)函数删除trap链表中相应的旧的数据内容。
有益效果
本发明针对SNMP代理系统中,代理端更新Trap会话链表的方法。一般情况下,代理端会根据配置文件中保存的管理端IP地址来生成Trap会话链表,如果管理端IP地址临时发生改变,而代理端没有更新Trap会话链表,就不能把告警消息及时的告知当前管理端。设计一种更新Trap会话链表的方法,当管理端IP地址改变时,代理端可以自动更新Trap会话链表,从而及时向管理端发送告警消息,达到对整个网络有效的监控。
附图说明
图1代理端向管理工作站传递Trap的PDU格式。
图2SNMP的5种操作示意图。
图3SNMP代理端发送学习型TRAP的流程图。
具体实施方式
结合图3的流程图给出以下过程:
1.将snmpd.conf文件中trap2sink行注释掉,这样snmpd进程启动时,不会读取snmpd.conf文件中的管理端IP地址。
2.Snmp_agent.c文件下
netsnmp_agent_check_packet()函数检查代理端从服务端接收到的UDP数据包。
其中
addr_string=transport->f_fmtaddr(transport,transport_data,transport_data_length);
字符串指针addr_string存储代理端和服务端的IP地址和端口号,通过函数strtok_r分离出服务端的IP地址例如:192.168.5.167,IP地址后面添加162端口:192.168.5.167162。将分离的IP地址存储在一个具有两个元素的数组中,同时调用snmpd_parse_config_trap2sink("trap2sink","192.168.5.167162")函数来创建trap会话。
3.创建一个具有两个元素的数组,当接收服务端UDP包时先将接收的IP地址与数组中的IP地址比较,如果有相同的,则将新接收的IP地址丢弃,如果不同,则将新的IP地址存储在数组中并且调用函数创建会话。数组最多能够存储两个IP地址,当有第三个新的IP地址出现时,将数组中最旧的IP地址更新,同时删除旧IP的trap会话,创建新IP的trap会话。
4.Agent_trap.c文件下create_trap_session2()函数将新的IP地址和端口号生成netsnmp_session*sesp结构体指针,调用add_trap_session()函数添加新的trap会话。由于代理端最多向两个服务端发送trap,当有第三个IP地址加入时,旧的IP地址将被丢弃,旧的trap会话也会被关闭。调用snmp_close(sesp)函数关闭旧的trap会话,通过remove_trap_session(sesp)函数删除trap链表中相应的旧的数据内容。
Claims (1)
1.一种网管代理更新Trap会话链表的方法,其特点为包括以下步骤:
步骤一:将snmpd.conf文件中 trap2sink行注释掉,这样snmpd进程启动时,不会读取snmpd.conf文件中的管理端IP地址;
步骤二:管理端向代理端发送广播UDP包,代理端接收到管理端UDP包后提取管理端IP地址;
步骤三:代理端建立具有两个元素的数组,将提取的IP地址与数组中存储的IP地址比较,如果IP地址相同则丢弃提取的IP地址;否则进入下一步;
步骤四:如果数组有空间,则把提取的IP地址存储到数组中;否则进入下一步;
步骤五:删除数组中最旧的IP地址,把新提取的IP地址存储到数组中;
步骤六:使用提取的管理端IP地址和端口号作为参数,创建Trap会话;
步骤七:如果Trap会话个数不超过2个,将Trap会话加入到会话链表中;否则进入下一步;
步骤八:关闭最旧的那个Trap会话,并且从会话链表中删除,将新的Trap会话加入到会话链表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210076855.3A CN102594611B (zh) | 2012-03-22 | 2012-03-22 | 一种网管代理更新Trap会话链表的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210076855.3A CN102594611B (zh) | 2012-03-22 | 2012-03-22 | 一种网管代理更新Trap会话链表的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102594611A CN102594611A (zh) | 2012-07-18 |
CN102594611B true CN102594611B (zh) | 2014-06-04 |
Family
ID=46482831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210076855.3A Active CN102594611B (zh) | 2012-03-22 | 2012-03-22 | 一种网管代理更新Trap会话链表的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102594611B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106231006A (zh) * | 2016-08-31 | 2016-12-14 | 珠海市魅族科技有限公司 | 网络系统、网络设备及实时获取设备ip地址的方法 |
CN107390651A (zh) * | 2017-07-11 | 2017-11-24 | 北京佳讯飞鸿技术有限公司 | 一种scada系统集中检索及修改方法 |
CN108279994B (zh) * | 2018-01-22 | 2021-04-16 | 北京仿真中心 | 一种连接Citrix已发布应用异常的自动化解决方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621455A (zh) * | 2008-07-02 | 2010-01-06 | 华为技术有限公司 | 网络设备的管理方法和网络管理站、设备 |
CN102271052A (zh) * | 2010-06-01 | 2011-12-07 | 株式会社日立制作所 | 网络系统、网络管理装置及网关装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198993A1 (en) * | 2006-02-06 | 2007-08-23 | Zhongyao Zhang | Communication system event handling systems and techniques |
-
2012
- 2012-03-22 CN CN201210076855.3A patent/CN102594611B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621455A (zh) * | 2008-07-02 | 2010-01-06 | 华为技术有限公司 | 网络设备的管理方法和网络管理站、设备 |
CN102271052A (zh) * | 2010-06-01 | 2011-12-07 | 株式会社日立制作所 | 网络系统、网络管理装置及网关装置 |
Non-Patent Citations (2)
Title |
---|
"IPTV STB Software Update Scheme Based on SNMP";Qing Wang等;《IEEE》;20060510;第197-200页 * |
Qing Wang等."IPTV STB Software Update Scheme Based on SNMP".《IEEE》.2006, |
Also Published As
Publication number | Publication date |
---|---|
CN102594611A (zh) | 2012-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110580256A (zh) | 一种识别应用标识的方法、设备及系统 | |
CN107786669B (zh) | 一种负载均衡处理的方法、服务器、装置及存储介质 | |
US20080162690A1 (en) | Application Management System | |
CN109564665A (zh) | 广告监测方法、装置及系统 | |
CN101409654B (zh) | 一种网络管理系统中处理snmp信息的方法 | |
JP6433578B2 (ja) | 情報自主登録の実現方法、装置、システム及びコンピュータ記憶媒体 | |
US20160277265A1 (en) | Distributed stability and quality monitoring, testing, and trending of data communications networks | |
CN106302638B (zh) | 一种数据管理方法、转发设备及系统 | |
KR20120063454A (ko) | 장치 관리 클라이언트에 의한 비세션 보고 방법 및 장치 | |
CN102594611B (zh) | 一种网管代理更新Trap会话链表的方法 | |
EP2645623B1 (en) | Method, device and system for managing wireless terminal by remote server | |
CN108460044B (zh) | 数据的处理方法和装置 | |
US20100199291A1 (en) | Method, system and apparatus for transmitting remote procedure call commands | |
CN103916489A (zh) | 一种单域名多ip的域名解析方法及系统 | |
EP3002910B1 (en) | Connecting computer management systems via cellular digital telecommunication networks | |
CN101662391B (zh) | 基于简单网络管理协议版本3的以太网交换机集群管理方法 | |
Cisco | XRemote Configuration Commands | |
Cisco | XRemote Configuration Commands | |
WO2016202025A1 (zh) | 陷阱Trap报文处理方法及装置 | |
CN102684924A (zh) | 网络管理工作站及网络管理软件调试方法 | |
US10812601B2 (en) | Method and system for signaling and radio connection optimization over a cellular network | |
CN109474442B (zh) | 日志处理方法、电子设备及存储介质 | |
EP4216527A1 (en) | Apparatus, method and program for transmitting and receiving data to and from iot device | |
CN107306202B (zh) | 一种网络管理方法、服务器、客户端及系统 | |
CN115665042B (zh) | 数据处理方法、装置、用户平面功能实体及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |