掌桥专利:专业的专利平台
掌桥专利
首页

一种报文发送方法、装置、设备及介质

文献发布时间:2023-06-19 18:27:32


一种报文发送方法、装置、设备及介质

技术领域

本说明书涉及计算机技术领域,尤其涉及一种报文发送方法、装置、设备及介质。

背景技术

在VXLAN网关上,如果向所有的交换机间VXLAN隧道发送报文,一旦VXLAN隧道数量较多,需要CPU封装VXLAN隧道信息,并向目的虚拟机一个一个地发送。为此,可能存在CPU占有率高,发包报文延迟增加,效率低,也存在系统不稳定的隐患。

发明内容

本说明书一个或多个实施例提供了一种报文发送方法、装置、设备及介质,用于解决背景技术提出的技术问题。

本说明书一个或多个实施例采用下述技术方案:

本说明书一个或多个实施例提供的一种报文发送方法,包括:

通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN;

通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域;

通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道;

通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

本说明书一个或多个实施例提供的一种报文发送装置,所述装置包括:

环回端口获取单元,通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN;

环回端口加入单元,通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域;

隧道确定单元,通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道;

报文发送单元,通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

本说明书一个或多个实施例提供的一种报文发送设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN;

通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域;

通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道;

通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:

通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN;

通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域;

通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道;

通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:

本说明书实施例CPU向目的虚拟机发送指定VXLAN的特定报文时,通过将环回端口加入指定VXLAN中,以便根据环回端口生成转发特定报文的指定VXLAN的转发域,再由交换芯片确定目的虚拟机对应的VXLAN隧道,最后,将转发域中的特定报文由VXLAN隧道发送至目的虚拟机。为此,本说明书实施例的CPU只需发送一个报文,由交换芯片复制并添加不同的隧道信息,可以降低CPU负载,增强系统稳定性。

附图说明

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

图1为本说明书一个或多个实施例提供的VXLAN的spine-leaf组网图;

图2为本说明书一个或多个实施例提供的CPU软件发包示意图;

图3为本说明书一个或多个实施例提供的组播组发包示意图;

图4为本说明书一个或多个实施例提供的一种报文发送方法的流程示意图;

图5为本说明书一个或多个实施例提供的VXLAN Spine-Leaf发包环回方案示意图;

图6为本说明书一个或多个实施例提供的环回方案数据示意图;

图7为本说明书一个或多个实施例提供的一种报文发送装置的结构示意图;

图8为本说明书一个或多个实施例提供的一种报文发送设备的结构示意图。

具体实施方式

本说明书实施例提供一种报文发送方法、装置、设备及介质。

图1为VXLAN的spine(交换芯片)-leaf(交换机)组网图,Spine上配置了两个interface VXLAN三层接口(VXLAN1与VXLAN2),Spine与Leaf1,Leaf2,……Leafn分别建立了VXLAN隧道,每个Leaf上都接上N台服务器,每台服务上都存在若干虚拟机VM(VirtualMachine),VM有的接入到VXLAN1,有的接入到VXLAN2中,VXLAN隧道正常建立,数据报文封装与解封装正常转发。

当对应的VXLAN网关(比如VXLAN1)需要向此VXLAN下的所有VM发送BUM(广播,未知单播,未知组播)流量时,需要Spine上的网关向所有的leaf发送带VXLAN隧道封装的报文,然后到达Leaf,解封装隧道报文,再往leaf上对应的VM洪泛一份流量。

以spine的interface VXLAN1发送ARP广播,请求10.0.0.1的ARP为例,可以通过下述有两种方案,如下:

方案一、CPU软件发包模式

此方案可以参见图2示出的CPU软件发包示意图,报文内容完全由CPU控制,CPU需要查询表项,自己添加VXLAN报文的隧道信息。由于每个leaf下可能均有VXLAN 1的VM,则CPU可能需要往每个leaf均发送一份带各自VXLAN隧道信息的报文,共需要发送N个报文,且发送的报文需要CPU软件封装VXLAN隧道信息。

方案二、基于组播组发包模式

此方案可以参见图3示出的组播组发包示意图。往VXLAN1发送ARP广播时,可以先创建一个组播组,将spine与leaf间建立的VXLAN tunnel均加入到此组播组中,然后CPU只需指定组播组,发送一个未加VXLAN隧道的BUM报文,然后交换芯片就会根据组播组中的隧道成员进行隧道的封装,转发出去。只需发送一个报文就能复制N份不同的隧道出去,降低了CPU负载。

方案一中CPU软件发包模式,需要CPU封装VXLAN隧道信息报文往VTEP一个一个地发送报文,存在CPU占有率高,发包报文延迟增加,效率低,导致系统不稳定等隐患。但通用性较好,所有的交换芯片都支持这种发包方式。

方案二中基于组播组发包模式,CPU只需发送一个报文,由芯片去复制并添加不同的隧道信息。能显示降低CPU负载,增强系统稳定性。但是很多交换芯片是不支持CPU指定组播组进行发包,此方案通用性不强,且需要额外申请组播资源。

本说明书实施例可以针对上述两个方案,进行改进,提供一种通用性强,无需依赖交换芯片的VXLAN发送报文的方式,解决在VXLAN环境中,CPU发送报文时占有率高,延迟大,导致系统不稳定的问题。

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

图4为本说明书一个或多个实施例提供的一种报文发送方法的流程示意图,该流程可以由报文发送系统执行。流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。

本说明书实施例的方法流程步骤如下:

S402,通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN。

在本说明书实施例中,配置换回端口时,可以使用空闲的端口,或者交换芯片内部未使用的端口,或者交换芯片内置的环回端口。环回端口为端口物理环回,可以将端口的TX信号与RX信号相连接,从端口出去的报文,可以再次进入到该端口。

进一步的,本说明书实施例获取预先配置的环回端口前,可以配置所述CPU的端口之外的其他端口与所述环回端口为单向隔离,以防止从所述其他端口发送的报文转发至所述环回端口引发异常。

进一步的,本说明书实施例获取预先配置的环回端口后,可以关闭所述环回端口的MAC学习功能,以防止所述环回端口在收到所述特定报文后自动学习MAC地址,如果自动学习MAC地址可能会导致异常。

S404,通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域。

在本说明书实施例中,将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域时,可以通过所述CPU将所述特定报文发送至所述环回端口;最后,通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域。

S406,通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道。

在本说明书实施例中,每个VXLAN隧道连通交换芯片与各交换机,每个交换机连接多个虚拟机,由此需要通过交换芯片确定目的虚拟机对应的VXLAN隧道。

在本说明书实施例中,通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道时,可以通过所述交换芯片查找连接各交换机的VXLAN隧道,并确定所述各交换机连接的虚拟机,以确定所述目的虚拟机对应的VXLAN隧道。

S408,通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

在本说明书实施例中,可以先将所述特定报文中加上所述VXLAN隧道的封装信息,生成封装报文,并将所述封装报文发送至所述各交换机;最后,通过所述各交换机解封所述封装报文,还原至所述特定报文,并将所述特定报文发送至所述目的虚拟机。

针对上述技术特征,本说明书实施例可以通过下述具体方案,参见图5示出的VXLAN Spine-Leaf发包环回方案示意图,spine上可以配置两个interface VXLAN三层接口,spine与Leaf1,Leaf2……Leafn分别建立对应的VXLAN隧道,每个Leaf上都接上N台服务器,每台服务上都存在若干虚机VM,VM有的接入到VXLAN 1,有的接入到VXLAN 2中,VXLAN隧道正常建立,数据报文封装与解封装正常转发。

本方案所需要的额外配置如下:

1)使用一个空闲的端口或者交换芯片内部未使用的端口,或者有的交换芯片内部内置的环回端口,设置端口物理环回(根本原理是将端口的TX信号与RX信号连接起来,有命令可以配置)从端口出去的报文,能够再次进入到此端口。

2)闭环回端口的MAC学习功能,将不再自动学习到新的动态MAC地址表项。

3)配置其它除CPU口外的端口与环回端口单向隔离,防止从其它端口发送的报文转至环回口引发异常。

4)在CPU往VXLAN发包时,动态地将环回端口加入到对应的VXLAN中。例如,CPU需要发送VXLAN1的报文时,将环回端口加入到VXLAN1中。CPU需要发送VXLAN2的报文时,更新环回端口,加入到VXLAN2中。

以spine的interface VXLAN1发送ARP广播,请求10.0.0.1的ARP为例,结构可以参见图6示出的环回方案数据示意图:

第一步:配置端口物理环回,假设为PORT 4设置环回端口,并且关闭PORT4的MAC地址学习功能。

第二步:将PORT 4加入到VXLAN1中。

第三步:配置除CPU口外的端口与PORT 4的端口单向隔离,防止从其它端口发送的报文转到PORT 4中而引发异常。

第四步:CPU准备发送VXLAN1的ARP request广播报文,通过CPU软件发包模式,发送环回端口,报文从PORT 4发送出去。

第五步:由于端口配置成物理环回口,PORT 4上又收到CPU发送过来的报文。

第六步:由于配置了PORT 4加入到VXLAN1中,那么从PORT4进入的报文会进入到VXLAN 1的转发域中,和普通VXLAN数据报文一样进行洪泛。交换芯片查找转发出口是连接各个leaf的VXLAN隧道,则会自动加上隧道封装信息,每个隧道复制发送一份。

第七步:每个leaf上收到隧道封装报文,解封装后,发往各自连接着的VXLAN1中的VM中去。最终连接VXLAN1的每个VM都能收到CPU发送的ARP广播报文。

第八步:发送完报文后将环回口PORT 4从VXLAN 1中移出。

需要说明的是,如果此时spine又要往interface VXLAN2发送ARP广播,请求20.0.0.1的ARP时,则只需要将环回口PORT 4加入到VXLAN2中,其它的步骤与interfaceVXLAN1发送的步骤一致。

图7为本说明书一个或多个实施例提供的一种报文发送装置的结构示意图,所述装置包括:环回端口获取单元702、环回端口加入单元704、隧道确定单元706与报文发送单元708。

环回端口获取单元702,通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN;

环回端口加入单元704,通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域;

隧道确定单元706,通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道;

报文发送单元708,通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

进一步的,所述环回端口加入单元704执行所述将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域,具体包括:

通过所述CPU将所述特定报文发送至所述环回端口;

将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域。

图8为本说明书一个或多个实施例提供的一种报文发送设备的结构示意图,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN;

通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域;

通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道;

通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:

通过CPU向目的虚拟机发送指定VXLAN的特定报文时,在交换芯片中获取预先配置的环回端口,所述目的虚拟机预先接入所述指定VXLAN;

通过所述CPU将所述环回端口加入所述指定VXLAN中,以便将通过所述环回端口的所述特定报文加入所述指定VXLAN的转发域;

通过所述交换芯片确定所述目的虚拟机对应的VXLAN隧道;

通过所述VXLAN隧道将所述转发域中的所述特定报文发送至所述目的虚拟机。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

技术分类

06120115578561