摘要:介绍了一种依据uClinux的实时网络监控服务器开发办法,该服务器能对实时对长途网络终端、监控摄像头号进行操控办理和数据拜访。将其运用到大型网络监控体系中,用户可拜访由多台服务器组成的分布式网络监控服务器集群,实时读取数据然后将其存写到大容量存储设备中,添加并发式衔接的用户数量,进步长途实时网络监控体系安稳性和牢靠性。
关键词:uClinux;实时;网络监控;分布式;并发
网络监控服务器在网络监控体系中担任数据的搜集、紧缩及发送,是体系中不可或缺的后台设备。常用的作业形式是将监控服务器作为独立设备,直接与终端用户交互,用户经过播放器直接从监控服务器获取数据及修正装备参数,每个服务器所能承的用户数较少,不能满意多用户并发操控服务。而在大型网络监控体系运用中,多个监控服务器简略叠加而成的服务器组,并将它们组成分布式网络服务器集群,添加能够一起服务的用户数,进步长途实时网络监控体系安稳性和牢靠性,并对用户的拜访权限进行办理与操控。本用户能够经过分布式网络监控体系办理被监控目标。获取权限拜访网络监控服务器读取数据,并将其存写到大容量存储设设备或体系中。
1 总体规划
网络监控服务器选用Motorola ColdFire5272作为中心微处理器,它具有66 MHz的时钟速度,内部集成了2个串口操控器和一个以太网操控器。快速以太网媒体存取操控(MA C),支撑100Mbps MII,10Mbps MII和10Mbps7线实践接口契合USB1.1规范,可操作表里收发器的设备操控器(devicecontroller)。时分多工(TDM)操控器,可使产品以物理级水平与外部编码、ISDN收发器以及其它运用GCI(General Circuit Interface)或IDLI(Inter Chip Digital Link)串行接口协议的外围设备衔接。多信道HDLC软件模块QSPI模块,供给带有序列传输功用的串行外围接口用于操控运用的脉冲宽度调制(PWM) 单元。一起还供给许多嵌入式运用产品所共有的外围产品,如SDRAM操控器、DMA、计时器、UART、芯片挑选、通用I/0、片上存储以及 ColdFire除错模块,一切这些都采纳高效节约的办法,削减体系本钱、加快体系规划。Linux是一个免费开源、微内核的操作体系,支撑数十种MPU 及其硬件渠道,对TCP/IP协议支撑最齐备,可供给安稳牢靠的数据处理与网络通讯服务。uCLinux是一种优异的嵌入式Linux版别,它专门针对微操控范畴而规划,广泛运用于服务器范畴。本项目规划的多媒体服务器在嵌入式Linux操作体系上开发与运转,规划出来的程序代码具有杰出的可复用性。与其他操作体系渠道上的同类设备比较,在今后二次开发及本钱价格上都极具竞争力。多媒体服务器的功用模块结构,如图1所示。
2 功用完成
网络监控服务器依据用户的装备以Pull和Push两种办法发布数据。用户在数据发送进程中修正参数,需求和装备服务通讯来获取参数修正的标志。网络监控服务器与客户端每次树立多个会话衔接。为了添加程序的可读性、可移植性,依据数据的流向将整个软件分为3层,分别是驱动层、数据封装层和网络发送层。
2. 1 驱动层
驱动层担任办理紧缩电路,装备紧缩参数,启停紧缩,包含用户层和底层硬件的通讯。驱动层的数据办理运用循环行列,重复运用相同的空间,行列的长度是能够改动的,初始读写指针都指在0方位,当行列长度改动时,抛弃一切未用数据,指针从头指向0。当读指针遇上写指针时,阐明行列空,此刻,挂起读进程,直到有数据时再在中止的低半层唤醒它。内核数据和用户数据之间的传送经过mmap体系调用,由用户层请求内存空间映射到内核中。驱动层首要有4个重要的子模块:初始模块,指令处理模块,中止呼应模块,数据传输模块。
1)初始模块注册字符设备;映射IME6400地址空间,设置相应的片选寄存器的数值,时序;注册中止呼应函数;初始化数据结构。
2)指令处理模块置位IME6400设备,在程序第一次运用设备的时分运用,或许需求更新firmware的时分先置位一下。完成以下首要指令:
3)中止呼应模块从IME6400的FIFO寄存器中读取1024字节的流数据。顺次填入循环缓冲行列,移动写指针;办理缓冲行列,如果有满足的数据,唤醒读进程。
4)数据传输模块如果有满足的数据则读取数据,移动读指针。不然读进程挂起,等候唤醒。
为了添加驱动程序的可用性,在底层驱动的基础上添加一个用户驱动层,把对驱动程序的调用封装成一个个独立的函数,这样能够添加程序的可读性和独立性。用户层驱动还有一个重要的功用便是办理用户数据缓存区,从内存出来的数据经过处理按帧为单位构成一个数据帧行列,每个通道一个行列。数据帧行列的长度是可装备,数据发送太慢的时分,应该有相应的删去剩余帧的办法。包含删去一个序列的p帧、删去最早的I帧和相应的p帧序列、只保存音频帧。所选用的办法由网络发送情况决议,当网络情况差的时分,只发送音频数据。
2.2 数据封装层
数据封装层担任将从驱动层搜集到的数据进行格局封装,办理等候数据行列,填充数据包头,依据网络情况丢掉部分数据。完成的办法有单线程和多线程两种。
1)单线程的办法
单线程完成比较简略。主体的进程是相同的,能够把数据搜集和剖析封装都放在一个循环中,每一次循环都做一次数据搜集、封装和发送,这样任何一个层都应该是不堵塞的。可是这种办法的缺陷是,任何一步都不能堵塞,实践上封装发送都是需求必定时刻的,这样搜集数据就不会很及时,功率不够高。程序模块划不明晰,一个小改动都会导致其他部分的较大修正,不利于模块化规划、修正和移植。
2)多线程的办法
在主程序中树立两个线程:User Driver Thread和DataPactct Thread。UserDriverThread运转在用户驱动层,担任搜集数据,办理等候行列。DataPactctThread运转在数据封装层,从等候行列中取出的数据经过解析今后封装后发送出去。这2个相邻上基层线程之间彼此通讯进程,如图2所示。在线程DataPactctThread中,数据剖析器目标首要处理两个目标,一个是归于用户驱动层的数据行列,别的一个是发送层的发送器目标。实践上封装层的使命便是把行列中的数据去出来,剖析今后填充包头信息,交给下一层的发送层,数据依据不同目标分隔发送,在发送层中选用不同的发送战略。
2.3 数据发送层
网络数据发送层依据用户的设置将封装层的数据包发送到中心服务器,其发送进程,如图3所示。在这层处理3个问题:用户行列办理、非堵塞发送、链路情况监测。
1)用户行列办理关于PULL办法,需求有对用户等候行列的办理。这种办法相对简略,只需依据装备将数据发送到中心服务器或许发给本地阅读的用户。在PULL发布办法时,一起支撑多个用户的在线阅读,这样有必要对用户行列进行办理,在播放器中有一个KEEP ALIVE机制,当5秒钟没有遭到播放器的坚持数据包,就以为用户现已脱离,为了完成这样一个机制,在等候行列中的每一个用户设置一个Count特点,当到达必定数值的时分,将用户删去。
2)非堵塞发送在单线程中任何一个操作堵塞都会对其他操作形成问题,特别是在网络发送时,无论是运用TCP仍是UDP都要运用非堵塞的操作。特别是运用TCP传送的时
候,除了设置套接字的非推迟特点之外,还要完成非堵塞衔接。
3)链路情况监测为了习惯比较恶劣的网络情况,在用户驱动层应该完成必定的丢包战略,发送层有必要把计算的网络情况传递给用户驱动层。网络链路呈现轻度堵塞时,要丢掉最近的P帧序列,网络情况正常的时分再康复;严峻堵塞时只发送音频帧。
3 体系运用构建
将网络监控服务器布置在分布式网络监控运用体系中,如图4所示,用户经过分布式网络监控体系实时拜访被监测目标,对数据进行分发和操控办理,获取实时数据,并存写进存储服务器。经试验测验,在此多用户分布式网络监控体系运用测验环境中,该服务器能完成7×24小时安稳牢靠运转,比较以往运用非实时非并发的网络监控服务器,进步了网络监控体系全体功用。
4 结束语
将本规划网络监控服务器运用于分布式网络监控体系,网络摄像头经过该体系监控被管目标,对数据进行分发和操控办理,还可将这些数据写入存储服务器,供用户今后调取。将设备布置于拥有用巨大分支机构的机关事业单位及大中型企业的网络监控体系中运转测验,在多用户网络监控体系中,该设备在分布式实时网络监控体系中运转安稳牢靠,进步了网络监控体系全体功用。