网卡状态检测方法、装置、设备及存储介质与流程

文档序号:21317660发布日期:2020-06-30 20:47阅读:296来源:国知局
网卡状态检测方法、装置、设备及存储介质与流程

本发明涉及网络通信领域,尤其涉及一种网卡状态检测方法、装置、设备及存储介质。



背景技术:

相关技术中,基于dpdk(dataplanedevelopmentkit,数据平面开发工具包)循环检测网卡的状态,检测到网卡状态发生变化后,进行网卡状态切换后的相关逻辑处理。循环检测网卡的状态就涉及到一个循环间隔的问题。循环间隔太短,比如10ms循环检测一次,cpu(centralprocessingunit,中央处理器)将在网卡状态检测上消耗大量的时间,这样是不合理的。为了降低cpu的消耗,一般设置为1s循环检测一次,虽然cpu的消耗下降了,但是网卡状态发生变化时,检测到的时间误差就大很多,最差时间间隔为1s,往往无法满足网络设备的网卡状态变化的检测需求。



技术实现要素:

有鉴于此,本发明实施例提供了一种网卡状态检测方法、装置、设备及存储介质,旨在减小网卡状态变化的检测时长。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种网卡状态检测方法,包括:

监测网卡是否发生网卡状态变化事件;

基于监测到的网卡状态变化事件,确定监测到的网卡状态变化事件为目标事件,基于用户空间回调立即通知关心所述目标事件的调用者。

本发明实施例还提供了一种网卡状态检测装置,包括:

监测模块,用于监测网卡是否发生网卡状态变化事件;

通知模块,用于基于监测到的网卡状态变化事件,确定监测到的网卡状态变化事件为目标事件,基于用户空间回调立即通知关心所述目标事件的调用者。

本发明实施例又提供了一种网络设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器,用于运行计算机程序时,执行本发明任一实施例所述方法的步骤。

本发明实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本发明任一实施例所述方法的步骤。

本发明实施例提供的技术方案,基于监测到的网卡状态变化事件,确定监测到的网卡状态变化事件为目标事件,则基于用户空间回调立即通知关心所述目标事件的调用者,可以在监测到目标事件时,立即通知关心所述目标事件的调用者,提高了响应速度,利于保障网络的畅通。

附图说明

图1为本发明实施例网卡状态检测方法的流程示意图;

图2为本发明一应用示例中lsc调用第一回调应用立即通知调用者的原理示意图;

图3为本发明另一应用示例中lsc调用第二回调应用延时通知调用者的原理示意图;

图4为本发明实施例网卡状态检测装置的结构示意图;

图5为本发明实施例网络设备的结构示意图。

具体实施方式

下面结合附图及实施例对本发明再作进一步详细的描述。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释:

dpdk,全称dataplanedevelopmentkit,是intel提供的数据平面开发工具包,为intelarchitecture(ia)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持。通俗地说,就是一个用来进行包数据处理加速的软件库。

用户空间,指用户进程所在的内存区域。相对的,系统空间(又称为内核空间)是指操作系统占据的内存区域。

用户空间回调,指特定事件发生时,用户空间中被调用的函数或者方法。

本发明实施例提供了一种网卡状态检测方法,如图1所示,该方法包括:

步骤101,监测网卡是否发生网卡状态变化事件;

这里,可以通过轮询(polling)或者中断来监测网卡是否发生网卡状态变化事件。

在一实施例中,监测网卡是否发生网卡状态变化事件,包括:

基于dpdk监测内核是否产生与网卡状态相关的中断,若内核产生与网卡状态相关的中断,则确定监测到网卡状态变化事件。

实际应用中,可以采用dpdk内部的epoll监控内核的中断,并将监测到的中断通知给dpdk,由dpdk判断内核产生的中断是否为网卡状态相关的中断,若是,则确定监测到网卡状态变化事件。

这样,不同于轮询机制,可以省去不必要的周期性循环检测,降低了cpu的消耗,利于提升cpu的使用性能。

实际应用中,与网卡状态相关的中断可以包括但不限于:网卡链路状态变化、网卡队列变化事件、网卡reset事件、网卡删除事件。其中,网卡链路状态变化是指网卡的物理口出现up(工作)与down(故障)状态的转换,网卡队列变化事件是指网卡在多核cpu之间切换队列的事件,网卡reset事件是指网卡的配置进行重置的事件,网卡删除事件是指网卡从网络设备上卸载的事件。

步骤102,基于监测到的网卡状态变化事件,确定监测到的网卡状态变化事件为目标事件,基于用户空间回调立即通知关心所述目标事件的调用者。

这里,目标事件为预先定义的需要立即通知相应的调用者的事件,从而可以在特定事件发生后,尽可能快地通知关心该特定事件的调用者,减少通知的时延,利于保障网络的畅通。

本发明实施例网卡状态检测方法,基于监测到的网卡状态变化事件,确定监测到的网卡状态变化事件为目标事件,则基于用户空间回调立即通知关心所述目标事件的调用者,提高了响应速度,利于保障网络的畅通。此外,通过监测内核是否产生与网卡状态相关的中断来确定是否监测到网卡状态变化事件,可以省去周期性的循环检测,利于降低cpu的消耗。

在一实施例中,所述基于监测到的网卡状态变化事件,确定监测到的网卡状态变化事件为目标事件,包括:

基于监测到的内核的中断的标识,判断中断的标识是否为预设的目标事件对应的标识;

若是,则确定监测到的网卡状态变化事件为目标事件。

实际应用中,由于每个中断都具有唯一的标识,可以基于中断的标识来判断中断对应的事件是否为预设的目标事件。

实际应用中,可以对网卡注册网卡状态相关的用户空间回调,以在监测到网卡状态变化事件时,可以调用相应的用户空间回调。在一应用示例中,可以注册网卡的网卡链路状态变化、网卡队列变化事件、网卡reset事件及网卡删除事件等各自对应的回调应用。当监测到网卡状态相关的中断时,根据中断对应的事件调用相应的回调应用。

在一实施例中,所述方法包括:注册网卡的用户空间回调,所述用户空间回调至少包括:目标事件对应的第一回调应用。需要说明的是,该第一回调用用可以在监测到目标事件时,立即通知关心目标事件的调用者。

在一实施例中,所述基于用户空间回调立即通知关心所述目标事件的调用者,包括:通过网卡注册的用户空间回调中与所述目标事件对应的第一回调应用,立即通知关心所述目标事件的调用者。

在一实施例中,目标事件为网卡链路状态变化,所述基于用户空间回调立即通知关心所述目标事件的调用者,包括以下至少之一:

通过第一回调应用通知聚合口模块,使得所述聚合口模块基于所述网卡链路状态变化进行成员口管理;

通过第一回调应用通知路由模块,使得所述路由模块基于所述网卡链路状态变化进行路由设置;

通过第一回调应用通知地址解析协议(arp)模块,使得所述arp模块基于所述网卡链路状态变化更新arp表;

通过第一回调应用通知动态主机配置协议(dhcp)模块,使得所述dhcp模块基于所述网卡链路状态变化管理互联网协议ip地址;

通过第一回调应用通知基于以太网的点对点通讯协议(pppoe)模块,使得所述pppoe模块基于所述网卡链路状态变化管理状态机;

通过第一回调应用通知简单网络管理协议(snmp)模块,使得所述snmp模块基于所述网卡链路状态变化生成告警信息。

这里,基于第一回调应用立即通知聚合口模块,可以使得聚合口模块快速进行主备口切换、负载模式下将由up转换为down的物理口剔除等。基于第一回调应用立即通知路由模块,可以将up转换为down的物理口的路由设置为无效,防止流量走向错误的路径。基于第一回调应用立即通知arp模块,可以删除up转换为down的物理口的arp表项。基于第一回调应用立即通知dhcp模块,可以使得dhcp客户端将由up转换为down的物理口的ip地址删除,将相应的dhcp定时器停止等。基于第一回调应用立即通知pppoe模块,可以及时根据链路状态变化更新pppoe内部的状态机。基于第一回调应用立即通知snmp模块,可以及时根据链路状态变化生成告警信息,方便网络管理员第一时间获取网络故障情况。

在一应用实施例中,如图2所示,可以采用dpdk内部的epoll监测内核是否产生中断,若多个nic(networkinterfacecontroller,网络接口控制器)中的至少一个由up转换为down或者由down转换为up,则生成网卡链路状态变化的内核中断,epoll将监测到的中断告知dpdk,dpdk基于中断对应的事件采取相应的处理逻辑,确定中断为网卡链路状态变化,则lsc(linkstatuschange)调用第一回调应用,立即通知关心网卡链路状态变化的调用者,比如,关心lsc事件的用户1、用户2、用户n等。这里各用户可以是前述的聚合口模块、路由模块、arp模块、dhcp模块、pppoe模块或者snmp模块。

在一实施例中,所述用户空间回调还包括:目标事件对应的用于延时通知的第二回调应用;所述方法还包括:

确定监测到的网卡状态变化事件为目标事件,通过第二回调应用,对网卡的寄存器进行设置,并等待设定时长后,通知关心所述目标事件的调用者。

以目标事件为网卡链路状态变化为例,如图3所示,在一应用示例中,dpdk内部的epoll监测内核是否产生中断,若多个nic中的至少一个由up转换为down或者由down转换为up,则生成链路状态变化的内核中断,epoll将监测到的中断告知dpdk,dpdk基于中断对应的事件采取相应的处理逻辑,确定中断为网卡链路状态变化,则lsc调用第二回调应用。这里第二回调应用不同于前述的第一回调应用,第二回调应用是一个具有延时通知机制的用户空间回调,由于网卡在发生网卡链路状态变化后,网卡的状态处于不稳定状态,需要一定的时间来对网卡寄存器进行设置等操作,因此,第二回调应用会等待设定时长(由延时定时器设置),等待dpdk处理网卡寄存器,使得网卡稳定后再行通知调用者。调用者即关心lsc事件的用户1、用户2、用户n等。这里各用户可以是前述的聚合口模块、路由模块、arp模块、dhcp模块、pppoe模块或者snmp模块。以dpdk17.08中ixgbe为例,网卡链路状态发生变化后,如果网卡由up切换为down,往往会延迟1s通知,如果网卡由down切换为up,往往会延迟4s通知。本发明实施例中,由于lsc会调用第一回调应用和第二回调应用,通过调用第一回调应用,可以立即通知调用者,相应的调用者就会立即得知网卡链路状态变化,进而做出相应的处理,通过调用第二回调应用,会处理网卡寄存器,使得网卡稳定后再行通知调用者。这样,可以提高网卡链路状态变化时的响应速度,利于保障网络的畅通。

以汇聚口主备切换为例。eth0,eth1组成汇聚口,其中eth0为主口,汇聚口切换模式为主备切换。当eth0由于某种情况,由up转换至down。这时,lsc监测到这一情况。将这一状态变化,立即通知关心lsc事件的用户a,用户a收到这一消息后,立即将eth1口设置为主口,使汇聚口迅速切换,以最快的速度保证网络的畅通。

基于上述描述可以得知,本发明实施例网卡状态检测方法,在网卡发生目标事件时,可以立即通知相关的调用者,提高了响应速度,利于保障网络的畅通,比如,汇聚口的主备切换,切换的速度可以达到10ms级别。此外,通过监测内核是否产生与网卡状态相关的中断来确定是否监测到网卡状态变化事件,可以省去周期性的循环检测,利于降低cpu的消耗,提升cpu的使用性能。

为了实现本发明实施例的方法,本发明实施例还提供一种网卡状态检测装置,该网卡状态检测装置与上述网卡状态检测方法对应,上述网卡状态检测方法实施例中的各步骤也完全适用于本网卡状态检测装置实施例。

如图4所示,该网卡状态检测装置包括:监测模块401、通知模块402,其中,监测模块401用于监测网卡是否发生网卡状态变化事件;通知模块402用于基于监测到的网卡状态变化事件,确定监测到的网卡状态变化事件为目标事件,基于用户空间回调立即通知关心所述目标事件的调用者。

在一实施例中,通知模块402具体用于:通过网卡注册的用户空间回调中与所述目标事件对应的第一回调应用,立即通知关心所述目标事件的调用者。

在一实施例中,所述目标事件为网卡链路状态变化,通知模块402具体用于以下至少之一:

通过第一回调应用通知聚合口模块,使得所述聚合口模块基于所述网卡链路状态变化进行成员口管理;

通过第一回调应用通知路由模块,使得所述路由模块基于所述网卡链路状态变化进行路由设置;

通过第一回调应用通知arp模块,使得所述arp模块基于所述网卡链路状态变化更新arp表;

通过第一回调应用通知dhcp模块,使得所述dhcp模块基于所述网卡链路状态变化管理互联网协议ip地址;

通过第一回调应用通知pppoe模块,使得所述pppoe模块基于所述网卡链路状态变化管理状态机;

通过第一回调应用通知snmp模块,使得所述snmp模块基于所述网卡链路状态变化生成告警信息。

在一实施例中,所述装置还包括:注册模块403,用于:注册网卡的用户空间回调,所述用户空间回调至少包括:目标事件对应的第一回调应用。

在一实施例中,所述用户空间回调还包括:目标事件对应的用于延时通知的第二回调应用;所述通知模块402还用于:

确定监测到的网卡状态变化事件为目标事件,通过第二回调应用,对网卡的寄存器进行设置,并等待设定时长后,通知关心所述目标事件的调用者。

在一实施例中,监测模块401具体用于:

基于dpdk监测内核是否产生与网卡状态相关的中断,若内核产生与网卡状态相关的中断,则确定监测到网卡状态变化事件。

在一实施例中,所述通知模块402还用于:

基于监测到的内核的中断的标识,判断中断的标识是否为预设的目标事件对应的标识;若是,则确定监测到的网卡状态变化事件为目标事件。

实际应用时,监测模块401、通知模块402及注册模块403,可以由网卡状态检测装置中的处理器来实现。当然,处理器需要运行存储器中的计算机程序来实现它的功能。

需要说明的是:上述实施例提供的网卡状态检测装置在进行网卡状态检测时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的网卡状态检测装置与网卡状态检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供一种网络设备。图5仅仅示出了该网络设备的示例性结构而非全部结构,根据需要可以实施图5示出的部分结构或全部结构。

如图5所示,本发明实施例提供的网络设备500包括:至少一个处理器501、存储器502、用户接口503和至少一个网络接口504。网络设备500中的各个组件通过总线系统505耦合在一起。可以理解,总线系统505用于实现这些组件之间的连接通信。总线系统505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统505。

其中,用户接口503可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。

本发明实施例中的存储器502用于存储各种类型的数据以支持网络设备的操作。这些数据的示例包括:用于在网络设备上操作的任何计算机程序。

本发明实施例揭示的网卡状态检测方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,网卡状态检测方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器501可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成本发明实施例提供的网卡状态检测方法的步骤。

在示例性实施例中,网络设备可以被一个或多个应用专用集成电路(asic,applicationspecificintegratedcircuit)、dsp、可编程逻辑器件(pld,programmablelogicdevice)、复杂可编程逻辑器件(cpld,complexprogrammablelogicdevice)、fpga、通用处理器、控制器、微控制器(mcu,microcontrollerunit)、微处理器(microprocessor)、或者其他电子元件实现,用于执行前述方法。

可以理解,存储器502可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,readonlymemory)、可编程只读存储器(prom,programmableread-onlymemory)、可擦除可编程只读存储器(eprom,erasableprogrammableread-onlymemory)、电可擦除可编程只读存储器(eeprom,electricallyerasableprogrammableread-onlymemory)、磁性随机存取存储器(fram,ferromagneticrandomaccessmemory)、快闪存储器(flashmemory)、磁表面存储器、光盘、或只读光盘(cd-rom,compactdiscread-onlymemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,randomaccessmemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,staticrandomaccessmemory)、同步静态随机存取存储器(ssram,synchronousstaticrandomaccessmemory)、动态随机存取存储器(dram,dynamicrandomaccessmemory)、同步动态随机存取存储器(sdram,synchronousdynamicrandomaccessmemory)、双倍数据速率同步动态随机存取存储器(ddrsdram,doubledataratesynchronousdynamicrandomaccessmemory)、增强型同步动态随机存取存储器(esdram,enhancedsynchronousdynamicrandomaccessmemory)、同步连接动态随机存取存储器(sldram,synclinkdynamicrandomaccessmemory)、直接内存总线随机存取存储器(drram,directrambusrandomaccessmemory)。本发明实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体可以是计算机可读存储介质,例如包括存储计算机程序的存储器502,上述计算机程序可由网络设备的处理器501执行,以完成本发明实施例方法所述的步骤。计算机可读存储介质可以是rom、prom、eprom、eeprom、flashmemory、磁表面存储器、光盘、或cd-rom等存储器。

需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

另外,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

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

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