通信方法及网络设备与流程

    专利2022-07-08  85


    本申请属于通信领域,具体涉及一种通信方法及网络设备。
    背景技术
    :属于同一网络设备的进程间、线程间或任务间进行通信时,为了避免资源互斥,需要依赖于软件队列的调度、自旋锁的使用等。然而,软件队列的调度以及自旋锁的使用,均需要cpu(centralprocessingunit,中央处理器)深度参与,从而导致通信过程对cpu资源的消耗较大,不利于提高cpu资源的利用率。技术实现要素:有鉴于此,本申请的目的在于提供一种通信方法及网络设备,在进行通信时,借助于硬件队列及硬件内存的天然互斥性来实现通信资源互斥,从而减少通信过程对cpu的消耗,有利于提升cpu的利用率。本申请的实施例是这样实现的:第一方面,本申请实施例提供一种通信方法,应用于网络设备,所述网络设备包括消息发送者、消息接收者、硬件队列以及预先创建的硬件共享内存池,所述方法包括:所述消息发送者确定接收待发送消息的消息接收者,以及与所述消息接收者存在绑定关系的硬件队列;所述消息发送者从所述硬件共享内存池中申请内存,并由所述消息发送者将所述待发送消息保存至所述内存;所述消息发送者将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内;所述消息接收者根据所述内存的地址获取到所述待发送消息并进行处理。当通信双方进行通信时,为了避免资源互斥,采用本身就存在互斥性的硬件内存以及硬件队列,从而至少可以避免cpu在互斥性方面消耗资源,以便减少的cpu资源可以另作其他用途,有利于提升cpu的利用率。结合第一方面实施例,在一种可能的实施方式中,多个硬件队列均与所述消息接收者存在绑定关系;所述消息发送者将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内,包括:所述消息发送者从与所述消息接收者存在绑定关系的多个硬件队列中,确定出目标硬件队列;所述消息发送者将所述构造信息保存至所述目标硬件队列内。通过这种方式,可以避免后续消息接收者重复获取到同一个构造信息,从而避免造成资源的浪费。结合第一方面实施例,在一种可能的实施方式中,所述多个硬件队列的优先级不同,所述消息发送者从与所述消息接收者存在绑定关系的多个硬件队列中,确定出目标硬件队列,包括:所述消息发送者在确定所述待发送消息的消息类型为控制类消息时,将所述多个硬件队列中,优先级最高的硬件队列确定为所述目标硬件队列;所述消息发送者在确定所述待发送消息的消息类型为数据类消息时,将所述多个硬件队列中,除优先级最高的硬件队列之外的其他硬件队列中的任一硬件队列确定为所述目标硬件队列。通过这种方式,可以将高优先级的消息保存在高优先级的硬件队列内,以便后续消息接收者优先处理高优先级的消息,实现对通信消息的优先级调度。结合第一方面实施例,在一种可能的实施方式中,所述消息发送者与所述消息接收者属于同一个核;或,所述消息发送者与所述消息接收者属于不同的核。结合第一方面实施例,在一种可能的实施方式中,所述消息发送者与所述消息接收者为进程,或者为线程或者为任务。结合第一方面实施例,在一种可能的实施方式中,所述构造信息还包括所述待发送消息的消息长度、所述待发送消息的消息类型、与所述消息接收者存在绑定关系的硬件队列的硬件队列标识中的至少一项。结合第一方面实施例,在一种可能的实施方式中,所述消息接收者根据所述内存的地址获取到所述待发送消息并进行处理,包括:所述消息接收者检测到与自身存在绑定关系的硬件队列产生中断;所述消息接收者响应所述中断,从与自身存在绑定关系的硬件队列中获取所述构造信息;所述消息接收者从所述构造信息所包括的所述内存的地址所指向的内存内获取所述待发送消息;所述消息接收者对所述待发送消息进行处理,并释放所述内存。由于由中断触发消息接收者读报的方式明显快于软件调度触发接收者读报的方式,因此,可以增加通信的实时性。结合第一方面实施例,在一种可能的实施方式中,多个硬件队列均与所述消息接收者存在绑定关系,且所述多个硬件队列之间的优先级不同;所述从与自身存在绑定关系的硬件队列中获取所述构造信息,包括:所述消息接收者根据优先级从高到底的顺序,依次从所述多个硬件队列内获取所述构造信息。第二方面,本申请实施例提供一种通信方法,应用于网络设备中的消息接收者,所述方法包括:检测到与自身存在绑定关系的硬件队列产生中断;响应所述中断,从与自身存在绑定关系的硬件队列中获取由消息发送者生成的构造信息,在所述构造信息中包括内存的地址;从所述内存的地址所指向的内存内获取所述消息发送者保存的待发送消息;对所述消息进行处理,并将所述内存进行释放;其中,所述消息发送者与所述消息接收者属于同一网络设备。第三方面,本申请实施例提供一种网络设备,包括:消息发送者、消息接收者、硬件队列以及预先创建的硬件共享内存池;所述消息发送者,用于确定接收待发送消息的消息接收者,以及与所述消息接收者存在绑定关系的硬件队列;所述消息发送者,用于从所述硬件共享内存池中申请内存,并将所述待发送消息保存至所述内存;所述消息发送者,用于将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内;所述消息接收者,用于根据所述内存的地址获取到所述待发送消息并进行处理。结合第三方面实施例,在一种可能的实施方式中,多个硬件队列均与所述消息接收者存在绑定关系;所述消息发送者,用于从与所述消息接收者存在绑定关系的多个硬件队列中,确定出目标硬件队列;所述消息发送者,用于将所述构造信息保存至所述目标硬件队列内。结合第三方面实施例,在一种可能的实施方式中,所述多个硬件队列的优先级不同,所述消息发送者,用于在确定所述待发送消息的消息类型为控制类消息时,将所述多个硬件队列中,优先级最高的硬件队列确定为所述目标硬件队列;所述消息发送者,用于在确定所述待发送消息的消息类型为数据类消息时,将所述多个硬件队列中,除优先级最高的硬件队列之外的其他硬件队列中的任一硬件队列确定为所述目标硬件队列。结合第三方面实施例,在一种可能的实施方式中,所述消息发送者与所述消息接收者属于同一个核;或,所述消息发送者与所述消息接收者属于不同的核。结合第三方面实施例,在一种可能的实施方式中,所述消息发送者与所述消息接收者为进程,或者为线程或者为任务。结合第三方面实施例,在一种可能的实施方式中,所述构造信息还包括所述待发送消息的消息长度、所述待发送消息的消息类型、与所述消息接收者存在绑定关系的硬件队列的硬件队列标识中的至少一项。结合第三方面实施例,在一种可能的实施方式中,所述消息接收者,用于检测到与自身存在绑定关系的硬件队列产生中断;所述消息接收者,用于响应所述中断,从与自身存在绑定关系的硬件队列中获取所述构造信息;所述消息接收者,用于从所述构造信息所包括的所述内存的地址所指向的内存内获取所述待发送消息;所述消息接收者,用于对所述待发送消息进行处理,并释放所述内存。结合第三方面实施例,在一种可能的实施方式中,多个硬件队列均与所述消息接收者存在绑定关系,且所述多个硬件队列之间的优先级不同;所述消息接收者,用于根据优先级从高到底的顺序,依次从所述多个硬件队列内获取所述构造信息。第四方面,本申请实施例还提供一种网络设备,包括:包括消息发送者与消息接收者;所述消息接收者,用于检测到与自身存在绑定关系的硬件队列产生中断;所述消息接收者,用于响应所述中断,从与自身存在绑定关系的硬件队列中获取由所述消息发送者生成的构造信息,在所述构造信息中包括内存的地址;所述消息接收者,用于从所述内存的地址所指向的内存内获取所述消息发送者保存的待发送消息;所述消息接收者,用于对所述消息进行处理,并将所述内存进行释放。第五方面,本申请实施例还提供一种非易失性计算机可读取存储介质(以下简称计算机可读存储介质),其上存储有计算机程序,所述计算机程序被计算机运行时执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。图1示出本申请实施例提供的一种通信方法的流程图之一。图2示出本申请实施例提供的一种通信方法的流程图之二。图3示出本申请实施例提供的一种网络设备的结构示意图。图标:100-网络设备;110-处理器;120-存储器;130-硬件队列。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。此外,针对现有技术中的通信方法所存在的缺陷(导致通信过程对cpu资源的消耗较大,不利于提高cpu资源的利用率)是申请人在经过实践并仔细研究后得出的结果,因此,上述缺陷的发现过程以及在下文中本申请实施例针对上述缺陷所提出的解决方案,都应该被认定为申请人对本申请做出的贡献。为了解决上述问题,本申请实施例提供一种通信方法及网络设备,在进行通信时,借助于硬件队列及硬件内存的天然互斥来实现通信资源互斥,从而减少对部分cpu的消耗,有利于提升cpu的利用率。该技术可采用相应的软件、硬件以及软硬结合的方式实现。以下对本申请实施例进行详细介绍。本申请实施例提供一种应用于网络设备的通信方法,该网络设备包括消息发送者、消息接收者、硬件共享内存池以及硬件队列。其中,作为通信双方的消息发送者以及消息接收者可以是两个进程,也可以是两个线程,还可以是两个应用任务。由于当通信双方为线程、为应用任务时的通信过程与通信双方为进程时的通信过程并不存在明显的技术差异,因此,下面将以通信双方是进程为例(其中,将消息发送者称之为发消息进程,将消息接收者称之为收消息进程),针对网络设备中的通信双方进行通信的过程进行介绍。可以理解,当通信双方为线程、为应用任务时的通信过程可以参考通信双方为进程时的通信过程。请参照图1,该通信方法包括以下步骤。步骤s110:所述消息发送者确定接收待发送消息的消息接收者,以及与所述消息接收者存在绑定关系的硬件队列。在本申请实施例中,并未对通信双方两个主体进行限制,可以理解,当网络设备的处理器为单核处理器时,发消息进程与收消息进程属于同一个核,当网络设备的处理器为多核处理器时,发消息进程与收消息进程可以属于同一个核,也可以属于不同的核。在发消息进程获取到待发送消息后,即可以确定出接收待发送消息的收消息进程、待发送消息的消息长度、待发送消息的内容、待发送消息的消息类型等。其中,待发送消息的消息类型包括控制类消息(msg_ctrl)及数据类消息(msg_data)。待发送消息的内容及结构由通信双方预先根据待发送消息的消息类型协商定义,例如在一些实施方式中,待发送消息的结构统一为msg_struct结构。值得指出的是,在本申请实施例中,预先将每个进程与一个或多个硬件队列(hardwarequeue)之间进行绑定,从而形成绑定关系表。该绑定关系表可以保存在云端,也可以保存在网络设备内。当然,一个硬件队列与一个进程进行绑定。值得指出的是,硬件队列与硬件队列之间本身就存在互斥,因此,若采用硬件队列,则不必再在通信过程中使用自旋锁来实现队列资源的互斥。在本申请实施例中,在确定出收消息进程后,可以通过查询绑定关系表,确定出与收消息进程存在绑定关系的硬件队列。步骤s120:所述消息发送者从所述硬件共享内存池中申请内存,并由所述消息发送者将所述待发送消息保存至所述内存。硬件共享内存池可以为各个进程提供可读写的共享内存,且硬件共享内存池中的内存由网络设备的硬件进行管理,无需消耗cpu的管理资源。由于在本申请实施例中采用的是硬件内存,且硬件内存本身就存在互斥性,即当一部分内存被进程申请后,只有当这部分内存被进程释放后才能被重新申请,因此,在本申请实施例中,不必再在通信过程中使用自旋锁来保证内存的互斥,至少可以减少cpu在自旋锁方面所消耗的资源。对于进程而言,可以随时向共享内存池申请内存以及释放内存。当然,由于进程操作的地址是虚拟地址,且进程之间彼此独立,为了保证各个进程申请内存时地址不乱序,需要尽可能地保证进程所申请的内存的虚拟地址与物理地址一致,此时,对于mips64架构的cpu,可以直接使用xkphys段物理地址(这部分内存的物理地址与虚拟地址一致)所对应的内存资源作为硬件共享内存池中的共享内存,对于非mips64架构的cpu,可以预留出部分虚拟地址,并将这部分预留出的虚拟地址通过地址映射(可以采用任何常规的地址映射手段)的方式映射到与其虚拟地址相同的物理地址区域。步骤s130:所述消息发送者将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内。在将待发送消息保存至申请的内存后,发消息进程将根据内存的地址生成构造信息。可以理解,在构造信息内包括发消息进程所申请的内存的地址(addr),以便后续收消息进程可以基于该地址找到保存在内存中的待发送消息。此外,在一些实施方式中,在构造信息内还可以包括待发送消息的消息长度(len)、待发送消息的消息类型(msgtype)、与消息接收者(收消息进程)存在绑定关系的硬件队列的硬件队列标识(queue)中的至少一项。在一些实施方式中,发消息进程可以将发消息进程所申请的内存的地址(addr)、待发送消息的消息长度(len)、待发送消息的消息类型(msgtype)、与消息接收者(收消息进程)存在绑定关系的硬件队列的硬件队列标识(queue)多种信息进行格式化,从而生成构造信息。例如在一些实施方式中,构造信息的主要格式如下表1所示。表1:构造信息的主要格式msgtypequeueaddrlen在生成构造信息后,发消息进程将构造信息保存至与收消息进程存在绑定关系的硬件队列内。在一些实施方式中,发消息进程将构造信息保存至与收消息进程存在绑定关系的每个硬件队列内。例如,当收消息进程只与一个硬件队列存在绑定关系时,相应的,发消息进程将构造信息保存至该一个硬件队列内;当收消息进程同时与多个硬件队列存在绑定关系时,相应的,发消息进程可以将构造信息保存至该多个硬件队列内。在另一些实施方式中,发消息进程将构造信息保存至与收消息进程存在绑定关系的一个硬件队列内。在这种实施方式下,当收消息进程与多个硬件队列均存在绑定关系时,发消息进程需要从多个硬件队列中确定出一个目标硬件队列,然后将构造信息保存至目标硬件队列内,避免后续收消息进程重复接收到同一个构造信息,避免资源浪费。至于确定目标硬件队列的方式,在一些实施方式中,可以是从多个硬件队列中随机确定一个硬件队列,并将其确定为目标硬件队列。在一些实施方式中,还可以为多个硬件设置不同的优先级,然后通过优先级的方式从多个硬件队列中确定出目标硬件队列。对于进程而言,一般从与其存在绑定关系的硬件队列中获取消息。若与进程存在绑定关系的硬件队列有多个,那么进程优先从具有高优先级的硬件队列中获取消息。此外,需要指出的是,一般而言,控制类消息的重要程度高于消息类消息的重要程度,因此,进程需要优先处理控制类消息。基于上述原理,当与收消息进程存在绑定关系的多个硬件队列的优先级不同时,若发消息进程确定待发送消息的消息类型为控制类消息,可以将多个硬件队列中,优先级最高的硬件队列确定为目标硬件队列,以便后续收消息进程可以优先从优先级最高的硬件队列中获取到与待发送消息(控制类消息)相关的构造信息,并优先处理,从而实现优先级调度。当然,当与收消息进程存在绑定关系的多个硬件队列的优先级不同时,若发消息进程确定待发送消息的消息类型为消息类消息,发消息进程可以将多个硬件队列中,除优先级最高的硬件队列之外的其他硬件队列中的任一硬件队列确定为目标硬件队列。步骤s140:所述消息接收者根据所述内存的地址获取到所述待发送消息并进行处理。在一些实施方式中,可以通过配置的方式,使得任何一个硬件队列在被存入构造信息时,可以产生中断。此外,还可以通过配置的方式,为各个进程注册中断响应,且进程的中断响应与该进程所存在绑定关系的硬件队列所产生的中断对应。如此设置之后,当硬件队列内被存入构造消息时,即可产生中断通知到与其存在绑定关系的进程,从而使得进程可以从与其绑定的,且产生中断的硬件队列中取构造信息。由于相较于现有技术中通过软件任务调度的方式来通知收消息进程获取构造消息的方式,通过硬件中断来通知收消息进程获取构造消息的方式更加快捷,因此,本申请实施例中采用由硬件中断来触发收消息进程读报的方式,可以增加通信实时性,提高通信效率。收消息进程从与自身存在绑定关系的,且产生中断的硬件队列中获取到构造信息后,可以从构造信息所包括的内存的地址所指向的内存内获取到待发送消息,并进行处理。当然,收消息进程在对消息进行处理后,即可以将内存进行释放,以便该内存可以再次被申请。下面将以表2所示的进程与硬件队列之间的绑定关系表为例,对本申请实施例所提供的通信方法进行举例说明。表2:进程与硬件队列之间的绑定关系表表2中所示的情况对应于存在两个核的处理器(cpu),且在每个核内都运行有两个进程。每个进程都分配有相应的硬件队列,对应的核、进程、硬件队列及硬件队列的优先级之间的关系也如表2所示。从上述绑定关系表中可以看出,核0的进程2、核1的进程1以及核1的进程2各存在一个绑定的硬件队列,而核0的进程1存在两个绑定的硬件队列并分别设定有高低优先级。如此设置的主要原因是,核0的进程2、核1的进程1、核1的进程2之间只存在数据类消息在进行通信,而他们到核0的进程1(单向)是存在控制类消息的,因此为了保证控制类消息可以被优先处理,为核0的进程1配置了两个具有不同优先级的硬件队列。当然,如果进程之间都存在控制类消息,则需要为每个进程分配高优先级的硬件队列。假设核0中的进程2需要与核0中的进程1通信(此时为核内通信),首先需要从硬件共享内存池中申请通信所需要的内存,并将待发送消息以msg_struct的结构填充消息内容至申请的内存后,将待发送消息的消息长度(len)、申请的内存的地址(addr)、待发送消息的消息类型(msg_ctrl或msg_data)以及与核0的进程1存在绑定关系的硬件队列(queue0或queue1,具体需要根据消息类型确定,其中,待发送消息的消息类型为msg_ctrl,则此处为高优先级的queue0,待发送消息的消息类型为msg_data,则此处为低优先级的queue1)等信息格式化为构造信息,并将构造信息加入queue0或queue1。当硬件队列queue0或queue1中有构造信息存入后,即会产生中断通知核0的进程1处理。若queue0与queue1均存入构造信息,且均产生中断,那么核0的进程1根据硬件队列优先级首先从高优先级硬件队列queue0获取构造信息并进行处理,然后再从低优先级硬件队列queue1获取构造信息并进行处理,完成后将内存释放回硬件共享内存池。假设核0中的进程2需要与核1的进程1通信(此时为核间通信),首先需要从硬件共享内存池中申请通信所需要的内存,并将待发送消息以msg_struct的结构填充消息内容至申请的内存后,将待发送消息的消息长度(len)、申请的内存的地址(addr)、待发送消息的消息类型(msg_data)以及与核1的进程1存在绑定关系的硬件队列(queue3)等信息格式化为构造信息,并将构造信息加入queue3。当硬件队列queue3中有构造信息存入后,即会产生中断通知核1的进程1处理。核1的进程1从queue3中获取构造信息并进行处理,完成后将内存释放回硬件共享内存池。本申请实施例所提供的一种通信方法,当通信双方进行通信时,为了避免资源互斥,采用本身就存在互斥性的硬件内存以及硬件队列,从而至少可以减少cpu在互斥性方面所消耗的资源,以便减少的cpu资源可以另作其他用途,有利于提升cpu的利用率。此外,请参照图2,本申请实施例提供一种应用于上述网络设备100的消息接收者的通信方法。网络设备100还包括消息发送者。该方法包括以下步骤。步骤s210:检测到与自身存在绑定关系的硬件队列产生中断;步骤s220:响应所述中断,从与自身存在绑定关系的硬件队列中获取由消息发送者生成的构造信息,在所述构造信息中包括内存的地址;步骤s230:从所述内存的地址所指向的内存内获取所述消息发送者保存的待发送消息;步骤s240:对所述消息进行处理,并将所述内存进行释放。上述步骤s210-步骤s240的执行过程,可以参照上述步骤s140,此处不再赘述。本申请实施例所提供的一种通信方法,由硬件中断来触发收消息进程读报,由于相较于现有技术中的,通过软件任务调度的方式来通知收消息进程获取构造消息的方式,通过硬件中断来通知收消息进程获取构造消息的方式更为快捷,因此,本申请实施例中采用由硬件中断来触发收消息进程读报的方式,可以增加通信实时性,提高通信效率。此外,请参照图3,本申请实施例还提供一种网络设备100,包括处理器110、存储器120、硬件队列130。可选的,网络设备100可以是,但不限于交换机、路由器、中继器等设备。应当注意,图3所示的网络设备100的组件和结构只是示例性的,而非限制性的,根据需要,网络设备100也可以具有其他组件和结构。处理器110、存储器120、硬件队列130以及其他可能出现于网络设备100的组件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,处理器110、存储器120、硬件队列130以及其他可能出现的组件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器120用于存储程序,例如存储有前文出现的通信方法对应的程序,以及存储有用于驱动进程、线程、应用任务启动的相关程序。处理器110可以是单核处理器,也可以是多核处理器,本申请实施例中不做过多限定。处理器110用于执行存储器120中存储的可执行模块,例如计算机程序。当处理器110在接收到执行指令后,可以执行计算机程序,例如执行驱动进程工作的程序,以便进程与进程之间相互通信;再例如执行驱动线程工作的程序,以便线程与线程之间相互通信;再例如执行驱动应用任务工作的程序,以便应用任务与应用任务之间相互通信。当上述进程与进程之间相互通信时,或线程与线程之间相互通信时,或应用任务与应用任务之间相互通信时,通信双方中的其中一方作为消息发送者,另一方作为消息接收者。在一种可选的实施方式中,当处理器110为单核处理器时,发消息进程与收消息进程属于同一个核,即发消息进程与收消息进程之间的通信过程为核内通信;在另一种可选的实施方式中,当处理器110为多核处理器时,发消息进程与收消息进程可以属于同一个核,也可以分别属于不同的核,即发消息进程与收消息进程之间的通信过程为核间通信。此外,值得指出的是,在本申请实施例中,网络设备100的存储器120包括内部存储器(内存)。在本申请实施例中,至少存在部分硬件内存,且该部分硬件内存的全部或局部存储空间被预先配置为硬件共享内存池(hardwarepool)。其中,在一些实施方式中,所述消息发送者,用于确定接收待发送消息的消息接收者,以及与所述消息接收者存在绑定关系的硬件队列;所述消息发送者,用于从所述硬件共享内存池中申请内存,并将所述待发送消息保存至所述内存;所述消息发送者,用于将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内;所述消息接收者,用于根据所述内存的地址获取到所述待发送消息并进行处理。在一种可能的实施方式中,多个硬件队列均与所述消息接收者存在绑定关系;所述消息发送者,用于从与所述消息接收者存在绑定关系的多个硬件队列中,确定出目标硬件队列;所述消息发送者,用于将所述构造信息保存至所述目标硬件队列内。在一种可能的实施方式中,所述多个硬件队列的优先级不同,所述消息发送者,用于在确定所述待发送消息的消息类型为控制类消息时,将所述多个硬件队列中,优先级最高的硬件队列确定为所述目标硬件队列;所述消息发送者,用于在确定所述待发送消息的消息类型为数据类消息时,将所述多个硬件队列中,除优先级最高的硬件队列之外的其他硬件队列中的任一硬件队列确定为所述目标硬件队列。在一种可能的实施方式中,所述消息发送者与所述消息接收者属于同一个核;或,所述消息发送者与所述消息接收者属于不同的核。在一种可能的实施方式中,所述消息发送者与所述消息接收者为进程,或者为线程或者为任务。在一种可能的实施方式中,所述构造信息还包括所述待发送消息的消息长度、所述待发送消息的消息类型、与所述消息接收者存在绑定关系的硬件队列的硬件队列标识中的至少一项。在一种可能的实施方式中,所述消息接收者,用于检测到与自身存在绑定关系的硬件队列产生中断;所述消息接收者,用于响应所述中断,从与自身存在绑定关系的硬件队列中获取所述构造信息;所述消息接收者,用于从所述构造信息所包括的所述内存的地址所指向的内存内获取所述待发送消息;所述消息接收者,用于对所述待发送消息进行处理,并释放所述内存。在一种可能的实施方式中,多个硬件队列均与所述消息接收者存在绑定关系,且所述多个硬件队列之间的优先级不同;所述消息接收者,用于根据优先级从高到底的顺序,依次从所述多个硬件队列内获取所述构造信息。其中,在另一些实施方式中,所述消息接收者,用于检测到与自身存在绑定关系的硬件队列产生中断;所述消息接收者,用于响应所述中断,从与自身存在绑定关系的硬件队列中获取由所述消息发送者生成的构造信息,在所述构造信息中包括内存的地址;所述消息接收者,用于从所述内存的地址所指向的内存内获取所述消息发送者保存的待发送消息;所述消息接收者,用于对所述消息进行处理,并将所述内存进行释放。本申请实施例所提供的网络设备,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,网络设备实施例部分未提及之处,可参考前述方法实施例中相应内容。此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被计算机运行时,执行如上述的通信方法所包含的步骤。综上所述,本发明实施例提出的通信方法及网络设备,当通信双方进行通信时,为了避免资源互斥,采用本身就存在互斥性的硬件内存以及硬件队列,从而至少可以减少cpu在互斥性方面所消耗的资源,以便减少的cpu资源可以另作其他用途,有利于提升cpu的利用率。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本
    技术领域
    的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。当前第1页1 2 3 
    技术特征:

    1.一种通信方法,其特征在于,应用于网络设备,所述网络设备包括消息发送者、消息接收者、硬件队列以及预先创建的硬件共享内存池,所述方法包括:

    所述消息发送者确定接收待发送消息的消息接收者,以及与所述消息接收者存在绑定关系的硬件队列;

    所述消息发送者从所述硬件共享内存池中申请内存,并由所述消息发送者将所述待发送消息保存至所述内存;

    所述消息发送者将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内;

    所述消息接收者根据所述内存的地址获取到所述待发送消息并进行处理。

    2.根据权利要求1所述的方法,其特征在于,多个硬件队列均与所述消息接收者存在绑定关系;所述消息发送者将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内,包括:

    所述消息发送者从与所述消息接收者存在绑定关系的多个硬件队列中,确定出目标硬件队列;

    所述消息发送者将所述构造信息保存至所述目标硬件队列内。

    3.根据权利要求2所述的方法,其特征在于,所述多个硬件队列的优先级不同,所述消息发送者从与所述消息接收者存在绑定关系的多个硬件队列中,确定出目标硬件队列,包括:

    所述消息发送者在确定所述待发送消息的消息类型为控制类消息时,将所述多个硬件队列中,优先级最高的硬件队列确定为所述目标硬件队列;

    所述消息发送者在确定所述待发送消息的消息类型为数据类消息时,将所述多个硬件队列中,除优先级最高的硬件队列之外的其他硬件队列中的任一硬件队列确定为所述目标硬件队列。

    4.根据权利要求1所述的方法,其特征在于,所述消息发送者与所述消息接收者属于同一个核;或,所述消息发送者与所述消息接收者属于不同的核;和/或

    所述消息发送者与所述消息接收者为进程,或者为线程或者为任务。

    5.根据权利要求1所述的方法,其特征在于,所述构造信息还包括所述待发送消息的消息长度、所述待发送消息的消息类型、与所述消息接收者存在绑定关系的硬件队列的硬件队列标识中的至少一项。

    6.根据权利要求1-5中任一项所述的方法,其特征在于,所述消息接收者根据所述内存的地址获取到所述待发送消息并进行处理,包括:

    所述消息接收者检测到与自身存在绑定关系的硬件队列产生中断;

    所述消息接收者响应所述中断,从与自身存在绑定关系的硬件队列中获取所述构造信息;

    所述消息接收者从所述构造信息所包括的所述内存的地址所指向的内存内获取所述待发送消息;

    所述消息接收者对所述待发送消息进行处理,并释放所述内存。

    7.根据权利要求6所述的方法,其特征在于,多个硬件队列均与所述消息接收者存在绑定关系,且所述多个硬件队列之间的优先级不同;所述从与自身存在绑定关系的硬件队列中获取所述构造信息,包括:

    所述消息接收者根据优先级从高到底的顺序,依次从所述多个硬件队列内获取所述构造信息。

    8.一种通信方法,其特征在于,应用于网络设备中的消息接收者,所述方法包括:

    检测到与自身存在绑定关系的硬件队列产生中断;

    响应所述中断,从与自身存在绑定关系的硬件队列中获取由消息发送者生成的构造信息,在所述构造信息中包括内存的地址;

    从所述内存的地址所指向的内存内获取所述消息发送者保存的待发送消息;

    对所述消息进行处理,并将所述内存进行释放;

    其中,所述消息发送者与所述消息接收者属于同一网络设备。

    9.一种网络设备,其特征在于,包括:消息发送者、消息接收者、硬件队列以及预先创建的硬件共享内存池;

    所述消息发送者,用于确定接收待发送消息的消息接收者,以及与所述消息接收者存在绑定关系的硬件队列;

    所述消息发送者,用于从所述硬件共享内存池中申请内存,并将所述待发送消息保存至所述内存;

    所述消息发送者,用于将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内;

    所述消息接收者,用于根据所述内存的地址获取到所述待发送消息并进行处理。

    10.一种网络设备,其特征在于,包括消息发送者与消息接收者;

    所述消息接收者,用于检测到与自身存在绑定关系的硬件队列产生中断;

    所述消息接收者,用于响应所述中断,从与自身存在绑定关系的硬件队列中获取由所述消息发送者生成的构造信息,在所述构造信息中包括内存的地址;

    所述消息接收者,用于从所述内存的地址所指向的内存内获取所述消息发送者保存的待发送消息;

    所述消息接收者,用于对所述消息进行处理,并将所述内存进行释放。

    技术总结
    本发明涉及一种通信方法及网络设备,属于通信领域。该方法包括:所述消息发送者确定接收待发送消息的消息接收者,以及与所述消息接收者存在绑定关系的硬件队列;所述消息发送者从所述硬件共享内存池中申请内存,并由所述消息发送者将所述待发送消息保存至所述内存;所述消息发送者将包括所述内存的地址的构造信息保存至与所述消息接收者存在绑定关系的硬件队列内;所述消息接收者根据所述内存的地址获取到所述待发送消息并进行处理。通过该方式,可以借助于硬件队列及硬件内存的天然互斥来实现通信资源互斥,从而减少通信过程对CPU的消耗,有利于提升CPU的利用率。

    技术研发人员:赵刚刚
    受保护的技术使用者:迈普通信技术股份有限公司
    技术研发日:2020.11.26
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22934.html

    最新回复(0)