[发明专利]一种基于TCP/UDP私有网管接口的实现无效
申请号: | 201210007535.2 | 申请日: | 2012-01-11 |
公开(公告)号: | CN102761436A | 公开(公告)日: | 2012-10-31 |
发明(设计)人: | 周厚明;刘湘泉 | 申请(专利权)人: | 武汉迈威光电技术有限公司 |
主分类号: | H04L12/24 | 分类号: | H04L12/24;H04L29/06 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 430074 湖北省武汉市东湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 tcp udp 私有 网管 接口 实现 | ||
所属领域
本专利涉及一种基于TCP/UDP私有网管接口的实现。在工业通信领域,越来越多的网络设备已经开始连入到互联网上,对于一个庞大的企业内部网络,需要有一套可靠的网络管理协议来对所有的网络设备进行监控和管理。本网管接口基于Linux操作系统下的网络编程,通过TCP协议提供可靠的数据传输,以及UDP协议发送网络设备告警。通过这样一套私有的代码框架,限定底层具体的函数实现以及数据填充方式,来为上层的网管提供高效、直观、可靠的数据传输。
技术背景
目前最通用的网络管理协议是SNMP(Simple Network Management Protocol,简单网络管理协议),但是SNMP具有以下几个弊端。
首先,SNMP是一种基于UDP的数据传输协议,而UDP提供的是一种不可靠数据传输,没有超时重传等协商机制,并不能够保证client端的请求会被准确无误的响应。
其次,SNMP是基于管理工作站/代理模式的,运行网络管理程序的计算机被称为管理工作站,代理是运行在网络设备上的进程。管理工作站通过向代理询问获得网络设备的工作状态信息;代理则负责处理和相应来着管理工作站的请求,并向管理工作站报告本地发生的重大事件(TRAP)。SNMP的代码架构需要先向代理注册节点信息,编写中间处理函数,再编写相应的数据处理函数。这样繁琐的调用以及实现过程会导致代码的执行效率十分低下。
另外,SNMP的开发一般是移植开源社区上的优秀SNMP源代码,需要花费大量的时间和精力去了解、调试,不利于快速开发。
因此,如果想更加灵活、高效去设置和采集底层数据,更加可靠、精确地向上层界面提供数据,开发一套通用私有的网管接口协议就变得十分必要和紧迫。
发明内容
TCP数据传输部分
TCP数据传输部分采用主-从线程的模式,基本的思想是:当主线程通过侦听到client端一个连接请求时,会立即去创建一个子线程去处理该请求。也就是说,client端主动与server端进行连接,并向server端请求(发送)数据,下面进行详细说明。
进程fser会在交换机中一直运行,侦听来自外界的连接请求,当fser进程在accept一个请求时,会调用pthread_create创建一个子线程,同时将通过accept建立连接的socketClient,接收并分析数据的函数sock_decode_cmd(int sockHandle)传入到线程中去执行。为了防止多个子线程可能在同一时刻去get、set数据,而导致不同的client可能会读到的“脏数据”,或者因为设置数据而给某一些用户造成不便,必须要解决多线程中的同步问题。
Linux提供了三种同步机制:互斥(mutex)、信号量(semaphore)和条件变量(condition variable),此网管接口采用互斥的方法来进行多线程之前的同步。在fser进程中定义一个全局的互斥变量st_mutext(pthread_mutext_t类型),在进入函数sock_decode_cmd之后,会执行上锁操作((void)pthread_mutex_lock(&st_mutex)),在离开函数sock_decode_cmd之前会进行解锁操作((void)pthread_mutext_unlock(&st_mutex))。这样就能够保证,在同一个时刻,只有一个线程在分析套接字接收到的数据包,当然也能保证在分析完数据之后即将执行的get数据与set数据能够互斥的进行。
TCP数据传输部分完全基于TCP,在TCP帧结构数据部分,对传输数据的帧结构进行约定。在TCP的数据端插入Private Data Interface部分,在这一部分,将定义私有的数据帧结构,方便客户端和服务器端对代码进行解析。下面对Private Data Interface中的每个字段进行说明。
●Magic:约定的私有协议的标识,如果检测到TCP数据部分的开始32个字节是0xBA20A76B,则表明该协议是私有的网管协议。
●Tag:命令标识,用于标识某一种特定的操作命令,方便网络设备进行特定的读取或设置操作。
●Sub-Command number:某一个Tag所附带的子命令的数量,若没有子命令,该字段为零。其中,Sub-Command都附带在Data部分。
●Data length:有效数据部分的长度,也就是Data部分的字节总数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉迈威光电技术有限公司,未经武汉迈威光电技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210007535.2/2.html,转载请声明来源钻瓜专利网。