报文交换方法和报文交换系统与流程

文档序号:26275283发布日期:2021-08-13 19:30阅读:163来源:国知局
报文交换方法和报文交换系统与流程

本申请涉及互联网技术领域,具体涉及一种报文交换方法和报文交换系统。



背景技术:

网关又称为网间连接器、协议转换器、它是一种充当转换功能的计算机设备,能够应用于不同的通信协议、数据格式或语言之间。用户的业务请求通过报文的方式在不同的网关中实现交换,以实现用户不同的业务请求。然而现有技术下,不同网关之间的报文交换效率较低。



技术实现要素:

本申请实施例提供一种报文交换方法,旨在解决现有技术下的报文交换效率低的问题。

一方面,本申请提供一种报文交换方法,应用于报文交换系统,所述报文交换系统包括:聚合口、虚拟机、云网关和网关驱动,所述聚合口中包括至少一个物理口,所述虚拟机包括至少一个第一虚拟接收队列和至少一个第一虚拟发送队列,所述云网关中包括至少一个第二虚拟接收队列和至少一个第二虚拟发送队列,所述至少一个第一虚拟接收队列和所述至少一个第二虚拟发送队列对应,所述至少一个第一虚拟发送队列与所述至少一个第二虚拟接收队列对应;

所述报文交换方法包括:

所述虚拟机中的物理线程从所述聚合口中提取初始报文对应的报文指针;

所述虚拟机中的物理线程根据预设规则在所述虚拟机中找到所述物理线程对应的至少一个第一虚拟发送队列,将所述报文指针发送至所述至少一个第一虚拟发送队列;

所述虚拟机将所述报文指针发送给云网关的至少一个第二虚拟接收队列;

所述云网关根据所述报文指针,对所述初始报文进行处理,得到处理后的报文;

在所述云网关处理所述初始报文结束后,所述云网关将所述报文指针发送给所述云网关的至少一个第二虚拟发送队列;

所述虚拟机的虚拟线程从所述云网关的所述至少一个第二虚拟发送队列提取所述报文指针;

所述虚拟机的虚拟线程将所述报文指针发送至所述聚合口;

所述聚合口根据所述报文指针将所述处理后的报文发出。

进一步的,所述物理口包括物理接收队列,在所述虚拟机中的物理线程从所述聚合口中提取初始报文对应的报文指针之前,所述方法还包括:

所述聚合口被调用接收所述初始报文,所述初始报文包括报文信息和报文指针;

所述聚合口对所述初始报文进行处理,筛选得到所述报文指针。

进一步的,所述物理口为多个,所述初始报文为多个,所述报文指针也为多个,所述方法还包括:

所述聚合口根据多个所述报文指针,将多个所述初始报文划分到不同的物理口中保存。

进一步的,所述云网关根据所述报文指针,对所述初始报文进行处理,得到处理后的报文,包括:

所述云网关根据所述报文指针,确定所述报文信息在所述聚合口中的内存;

所述云网关根据所述报文信息调用所述网关驱动对所述初始报文进行处理,得到处理后的报文。

进一步的,所述方法还包括,所述聚合口将所述处理后的报文发出,所述处理后的报文不包括所述报文指针。

进一步的,所述虚拟机的虚拟线程将所述报文指针发送至所述聚合口,包括:

所述虚拟机根据所述预设规则找到对应的聚合口;

所述聚合口确定自身可用的目标物理口以及所述目标物理口对应的物理发送队列;

所述虚拟机的虚拟线程将所述报文指针发送至所述目标物理口的物理发送队列。

进一步的,在所述虚拟机中的物理线程根据预设规则在所述虚拟机中找到所述物理线程对应的第一虚拟发送队列,将所述报文指针发送至所述第一虚拟发送队列之后,所述方法还包括:

若所述虚拟机未找到所述物理线程对应的第一虚拟发送队列,则所述虚拟机直接处理所述初始报文,得到处理后的报文;

所述聚合口将所述处理后的报文发出。

进一步的,所述虚拟机直接处理所述初始报文,得到处理后的报文,包括:

所述虚拟机根据所述报文指针确定报文处理组件;

所述报文处理组件对所述初始报文进行处理,得到处理后的报文。

另一方面,本申请还提供一种报文交换系统,其中报文交换系统包括:聚合口、虚拟机、云网关和网关驱动,所述聚合口中包括至少一个物理口,所述虚拟机包括至少一个第一虚拟接收队列和至少一个第一虚拟发送队列,所述云网关中包括至少一个第二虚拟接收队列和至少一个第二虚拟发送队列,所述至少一个第一虚拟接收队列和所述至少一个第二虚拟发送队列对应,所述至少一个第一虚拟发送队列与所述至少一个第二虚拟接收队列对应;

所述虚拟机中的物理线程用于从所述聚合口中提取初始报文对应的报文指针;

所述虚拟机中的物理线程用于根据预设规则在所述虚拟机中找到所述物理线程对应的第一虚拟发送队列,将所述报文指针发送至所述第一虚拟发送队列;

所述虚拟机用于将所述报文指针发送给云网关的第二虚拟接收队列;

所述云网关用于根据所述报文指针,对所述初始报文进行处理,得到处理后的报文,所述处理后的报文不包括所述报文指针;

在所述云网关处理所述初始报文结束后,所述云网关用于将所述报文指针发送给所述云网关的第二虚拟发送队列;

所述虚拟机的虚拟线程用于从所述云网关的虚拟发送队列提取所述报文指针;

所述虚拟机的虚拟线程用于将所述报文指针发送至所述聚合口;

所述聚合口根据所述报文指针将所述处理后的报文发出。

进一步的,所述聚合口被调用以接收所述初始报文,所述初始报文包括报文信息和报文指针;

所述聚合口对所述初始报文进行处理,筛选得到所述报文指针。

本申请提供一种报文交换方法和报文交换系统,通过增加虚拟机,利用虚拟机进行报文交换,且仅传输报文指针而不对整个报文进行拷贝,云网关可以利用报文指针定位报文的内存信息以对报文进行处理;避免了对整个报文的拷贝,仅传输长度远小于报文长度的报文指针,提高了报文交换的效率,提高了处理报文的效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的报文交换系统一实施例场景示意图;

图2为本申请实施例提供的报文交换方法一实施例流程示意图;

图3为本申请实施例提供的云网关处理初始报文一实施例流程示意图;

图4为本申请实施例提供的处理初始报文一实施例流程示意图;

图5为本申请实施例提供的将报文指针发送至聚合口的一实施例流程示意图;

图6为本申请实施例提供的报文交换一实施例示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本申请,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本申请。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。

需要说明的是,本申请实施例方法由于是在电子设备中执行,各电子设备的处理对象均以数据或信息的形式存在,例如时间,实质为时间信息,可以理解的是,后续实施例中若提及尺寸、数量、位置等,均为对应的数据存在,以便电子设备进行处理,具体此处不作赘述。

本申请实施例提供一种报文交换方法和报文交换系统,以下分别进行详细说明。

以下介绍本申请中涉及到的一些名词概念:

报文:报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短不一致,长度不限且可变。报文是进行网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。

指针:指针是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。

vswitch:virtualswitch,指虚拟交换机或虚拟网络交换机,工作在二层数据网络,通过软件方式实现物理交换机的二层(和部分三层)网络功能。与传统物理交换机相比,虚拟交换机具备的优点:1、配置灵活、扩展性强,端口数目可以灵活选择;2、成本低、性能高。

云网关:vcpe,是一种通过软件而非硬件向分支机构或边缘网络提供路由、安全、sd-wan等虚拟托管服务的方法。通过vcpe,可以利用基于软件的虚拟功能实现所有基于硬件的操作。

聚合口:trunk,交换机和交换机之间可以利用trunk传输数据。

网关驱动:云网关利用网关驱动处理不同的报文。

请参阅图1,图1为本申请实施例所提供的报文交换系统的一实施例场景示意图,该报文交换系统可以包括聚合口100,虚拟机200、云网关300和网关驱动400;其中聚合口100中至少包括一个物理口101,而一个物理口101中至少包括一个物理接收队列1011和至少一个物理发送队列1012;而虚拟机200中包括至少一个第一虚拟接收队列2001和至少一个第一虚拟发送队列2002,云网关300中可以包括至少一个第二虚拟接收队列3001和至少一个第二虚拟发送队列3002;其中,至少一个第一虚拟接收队列2001和至少一个第二虚拟发送队列3002对应,至少一个第一虚拟发送队列2002和至少一个第二虚拟接收对立对应3001。

即在本申请的实施例中,虚拟机200和云网关300为一个虚拟口对,虚拟机200中包括至少一个虚拟接收队列和至少一个虚拟发送队列,云网关300中也包括至少一个虚拟接收队列和至少一个虚拟发送队列。虚拟机200中的虚拟发送队列与云网关300中的虚拟接收队列对应,而虚拟机200中的虚拟接收队列与云网关300中的虚拟发送队列对应。虚拟机200中的虚拟发送队列的数量与云网关300中的虚拟接收队列的数量相同,虚拟机200中的虚拟接收队列的数量与云网关300中的虚拟发送队列的数量相同。

在上述实施例中,虚拟机200中还包括物理线程,而虚拟机中的物理线程可以从聚合口100中提取初始报文对应的报文指针。虚拟机200中的物理线程还可以根据预设规则在虚拟机200中找到物理线程对应的至少一个第一虚拟发送队列,并将报文指针发送给至少一个第一虚拟发送队列。同时,虚拟机200还可以将报文指针发送给云网关300中的至少一个第二虚拟接收队列;而云网关300可以根据接收到的报文指针,对初始报文进行处理,得到处理后的报文。在云网关300处理初始报文结束后,云网关300需要将报文指针从云网关300中的至少一个第二虚拟接收队列发送到,云网关300中的至少一个第二虚拟接收队列;而云网关300中的至少一个第二虚拟接收队列接收到了报文指针后,需要将报文指针返回给虚拟机200,即虚拟机200的虚拟线程可以从云网关300中的至少一个第二虚拟接收队列中提取报文指针。而虚拟机200中的虚拟线程提取到报文指针后,需要将报文指针再次发送到聚合口100。

需要说明的是,在本申请的实施例中,报文交换系统中的聚合口100可以为多个,虚拟机200也可以为多个,网关驱动400也可以为多个;聚合口100、虚拟机200和网关驱动400的数量可以根据实际情况来配置,此处不做任何限定。

本申请实施例中,该云网关300可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本申请实施例中所描述的云网关300,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(cloudcomputing)的大量计算机或网络服务器构成。

本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本申请方案一种应用场景,并不构成对本申请方案应用场景的限定,其他的应用环境还可以包括比图1中所示更多或更少的虚拟机,例如图1中仅示出1个虚拟机,可以理解的,该报文交换系统还可以包括一个或多个其他虚拟机,具体此处不作限定。

另外,该报文交换系统还可以包括存储器,用于存储数据,如存储报文。

需要说明的是,图1所示的报文交换系统的场景示意图仅仅是一个示例,本申请实施例描述的报文交换系统以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着报文交换系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

本申请实施例中提供一种报文交换方法,应用于报文交换系统,该报文交换方法包括:虚拟机中的物理线程从聚合口中提取初始报文对应的报文指针;虚拟机中的物理线程根据预设规则在虚拟机中找到物理线程对应的至少一个第一虚拟发送队列,将报文指针发送至至少一个第一虚拟发送队列;虚拟机将报文指针发送给云网关的至少一个第二虚拟接收队列;云网关根据报文指针,对初始报文进行处理,得到处理后的报文;在云网关处理初始报文结束后,云网关将所述报文指针发送给云网关的至少一个第二虚拟发送队列;虚拟机的虚拟线程从云网关的所述至少一个第二虚拟发送队列提取报文指针;虚拟机的虚拟线程将报文指针发送至所述聚合口;聚合口根据所述报文指针将处理后的报文发出。

如图2所示,为本申请实施例中报文交换方法的一个实施例流程示意图,该报文交换方法包括:

21、虚拟机中的物理线程从聚合口中提取初始报文对应的报文指针。

在本申请的实施例中,虚拟机200中包括物理线程,而虚拟机200个的虚拟线程可以从聚合口100中提取不同的初始报文各自对应的报文指针,并将报文指针在报文交换系统中进行传输,利用报文指针实现对初始报文的处理。在整个传输过程中,仅对报文指针进行传输,并不拷贝初始报文。

其中,初始报文包括报文信息和报文指针,报文指针可以指向报文信息的内存,使得云网关可以根据报文指针定位报文信息的内存。

22、虚拟机中的物理线程根据预设规则在虚拟机中找到物理线程对应的至少一个第一虚拟发送队列,将报文指针发送至至少一个第一虚拟发送队列。

在本申请的实施例中,虚拟机200中包括至少一个第一虚拟发送队列,当虚拟机200中的物理线程提取到了初始报文对应的报文指针后,需要将报文指针发送给虚拟机中的至少一个第一虚拟发送队列中。

其中,与物理线程对应的第一虚拟发送队列是可以提前配置的,即物理线程对应的虚拟发送队列和虚拟接收队列是人为根据实际情况配置好的,当物理线程需要发送报文指针时,可以直接将报文指针发送至物理线程对应的第一虚拟发送队列。

23、虚拟机将报文指针发送给云网关的至少一个第二虚拟接收队列。

在上述实施例中,当虚拟机200中的第一虚拟接收队列接收到了报文指针后,虚拟机200可以将报文指针再发送给云网关中的第二虚拟接收队列。需要说明的是,云网关300中接收报文的第二虚拟接收队列是与虚拟机200中的第一虚拟发送队列对应的。

24、云网关根据报文指针,对初始报文进行处理,得到处理后的报文。

在本申请的实施例中,云网关300在接收到了报文指针后,可以根据报文指针对初始报文进行不同的处理,以得到处理后的报文。即云网关300中并不直接接收初始报文或是初始报文对应的报文信息,仅接收初始报文对应的报文指针。

25、在云网关处理初始报文结束后,云网关将所述报文指针发送给云网关的至少一个第二虚拟发送队列。

26、虚拟机的虚拟线程从云网关的所述至少一个第二虚拟发送队列提取报文指针。

27、虚拟机的虚拟线程将报文指针发送至所述聚合口。

28、聚合口根据所述报文指针将处理后的报文发出。

在本申请的实施例中,在云网关300处理完初始报文后,云网关300会将报文指针发送给虚拟机200,而虚拟机200会再将报文指针返回给聚合口,而聚合口再根据报文指针确定与不同的报文指针各自对应的处理后的报文,并将处理后的报文发出,完成整个报文交换的流程。在整个报文的交换流程中,仅有报文指针的传输,初始报文或初始报文对应的报文信息并未传输。

本申请提供一种报文交换方法和报文交换系统,通过增加虚拟机,利用虚拟机进行报文交换,且仅传输报文指针而不对整个报文进行拷贝,云网关可以利用报文指针定位报文的内存信息以对报文进行处理;避免了对整个报文的拷贝,仅传输长度远小于报文长度的报文指针,提高了报文交换的效率,提高了处理报文的效率。

在本申请的一些实施例中,聚合口100中的物理口还可以包括物理接收队列和物理发送队列,而在虚拟机200中的物理线程从聚合口100中提取初始报文对应的报文指针之前,该方法还可以包括:

聚合口被调用以接收初始报文;聚合口对初始报文进行处理,筛选得到报文指针。

具体的,聚合口100中的物理接收队列会被调用以接收初始报文,而初始报文中包括报文信息和报文指针。聚合口100在接收到了初始报文后,还需要对初始报文进行一个筛选,以筛选出每个初始报文各自对应的报文信息,其中,报文信息中包括需要对初始报文进行的处理。

在上述实施例中,该方法还可以包括:聚合口根据多个报文指针,将多个初始报文划分到不同的物理口中保存。

具体的,在一个聚合口100中可以包括多个不同的物理口,不同的物理口中还可以包括多个物理接收队列。当初始报文为多个时,即物理口中接收到了多个初始报文时,聚合口100筛选出每个初始报文对应的报文指针后,聚合口可以根据每个初始报文对应的报文指针,将多个初始报文归为不同的类型,并将不同类型的初始报文划分到不同的物理口中进行保存。

在本申请的实施例中,不同的物理口中存储的初始报文的类型不同,可以按照初始报文的ip地址划分,或是按照其他规则进行划分,此处不做限定。而同一个物理口中可以包括多个物理接收队列,同一个物理口中的多个物理接收队列中保存的初始报文的类型可以相同。

在上述实施例中,一种类型的初始报文可以对应一种类型的业务请求,而当有多种类型的初始报文时,也对应有多种类型的业务请求,而不同类型的业务请求之间存在优先级,即多种类型的初始报文之间存在优先级。因此在本申请的实施例中,还可以对多种类型的初始报文进行优先级排序,将优先级高的初始报文优先发送给虚拟机200对应的物理线程。

具体的,可以根据每个初始报文对应的报文指针以对多个初始报文进行优先级排序,在后续的报文交换过程中,聚合口100优先发送优先级较高的报文指针。

在本申请的实施例中,在聚合口100接收到初始报文后,初始报文中的报文信息存储在聚合口100中,而初始报文中的报文指针在报文交换系统中进行交换。报文指针通过虚拟机200发送至云网关300中的第二虚拟接收队列中,而云网关300接收到报文指针后,可以根据报文指针处理初始报文。

如图3所示,为本申请实施例提供的云网关处理初始报文一实施例流程示意图,其中云网关300根据报文指针,对初始报文进行处理,得到处理后的报文,可以包括:

31、云网关根据初始报文指针,确定报文信息在聚合口中的内存。

32、云网关根据报文信息调用网关驱动对初始报文进行处理,得到处理后的报文。

具体的,在本申请的实施例中,报文交换系统还可以包括网关驱动400,云网关300控制网关驱动400。当云网关300接收到报文指针后,云网关300可以根据报文指针在聚合口100中确定每一个初始报文中的报文信息的内存;即此时的报文指针指向初始报文中的报文信息在聚合口中的初始内存信息。

云网关300在确定了每一个初始报文的报文信息在聚合口100中的内存后,云网关可以调用网关驱动400对初始报文进行不同的处理,得到处理后的报文。

具体的,网关驱动400是受云网关300控制的,当云网关300确定了每一个初始报文的报文信息在聚合口100中的内存后,云网关可以读取每一个报文信息以确定每一个初始报文需要进行的处理。同时云网关300需要发送调用信息至网关驱动400,以调用网关驱动400对聚合口100中的初始报文进行处理。初始报文对应的报文信息不同,网关驱动400对初始报文进行的处理也不同;网关驱动400对初始报文的处理是根据初始报文对应的报文信息决定的。

在上述实施例中,云网关300本身并不对报文指针或初始报文进行处理,而是在接收到了初始报文对应的报文指针后,先确定初始报文在聚合口100中的内存,再调用网关驱动400对聚合口100中的初始报文对应的报文信息进行处理。同时,当网关驱动400对初始报文进行处理结束后,云网关300中的第二虚拟接收队列需要将报文指针发送出去,即发送给云网关300中的第二虚拟发送队列。

在上述实施例中,报文指针在云网关300中,从云网关300中的第二虚拟接收队列发送到云网关300中的第二虚拟发送队列,报文指针本身并没有发生改变,但报文指针指向的内容发生了变化。在云网关300中的第二虚拟接收队列接收到了报文指针时,此时的报文指针指向的是聚合口100中尚未进行处理的初始报文对应的报文信息;因此云网关300可以根据报文指针确定初始报文在聚合口100中的内存,并对初始报文进行处理。

当云网关300根据报文信息调用网关驱动400对报文信息进行处理后,处理后的报文信息也存储在聚合口100的内存中;但此时的报文指针指向的是处理后的报文信息在聚合口100中的内存;因此,云网关300还需要将报文指针再返回至聚合口100,而聚合口100可以根据报文指针确定处理后的报文信息在聚合口100中的内存信息。

在本申请的实施例中,在报文的交换过程中,在聚合口100、虚拟机200和云网关300之间进行交换的是报文指针,而非初始报文或是处理后的报文。且在整个报文指针的交换过程中,报文指针并未发生改变,但报文指针指向的内容发生了变化。在报文指针从聚合口100发送至云网关300的过程中,报文指针指向的是未处理的初始报文;而在报文指针从云网关300返回至聚合口100的过程中,报文指针指向的是经过网关驱动400处理后的报文。

在上述实施例中,当报文指针从云网关300返回至聚合口100时,聚合口可以根据报文指针确定处理后的报文信息在聚合口100中的内存;聚合口100还需要将处理后的报文发出,以完成整个报文交换的过程。需要说明的是,聚合口100发出的处理后的报文不包括报文指针。

如图4所示,为本申请实施例提供的处理初始报文一实施例流程示意图,其中在本申请的另一些实施例中,在虚拟机将报文指针发送给云网关的至少一个第二虚拟接收队列之前,该方法还包括:

41、虚拟机在云网关中寻找与至少一个第一虚拟发送队列对应的至少一个第二虚拟接收队列。

42、若虚拟机未找到与至少一个第一虚拟发送队列对应的至少一个第二虚拟接收队列,则虚拟机直接处理初始报文,得到处理后的报文。

43、聚合口将处理后的报文发出。

具体的,在本申请的一些实施例中,报文交换系统中可以不存在云网关300,此时虚拟机200本身就可以处理一些简单的初始报文。此时,当虚拟机200中的第一虚拟接收队列接收到了报文指针后,需要在云网关300中寻找与第一虚拟接收队列对应的第二虚拟发送队列;而由于此时的报文交换系统中不存在云网关300,因此虚拟机200无法寻找到云网关300,更无法寻找到云网关300中与第一虚拟接收队列对应的第二虚拟发送队列。此时,虚拟机200可以调用自身的报文处理组件对初始报文进行处理。

在本申请的一些实施例中,虚拟机直接处理初始报文,得到处理后的报文,可以包括:虚拟机根据报文指针确定报文处理组件;报文处理组件对初始报文进行处理,得到处理后的报文。

具体的,虚拟机200可以被配置为可以处理简单类型的报文,即可以在虚拟机200中增加报文处理组件,报文处理组件与网关驱动400的作用相同,都是对初始报文进行处理;但报文处理组件通常只能处理少量的初始报文,且初始报文的类型相对网关驱动400来说,较为简单。在本申请的一个具体实施例中,报文处理组件可以处理arp或ping类型的初始报文。

且报文处理组件也是根据报文指针确定初始报文对应的内存信息,以对初始报文进行处理,得到处理后的报文。初始报文并不进行传输,仅传输报文指针。而报文指针在初始报文的处理前后也未发生变化,仅是报文指针指向的内容发生了变化。在初始报文处理前,报文指针指向的是未处理的初始报文;在初始报文处理后,报文指针指向的是处理后的报文。

需要说明的是,与网关驱动400处理初始报文相同,利用报文处理组件处理后的报文也存储在聚合口100中,聚合口100也需要将处理后的报文发送出去,以完成整个报文交换过程。且利用报文处理组件处理并发出的报文中,并不包括报文指针。

如图5所示,为本申请实施例提供的将报文指针发送至聚合口的一实施例流程示意图,其中虚拟机200中的虚拟线程将报文指针发送至聚合口100可以包括:

51、虚拟机根据预设规则找到对应的聚合口。

52、聚合口确定自身可用的目标物理口以及目标物理口对应的物理发送队列。

53、虚拟机的虚拟线程将报文指针发送至目标物理口的物理发送队列。

具体的,在本申请的实施例中,云网关300在调用网关驱动400处理初始报文结束后,云网关300将报文指针从第二虚拟发送队列发送给虚拟机200的虚拟线程中;而虚拟机200的虚拟线程需要根据预设的规则找到对应的聚合口100,并将报文指针发送给聚合口100。

具体的,虚拟机200的虚拟线程先根据预设规则找到对应的聚合口100,而聚合口100需要确定自身可用的目标物理口,并确定目标物理口对应的物理发送队列。由于报文指针指向的是报文在聚合口100中的内存,而报文指针指向的内容在报文指针从云网关300发出后发生了变化;因此,云网关300发出的报文指针指向的是处理后的报文,虚拟机200可以根据云网关300发出的报文指针,确定与不同报文指针各自对应的聚合口100。而聚合口100可以根据云网关300发出的报文指针确定与不同报文指针分别对应的目标物理口,以及物理口中的物理发送队列。

虚拟机200中的虚拟线程在确认了目标物理口以及目标物理口中的物理发送队列后,虚拟机200的虚拟线程可以将报文指针发送给目标物理口中的物理发送队列。物理口可以根据接收到的报文指针,确定与报文指针分别对应的处理后的报文,并将处理后的报文发出。

如图6所示,为本申请实施例提供的报文交换一实施例示意图,其中报文交换系统可以包括聚合口100、虚拟机200、云网关300和网关驱动400。而聚合口100中可以包括多个物理口101,而一个物理口101中又可以包括多个物理接收队列和物理发送队列;同一个物理口中存储的报文类型可以相同,而不同的物理口中存储的报文类型可以不同。

物理口101中的物理接收队列可以接收外界的初始报文,如以太网报文;聚合口100在接收到了初始报文后,可以对初始报文进行解析分类,得到每个初始报文对应的报文指针,并根据报文指针将不同类型的初始报文划分到不同的物理口101中存储。

而虚拟机200中的物理线程可以从聚合口100中的物理接收队列中提取初始报文对应的报文指针,并将报文指针发送至虚拟机200中的第一虚拟发送队列。虚拟机200中的第一虚拟发送队列在接收到了报文指针后,需要将报文指针发送给云网关300中的,与第一虚拟发送队列对应的第二虚拟接收队列。

其中,在本申请的实施例中,虚拟机200中可以包括多个物理线程,而与不同物理口101对应的物理线程是可以预先配置好的。且虚拟机200中与不同物理线程对应的第一虚拟发送队列也是可以提前配置好的;云网关300中与第一虚拟发送队列对应的第二虚拟接收队列也是可以提前配置好的。

当云网关300接收到来自虚拟机200的报文指针后,云网关300可以根据报文指针确定初始报文中的报文信息在聚合口100中的内存,以确定不同报文指针各自指向的报文信息。云网关300还可以根据不同的报文信息确定需要对初始报文进行的不同操作;云网关300根据报文信息调用网关驱动400以对初始报文进行不同的处理。

在网关驱动400处理初始报文结束后,云网关300还需要将报文指针从第二虚拟接收队列发送至第二虚拟发送队列,并将报文指针从第二虚拟发送队列发送给虚拟机200的虚拟线程。而虚拟机200的虚拟线程接收到报文指针后,再根据报文指针在聚合口100中寻找可用的物理口101,进而找到与报文指针对应的物理发送队列;虚拟机200的虚拟线程将报文指针发送给与报文指针对应的物理发送队列。

聚合口100中的物理发送队列接收到了云网关300返回的报文指针后,可用根据报文指针确定处理后的报文在聚合口100中的内存信息,并将处理后的报文从聚合口100中的物理发送队列发出,完成整个报文交换过程。

在上述整个报文交换过程中,仅有报文指针的传输,而没有拷贝完整的报文,减少了报文交换的流程以及报文交换的时间,大大提高了报文交换的效率。且本申请实施例中的聚合口100和虚拟机200可以灵活配置,增加了报文交换系统的灵活性;其中,聚合口100的容量可以为多个物理口101的容量之和。

在如图6所示的报文交换流程中,还可以包括副虚拟机210,与虚拟机200不同的是,副虚拟机210中包括有报文处理组件,而报文处理组件也可以对初始报文进行处理。

即副虚拟机210接收到报文指针后,由于副虚拟机210没有与云网关300关联,因此副虚拟机210无法找到与第一虚拟发送队列对应的第二虚拟接收队列,此时副虚拟机210可以利用自身的报文处理组件对报文进行处理。

副虚拟机210可以根据接收到的报文指针,在聚合口100中确定初始报文的内存信息,并根据初始报文的报文信息对调用报文处理组件对报文进行不同的处理。在副虚拟机210调用报文处理组件处理初始报文完成后,副虚拟机210还需要将报文指针再返回给聚合口100;而聚合口100接收到副虚拟机210返回的报文指针后,需要根据返回的报文指针再确定处理后的报文在聚合口100中的内存信息;并将处理后的报文发出。

需要说明的是,在本申请的实施例中,利用网关驱动400或是报文处理组件对初始报文进行处理后,聚合口100发出的报文中均不包括报文指针。且在本申请的实施例中,虚拟机中的虚拟线程的数量小于或等于聚合口100中的物理接收队列和物理发送队列的数量。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。

具体实施时,以上各个单元或结构可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元或结构的具体实施可参见前面的方法实施例,在此不再赘述。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种报文交换方法和报文交换系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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