CN109756490A - 一种mdc实现方法及装置 - Google Patents
一种mdc实现方法及装置 Download PDFInfo
- Publication number
- CN109756490A CN109756490A CN201811602673.9A CN201811602673A CN109756490A CN 109756490 A CN109756490 A CN 109756490A CN 201811602673 A CN201811602673 A CN 201811602673A CN 109756490 A CN109756490 A CN 109756490A
- Authority
- CN
- China
- Prior art keywords
- message
- mdc
- thread
- ipc
- target
- 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
Landscapes
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种MDC实现方法及装置,该方法包括:所述驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型进程间通信IPC消息,所述第一类型IPC消息携带有MDC标识和模块标识;所述侦听线程将所述第一类型IPC消息分配给与所述目标第一类型Socket连接对应的目标消息处理线程;所述目标消息线程根据所述MDC标识修改私有数据中的MDC字段的值,并调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理。应用本发明实施例可以在不对驱动进程虚拟化的情况下,实现用户态MDC,并保证虚拟化的业务进程与未进行虚拟化的驱动进程之间的正常通信,降低用户态MDC实现的限制。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种MDC实现方法及装置。
背景技术
通过虚拟化技术将一台大的物理设备划分成多台逻辑设备,每台逻辑设备称为一个MDC(Multitenant Devices Context,多租户设备环境)。每个MDC都有支撑自身系统运行的硬件和软件资源,包括独立的接口、CPU等,独立维护的路由和转发表项,独立的管理员和接入用户,独立的启动文件和配置文件,从而保证了MDC的创建、运行、重启、删除,并不会影响其它VD的业务和配置。对用户来说,每个MDC就是一台独立的设备。
然而,由于硬件、SDK(Software Development Kit,软件开发工具包)、或/和内存大小等限制,驱动部分代码无法做虚拟化处理,因此,在实现用户态MDC时,用户态虚拟化的业务进程如何与未进行虚拟化的驱动进程如何正常通信成为一个亟待解决的技术问题。
发明内容
本发明提供一种MDC实现方法及装置,以解决现有MDC实现方案中当驱动进程未做虚拟化时业务进程无法与驱动进程正常通信的问题。
根据本发明实施例的第一方面,提供一种MDC实现方法,应用于交换设备中的驱动进程,所述驱动进程分别与所述交换设备中的各MDC中的应用进程建立有第一类型Socket连接,并分别对应各第一类型Socket连接创建有对应的消息处理线程,所述方法包括:
所述驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型进程间通信IPC消息,所述第一类型IPC消息携带有MDC标识和模块标识;
所述侦听线程将所述第一类型IPC消息分配给与所述目标第一类型Socket连接对应的目标消息处理线程;
所述目标消息线程根据所述MDC标识修改私有数据中的MDC字段的值,并调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理。
根据本发明实施例的第二方面,提供一种MDC实现装置,应用于交换设备中的驱动进程,所述驱动进程分别与所述交换设备中的各多租户设备环境MDC中的应用进程建立有第一类型套接字Socket连接,并分别对应各第一类型Socket连接创建有对应的消息处理线程,所述装置包括:
侦听单元,用于通过目标第一类型Socket连接接收第一类型进程间通信IPC消息,所述第一类型IPC消息携带有MDC标识和模块标识;
所述侦听单元,还用于将所述第一类型IPC消息分配给与所述目标第一类型Socket连接对应的目标消息处理线程;
消息处理单元,用于根据所述MDC标识修改所述目标消息线程的私有数据中的MDC字段的值,并调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理。
应用本发明实施例,通过驱动进程分别与交换设备中的各MDC中的应用进程建立有第一类型Socket连接,并分别对应各第一类型Socket连接创建对应的消息处理线程,当驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型IPC消息时,将第一类型IPC消息分配给与目标第一类型Socket连接对应的目标消息处理线程;目标消息线程根据第一类型IPC消息中携带的MDC标识修改私有数据中的MDC字段的值,并调用与第一类型IPC消息中携带的模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理,在不对驱动进程虚拟化的情况下,实现了用户态MDC,并保证了虚拟化的业务进程与未进行虚拟化的驱动进程之间的正常通信,降低了用户态MDC实现的限制。
附图说明
图1是本发明实施例提供的一种MDC实现方法的流程示意图;
图2是本发明实施例提供的一种交换设备的结构示意图;
图3A是本发明实施例提供的一种交换设备的结构示意图;
图3B是本发明实施例提供的一种驱动进程的结构示意图;
图4是本发明实施例提供的一种MDC实现装置的结构示意图;
图5是本发明实施例提供的另一种MDC实现装置的结构示意图;
图6是本发明实施例提供的另一种MDC实现装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
请参见图1,为本发明实施例提供的一种MDC实现方法的流程示意图,其中,该MDC实现方法可以应用于交换设备中的驱动进程,如图1所示,该MDC实现方法可以包括以下步骤:
需要说明的是,在本发明实施例中,为了实现虚拟化的业务进程(可以称为实例化的业务进程)与未进行虚拟化的驱动进程(可以称为非实例化的驱动进程)之间的通信,驱动进程可以分别与交换设备中各MDC中的应用进程建立Socket(套接字)连接(本文中称为第一类型Socket连接),并分别对应各第一类型Socket连接创建有对应的消息处理线程。
步骤101、驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型IPC消息,该第一类型IPC消息携带有MDC标识和模块标识。
本发明实施例中,驱动进程可以通过与各MDC中的应用进程之间的第一类型Socket连接与各MDC中的应用进程进行通信。
其中,驱动进程中可以创建一个侦听线程,用于侦听第一类型Socket连接中的IPC消息。
本发明实施例中,目标第一类型Socket连接并不特指某一固定的连接,而是可以指代驱动进程与任一MDC中的任一应用进程之间的第一类型Socket连接,本发明实施例后续不再复述。
步骤102、侦听线程将第一类型IPC消息分配给目标第一类型Socket连接对应的目标消息处理线程。
本发明实施例中,当驱动进程的侦听线程通过目标第一类型Socket连接接收到IPC(Inter-Process Communication,进程间通信)消息(本文中称为第一类型IPC消息)时,驱动进程可以将该第一类型IPC消息分配给目标第一类型Socket连接对应的消息处理线程(本文中称为目标消息处理线程)。
其中,可以通过记录第一类型Socket连接的Socket号与消息处理线程的线程ID(标识)的对应关系的方式,记录第一类型Socket连接与消息处理线程的对应关系。
当驱动进程的侦听线程通过目标第一类型Socket连接接收到IPC消息时,侦听线程可以根据该目标第一类型Socket连接的Socket号,以及Socket号与线程ID的对应关系,确定与目标第一类型Socket连接对应的目标消息处理线程。
步骤103、目标消息处理线程根据第一类型IPC消息中携带的MDC标识修改私有数据中的MDC字段的值,并调用与模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理。
本发明实施例中,目标消息处理线程接收到第一类型IPC消息时,可以获取该第一类型IPC消息中携带的MDC标识(MDC ID)和模块标识(Module ID)。
本发明实施例中,由于驱动进程未被实例化,驱动进程中的各线程都属于同一个MDC(缺省MDC),为了使驱动进程中的不同消息处理线程可以分别处理不同MDC中的应用进程的消息,可以允许消息处理线程的MDC环境切换,并使用消息处理线程的私有数据来记录当前的MDC环境。
相应地,在本发明实施例中,目标消息处理线程获取到第一类型IPC消息中携带的MDC ID时,可以根据该MDC ID修改私有数据中的MDC字段的值。
例如,当第一类型IPC消息中携带的MDC ID为5(即该第一类型IPC消息是MDC5中的应用进程发送的)时,目标消息处理线程可以将私有数据中的MDC字段的值修改为5,此后,目标消息处理线程可以按照MDC5的环境来进行消息处理。
本发明实施例中,目标消息处理线程根据第一类型IPC消息中携带的MDC ID修改私有数据中MDC字段的值之后,目标消息处理线程可以根据第一类型IPC消息中携带的模块标识,确定用于处理该第一类型IPC消息的驱动模块,并调用该驱动模块的消息处理函数对该第一类型IPC消息进行处理。
可见,在图1所示方法流程中,通过驱动进程分别与交换设备中的各MDC中的应用进程建立有第一类型Socket连接,并分别对应各第一类型Socket连接创建对应的消息处理线程,当驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型IPC消息时,将第一类型IPC消息分配给与目标第一类型Socket连接对应的目标消息处理线程;目标消息线程根据第一类型IPC消息中携带的MDC标识修改私有数据中的MDC字段的值,并调用与第一类型IPC消息中携带的模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理,在不对驱动进程虚拟化的情况下,实现了用户态MDC,并保证了虚拟化的业务进程与未进行虚拟化的驱动进程之间的正常通信,降低了用户态MDC实现的限制。
在本发明其中一个实施例中,上述第一类型IPC消息中还携带有消息类型;
相应地,上述目标消息线程调用与模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理,可以包括:
根据第一类型IPC消息中携带的消息类型确定第一类型IPC消息的处理策略,该处理策略可以包括同步处理或异步处理;
当第一类型IPC消息的处理策略为同步处理时,调用与模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理;
当第一类型IPC消息的处理策略为异步处理时,将第一类型IPC消息写入异步队列,由对应的异步处理线程对第一类型IPC消息进行处理。
在该实施例中,考虑到业务进程发送给驱动进程的不同类型的消息的处理策略可能会存在不同,例如,部分类型的消息可能需要返回用户态结果,即需要驱动进程同步处理,而另一部分类型的消息可以不需要返回用户态结果,可以进行异步处理。
因此,为了保证驱动进程能正确地处理业务进程发送的消息,可以预先配置不同消息类型对应的处理策略,其中,该处理策略可以包括但不限于同步处理或异步处理。
相应地,在该实施例中,第一类型IPC消息中还可以携带消息类型。当目标消息处理线程接收到第一类型IPC消息时,还可以获取该第一类型IPC消息中携带的处理策略,以确定该第一类型IPC消息的处理策略。
当第一类型IPC消息的处理策略为同步处理时,目标消息线程可以调用与第一类型IPC消息中携带的模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理。
当第一类型IPC消息的处理策略为异步处理时,目标消息处理线程可以将该第一类型IPC消息写入异步队列,由对应的异步处理线程对第一类型IPC消息进行处理。
需要说明的是,在该实施例中,驱动进程可以分别为各驱动模块创建对应的异步队列,并创建对应的异步处理线程;目标消息处理线程确定第一类型IPC消息的处理策略为异步处理时,目标消息处理线程可以根据第一类型IPC消息中携带的模块标识将该第一类型IPC消息加入到对应的驱动模块对应的异步队列,并由该驱动模块对应的异步处理线程对异步队列中的第一类型IPC消息进行处理。
在该实施例中,对于同步处理的第一类型IPC消息,目标消息处理线程需要将消息处理结果(用户态结果)携带在应答消息中返回给业务进程;对于异步处理的第一类型IPC消息,目标消息处理线程仅需返回应答消息;其中,该应答消息向业务进程反馈第一类型IPC消息是否成功接收。
进一步地,在本发明实施例中,考虑到业务进程是MDC实例化的,各种事件在不同MDC中注册并触发。而驱动进程只属于缺省MDC,因此,需要创建单独的驱动事件注册进程,负责在各MDC中注册并接受各种事件,并通知给驱动进程。
相应地,在本发明其中一个实施例中,交换设备中的各MDC中还创建有驱动事件注册进程,驱动进程还分别与各驱动事件注册进程建立有第二类型Socket连接,并分别对应各第二类型Socket连接创建有对应的事件处理线程;
上述MDC实现方法还可以包括:
当侦听线程通过目标第二类型Socket连接接收到第二类型IPC消息时,将第二类型IPC消息分配给目标第二类型Socket连接对应的目标事件处理进程,由目标事件处理进程对第二类型IPC消息进行处理。
在该实施例中,可以分别在交换设备中的各MDC中创建驱动事件注册进程,该驱动事件注册进程用于接受各MDC中的事件,如接口事件(如接口聚合)、单板事件(如单板插拔)等;驱动进程还可以分别与各MDC中的驱动事件注册进程建立Socket连接(本文中称为第二类型Socket连接),驱动事件注册进程可以通过该第二类型Socket连接将MDC中的事件通知给驱动进程(通过IPC消息的形式),驱动进程中可以创建对应的事件处理进程对相应地事件进行处理。
在该实施例中,当侦听线程通过目标第二类型Socket连接接收到IPC消息(本文中称为第二类型IPC消息)时,侦听线程可以将该第二类型IPC消息分配给与目标第二类型Socket连接对应的事件处理进程(本文中称为目标事件处理进程),由目标事件处理进程对接收到的第二类型IPC消息进行处理。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体应用场景对本发明实施例提供的技术方案进行说明。
请参见图2,为本发明实施例提供的一种具体应用场景的结构示意图,如图2所示,在该应用场景中,交换设备200上创建了三个MDC(MDC X、MDC Y以及MDC Z),各MDC中均运行了交换设备200中运行的业务进程APP1~APP 5),驱动进程210未实例化(图2中仅示出用户空间中的应用进程和驱动进程)。
请参见图3A和图3B,在该实施例中,为了实现驱动进程210与各MDC中的应用进程之间的正常通信,驱动进程210与MDC X的各应用进程分别建立socket连接111、112、113、114以及115;驱动进程210与MDC Y的各应用进程分别建立socket连接121、122、123、124以及125;驱动进程210与MDC Z的各应用进程分别建立socket连接131、132、133、134以及135。
驱动进程210为socket连接111~115分别创建对应的消息处理线程11、12、13、14以及15;为socket连接121~125分别创建对应的消息处理线程21、22、23、24以及25;为socket连接131~135分别创建对应的消息处理线程31、32、33、34以及35。
驱动进程210存储socket连接的socket号与消息处理线程的线程ID的对应关系。
例如,驱动进程210可以存储socket连接111的socket号(假设为111,下同)与消息处理线程11的线程ID(假设为11,下同)的对应关系,socket号112与线程ID12的对应关系…socket号135与线程ID35的对应关系。
MDC X创建驱动事件注册进程为221、MDC Y创建驱动事件注册进程为222以及MDCZ创建驱动事件注册进程为223。MDC X、MDC Y以及MDC Z各自创建驱动事件注册进程用于保证驱动进程210能够及时获知各MDC中的事件,如接口聚合等接口事件、单板插拔等单板事件等。
驱动进程210与驱动事件注册进程221建立有socket连接211,与驱动事件注册进程222建立有socket连接212,与驱动事件注册进程223建立有socket连接213。
驱动进程210创建对应socket连接211的事件处理线程S1;创建对应socket连接212的事件处理线程S2;创建对应socket连接213的事件处理线程S3。
驱动进程210存储socket号211与事件处理线程S1的线程ID(假设为S1,下同)的对应关系,socket号212与线程IDS2的对应关系,socket号213与线程IDS3的对应关系。
驱动进程210可以创建侦听线程230,用于对各socket连接上的IPC消息进行侦听。
当侦听线程230通过socket连接112接收到IPC消息时,侦听线程230可以根据存储的socket号与线程ID的对应关系,确定socket连接112对应消息处理线程12,从而,侦听线程230可以将该IPC消息分配给消息处理线程12。
消息处理线程12接收到IPC消息时,可以先获取该IPC消息的消息头中携带的消息类型字段,并根据该IPC消息的消息类型查询预先配置的消息处理策略(可以包括不同消息类型对应的处理策略)确定该IPC消息的处理策略(包括同步处理或异步处理)。
若消息处理线程12确定该IPC消息的处理策略为同步处理,则消息处理线程12可以获取该IPC消息的消息头中的MDC标识,即X,消息处理线程12可以将私有数据中的MDC字段的值修改为X,以模拟MDCX的处理环境。
其中,线程的私有数据是指系统在线程创建时为线程分配的专用存储空间中存储的数据。
在该实施例中,消息处理线程、事件处理线程或收包线程可以在分配给自身的专用存储空间中存储MDC信息(如MDC ID)(此时该MDC ID即为消息处理线程、事件处理线程或收包线程的私有数据),并根据私有数据中的MDC ID确定当前处理的MDC环境。
消息处理线程12完成私有数据的MAC字段的值的修改之后,可以根据IPC消息的消息头中携带的模块标识,调用驱动进程210中对应的驱动模块(未在图中示出)的消息处理函数,对该IPC消息进行处理。
其中,驱动模块为对应驱动软件的特定特性的软件模块,例如,对于驱动软件的二层转发特性的二层模块、对应驱动软件的三层转发特定的三层转发模块等;各驱动模块预先配置有对应的消息处理函数,消息处理线程可以根据接收到的IPC消息中携带的模块标识调用对应驱动模块的消息处理函数进行消息处理。
其中,对于处理策略为同步处理的IPC消息,消息处理线程12可以将消息处理结果(用户态结果)携带在应答消息中通过socket连接12返回给对应的业务进程。
需要说明的是,在该实施例中,对于同步处理的IPC消息,消息处理线程12完成消息处理之后,还可以将私有数据中的MDC字段的值还原为默认值,其具体实现在此不做赘述。
若消息处理线程12确定该IPC消息的处理策略为异步处理,则消息处理线程12可以根据该IPC消息中的模块标识,将该IPC消息写入对应的驱动模块的异步队列,由该驱动模块对应的异步处理线程对异步队列中的IPC消息进行处理。
其中,对于处理策略为异步处理的IPC消息,消息处理线程12可以仅通过socket连接12向对应的业务进程返回应答消息(不携带消息处理结果)。
在该实施例中,当侦听线程230通过socket连接211接收到IPC消息时,侦听线程230可以根据所存储的socket号与线程ID的对应关系,确定socket连接211对应事件处理线程21,从而,侦听线程230可以将该IPC消息分配给事件处理线程S1,由事件处理线程S1对该IPC消息进行处理。
其中,驱动进程通过事件处理线程对各种类型的事件的具体处理流程在此不做赘述。
进一步地,在该实施例中,驱动进程210中还创建有收包线程240。当驱动进程210接收到报文时,收包线程240可以根据报文的入端口确定报文所属的MDC。
其中,交换设备的端口与MDC的对应关系的创建在该实施例中不做赘述。
收包线程240确定了报文所属的MDC之后,可以根据该报文所属的MDC修改收包线程的私有数据中的MDC字段的值,并将报文上报给该报文所属的MDC中的应用进程。
举例来说,假设收包线程240确定报文所属的MDC为MDC Y,则收包线程240可以将收包线程的私有数据中的MDC字段的值修改为Y,并调用应用进程收包接口,并该报文发送给MDC Y中的应用进程。
需要说明的是,在该实施例中,收包线程240完成报文接收之后,可以将私有数据中的MDC字段的值还原为默认值,其具体实现在此不做赘述。
通过以上描述可以看出,在本发明实施例提供的技术方案中,通过驱动进程分别与交换设备中的各MDC中的应用进程建立有第一类型Socket连接,并分别对应各第一类型Socket连接创建对应的消息处理线程,当驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型IPC消息时,将第一类型IPC消息分配给与目标第一类型Socket连接对应的目标消息处理线程;目标消息线程根据第一类型IPC消息中携带的MDC标识修改私有数据中的MDC字段的值,并调用与第一类型IPC消息中携带的模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理,在不对驱动进程虚拟化的情况下,实现了用户态MDC,并保证了虚拟化的业务进程与未进行虚拟化的驱动进程之间的正常通信,降低了用户态MDC实现的限制。
请参见图4,为本发明实施例提供的一种MDC实现装置的结构示意图,其中,该MDC实现装置可以应用于上述方法实施例中的驱动进程,如图4所示,该MDC实现装置可以包括:
侦听单元410,用于通过目标第一类型Socket连接接收第一类型进程间通信IPC消息,该第一类型IPC消息携带有MDC标识和模块标识;
侦听单元410,还用于将第一类型IPC消息分配给与目标第一类型Socket连接对应的目标消息处理线程;
消息处理单元420,用于根据该MDC标识修改目标消息线程的私有数据中的MDC字段的值,并调用与该模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理。
在可选实施例中,消息处理单元420,具体用于确定第一类型IPC消息的处理策略,该处理策略包括同步处理或异步处理;
当第一类型IPC消息的处理策略为同步处理时,调用与模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理;
当第一类型IPC消息的处理策略为异步处理时,将第一类型IPC消息写入异步队列,由对应的异步处理线程对第一类型IPC消息进行处理。
在可选实施例中,第一类型IPC消息中还携带有消息类型;
消息处理单元420,具体用于根据该消息类型确定第一类型IPC消息的处理策略。
在可选实施例中,交换设备中的各MDC中还创建有驱动事件注册进程,驱动进程还分别与各驱动事件注册进程建立有第二类型Socket连接,并分别对应各第二类型Socket连接创建有对应的事件处理线程;
侦听单元410,还用于通过目标第二类型Socket连接接收到第二类型IPC消息时,将第二类型IPC消息分配给目标第二类型Socket连接对应的目标事件处理进程;
请一并参见图5,为本发明实施例提供的另一种MDC实现装置的结构示意图,如图5所示,在图4所示的MDC实现装置的基础上,图5所示MDC实现装置还可以包括:
事件处理单元430,用于对第二类型IPC消息进行处理。
在可选实施例中,驱动进程还创建有收包线程;
请一并参见图6,为本发明实施例提供的另一种MDC实现装置的结构示意图,如图6所示,在图4所示的MDC实现装置的基础上,图6所示MDC实现装置还可以包括:
收包单元440,用于根据接收到的报文的入端口确定该报文所属的MDC;
收包单元440,还用于根据该报文所属的MDC修改收包线程的私有数据中的MDC字段的值,并将该报文上报给该报文所属的MDC中的应用进程
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,通过驱动进程分别与交换设备中的各MDC中的应用进程建立有第一类型Socket连接,并分别对应各第一类型Socket连接创建对应的消息处理线程,当驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型IPC消息时,将第一类型IPC消息分配给与目标第一类型Socket连接对应的目标消息处理线程;目标消息线程根据第一类型IPC消息中携带的MDC标识修改私有数据中的MDC字段的值,并调用与第一类型IPC消息中携带的模块标识对应的驱动模块的消息处理函数对第一类型IPC消息进行处理,在不对驱动进程虚拟化的情况下,实现了用户态MDC,并保证了虚拟化的业务进程与未进行虚拟化的驱动进程之间的正常通信,降低了用户态MDC实现的限制。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种MDC实现方法,应用于交换设备中的驱动进程,其特征在于,所述驱动进程分别与所述交换设备中的各多租户设备环境MDC中的应用进程建立有第一类型套接字Socket连接,并分别对应各第一类型Socket连接创建有对应的消息处理线程,所述方法包括:
所述驱动进程的侦听线程通过目标第一类型Socket连接接收第一类型进程间通信IPC消息,所述第一类型IPC消息携带有MDC标识和模块标识;
所述侦听线程将所述第一类型IPC消息分配给与所述目标第一类型Socket连接对应的目标消息处理线程;
所述目标消息线程根据所述MDC标识修改私有数据中的MDC字段的值,并调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理。
2.根据权利要求1所述的方法,其特征在于,所述目标消息线程调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理,包括:
确定所述第一类型IPC消息的处理策略,所述处理策略包括同步处理或异步处理;
当所述第一类型IPC消息的处理策略为同步处理时,调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理;
当所述第一类型IPC消息的处理策略为异步处理时,将所述第一类型IPC消息写入异步队列,由对应的异步处理线程对所述第一类型IPC消息进行处理。
3.根据权利要求2所述的方法,其特征在于,所述第一类型IPC消息中还携带有消息类型;
所述确定所述第一类型IPC消息的处理策略,包括:
根据所述消息类型确定所述第一类型IPC消息的处理策略。
4.根据权利要求1所述的方法,其特征在于,所述交换设备中的各MDC中还创建有驱动事件注册进程,所述驱动进程还分别与各驱动事件注册进程建立有第二类型Socket连接,并分别对应各第二类型Socket连接创建有对应的事件处理线程;
所述方法还包括:
当所述侦听线程通过目标第二类型Socket连接接收到第二类型IPC消息时,将所述第二类型IPC消息分配给所述目标第二类型Socket连接对应的目标事件处理进程,由所述目标事件处理进程对所述第二类型IPC消息进行处理。
5.根据权利要求1所述的方法,其特征在于,所述驱动进程还创建有收包线程;
所述方法还包括:
所述收包线程根据接收到的报文的入端口确定所述报文所属的MDC;
所述收包线程根据所述报文所属的MDC修改私有数据中的MDC字段的值,并将所述报文上报给所述报文所属的MDC中的应用进程。
6.一种MDC实现装置,应用于交换设备中的驱动进程,其特征在于,所述驱动进程分别与所述交换设备中的各多租户设备环境MDC中的应用进程建立有第一类型套接字Socket连接,并分别对应各第一类型Socket连接创建有对应的消息处理线程,所述装置包括:
侦听单元,用于通过目标第一类型Socket连接接收第一类型进程间通信IPC消息,所述第一类型IPC消息携带有MDC标识和模块标识;
所述侦听单元,还用于将所述第一类型IPC消息分配给与所述目标第一类型Socket连接对应的目标消息处理线程;
消息处理单元,用于根据所述MDC标识修改所述目标消息线程的私有数据中的MDC字段的值,并调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理。
7.根据权利要求6所述的装置,其特征在于,
所述消息处理单元,具体用于确定所述第一类型IPC消息的处理策略,所述处理策略包括同步处理或异步处理;
当所述第一类型IPC消息的处理策略为同步处理时,调用与所述模块标识对应的驱动模块的消息处理函数对所述第一类型IPC消息进行处理;
当所述第一类型IPC消息的处理策略为异步处理时,将所述第一类型IPC消息写入异步队列,由对应的异步处理线程对所述第一类型IPC消息进行处理。
8.根据权利要求7所述的装置,其特征在于,所述第一类型IPC消息中还携带有消息类型;
所述消息处理单元,具体用于根据所述消息类型确定所述第一类型IPC消息的处理策略。
9.根据权利要求6所述的装置,其特征在于,所述交换设备中的各MDC中还创建有驱动事件注册进程,所述驱动进程还分别与各驱动事件注册进程建立有第二类型Socket连接,并分别对应各第二类型Socket连接创建有对应的事件处理线程;
所述侦听单元,还用于通过目标第二类型Socket连接接收到第二类型IPC消息时,将所述第二类型IPC消息分配给所述目标第二类型Socket连接对应的目标事件处理进程;
所述装置还包括:
事件处理单元,用于对所述第二类型IPC消息进行处理。
10.根据权利要求6所述的装置,其特征在于,所述驱动进程还创建有收包线程;
所述装置还包括:
收包单元,用于根据接收到的报文的入端口确定所述报文所属的MDC;
所述收包单元,还用于根据所述报文所属的MDC修改所述收包线程的私有数据中的MDC字段的值,并将所述报文上报给所述报文所属的MDC中的应用进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811602673.9A CN109756490B (zh) | 2018-12-26 | 2018-12-26 | 一种mdc实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811602673.9A CN109756490B (zh) | 2018-12-26 | 2018-12-26 | 一种mdc实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109756490A true CN109756490A (zh) | 2019-05-14 |
CN109756490B CN109756490B (zh) | 2021-09-21 |
Family
ID=66403918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811602673.9A Active CN109756490B (zh) | 2018-12-26 | 2018-12-26 | 一种mdc实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109756490B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258684A (zh) * | 2020-01-22 | 2020-06-09 | 北京和利时系统工程有限公司 | 一种控制方法和装置 |
CN112732453A (zh) * | 2019-10-14 | 2021-04-30 | 北京嗨动视觉科技有限公司 | 跨线程消息处理方法、装置、系统和计算机可读存储介质 |
CN113438186A (zh) * | 2021-06-09 | 2021-09-24 | 新华三技术有限公司 | 一种转发报文的方法及装置 |
CN112732453B (zh) * | 2019-10-14 | 2024-07-05 | 北京嗨动视觉科技有限公司 | 跨线程消息处理方法、装置、系统和计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200092A (zh) * | 2013-04-03 | 2013-07-10 | 杭州华三通信技术有限公司 | 一种基于虚拟网络设备的路由进程管理方法和设备 |
CN104836691A (zh) * | 2015-05-22 | 2015-08-12 | 杭州华三通信技术有限公司 | 一种多租户环境下的多系统工作模式实现方法和装置 |
CN106131020A (zh) * | 2016-07-17 | 2016-11-16 | 合肥赑歌数据科技有限公司 | 一种防火墙虚拟化的模块以及管理方法 |
CN106411558A (zh) * | 2015-07-27 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种数据流量限制的方法及系统 |
WO2018041135A1 (zh) * | 2016-08-30 | 2018-03-08 | 新华三技术有限公司 | 报文转发 |
US10025924B1 (en) * | 2016-08-26 | 2018-07-17 | Parallels IP Holdings GmbH | Taskless containers for enhanced isolation of users and multi-tenant applications |
-
2018
- 2018-12-26 CN CN201811602673.9A patent/CN109756490B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200092A (zh) * | 2013-04-03 | 2013-07-10 | 杭州华三通信技术有限公司 | 一种基于虚拟网络设备的路由进程管理方法和设备 |
CN104836691A (zh) * | 2015-05-22 | 2015-08-12 | 杭州华三通信技术有限公司 | 一种多租户环境下的多系统工作模式实现方法和装置 |
CN106411558A (zh) * | 2015-07-27 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种数据流量限制的方法及系统 |
CN106131020A (zh) * | 2016-07-17 | 2016-11-16 | 合肥赑歌数据科技有限公司 | 一种防火墙虚拟化的模块以及管理方法 |
US10025924B1 (en) * | 2016-08-26 | 2018-07-17 | Parallels IP Holdings GmbH | Taskless containers for enhanced isolation of users and multi-tenant applications |
WO2018041135A1 (zh) * | 2016-08-30 | 2018-03-08 | 新华三技术有限公司 | 报文转发 |
Non-Patent Citations (2)
Title |
---|
DAVY PREUVENEERS: "SAMURAI: A Streaming Multi-tenant Context-Management Architecture for Intelligent and Scalable Internet of Things Applications", 《2014 INTERNATIONAL CONFERENCE ON INTELLIGENT ENVIRONMENTS》 * |
张文涛: "TCAM MDC垫层模型的优化与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732453A (zh) * | 2019-10-14 | 2021-04-30 | 北京嗨动视觉科技有限公司 | 跨线程消息处理方法、装置、系统和计算机可读存储介质 |
CN112732453B (zh) * | 2019-10-14 | 2024-07-05 | 北京嗨动视觉科技有限公司 | 跨线程消息处理方法、装置、系统和计算机可读存储介质 |
CN111258684A (zh) * | 2020-01-22 | 2020-06-09 | 北京和利时系统工程有限公司 | 一种控制方法和装置 |
CN111258684B (zh) * | 2020-01-22 | 2023-09-29 | 北京和利时控制技术有限公司 | 一种控制方法和装置 |
CN113438186A (zh) * | 2021-06-09 | 2021-09-24 | 新华三技术有限公司 | 一种转发报文的方法及装置 |
CN113438186B (zh) * | 2021-06-09 | 2023-02-28 | 新华三技术有限公司 | 一种转发报文的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109756490B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429408B2 (en) | System and method for network function virtualization resource management | |
US10664301B2 (en) | Methods and systems for establishing connections associated with virtual machine migrations | |
CN102713849B (zh) | 用于抽象对虚拟机的基于非功能需求的部署的方法和系统 | |
CN111052086B (zh) | 一种云托管函数的暖启动技术 | |
US11095716B2 (en) | Data replication for a virtual networking system | |
CN107079046A (zh) | 用于为动态云提供子网经管(sa)查询高速缓存的系统和方法 | |
CN104428752A (zh) | 将虚拟机流卸载至物理队列 | |
BR112014013644B1 (pt) | Método de realização de agente de serviço de nuvem; servidor de agente de serviço de nuvem; e sistema de realização do agente de serviço de nuvem | |
CN103154897A (zh) | 用于电信网络应用的核抽象层 | |
CN107547278B (zh) | 一种将OpenStack与企业虚拟化环境对接的装置及方法 | |
CN109479059A (zh) | 用于容器流量的传输层等级标识和隔离的系统和方法 | |
CN109194589B (zh) | 一种mdc实现方法及装置 | |
CN109756490A (zh) | 一种mdc实现方法及装置 | |
CN110995668B (zh) | 应用于arinc653操作系统分区间的fc网络通信装置及方法 | |
CN111092828A (zh) | 网络操作方法、装置、设备和存储介质 | |
CN110266787B (zh) | 一种混合云管理系统、方法及计算机设备 | |
WO2020108292A1 (zh) | 虚拟私有云通信系统、系统配置方法及控制器 | |
CN109067573B (zh) | 一种流量调度方法及装置 | |
WO2022160714A1 (zh) | 一种通信方法、装置以及系统 | |
CN115640100A (zh) | 一种虚拟机信息同步方法及计算机可读介质 | |
CN114944971A (zh) | Kubernetes部署网络的方法及装置、电子设备和存储介质 | |
CA3057458C (en) | System and method for self-deploying and self-adapting contact center components | |
WO2021099902A1 (en) | Communication with an application flow in an integration system | |
KR20220131337A (ko) | 외부 페어링 시스템이 있는 태스크 할당 시스템에서의 에러 핸들링을 위한 기술들 | |
US11872497B1 (en) | Customer-generated video game player matchmaking in a multi-tenant environment |
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 |