CN111865834A - 一种消息处理方法及装置 - Google Patents
一种消息处理方法及装置 Download PDFInfo
- Publication number
- CN111865834A CN111865834A CN201910343937.1A CN201910343937A CN111865834A CN 111865834 A CN111865834 A CN 111865834A CN 201910343937 A CN201910343937 A CN 201910343937A CN 111865834 A CN111865834 A CN 111865834A
- Authority
- CN
- China
- Prior art keywords
- message
- plane
- data plane
- control plane
- state variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
一种消息处理方法及装置,用于解决如何快速恢复数据面的问题,该方法包括:控制面接收第一消息;控制面确定第一消息为状态变量修改消息,缓存第一消息;控制面接收来自备数据面的第二消息,第二消息用于请求获取控制面缓存的消息;控制面向备数据面发送第一消息。因此,可以减少需要缓存的消息数量且提高数据面恢复效率。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种消息处理方法及装置。
背景技术
在云计算的虚拟化场景下,虚拟机的性能一直是服务提供商以及租户关注的焦点,尤其是虚拟I/O(Virtual I/O,virtio)的性能。最初的全虚拟化(fullvirtualization)使用纯软件的方法去模拟物理I/O设备,使客户机的操作系统不感知I/O设备的变化。这样,操作系统不需要任何的修改,但纯软件的方法涉及到复杂的指令转换,导致I/O性能较差。为此,半虚拟化(para virtualization)的方式被提出,例如,现在获得广泛应用的虚拟I/O技术。虚拟I/O通过在前端驱动(客户机)和后端驱动(宿主机)之间共享队列,来交换数据,从而能够大幅减少原来在全虚拟化下复杂的指令转换,进而提升I/O性能。
图1为一种典型的虚拟I/O架构图。在客户机1(guest1)1061至客户机N(guest N)106N中,每台客户机都存在一个独立的前端驱动(virtio-net)107,每个前端驱动107通过虚拟化层(hypervisor)105和后端驱动(vhost-user)103进行通信。开放虚拟交换机(OpenvSwitch,OVS),又称管理面104,与后端驱动103之间存在连接。后端驱动103通常可以分成两个模块,包括控制面(control plane)101和数据面(data plane)102。
在数据面102重启或者主备热替换时,为了恢复数据面102的功能,管理面104和前端驱动107都会和数据面102再次协商配置以及重新初始化,即管理面104和前端驱动107会发送大量的消息给数据面102以完成协商配置过程,导致数据面102恢复时间过长,进而造成网络中断时间过长。
发明内容
本申请实施例提供一种消息处理方法及装置,用于解决如何快速恢复数据面的问题。
第一方面,本申请实施例提供一种消息处理方法,包括:控制面接收第一消息;所述控制面确定所述第一消息为状态变量修改消息,缓存所述第一消息;所述控制面接收来自备数据面的第二消息,所述第二消息用于请求获取所述控制面缓存的消息;所述控制面向所述备数据面发送所述第一消息。
采用本申请实施例提供的方法,控制面缓存状态变量修改消息,并在接收到来自备数据面的第二消息时,向备数据面发送缓存的状态变量修改消息。因此,可以有效减少需要缓存的消息数量,在数据面重启或者主备热替换时可以实现快速恢复数据面的功能,且尽可能少的占用控制面的资源,可以提高数据面的恢复效率。
在一种可能的设计中,所述控制面确定所述第一消息为状态变量修改消息,缓存所述第一消息,包括:所述控制面确定所述第一消息来自前端驱动且为与所述前端驱动相关的状态变量修改消息,缓存所述第一消息。
采用上述设计可以有效减少需要缓存的消息数量,从而提高数据面的状态恢复效率。
在一种可能的设计中,所述控制面确定所述第一消息来自前端驱动且为与所述前端驱动相关的状态变量修改消息,缓存所述第一消息,包括:所述控制面确定所述第一消息为第k+1次修改第一状态变量的消息,则缓存所述第k+1次修改第一状态变量的消息且删除已缓存的第k次修改第一状态变量的消息,其中,所述第一状态变量为任意一个与所述前端驱动相关的状态变量,k为正整数。
采用上述设计可以有效减少需要缓存的消息数量,从而提高数据面的状态恢复效率。
在一种可能的设计中,所述方法,还包括:所述控制面接收来自所述备数据面的第三消息,所述第三消息用于请求获取与管理面相关的状态变量修改消息;所述第三消息携带用于指示所述备数据面的标识;所述控制面将所述第三消息转发至所述管理面,并接收来自所述管理面的第四消息,所述第四消息包括与所述管理面相关的状态变量修改消息和所述用于指示所述备数据面的标识;所述控制面基于所述第四消息中包括的所述用于指示所述备数据面的标识,将所述第四消息转发至所述备数据面。
采用上述设计可以保证控制面在接收到第四消息后能够正确地将其转发至备数据面,进而保证了主备热替换的成功,同时也可以保证主备热替换时虚拟网卡的正常工作。
在一种可能的设计中,所述第二消息携带所述用于指示所述备数据面的标识;所述控制面向所述备数据面发送所述第一消息,包括:所述控制面基于所述第二消息中包括的所述用于指示所述备数据面的标识向所述备数据面发送所述第一消息。
采用上述设计可以保证控制面将第二消息后正确地转发至备数据面,进而保证了主备热替换的成功,同时也可以保证主备热替换时虚拟网卡的正常工作。
在一种可能的设计中,所述用于指示所述备数据面的标识为所述备数据面对应的进程标识符或所述备数据面对应的文件描述符。
采用上述设计可以使控制面能够正确区分回复消息的来源。
在一种可能的设计中,所述方法,还包括:若所述控制面确定所述第一消息来自所述管理面,则将所述第一消息放入第一队列;若所述控制面确定所述第一消息来自所述前端驱动,则将所述第一消息放入第二队列;其中,所述第一队列和所述第二队列均为所述控制面向主数据面转发的消息所在的队列;所述第一队列的转发优先级高于所述第二队列的转发优先级。
采用上述设计可以避免来自管理面的消息被多个来自前端驱动的消息阻塞,保证来自管理面的消息能够及时被控制面转发给数据面,进而可以保证客户机上虚拟网卡的正常工作。
在一种可能的设计中,所述方法,还包括:若所述控制面确定所述第一消息来自所述前端驱动,所述控制面向所述备数据面和主数据面分别发送所述第一消息;所述控制面接收来自所述备数据面的针对所述第一消息的第一回复消息,以及接收来自所述主数据面的针对所述第一消息的第二回复消息;若所述控制面确定所述第一回复消息和第二回复消息的内容相同,则将所述第一回复消息和所述第二回复消息中的任一回复消息发送至所述前端驱动;若所述控制面确定所述第一回复消息和第二回复消息的内容不同,则将所述第二回复消息发送至所述前端驱动,所述控制面确定所述备数据面替换所述主数据面失败。
采用上述设计可以使控制面判断出备数据面替换主数据面失败。
第二方面,本申请实施例提供一种消息处理装置,该装置可以是一种设备,也可以是一种芯片。该装置可以包括处理单元、发送单元和接收单元。当该装置是一种设备时,该处理单元可以是处理器,该发送单元和接收单元可以是收发器;该设备还可以包括存储单元,该存储单元可以是存储器;该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该设备执行第一方面或第一方面任意一种可能的设计中的方法。当该装置是一种芯片时,该处理单元可以是处理器,该发送单元和接收单元可以是输入/输出接口、管脚或电路等;该处理单元执行存储单元所存储的指令,以使该芯片执行第一方面或第一方面任意一种可能的设计中的方法。该存储单元用于存储指令,该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。
第三方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面的方法。
第四方面,本申请实施例还提供一种包含程序的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面的方法。
附图说明
图1为本申请中虚拟I/O架构图;
图2为本申请中数据面主备热替换的结构示意图之一;
图3为本申请中消息处理方法的概述流程图;
图4为本申请中控制面处理消息的示意图;
图5为本申请中数据面主备热替换的结构示意图之二;
图6为本申请中消息处理装置的结构示意图之一;
图7为本申请中消息处理装置的结构示意图之二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
下面首先介绍一下本发明实施例的应用场景,本发明实施例可以应用于任意云计算系统的虚拟化场景,如图1所示,为本申请的一种可能的应用场景示意图,图中各个组成部分的功能具体如下:
前端驱动107存在于每一台客户机中,通过虚拟化层105向控制面101传递前端驱动107所在客户机上的虚拟网卡的状态变量修改信息,例如使能或挂起虚拟网卡、修改虚拟网卡队列和参数等。虚拟化层105是指主机节点上的虚拟化层,用于维护前端驱动107和控制面101之间的连接,其中,虚拟化层105可以通过开源软件QEMU实现。管理面104负责端口的创建、维护等,它与控制面101之间存在连接,与控制面101交互端口的配置信息等。后端驱动103具体包含:控制面101和数据面102。其中,控制面101负责维护其他组件和数据面102之间的连接,包括消息的识别、缓存、转发等;数据面102负责在前端驱动107和网卡(network interface controller,NIC)110之间传输数据报文,处理实际的数据传输业务。网卡110是指宿主机上的物理网卡,负责主机端报文的收发。
本申请实施例可应用于虚拟I/O领域中的主备热替换和数据面重启等场景。其中,虚拟I/O是指一种在虚拟化环境中客户机和宿主机之间高效通信的技术。主备热替换是指一种业务升级的方案,一般是先启动备业务,备业务初始化并开始运行,再断开主业务,以尽量保证业务中断时间短。在本申请中,主备热替换可以是指先启动备数据面,备数据面初始化并开始运行,再断开主数据面。如图2所示为数据面主备热替换的模块结构示意图,与图1不同的是,数据面202A表示主数据面,数据面202B表示备数据面,其他模块与图1中各个模块相同。数据面202A和数据面202B可以实现数据面主备之间的热替换。
应理解的是,图1和图2所示的架构图均为举例说明,并不应该理解成对本申请实施范围的限定。
在本申请中,控制面和数据面以两个独立组件的形式存在,控制面成为了消息集散点。为了缩短数据面恢复时间,一种可行的方法就是控制面将用于协商配置的消息缓存下来,然后在数据面恢复时,将缓存的消息直接发送给数据面。但是如果控制面缓存所有的消息,那么不仅会占用很多的资源,同时,如果发送给数据面的消息量很大的话,也会增加数据面的恢复时间。因此,控制面如何高效地处理收到的消息,如何高效地缓存发送给数据面的消息,以快速恢复数据面成为亟需解决的问题。
为了解决如何快速恢复数据面的问题,参阅图3所示,本申请实施例提供一种消息处理方法,该方法包括:
步骤300:控制面接收第一消息。
在实际运行过程中,管理面和前端驱动都会向数据面发送消息。其中,来自管理面的消息数量较少且比较重要,而来自前端驱动的消息数量相对较多。控制面可以同时接收一个来自管理面的消息和多个来自前端驱动的消息,例如,如图1所示,客户机1中的前端驱动和客户机2中的前端驱动分别向控制面发送消息,则控制面接收到2个来自前端驱动的消息。因此,来自管理面的消息可能被多个来自前端驱动的消息阻塞,长时间得不到处理,控制面无法及时将来自管理面的消息转发给数据面,进而影响客户机上虚拟网卡的正常工作。
为了解决上述问题,避免来自管理面的消息被多个来自前端驱动的消息阻塞,在一种可能的设计中,若控制面确定第一消息来自管理面,则将第一消息放入第一队列;若控制面确定第一消息来自前端驱动,则将第一消息放入第二队列;其中,第一队列和第二队列均为控制面向主数据面转发的消息所在的队列;第一队列的转发优先级高于第二队列的转发优先级。采用上述设计可以保证来自管理面的消息能够及时被控制面转发给数据面,进而可以保证客户机上虚拟网卡的正常工作。
作为一个可选的实施例,控制面可以设置两个带有优先级的队列。若控制面接收到的消息来自管理面,则将来自管理面的消息放入高优先级的队列,若控制面接收到的消息来自前端驱动,将来自前端驱动的消息放入低优先级的队列。在控制面转发消息给数据面时,控制面采用优先级队列(priority queue)调度的方式,一旦发现高优先级的队列中存在消息,则立刻发送这些消息,然后再发送低优先级队列中的消息。其中,高优先级队列和低优先级队列均为先进先出(first input first output,FIFO)队列。其中,FIFO队列是指按消息到达的先后顺序让消息依次进入队列,同时,让消息按进队的顺序出队,先进的消息将先出队,后进的消息将后出队。应理解的是,当系统中仅存在一个数据面时,该数据面即为主数据面,控制面一旦发现高优先级的队列中存在消息,则立刻将该消息发送至该数据面,然后再将低优先级队列中的消息发送至该数据面。当系统中存在两个数据面时,其中一个数据面为主数据面,另一个数据面为备数据面,控制面一旦发现高优先级的队列中存在消息,则立刻将该消息分别发送至主数据面和备数据面,然后再将低优先级队列中的消息发送至主数据面和备数据面,即每个消息发送两次,分别发送至主数据面和备数据面。
如图4所示,消息a,消息b,和消息c来自管理面,当控制面接收到这些消息时,将这些消息放入高优先级的队列。消息1,消息2,消息3,消息4,消息5,消息6,消息7,消息8和消息9来自前端驱动,当控制面接收到这些消息时,将这些消息放入低优先级的队列。
步骤310:控制面确定第一消息为状态变量修改消息,缓存第一消息。
本申请实施例中消息缓存的目的是为了在数据面重启或者主备热替换时快速恢复数据面的功能(又称数据面的状态)。一般而言,数据面的状态可以分成两大类:一是与管理面相关的状态,二是与前端驱动相关的状态。在能够快速恢复数据面的状态的前提下,尽可能少的缓存消息,则能够尽可能少的占用控制面的资源。为此,控制面需要对接收到的消息进行分析,判断该消息是否为状态变量修改消息。若该消息为非状态变量修改消息,则不需要缓存该消息。例如,该消息来自前端驱动,且该消息用于获取后端驱动支持的特性,由于该消息不是用于修改与前端驱动相关的状态变量(即该消息与数据面的状态恢复不相关),则控制面不需要缓存该消息。若该消息为状态变量修改消息,则缓存该消息。其中,状态变量修改消息又可以分为与管理面相关的状态变量修改消息(此时该状态变量修改消息来自管理面)和与前端驱动相关的状态变量修改消息(此时该状态变量修改消息来自前端驱动)。由于与管理面相关的状态变量修改消息数量较少,并且管理面通常会缓存这些消息。在恢复数据面的状态时,数据面可以通过控制面直接向管理面请求这些信息,因此,与管理面相关的状态变量修改消息可以不缓存。在一种可能的设计中,控制面确定第一消息来自前端驱动且为与前端驱动相关的状态变量修改消息,缓存第一消息。采用上述设计可以有效减少需要缓存的消息数量,从而提高数据面的状态恢复效率。
进一步地,与前端驱动相关的状态变量修改消息又可分为与前端驱动相关的重复状态变量修改消息和与前端驱动相关的非重复状态变量修改消息。其中,与前端驱动相关的重复状态变量修改消息是指重复修改某一个与前端驱动相关的状态变量,所以,只需要缓存最新的消息即可,即找到已有的消息,并将其替换成最新的消息。与前端驱动相关的非重复状态变量修改消息需要全部缓存,例如设置后端驱动使能的特性。
在一种可能的设计中,控制面确定第一消息为第k+1次修改第一状态变量的消息,则缓存第k+1次修改第一状态变量的消息且删除已缓存的第k次修改第一状态变量的消息。其中,第一状态变量为任意一个与前端驱动相关的状态变量,k为正整数。采用上述设计通过消息替换的方式可以进一步减少需要缓存的消息数量,从而提高数据面的状态恢复效率。例如,第k+1次修改第一状态变量的消息为前端驱动A第k+1次告知后端驱动客户机A的内存区域,前端驱动A存在于客户机A中。在控制面接收到第k+1次修改第一状态变量的消息后,控制面缓存第k+1次修改第一状态变量的消息,找到已缓存的第k次修改第一状态变量的消息并删除第k次修改第一状态变量的消息,其中,第k次修改第一状态变量的消息为前端驱动A第k次告知后端驱动客户机A的内存区域。
值得注意的是,在数据面的状态恢复时,不同的状态变量之间存在依赖关系,因此所有缓存的消息需要尽量保序,以保证数据面的状态恢复的正确性。例如,缓存消息队列可以为FIFO队列。如图4所示,消息1至消息9依次到达控制面,其中,消息2、消息5、消息8为非状态变量修改消息,控制面无需缓存这些消息,控制面依次缓存消息1、消息3、消息4、消息6、消息7、消息9。
步骤320:备数据面向控制面发送第二消息,第二消息用于请求获取控制面缓存的消息。
步骤330:在控制面接收到来自备数据面的第二消息后,控制面向备数据面发送缓存的第一消息。
针对步骤320~步骤330,当备数据面需要替换主数据面时,为了完成数据面的状态恢复,备数据面向控制面发送第二消息,通过第二消息获取控制面缓存的消息,在控制面接收来自备数据面的第二消息后,控制面向备数据面发送控制面缓存的消息。应理解的是,此时控制面会将缓存的所以消息依次发送至数据面。如图4所示,在控制面接收到来自备数据面的第二消息后,控制面将缓存队列中的消息1、消息3、消息4、消息6、消息7、消息9依次发送给数据面。
在一种可能的设计中,控制面还接收来自备数据面的第三消息,第三消息用于请求获取与管理面相关的状态变量修改消息。第三消息携带用于指示备数据面的标识。控制面将第三消息转发至管理面,并接收来自管理面的第四消息,第四消息包括与管理面相关的状态变量修改消息和用于指示备数据面的标识。控制面基于第四消息中包括的用于指示备数据面的标识,将第四消息转发至备数据面。因此,通过备数据面向控制面发送第二消息和第三消息,分别获取了与前端驱动相关的状态变量修改消息和与管理面相关的状态变量修改消息,备数据面基于前端驱动相关的状态变量修改消息和与管理面相关的状态变量修改消息可以在短时间内完成数据面的状态恢复。其中,第三消息和第四消息携带用于指示备数据面的标识,是为了保证控制面在接收到第四消息后能够正确地将其转发至备数据面,可以保证了主备热替换的成功,同时也可以保证主备热替换时虚拟网卡的正常工作。
其中,用于指示备数据面的标识为备数据面对应的进程标识符或备数据面对应的文件描述符。比较常用的标识包括进程标识符(Process ID,PID)、与控制面连接的socket文件描述符(File Descriptor,FD)。此外,第二消息也可以携带用于指示备数据面的标识。在控制面向备数据面发送第一消息时,控制面基于第二消息中包括的用于指示备数据面的标识向备数据面发送第一消息。
此外,在主备热替换过程中,若控制面确定第一消息来自前端驱动,控制面向备数据面和主数据面分别发送第一消息。因此,控制面接收来自备数据面的针对第一消息的第一回复消息,以及接收来自主数据面的针对第一消息的第二回复消息;进一步地,若控制面确定第一回复消息和第二回复消息的内容相同,则将任一回复消息发送至前端驱动;若控制面确定第一回复消息和第二回复消息的内容不同,则将第二回复消息发送至前端驱动,且控制面确定备数据面替换主数据面失败。其中,备数据面在接收到第一消息后,可以在第一回复消息中携带用于指示备数据面的标识,同理,主数据面在接收到第一消息后,可以在第二回复消息中携带用于指示主数据面的标识,以便控制面能够正确区分回复消息的来源。
应理解的是,当本申请实施例应用于数据面重启的场景时,此时只有一个数据面,控制面接收来自数据面的第二消息,第二消息用于请求获取控制面缓存的消息;控制面向数据面发送缓存的第一消息。因此,可以实现快速恢复数据面。
下面结合具体实施例对本申请实施例进行说明。
如图5所示为在云计算环境下主机节点中后端驱动数据面主备热替换的结构示意图。客户机506A至客户机506N均包括前端驱动(virtio-net)507,前端驱动507通过QEMU505和后端驱动(vhost-user)503的控制面(vhost agent)501连接。OVS504和控制面501相连。后端驱动503包括控制面501、主数据面(vhost DP1)502A和备数据面(vhost DP2)502B。
控制面501设置两个带有优先级的消息转发队列。在控制面501接收到消息时,控制面501将来自OVS504的消息放入高优先级的消息转发队列,将来自QEMU505的消息放入低优先级的消息转发队列。在控制面501转发消息给主数据面502A和备数据面502B时,控制面501采用严格优先级队列调度的方式,一旦发现高优先级的消息转发队列中存在消息,则立刻发送这些消息。控制面501还设置一个缓存消息队列,用于缓存低优先级的消息转发队列中需要缓存的消息。当控制面501发送低优先级的消息转发队列中的消息时,控制面501先判断是否需要对这些消息进行缓存,然后再发送给主数据面502A和备数据面502B。针对低优先级的消息转发队列中的每个消息,控制面501首先判断该消息是否为状态变量修改消息,若该消息为状态变量修改消息,则进一步判断该消息是否为重复修改某一状态变量的状态变量修改消息,若该消息为重复修改某一状态变量的状态变量修改消息,则缓存该消息并删除已缓存的上一次针对该状态变量的状态变量修改消息,且新消息在缓存队列中的位置为原消息在缓存队列中的位置。若该消息不是重复修改某一状态变量的状态变量修改消息,则缓存该消息。若该消息为非状态变量修改消息,则不缓存该消息。上述三个队列可以为FIFO队列。
在备数据面502B进行数据面的状态恢复时,备数据面502B向控制面501发送第一请求消息,第一请求消息用于请求获取控制面501缓存的消息,控制面501在接收到第一请求消息后,将缓存队列中的消息按照到达时间的先后发送给备数据面502B。备数据面502B向控制面501发送第二请求消息,第二请求消息用于请求获取与OVS504相关的状态变量修改消息。第二请求消息可以携带备数据面502B的PID。控制面501将第二请求消息转发至OVS504,OVS504将与OVS504相关的状态变量修改消息发送给控制面501。与OVS504相关的状态变量修改消息携带数据面502B的PID,控制面501基于与OVS504相关的状态变量修改消息中携带的数据面502B的PID将与OVS504相关的状态变量修改消息发送至备数据面502B。备数据面502B基于控制面501缓存的消息和与管理面相关的状态变量修改消息可以在短时间内完成数据面的状态恢复,从而提高数据面的状态恢复效率。
此外,在数据面主备热替换过程中,当QEMU(505)向控制面501发送状态变量修改消息时,控制面501将该消息同时发送给主数据面502A和备数据面502B。主数据面502A和备数据面502B分别处理该状态变量修改消息并回复控制面501。控制面501收到两份回复后,比较两份回复,若两份回复相同(例如都是成功,或都是失败),则发送一份回复给QEMU505;否则控制面501将来自主数据面502A的回复发送给QEMU505,此时控制面501确定数据面主备热替换失败,进入回滚逻辑。
综上,采用本申请实施例提供的方法,可以有效减少需要缓存的消息数量,在数据面重启或者主备热替换时可以实现快速恢复数据面的功能,且尽可能少的占用控制面的资源,可以提高数据面的恢复效率。
上述本申请提供的实施例中,分别从各个模块之间交互的角度对本申请实施例提供的通信方法的各方案进行了介绍。可以理解的是,各个模块,例如控制面,主数据面,备数据面,管理面,前端驱动等,为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
基于以上实施例,本申请实施例还提供一种消息处理装置,如图6所示,该装置600包括:接收单元601,用于接收第一消息;处理单元602,用于确定所述第一消息为状态变量修改消息,缓存所述第一消息;所述接收单元601,还用于接收来自备数据面的第二消息,所述第二消息用于请求获取所述控制面缓存的消息;发送单元603,用于向所述备数据面发送所述第一消息。
其中,所述处理单元602,具体可以确定所述第一消息来自前端驱动且为与所述前端驱动相关的状态变量修改消息时,缓存所述第一消息。相应的,所述处理单元602,可以在确定所述第一消息为第k+1次修改第一状态变量的消息时,缓存所述第k+1次修改第一状态变量的消息且删除已缓存的第k次修改第一状态变量的消息,其中,所述第一状态变量为任意一个与所述前端驱动相关的状态变量,k为正整数。
在一种可能的设计中,所述接收单元601,还可以接收来自所述备数据面的第三消息,所述第三消息用于请求获取与管理面相关的状态变量修改消息;所述第三消息携带用于指示所述备数据面的标识;所述发送单元603,还可以进一步将所述第三消息转发至所述管理面,并通过所述接收单元接收来自所述管理面的第四消息,所述第四消息包括与所述管理面相关的状态变量修改消息和所述用于指示所述备数据面的标识;基于所述第四消息中包括的所述用于指示所述备数据面的标识,将所述第四消息转发至所述备数据面。
此外,所述第二消息中还可以携带所述用于指示所述备数据面的标识;相应地,所述发送单元603具体可以基于所述第二消息中包括的所述用于指示所述备数据面的标识向所述备数据面发送所述第一消息。
示例性的,所述用于指示所述备数据面的标识可以但不限于为所述备数据面对应的进程标识符或所述备数据面对应的文件描述符。
更进一步地,所述处理单元602,还具体可以确定所述第一消息来自所述管理面,则将所述第一消息放入第一队列;若确定所述第一消息来自所述前端驱动,则将所述第一消息放入第二队列;其中,所述第一队列和所述第二队列均为所述装置向主数据面转发的消息所在的队列;所述第一队列的转发优先级高于所述第二队列的转发优先级。
在一种可能的设计中,所述处理单元602,还用于确定所述第一消息来自所述前端驱动时,通过所述发送单元603向所述备数据面和主数据面分别发送所述第一消息;所述接收单元601,还用于接收来自所述备数据面的针对所述第一消息的第一回复消息,以及接收来自所述主数据面的针对所述第一消息的第二回复消息;所述处理单元602,还用于在确定所述第一回复消息和第二回复消息的内容相同时,则将所述第一回复消息和所述第二回复消息中的任一回复消息通过所述发送单元发送至所述前端驱动;若确定所述第一回复消息和第二回复消息的内容不同,则将所述第二回复消息通过所述发送单元发送至所述前端驱动,确定所述备数据面替换所述主数据面失败。
此外,消息处理装置中的处理单元602、发送单元603和接收单元601还可实现上述方法中控制面的其他操作或功能,此处不再赘述。
作为另一种可选的变形,本申请实施例提供一种消息处理装置,示例性地,可以为一种芯片,该装置包括处理器和接口,该接口可以为输入/输出接口。其中,处理器完成上述处理单元602的功能,接口完成上述接收单元601和发送单元603的功能。该装置还可以包括存储器,存储器用于存储可在处理器上运行的程序,处理器执行该程序时实现上述如图3所示实施例的方法。
作为另一种可选的变形,本申请实施例还提供了一种消息处理装置,参阅图7所示,该装置700中包括:收发器701、处理器702、存储器703。其中,处理器可以是CPU,网络处理器(network processor,NP),硬件芯片或者其任意组合。存储器可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM),也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD),存储器还可以包括上述种类的存储器的组合。
存储器703用于存储计算机程序;处理器702调用存储器703存储的计算机程序,通过收发器701执行上述实施例中控制面执行的方法。可以理解的,上述图6所示实施例中的装置可以以图7所示的装置700实现。具体的,处理单元602可以由处理器702实现,接收单元601和发送单元603可以由收发器701实现。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述各个实施例所示的方法。
例如,该计算机可读存储介质可以部署在服务器上,具体可以将计算机程序存储于服务器的虚拟化管理模块内部。在运行时,该计算机程序可以运行于服务器的主机内存。
综上,采用本申请实施例提供的方法,可以有效减少需要缓存的消息数量,在数据面重启或者主备热替换时可以实现快速恢复数据面的功能,且尽可能少的占用控制面的资源,可以提高数据面的恢复效率。
以上所述,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。
Claims (17)
1.一种消息处理方法,其特征在于,包括:
控制面接收第一消息;
所述控制面确定所述第一消息为状态变量修改消息,缓存所述第一消息;
所述控制面接收来自备数据面的第二消息,所述第二消息用于请求获取所述控制面缓存的消息;
所述控制面向所述备数据面发送所述第一消息。
2.如权利要求1所述的方法,其特征在于,所述控制面确定所述第一消息为状态变量修改消息,缓存所述第一消息,包括:
所述控制面确定所述第一消息来自前端驱动且为与所述前端驱动相关的状态变量修改消息,缓存所述第一消息。
3.如权利要求2所述的方法,其特征在于,所述控制面确定所述第一消息来自前端驱动且为与所述前端驱动相关的状态变量修改消息,缓存所述第一消息,包括:
所述控制面确定所述第一消息为第k+1次修改第一状态变量的消息,则缓存所述第k+1次修改第一状态变量的消息且删除已缓存的第k次修改第一状态变量的消息,其中,所述第一状态变量为任意一个与所述前端驱动相关的状态变量,k为正整数。
4.如权利要求1-3任一项所述的方法,其特征在于,还包括:
所述控制面接收来自所述备数据面的第三消息,所述第三消息用于请求获取与管理面相关的状态变量修改消息;所述第三消息携带用于指示所述备数据面的标识;
所述控制面将所述第三消息转发至所述管理面,并接收来自所述管理面的第四消息,所述第四消息包括与所述管理面相关的状态变量修改消息和所述用于指示所述备数据面的标识;
所述控制面基于所述第四消息中包括的所述用于指示所述备数据面的标识,将所述第四消息转发至所述备数据面。
5.如权利要求4所述的方法,其特征在于,所述第二消息携带所述用于指示所述备数据面的标识;
所述控制面向所述备数据面发送所述第一消息,包括:
所述控制面基于所述第二消息中包括的所述用于指示所述备数据面的标识向所述备数据面发送所述第一消息。
6.如权利要求4或5所述的方法,其特征在于,所述用于指示所述备数据面的标识为所述备数据面对应的进程标识符或所述备数据面对应的文件描述符。
7.如权利要求1-6任一项所述的方法,其特征在于,还包括:
若所述控制面确定所述第一消息来自所述管理面,则将所述第一消息放入第一队列;
若所述控制面确定所述第一消息来自所述前端驱动,则将所述第一消息放入第二队列;
其中,所述第一队列和所述第二队列均为所述控制面向主数据面转发的消息所在的队列;所述第一队列的转发优先级高于所述第二队列的转发优先级。
8.如权利要求7所述的方法,其特征在于,还包括:
若所述控制面确定所述第一消息来自所述前端驱动,所述控制面向所述备数据面和主数据面分别发送所述第一消息;
所述控制面接收来自所述备数据面的针对所述第一消息的第一回复消息,以及接收来自所述主数据面的针对所述第一消息的第二回复消息;
若所述控制面确定所述第一回复消息和第二回复消息的内容相同,则将所述第一回复消息和所述第二回复消息中的任一回复消息发送至所述前端驱动;
若所述控制面确定所述第一回复消息和第二回复消息的内容不同,则将所述第二回复消息发送至所述前端驱动,所述控制面确定所述备数据面替换所述主数据面失败。
9.一种消息处理装置,其特征在于,包括:
接收单元,用于接收第一消息;
处理单元,用于确定所述第一消息为状态变量修改消息,缓存所述第一消息;
所述接收单元,还用于接收来自备数据面的第二消息,所述第二消息用于请求获取所述控制面缓存的消息;
发送单元,用于向所述备数据面发送所述第一消息。
10.如权利要求9所述的装置,其特征在于,所述处理单元,用于确定所述第一消息来自前端驱动且为与所述前端驱动相关的状态变量修改消息,缓存所述第一消息。
11.如权利要求10所述的装置,其特征在于,所述处理单元,用于确定所述第一消息为第k+1次修改第一状态变量的消息,则缓存所述第k+1次修改第一状态变量的消息且删除已缓存的第k次修改第一状态变量的消息,其中,所述第一状态变量为任意一个与所述前端驱动相关的状态变量,k为正整数。
12.如权利要求9-11任一项所述的装置,其特征在于,所述接收单元,还用于接收来自所述备数据面的第三消息,所述第三消息用于请求获取与管理面相关的状态变量修改消息;所述第三消息携带用于指示所述备数据面的标识;
所述发送单元,还用于将所述第三消息转发至所述管理面,并通过所述接收单元接收来自所述管理面的第四消息,所述第四消息包括与所述管理面相关的状态变量修改消息和所述用于指示所述备数据面的标识;基于所述第四消息中包括的所述用于指示所述备数据面的标识,将所述第四消息转发至所述备数据面。
13.如权利要求12所述的装置,其特征在于,所述第二消息携带所述用于指示所述备数据面的标识;
所述发送单元,用于基于所述第二消息中包括的所述用于指示所述备数据面的标识向所述备数据面发送所述第一消息。
14.如权利要求12或13所述的装置,其特征在于,所述用于指示所述备数据面的标识为所述备数据面对应的进程标识符或所述备数据面对应的文件描述符。
15.如权利要求9-14任一项所述的装置,其特征在于,所述处理单元,还用于:
若确定所述第一消息来自所述管理面,则将所述第一消息放入第一队列;
若确定所述第一消息来自所述前端驱动,则将所述第一消息放入第二队列;
其中,所述第一队列和所述第二队列均为所述装置向主数据面转发的消息所在的队列;所述第一队列的转发优先级高于所述第二队列的转发优先级。
16.如权利要求15所述的装置,其特征在于,还包括:
所述处理单元,还用于若确定所述第一消息来自所述前端驱动,通过所述发送单元向所述备数据面和主数据面分别发送所述第一消息;
所述接收单元,还用于接收来自所述备数据面的针对所述第一消息的第一回复消息,以及接收来自所述主数据面的针对所述第一消息的第二回复消息;
所述处理单元,还用于若确定所述第一回复消息和第二回复消息的内容相同,则将所述第一回复消息和所述第二回复消息中的任一回复消息通过所述发送单元发送至所述前端驱动;若确定所述第一回复消息和第二回复消息的内容不同,则将所述第二回复消息通过所述发送单元发送至所述前端驱动,确定所述备数据面替换所述主数据面失败。
17.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令在被所述计算机调用时用于使所述计算机执行权利要求1~8中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910343937.1A CN111865834B (zh) | 2019-04-26 | 2019-04-26 | 一种消息处理方法及装置 |
CN202111421238.8A CN114281472A (zh) | 2019-04-26 | 2019-04-26 | 一种消息处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910343937.1A CN111865834B (zh) | 2019-04-26 | 2019-04-26 | 一种消息处理方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111421238.8A Division CN114281472A (zh) | 2019-04-26 | 2019-04-26 | 一种消息处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111865834A true CN111865834A (zh) | 2020-10-30 |
CN111865834B CN111865834B (zh) | 2021-12-03 |
Family
ID=72951756
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910343937.1A Active CN111865834B (zh) | 2019-04-26 | 2019-04-26 | 一种消息处理方法及装置 |
CN202111421238.8A Pending CN114281472A (zh) | 2019-04-26 | 2019-04-26 | 一种消息处理方法及装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111421238.8A Pending CN114281472A (zh) | 2019-04-26 | 2019-04-26 | 一种消息处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111865834B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118502826A (zh) * | 2023-02-15 | 2024-08-16 | 中兴通讯股份有限公司 | 一种数据处理方法、装置、存储介质及电子装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103581052A (zh) * | 2012-08-02 | 2014-02-12 | 华为技术有限公司 | 一种数据处理方法、路由器及ndn系统 |
CN104541481A (zh) * | 2013-08-20 | 2015-04-22 | 华为技术有限公司 | 一种处理用户报文的方法及转发面设备 |
US20160254992A1 (en) * | 2014-03-31 | 2016-09-01 | Juniper Networks, Inc. | Apparatus, system, and method for reconfiguring point-to-multipoint label-switched paths |
CN105989123A (zh) * | 2015-02-13 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置和系统 |
CN106254117A (zh) * | 2016-08-09 | 2016-12-21 | 西安交通大学 | 一种集中控制可编程的信息中心网络设计方法 |
CN107908472A (zh) * | 2017-09-30 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据同步装置、方法及计算机可读存储介质 |
-
2019
- 2019-04-26 CN CN201910343937.1A patent/CN111865834B/zh active Active
- 2019-04-26 CN CN202111421238.8A patent/CN114281472A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103581052A (zh) * | 2012-08-02 | 2014-02-12 | 华为技术有限公司 | 一种数据处理方法、路由器及ndn系统 |
CN104541481A (zh) * | 2013-08-20 | 2015-04-22 | 华为技术有限公司 | 一种处理用户报文的方法及转发面设备 |
US20160254992A1 (en) * | 2014-03-31 | 2016-09-01 | Juniper Networks, Inc. | Apparatus, system, and method for reconfiguring point-to-multipoint label-switched paths |
EP2955883B1 (en) * | 2014-03-31 | 2017-10-04 | Juniper Networks, Inc. | Apparatus, system, and method for reconfiguring point-to-multipoint label-switched paths |
CN105989123A (zh) * | 2015-02-13 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置和系统 |
CN106254117A (zh) * | 2016-08-09 | 2016-12-21 | 西安交通大学 | 一种集中控制可编程的信息中心网络设计方法 |
CN107908472A (zh) * | 2017-09-30 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据同步装置、方法及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111865834B (zh) | 2021-12-03 |
CN114281472A (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10678655B2 (en) | Using RDMA for fast system recovery in virtualized environments | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
WO2018054081A1 (zh) | 故障处理方法、虚拟架构管理系统和业务管理系统 | |
CN102446119B (zh) | 基于Passthrough I/O的虚拟机动态迁移方法 | |
US10855557B2 (en) | Method and device for upgrading virtual switch | |
US20070288938A1 (en) | Sharing data between partitions in a partitionable system | |
US9342409B2 (en) | Recording medium storing transaction resuming program, information processing apparatus and transaction resuming method | |
US20200382371A1 (en) | Disruption minimization for guests when applying changes to a data plane of a packet handler in a host | |
CN116257276B (zh) | 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法 | |
US10601692B2 (en) | Integrating a communication bridge into a data processing system | |
US11855855B2 (en) | Network operation method based on network functions virtualization device and storage medium | |
WO2015139327A1 (zh) | 失效切换方法、装置和系统 | |
CN111865834B (zh) | 一种消息处理方法及装置 | |
US9558149B2 (en) | Dual system | |
CN117041147A (zh) | 智能网卡设备、主机设备和方法及系统 | |
US20230070239A1 (en) | Page fault support for virtual machine network accelerators | |
WO2018015984A1 (en) | Communication apparaus, system, rollback method, and program | |
CN109656674B (zh) | 一种计算机设备、虚拟化芯片及数据传输方法 | |
US20220166829A1 (en) | Data Synchronization Method and Apparatus | |
US10394664B1 (en) | In-memory parallel recovery in a distributed processing system | |
US20180225162A1 (en) | Flexible command line interface redirection | |
CN113722147A (zh) | 一种保持业务连接方法及相关设备 | |
US9584444B2 (en) | Routing communication between computing platforms | |
US11929921B2 (en) | Communication control apparatus, communication control system, and communication control method | |
WO2023103741A1 (zh) | 一种虚拟交换机升级方法、设备、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |