一种UDP链路监控方法、系统及电子设备与流程

文档序号:25177693发布日期:2021-05-25 14:51阅读:371来源:国知局
一种UDP链路监控方法、系统及电子设备与流程

本发明涉及internet网络技术领域,具体而言,涉及一种udp链路监控方法、系统、电子设备及计算机可读存储介质。



背景技术:

udp(userdatagramprotocol,用户数据报协议)是osi(opensysteminterconnect,开放式系统互连)参考模型中一种无连接的传输层协议。在udp协议中,正式通信前不必与对方建立连接,直接向接收方发送数据,是一种不可靠的通信协议。正是由于udp协议不关心网络数据传输的一系列状态,使得udp协议在数据传输过程中节省了大量的网络状态确认和数据确认的系统资源消耗,大大提高udp协议的传输效率,传输速度快。

套接字(socket)就是对网络中不同主机上的应用程序之间进行双向通信的端点抽象。套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的端点。套接字是网络环境中进程间通信的应用程序编程接口(api),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连的进程。通信时其中一个网络应用程序将要传输的一段信息写入其所在主机的socket中,该socket通过与nic(networkinterfacecard,网络接口卡)相连的传输介质将这段信息送到另外一台主机的socket中,使对方能够接收到这段信息。socket是由ip地址和端口相结合、提供向应用层进程传送数据包的机制。

音视频业务、5g视频通信、即时通信等支持多人同时在线完成跨国、跨平台、多终端的业务支撑,对并发和网络时延有较高的要求。

鉴于udp协议的无连接、面向应用报文的特点,其具体特点如下:

1、传输数据之前客户端和服务器端不建立连接,当其传输数据时就把应用程序的数据抓来,尽快扔到网络上;

2、报文的首部也没有那么多开销,主要精力都集中在数据本身;

3、由于udp协议丢了数据包也不管,所以没有等待、重传的过程,数据吞吐量很高,最多受限于传输带宽、应用本身和计算机本身的性能。



技术实现要素:

包,进入syn_recv状态;在接收确认包ack(ack=k+1)后进入established状态;在接收udp报文后记录socket的通信状态;

udp客户端,用于创建套接字socket,向udp服务端发送syn包(syn=1),进入syn_send状态等待udp服务端确认;接收udp服务端的syn+ack包,向udp服务端发送确认包ack(ack=k+1),进入established状态;向udp服务端发送udp报文,记录socket的通信状态;

zabbix服务端,用于通过获得的udp链路的网络触发信息,根据设置的触发条件触发udp链路的网络质量告警。

第三方面,本发明实施例提供了一种电子设备,包括总线、收发器、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述收发器、所述存储器和所述处理器通过总线相连,其特征在于,计算机程序被所述处理器执行时实现如上的udp链路监控方法中的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上的udp链路监控方法中的步骤。

本发明实施例提供的方法、系统、电子设备及计算机可读存储介质,通过完成tcp的握手流程,客户端向服务端发送指定长度的随机udp报文,服务端检查udp报文长度与包数量并记录到指定位置,由zabbix程序根据预设的监控报警机制完成对udp链路传输质量的监控。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。

图1示出了本发明实施例所提供的一种udp链路监控的场景示意图;

图2示出了本发明实施例所提供的一种udp链路监控方法的流程图;

图3示出了本发明实施例所提供的udp链路监控方法中zabbix服务端配置监控项信息的界面示意图;

图4示出了本发明实施例所提供的udp链路监控方法中zabbix服务端配置触发器信息的界面示意图;

图5示出了本发明实施例所提供的udp链路监控方法中zabbix客户端在钉钉软件上显示告警的界面示意图;

图6示出了本发明实施例所提供的一种udp链路监控系统的结构示意图;

图7示出了本发明实施例所提供的一种udp链路监控电子设备的结构示意图。

具体实施方式

为了本发明实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:

1、ip地址(internetprotocoladdress,互联网协议地址),又称为网际协议地址。ip地址是ip协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。分为以下两种:

1.1、公有ip地址:也叫全局地址,是指合法的ip地址,它是由inic(internetnetworkinformationcenter,因特网信息中心)或者isp(internetserviceprovider,因特网服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址。图1示出了本发明实施例所提供的一种udp链路监控的场景示意图,如图1所示,ip地址210.21.12.141以及ip地址210.15.27.167为公有ip地址,它们分别代表了第一终端10a以及第二终端10b各自局域网内的公用地址。

1.2、私有ip地址:也叫内部地址,属于非注册地址,专门为组织机构内部使用,iana(theinternetassignednumbersauthority,因特网数字分配机构)保留了以下3类ip地址作为私有ip地址:

a类:10.0.0.0——10.255.255.255,

b类:172.16.0.0——172.16.255.255,

c类:192.168.0.0——192.168.255.255。

如图1所示,ip地址192.168.1.4和ip地址192.168.1.5为私有ip地址。其中,ip地址192.168.1.4仅代表了第一终端10a在局域网内的内部地址,ip地址192.168.1.5仅代表了第二终端10b在局域网内的内部地址。

2、端口(port),本发明实施例主要是指逻辑意义上用于区分应用服务的端口。如果把ip地址比作一间房子,端口就是出入这间房子的门。由于物理端口和逻辑端口数量较多,为了对端口进行区分,对每个端口进行编号,形成端口号。端口号的范围从0到65535,例如用于浏览网页服务的80端口,用于ftp(filetransferprotocol,文件传输协议)服务的21端口等。如图1所示,“192.168.1.4,123”中的“123”即为端口号,代表着第一终端10a的某个聊天应用服务端口,“210.21.12.141,42”中的“42”也为第一终端10a的端口。与“123”的区别是,“123”为第一终端10a自身的端口号,“42”为第一终端10a的某个聊天应用服务端口(即“123”)映射在第一网络地址转换器20a上的端口号。

3、socket(套接字),一台拥有ip地址的主机可以提供许多应用服务,例如web(worldwideweb,万维网)服务、ftp服务、smtp(simplemailtransferprotocol,简单邮件传输协议)服务等,上述应用服务完全可以通过1个ip地址来实现。鉴于ip地址与应用服务是一对多的关系,主机是通过“ip地址+端口号”来区分不同的应用服务,此处的“ip地址+端口号”即套接字。套接字是一个抽象层,应用服务(即应用程序)可以通过它发送或接收数据,也可以看成是两个应用程序进行通信连接中的一个端点,每个套接字都有一个套接字序号,包括主机的ip地址与一个16位的主机端口号,即“主机ip地址:端口号”或者“主机ip地址,端口号”。通信时,其中的一个应用程序将要传输的一段信息写入它所在主机的套接字中,该套接字通过网络接口卡的传输介质将这段信息发送给另一台主机的套接字中,使该段信息能传输到其他应用程序中。如图1所示,“192.168.1.4,123”为第一终端10a的内网套接字(或者称为内部套接字),对应着第一终端10a的私有ip地址“192.168.1.4”以及端口“123”。“210.21.12.141,42”为第一终端10a的外网套接字,对应着第一终端10a的公有ip地址“210.21.12.141”以及端口号“42”。当第一终端10a与第二终端10b成功建立直连传输链路时,可以将“192.168.1.4,123”称为第一终端10a的目标内网套接字,也可以称为第二终端10b的目的内网套接字;可以将“210.21.12.141,42”称为第一终端10a的目标外网套接字或者穿透外网套接字,也可以称为第二终端10b的目的外网套接字。

4、nat(networkaddresstranslation,网络地址转换),也称网络掩蔽或ip掩蔽,是一种在ip数据包通过路由器或防火墙时重写来源ip:port地址(即目标套接字)或目的ip:port地址的技术(即目的套接字),能够解决ip地址不足的问题,而且能够有效避免网络外部的攻击,隐藏并保护网络内部的计算机。根据映射规则和过滤规则的不同,nat分为全锥型、受限型、端口受限型、对称型等类型。其中,对称型的安全等级最高、连通条件最苛刻、应用最广。如图1所示,第一网络地址转换器20a将第一终端10a的内网套接字“192.168.1.4,123”转换为外网套接字“210.21.12.141,42”。

5、nat穿透:也可以称为nat打洞,nat会把内网套接字映射为外网套接字。另外,nat收到外网来包后会按照一定的规则进行过滤。上述方式将导致两个nat内网终端进行通信变得复杂,nat穿透技术就是用于打破nat壁垒,在两个nat内网主机之间建立p2p直连传输链路。

6、基于udp协议的socket通信机制

socket(套接字)是应用程序的编程接口。每个套接字是通过一个半相关描述的形式进行表示,例如:协议、本地地址或者本地端口;而一个完整的套接字则使用一个相关描述,补充进远程地址和远程端口。每一个套接字都有唯一的套接字号,是通过本地的操作系统进行分配获取的。

socket根据传输数据类型的不同,主要分成三种类型:

(1)流式socket(sock_stream),该类型是基于tcp协议实现的,两个通信的应用程序首先要建立虚拟的连接,彼此提供可靠的、面向连接的通信流,从而保证了数据传输过程的有序性与准确性。

(2)数据报socket(sock_dgram),该类型采用数据报协议udp,是一种无连接的服务,传输的数据报文相互独立,无顺序且可靠性无法得到保证。

(3)原始socket,该类型允许对底层协议(ip或icmp)直接访问,功能较前两者更为强大,但是使用较为不便,很多协议的开发基于该类型完成。

7、udp协议的工作原理

udp协议是面向无连接的传输层协议,区别在于连接过程中需要服务器端侦听的tcp协议,其是一种“强制性”的网络连接。udp数据报服务类型分为三种:一对一、一对多和无连接。udp协议不保证数据在传输过程中是否能到达目的端、也不能够保证数据在传输的过程中是否有序进行,对于丢失的数据不进行重新传输。udp协议的主要工作是负责将应用程序传递过来的数据分块交给网络层,确保能够接收到分组的信息。

虽然udp协议无法像tcp协议那样保证数据传输的可靠性,但udp协议具有自身的优越性,尤其在无线网络中对数据传输的要求,udp协议使用范围更广。udp协议相较于tcp协议,传输效率更胜一筹,而且很多应用程序并不要求传输的数据具有可靠性,例如视频通信,需要实时的交互,并不要求数据的绝对正确与可靠性。

udp协议每个端口是由一个唯一的编号进行标识,使用udp端口号时,其提供给客户端发送消息的位置。当应用程序要向另一个终端发送消息时,udp生成一个数据头,包括源端口,这些端口提供传达信息所需要的地址。udp协议确保数据的安全是通过在报头中提供校验值的方式,在目标计算机中,数据包被传递到udp协议程序并且送达目的地端口。

所属技术领域的技术人员应当知道,本发明实施例可以实现为方法、装置、电子设备及计算机可读存储介质。因此,本发明实施例可以具体实现为以下形式:完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、硬件和软件结合的形式。此外,在一些实施例中,本发明实施例还可以实现为在一个或多个计算机可读存储介质中的计算机程序产品的形式,该计算机可读存储介质中包含计算机程序代码。

上述计算机可读存储介质可以采用一个或多个计算机可读存储介质的任意组合。计算机可读存储介质包括:电、磁、光、电磁、红外或半导体的系统、装置或器件,或者以上任意的组合。计算机可读存储介质更具体的例子包括:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、闪存(flashmemory)、光纤、光盘只读存储器(cd-rom)、光存储器件、磁存储器件或以上任意组合。在本发明实施例中,计算机可读存储介质可以是任意包含或存储程序的有形介质,该程序可以被指令执行系统、装置、器件使用或与其结合使用。

上述计算机可读存储介质包含的计算机程序代码可以用任意适当的介质传输,包括:无线、电线、光缆、射频(radiofrequency,rf)或者以上任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,例如:java、smalltalk、c++,还包括常规的过程式程序设计语言,例如:c语言或类似的程序设计语言。计算机程序代码可以完全的在用户计算机上执行、部分的在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行以及完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括:局域网(lan)或广域网(wan),可以连接到用户计算机,也可以连接到外部计算机。

下面将参照本发明实施例的方法、装置、电子设备及计算机可读存储介质的流程图和/或方框图描述本发明实施例。

应当理解,流程图和/或方框图的每个方框以及流程图和/或方框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机可读程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或方框图中的方框规定的功能/操作的装置。

也可以将这些计算机可读程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储介质中。这样,存储在计算机可读存储介质中的指令就产生出一个包括实现流程图和/或方框图中的方框规定的功能/操作的指令装置产品。

也可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程数据处理装置上执行的指令能够提供实现流程图和/或方框图中的方框规定的功能/操作的过程。

为了动态监控连接到全球各地的udp链路的网络质量情况,发明人利用部署于全球的节点,在中心机房、流量汇总区域、其它网络边界或特殊区域作socket服务器端,全球节点作客户端,建立流式套接字,与本机地址与指定端口进行绑定,然后通知tcp,准备好接收连接,调用accept()阻塞,等待来自客户端的连接。

下面结合本发明实施例中的附图对本发明实施例进行描述。

图2示出了本发明实施例所提供的一种udp链路监控方法的流程图。如图2所示,该方法包括:

步骤s102:udp服务端根据地址类型(ipv4,ipv6)、socket类型、协议类型创建socket;

其中,sock=socket.socket(socket.af_inet,socket.sock_dgram);

步骤s104:udp服务端为socket绑定ip地址和端口;

步骤s106:udp服务端启动socket进程监听udp客户端的端口号请求,随时准备接收udp客户端发来的连接请求,此时udp服务端的socket未被打开;

即threading.thread(target=server,args=(config['serverport']));

步骤s108:udp客户端创建socket并打开socket,判断udp客户端socket是否需要多进程,根据udp服务端ip地址和端口号试图使udp客户端socket连接udp服务端socket;

需要说明的是,udp服务端和udp客户端的socket为python语言编写的应用程序的编程接口。

步骤s110:udp客户端socket向udp服务端socket发送syn包(synchronizesequencenumbers,同步序列编号),syn=1,udp客户端进入syn_send状态等待udp服务端确认;

步骤s112:udp服务端接收udp客户端syn包,确认(ack=j+1),同时向udp客户端发送一个syn包(syn=k),即syn+ack包,此时udp服务端进入syn_recv状态;

步骤s114:udp客户端收到udp服务端的syn+ack包,向udp服务端发送确认包ack(ack=k+1),此包发送完毕,udp客户端和udp服务端进入established状态,完成三次握手;

步骤s116:udp服务端socket接收udp客户端socket的连接请求,udp服务端socket被动打开,开始接收udp客户端的连接请求,直到udp客户端返回连接地址信息。

此时,socket进入阻塞状态,socket开始阻塞等待accept(),直到udp客户端返回连接信息后才开始接收下一个连接请求;

步骤s118:udp客户端socket使用sock_dgram类型向udp服务端socket发送udp报文;

步骤s120:udp客户端和udp服务端实时记录各自socket的通信状态,包括rtt(round-triptime,tcp往返时延)平均往返时间、rtt最小往返时间、rtt最大往返时间、udp总发送包数量、udp总丢失包数量、目标主机名称(hostname)、目标主机ip、目标主机通信端口、源主机ip信息;

通信日志举例如下:

2021-03-1119:41:20,757info:11399,[ctrl+ctrigger]forceexitapp!

#程序重启、强制退出应用记录;

2021-03-1119:41:22,781info:22794,serverlisterningport999

#开启本机server端监控成功,监听端口为999;

2021-03-1119:41:22,781info:22794,connecting,destname:cluster10-hw-gz03-n02,destip:10.10.11.149,destport:999,sourceip:

#连接目标主机cluster10-hw-gz03-n02成功,记录对端ip、对端服务端口;(此时表示对等连接套接字隧道建立成功)

2021-03-1119:41:22,781info:22794,clientbindport(700)success,clinetinfo==>destname:cluster10-hw-gz03-n02,destip:10.10.11.149,destport:999,sourceip:

#开始发送udp数据报,基于客户端700端口,并再次确认记录目标主机信息。

根据rtt平均往返时间、rtt最小往返时间、rtt最大往返时间等,计算得出平均响应时间。

根据udp总发送包数量和udp总丢失包数量得到udp丢包率。

步骤s122:zabbix服务端配置udp链路监控的监控项信息和触发器信息,如图3和图4所示,设置的告警触发条件:丢包率大于2%,并且连续满足3次(每秒1次);

需要说明的是,zabbix监控程序呈c/s架构,采用c语言编写,zabbix客户端负责采集各种数据,发送给服务端,zabbix服务端根据判断条件展示监控结果。

步骤s124:zabbix客户端(zabbixagent)通过shell脚本调取本地定义的监控项udp.loss函数键值,根据udp.loss函数键值和传参主机名称(hostname)参数调取socket保存的网络状态信息;

需要说明的是,zabbix客户端在本地定义的监控项为udp.loss函数键值,将该监控项信息发送给zabbix服务端,zabbix服务端直接将该udp.loss函数键值配置成告警触发条件。例如:udp.loss函数键值(丢包率)>2%,满足告警触发条件。

步骤s126:zabbix客户端默认每秒调取一次网络状态信息(例如:udp丢包率),根据该网络状态信息汇总得到网络触发信息;

步骤s128:zabbix服务端通过shell脚本调取zabbix客户端得到的网络触发信息,根据触发器设置的触发条件,只要网络触发信息满足告警触发条件,会立刻触发告警机制。

根据图3和图4所示,只要zabbix客户端检测到丢包率大于2%,并且连续满足3次(每秒1次)即触发告警。

告警默认通知渠道为:

1、邮件告警;

2、钉钉告警;

3、个人微信/企业微信告警;

4、应用大屏展示告警。

如图5所示为钉钉显示的告警界面。

本发明实施例的udp链路监控方法,通过完成tcp的握手流程,客户端向服务端发送指定长度的随机udp报文,服务端检查udp报文长度与包数量并记录到指定位置,由zabbix程序根据预设的监控报警机制完成对udp链路传输质量的监控。

图6示出了本发明实施例所提供的一种udp链路监控系统的结构示意图。如图6所示,该udp链路监控系统包括:

udp服务端620,用于创建套接字socket,接收udp客户端610的syn包,确认(ack=j+1),向udp客户端610发送syn包(syn=k),即syn+ack包,进入syn_recv状态;在接收确认包ack(ack=k+1)后进入established状态;在接收udp报文后记录socket的通信状态;

udp客户端610,用于创建套接字socket,向udp服务端620发送syn包(syn=1),进入syn_send状态等待udp服务端620确认;接收udp服务端620的syn+ack包,向udp服务端620发送确认包ack(ack=k+1),进入established状态;向udp服务端620发送udp报文,记录socket的通信状态;

zabbix服务端640,用于通过获得的udp链路的网络触发信息,根据设置的触发条件触发udp链路的网络质量告警。

在本发明实施例中,可选地,在udp链路监控系统中,

udp服务端620包括:

类型创建模块622,用于根据地址类型、socket类型和协议类型创建socket;

端口绑定模块624,用于为socket绑定ip地址和端口;

启动监听模块626,用于启动socket进程监听udp客户端610的端口号请求,接收udp客户端610发来的连接请求;

udp客户端610包括:

创建判断模块612,用于创建socket,判断udp客户端610的socket是否需要多进程;

socket连接模块614,用于根据udp服务端620的ip地址和端口号使udp客户端610的socket与udp服务端620的socket相连。

在本发明实施例中,可选地,udp链路监控系统还包括zabbix客户端630:

zabbix客户端630,用于通过shell脚本调取本地定义的监控项udp.loss函数键值,根据udp.loss函数键值和传参主机参数获取网络状态信息;定期调取网络状态信息,根据网络状态信息获取网络触发信息;

zabbix服务端640,用于配置udp链路监控的监控项信息和触发器信息;通过shell脚本调取网络触发信息,根据触发器设置的网络触发条件触发udp链路的网络质量告警。

可选地,在本发明实施例中,socket的通信状态信息包括:

rtt平均往返时间、rtt最小往返时间、rtt最大往返时间、udp总发送包数量、udp总丢失包数量、目标主机名称、目标主机ip地址、目标主机通信端口、源主机ip地址。

因此,本发明实施例的udp链路监控系统,通过完成tcp的握手流程,客户端向服务端发送指定长度的随机udp报文,服务端检查udp报文长度与包数量并记录到指定位置,由zabbix程序根据预设的监控报警机制完成对udp链路传输质量的监控。

此外,本发明实施例还提供了一种电子设备,包括总线、收发器、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该收发器、该存储器和处理器分别通过总线相连,计算机程序被处理器执行时实现上述udp链路监控方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

具体的,参见图7所示,本发明实施例还提供了一种电子设备,该电子设备包括总线71、处理器72、收发器73、总线接口74、存储器75和用户接口76。

在本发明实施例中,该电子设备还包括:存储在存储器75上并可在处理器72上运行的计算机程序,计算机程序被处理器72执行时实现以下步骤:

udp服务端和udp客户端分别创建套接字socket;

所述udp客户端向所述udp服务端发送syn包(syn=1),所述udp客户端进入syn_send状态等待所述udp服务端确认;

所述udp服务端接收所述udp客户端的syn包,确认(ack=j+1),向所述udp客户端发送syn包(syn=k),即syn+ack包,所述udp服务端进入syn_recv状态;

所述udp客户端接收所述udp服务端的syn+ack包,向所述udp服务端发送确认包ack(ack=k+1),所述udp客户端和udp服务端进入established状态;

所述udp客户端向所述udp服务端发送udp报文,所述udp客户端和udp服务端记录各自socket的通信状态;

zabbix服务端通过获得的udp链路的网络触发信息,根据设置的网络触发条件触发udp链路的网络质量告警。

可选地,计算机程序被处理器72执行时还可实现以下步骤:

所述udp服务端根据地址类型、socket类型和协议类型创建socket;

所述udp服务端为socket绑定ip地址和端口;

所述udp服务端启动socket进程监听所述udp客户端的端口号请求,接收所述udp客户端发来的连接请求;

所述udp客户端创建socket,判断所述udp客户端socket是否需要多进程,根据所述udp服务端的ip地址和端口号使所述udp客户端socket与所述udp服务端socket相连。

步骤还包括:

所述zabbix服务端配置udp链路监控的监控项信息和触发器信息;

zabbix客户端通过shell脚本调取本地定义的监控项udp.loss函数键值,根据所述udp.loss函数键值和传参主机参数获取网络状态信息;

所述zabbix客户端定期调取所述网络状态信息,根据所述网络状态信息获取网络触发信息;

所述zabbix服务端通过所述shell脚本调取所述网络触发信息,根据触发器设置的网络触发条件触发udp链路的网络质量告警。

所述socket的通信状态信息包括:

rtt平均往返时间、rtt最小往返时间、rtt最大往返时间、udp总发送包数量、udp总丢失包数量、目标主机名称、目标主机ip地址、目标主机通信端口、源主机ip地址。

收发器73,用于在处理器72的控制下接收和发送数据。

在图7中,总线架构(用总线71来代表),总线71可以包括任意数量互联的总线和桥,总线71将包括由处理器72代表的一个或多个处理器与存储器75代表的存储器的各种电路连接在一起。

总线71表示若干类型的总线结构中的任何一种总线结构中的一个或多个,包括存储器总线以及存储器控制器、外围总线、加速图形端口(accelerategraphicalport,agp)、处理器或使用各种总线体系结构中的任意总线结构的局域总线。作为示例而非限制,这样的体系结构包括:工业标准体系结构(industrystandardarchitecture,isa)总线、微通道体系结构(microchannelarchitecture,mca)总线、扩展isa(enhancedisa,eisa)总线、视频电子标准协会(videoelectronicsstandardsassociation,vesa)、外围部件互连(peripheralcomponentinterconnect,pci)总线。

处理器72可以是一种集成电路芯片,具有信号处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中硬件的集成逻辑电路或软件形式的指令完成。上述的处理器包括:通用处理器、中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)、可编程逻辑阵列(programmablelogicarray,pla)、微控制单元(microcontrollerunit,mcu)或其他可编程逻辑器件、分立门、晶体管逻辑器件、分立硬件组件。可以实现或执行本发明实施例中公开的各方法、步骤及逻辑框图。例如,处理器可以是单核处理器或多核处理器,处理器可以集成于单颗芯片或位于多颗不同的芯片。

处理器72可以是微处理器或任何常规的处理器。结合本发明实施例所公开的方法步骤可以直接由硬件译码处理器执行完成,或者由译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存取存储器(randomaccessmemory,ram)、闪存(flashmemory)、只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、寄存器等本领域公知的可读存储介质中。所述可读存储介质位于存储器中,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

总线71还可以将,例如外围设备、稳压器或功率管理电路等各种其他电路连接在一起,总线接口74在总线71和收发器73之间提供接口,这些都是本领域所公知的。因此,本发明实施例不再对其进行进一步描述。

收发器73可以是一个元件,也可以是多个元件,例如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。例如:收发器73从其他设备接收外部数据,收发器73用于将处理器72处理后的数据发送给其他设备。取决于计算机系统的性质,还可以提供用户接口76,例如:触摸屏、物理键盘、显示器、鼠标、扬声器、麦克风、轨迹球、操纵杆、触控笔。

应理解,在本发明实施例中,存储器75可进一步包括相对于处理器72远程设置的存储器,这些远程设置的存储器可以通过网络连接至服务器。上述网络的一个或多个部分可以是自组织网络(adhocnetwork)、内联网(intranet)、外联网(extranet)、虚拟专用网(vpn)、局域网(lan)、无线局域网(wlan)、广域网(wan)、无线广域网(wwan)、城域网(man)、互联网(internet)、公共交换电话网(pstn)、普通老式电话业务网(pots)、蜂窝电话网、无线网络、无线保真(wi-fi)网络以及两个或更多个上述网络的组合。例如,蜂窝电话网和无线网络可以是全球移动通信(gsm)系统、码分多址(cdma)系统、全球微波互联接入(wimax)系统、通用分组无线业务(gprs)系统、宽带码分多址(wcdma)系统、长期演进(lte)系统、lte频分双工(fdd)系统、lte时分双工(tdd)系统、先进长期演进(lte-a)系统、通用移动通信(umts)系统、增强移动宽带(enhancemobilebroadband,embb)系统、海量机器类通信(massivemachinetypeofcommunication,mmtc)系统、超可靠低时延通信(ultrareliablelowlatencycommunications,urllc)系统等。

应理解,本发明实施例中的存储器75可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器包括:只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存(flashmemory)。

易失性存储器包括:随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如:静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。本发明实施例描述的电子设备的存储器75包括但不限于上述和任意其他适合类型的存储器。

在本发明实施例中,存储器75存储了操作系统751和应用程序752的如下元素:可执行模块、数据结构,或者其子集,或者其扩展集。

具体而言,操作系统751包含各种系统程序,例如:框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序752包含各种应用程序,例如:媒体播放器(mediaplayer)、浏览器(browser),用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序752中。应用程序752包括:小程序、对象、组件、逻辑、数据结构以及其他执行特定任务或实现特定抽象数据类型的计算机系统可执行指令。

此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述udp链路监控方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

具体而言,计算机程序被处理器执行时可实现以下步骤:

udp服务端和udp客户端分别创建套接字socket;

所述udp客户端向所述udp服务端发送syn包(syn=1),所述udp客户端进入syn_send状态等待所述udp服务端确认;

所述udp服务端接收所述udp客户端的syn包,确认(ack=j+1),向所述udp客户端发送syn包(syn=k),即syn+ack包,所述udp服务端进入syn_recv状态;

所述udp客户端接收所述udp服务端的syn+ack包,向所述udp服务端发送确认包ack(ack=k+1),所述udp客户端和udp服务端进入established状态;

所述udp客户端向所述udp服务端发送udp报文,所述udp客户端和udp服务端记录各自socket的通信状态;

zabbix服务端通过获得的udp链路的网络触发信息,根据设置的网络触发条件触发udp链路的网络质量告警。

可选地,计算机程序被处理器执行时还可实现以下步骤:

所述udp服务端根据地址类型、socket类型和协议类型创建socket;

所述udp服务端为socket绑定ip地址和端口;

所述udp服务端启动socket进程监听所述udp客户端的端口号请求,接收所述udp客户端发来的连接请求;

所述udp客户端创建socket,判断所述udp客户端socket是否需要多进程,根据所述udp服务端的ip地址和端口号使所述udp客户端socket与所述udp服务端socket相连。

其中,步骤还包括:

所述zabbix服务端配置udp链路监控的监控项信息和触发器信息;

zabbix客户端通过shell脚本调取本地定义的监控项udp.loss函数键值,根据所述udp.loss函数键值和传参主机参数获取网络状态信息;

所述zabbix客户端定期调取所述网络状态信息,根据所述网络状态信息获取网络触发信息;

所述zabbix服务端通过所述shell脚本调取所述网络触发信息,根据触发器设置的网络触发条件触发udp链路的网络质量告警。

其中,所述socket的通信状态信息包括:

rtt平均往返时间、rtt最小往返时间、rtt最大往返时间、udp总发送包数量、udp总丢失包数量、目标主机名称、目标主机ip地址、目标主机通信端口、源主机ip地址。

计算机可读存储介质包括:永久性和非永久性、可移动和非可移动媒体,是可以保留和存储供指令执行设备所使用指令的有形设备。计算机可读存储介质包括:电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备以及上述任意合适的组合。计算机可读存储介质包括:相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带存储、磁带磁盘存储或其他磁性存储设备、记忆棒、机械编码装置(例如在其上记录有指令的凹槽中的穿孔卡或凸起结构)或任何其他非传输介质、可用于存储可以被计算设备访问的信息。按照本发明实施例中的界定,计算机可读存储介质不包括暂时信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如穿过光纤电缆的光脉冲)或通过导线传输的电信号。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或二者的结合来实现,为了清楚说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序指令。所述计算机程序指令包括:汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,例如:smalltalk、c++以及过程式编程语言,例如:c语言或类似的编程语言。

在计算机上加载和执行所述计算机程序指令时,全部或部分的产生按照本发明实施例所述的流程或功能,所述计算机可以是通过计算机、专用计算机、计算机网络或其他可编辑装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如:所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、双绞线、光纤、数字用户线路(digitalsubscriberline,dsl))或无线(例如:红外、无线、微波)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、磁盘、磁带)、光介质(例如:光盘)或半导体介质(例如:固态硬盘(solidstatedrive,ssd))等。这些功能究竟以硬件还是软件来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

所属技术领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述本发明方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所披露的装置、电子设备和方法,可以通过其他的方式实现。例如,以上描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的、机械的或其他的形式连接。

所述作为分离部件说明的单元可以是或也可以不是物理上分开的,作为单元显示的部件可以是或也可以不是物理单元,既可以位于一个位置,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或全部单元来解决本发明实施例方案要解决的问题。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术作出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(包括:个人计算机、服务器、数据中心或其他网络设备)执行本发明各个实施例所述方法的全部或部分步骤。而上述存储介质包括如前述所列举的各种可以存储程序代码的介质。

以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例披露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1