首页 / 一种智能网卡链路聚合的方法及装置

一种智能网卡链路聚合的方法及装置实质审查 发明

技术领域

[0001] 本申请实施例涉及通信技术领域,尤其涉及一种智能网卡链路聚合的方法及装置。

相关背景技术

[0002] 链路聚合(英文:bond)技术,在通信技术领域广泛应用。链路聚合技术可通过将多条以太网物理链路捆绑在一起,成为一条逻辑链路,从而让交换机之间或服务器网卡与交换机之间的链路形成冗余。在两条或多条链路形成冗余的同时,逻辑链路可对物理链路的流量进行负载分担,从而形成带宽叠加的效果。网卡链路聚合能够有效地使得其中部分链路损坏后,依旧能够保证网络连通,从而达到高可用和高可靠的目的。虚拟网桥(英文:openvswitch,缩写为OVS)、用户空间数据通路(英文:datapath)的数据平面开发套件(英文:data plane development kit,缩写为DPDK)、操作系统(英文:linux)内核、用户空间守护程序(英文:teamd)以及交换机,都支持bond技术。
[0003] 目前,智能网卡和传统以太网网卡一样,有两个物理端口。智能网卡支持将两个物理端口进行链路捆绑形成聚合接口,从而提供链路聚合的能力。由于目前的链路配置,当任一物理端口故障,聚合接口难以及时获取物理端口状态,因此数据报文仍然被发送至故障的物理端口,会造成数据传输失败,导致通信可靠性低。

具体实施方式

[0032] 为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作可选的详细描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。应理解,下面所介绍的方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。
[0033] 本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
[0034] 本申请技术方案中,对数据的采集、传播、使用等,均符合国家相关法律法规要求。
[0035] 在介绍本申请实施例所提供的一种智能网卡链路聚合方法之前,为了便于理解,首先对下面对本申请实施例的技术背景进行详细介绍。
[0036] 智能网卡具体可以分为控制面和数据面。其中,控制面可提供高速的数据报文转发能力。控制面可由编程逻辑门电路(英文:field programmable gate array,缩写为FPGA)或专用芯片(英文:application specific integrated circuit,缩写为ASIC)实现。控制面可以运行虚拟网桥(英文:openvswitch,缩写为OVS)。虚拟网桥可通过智能网卡驱动创建智能网卡数据面。智能网卡数据面包括配置数据面的聚合接口。
[0037] 此外,智能网卡还可包括用户空间数据通路(英文:datapath)的数据平面开发套件(英文:data plane development kit,缩写为DPDK)、操作系统(英文:linux)内核、用户空间守护程序(英文:teamd)以及虚拟网桥等内部组件。以上组件都支持链路聚合(英文:bond)技术。
[0038] 如图1所示为相关技术中智能网卡链路聚合的一种应用场景。在图1中,智能网卡具有两个物理端口,分别计为物理端口1和物理端口2。其中,物理端口1和物理端口2可以与虚拟网桥的两个虚拟端口分别对应。另外如图1所示,智能网卡的物理端口1和物理端口2分别与交换机的物理端口1和物理端口2通过网线(如光纤)相连。此外,智能网卡的两个物理端口之间关联至聚合接口,交换机的两个物理端口关联至另一聚合接口,因此在智能网卡与交换机之间组成一个bond聚合链路,该bond聚合链路在智能网卡侧对应一个聚合接口,以及在交换机侧对应一个聚合接口。
[0039] 目前,bond聚合链路的模式(英文:mode)有七种,分别以mode 0至mode 6命名。一般常用的mode模式为mode 1和mode 4。
[0040] 其中,所述mode 1即主备份策略模式(英文:active‑backup),即仅以一个主物理端口为运行状态,另一个物理端口作为备用端口,备用端口不作为运行状态或者停止或关闭状态。此外,智能网卡内核具有多个虚拟端口,每个虚拟端口的状态对应一个物理端口的状态。相应的,mode 1下虚拟网桥中的一个虚拟端口对应一个物理端口。当物理端口停止运行,则智能网卡的内核模块可将内核中主物理端口对应的虚拟端口的端口状态转为停止状态,以及将备用物理端口对应的虚拟端口的端口状态转为运行状态。在数据传输过程中,无论采用主物理端口还是备用端口,数据传输过程中所采用的地址是唯一的。
[0041] 所述mode 4即动态链接聚合模式。该模式一般会运行两个或以上物理端口,由多个物理端口关联至一个聚合接口。相应的,mode 4下虚拟网桥中的一个虚拟端口对应一个物理端口,虚拟端口状态可对应于物理端口状态。多个虚拟端口对应一个聚合接口,每个物理端口所对应的虚拟端口可称为该聚合接口的一个成员口。每个成员口可共享同样的速率和双工设定。
[0042] 然而,在目前的bond聚合链路中,当任一物理端口故障或关闭,智能网卡无法及时获知物理端口的状态,因此,数据报文仍然会被发送至故障的物理端口,会造成数据传输失败,导致通信可靠性低。
[0043] 为了解决以上问题,本申请提供了一种智能网卡链路聚合的方法,用以提高所述聚合链路数据传输的可靠性。
[0044] 可以理解,本申请提供的一种智能网卡链路聚合的方法可由第一设备执行。所述第一设备可以是智能网卡或服务器网卡或包含智能网卡或服务器网卡的通信设备。可选的,该方法也可以有这些设备中的组件(如芯片或模块等)执行。
[0045] 基于该方法,第一设备可通过用户空间内的第一驱动获知物理端口关闭,并通过该第一驱动设置聚合接口的物理端口配置,使得物理端口配置中所述第一物理端口的状态为去使能状态。其中,聚合接口停止向去使能状态下的物理端口发送数据,可以避免数据传输失败,以提高数据传输可靠性。
[0046] 如图2所示,本申请实施例提供的一种智能网卡链路聚合的方法具体步骤可以包括:
[0047] 步骤101,第一设备通过用户空间内的第一驱动确定所述第一设备的第一物理端口关闭,所述第一物理端口为所述第一设备的多个物理端口中的一个,所述多个物理端口关联至聚合接口。
[0048] 在一种可能的实施例中,所述第一设备可设置第一驱动。所述第一驱动可创建物理端口对应的虚拟端口,创建所述虚拟端口后所述第一驱动可根据所述虚拟端口配置聚合接口。
[0049] 在一种可能的实施例中,聚合接口位于智能网卡的数据面。聚合接口可与多个物理端口发送数据报文。例如,本申请中的聚合接口为链路聚合组(英文:Link Aggregation Group,缩写为LAG)聚合接口。可选的,LAG聚合接口可包括FPGA LAG聚合接口等,不具体限定。其中,聚合接口可获取物理端口配置,当该配置中的物理端口状态为使能(或运行)状态,则聚合接口可以与该物理端口之间进行数据包传输;当该配置中的物理端口状态为去使能(或关闭或停止)状态,则聚合接口停止与该物理端口之间的数据包传输。可以理解,智能网卡的控制面还可创建bond虚拟端口以及与物理端口一一对应的多个虚拟端口,物理端口相对应的虚拟端口可称为bond虚拟端口的成员口。
[0050] 在一种可能的实施例中,虚拟端口可创建于智能网卡的片上系统(英文:system on chip,缩写为SOC)。SOC可运行OVS进程,形成虚拟网桥。具体的,bond虚拟端口以及虚拟端口可创建于虚拟网桥。本申请中,智能网卡的片上系统中还可运行第一驱动。其中,第一驱动可根据物理端口发送的控制数据配置聚合接口的物理端口状态。当物理端口的运行状态发生变化,则相应的,虚拟端口的状态会相应发生变化。
[0051] 在一种可能的实施例中,第一驱动可根据虚拟端口的状态变化检测物理端口是否关闭。
[0052] 可选的,所述第一设备可通过所述用户空间内的第二驱动获取链路保活信息,链路保活信息可用于指示物理端口关联的链路是否中断,因此第一设备可根据所述链路保活信息确定所述第一物理端口对应的链路中断。例如,链路保活信息可由物理端口通过聚合接口发送至SOC控制面(如发送至SOC控制面虚拟网桥)。相应的,第一设备可通过第二驱动从SOC控制面获取LACP报文中的链路保活信息,以确定链路是否中断。在确定第一物理端口对应的链路中断后,第一设备可通过第二驱动配置第一物理端口对应的第一虚拟端口的端口状态为第一状态。本申请中,所述第一状态例如是关闭状态或者去使能状态等,不具体限定。可选的,链路保活信息可携带在链路汇聚控制协议(英文:link aggregation control protocol,缩写为LACP)报文中。进一步可选的,所述链路汇聚控制协议报文指IEEE802.3ad标准的链路汇聚控制协议。
[0053] 又如,所述第一设备可通过所述第一驱动采用定时器轮询监听所述多个物理端口的链路状态,当所述第一物理端口对应的链路中断后,所述第一设备可通过所述第一驱动配置所述第一物理端口对应的虚拟端口的端口状态为第一状态。
[0054] 在一种可能的实施例中,第一驱动可根据虚拟端口的状态变化检测物理端口是否关闭。例如,当检测到第一虚拟端口的端口状态为第一状态,则可确定相应的第一物理端口关闭。
[0055] 可以理解,本申请中,第一驱动是智能网卡的用户空间中的智能网卡用户态驱动。此外,本申请中的第二驱动是智能网卡的用户空间中的DPDK网链路聚合(英文:DPDK net‑bonding)用户态驱动。可选的,所述第一设备可在智能网卡的用户空间中设置第二驱动。
[0056] 其中,智能网卡可通过配置命令设置所述第二驱动,使得第二驱动执行本申请中的相应动作。可选的,所述配置命令包括创建、删除、模式设置、添加成员口、删除成员口、设置主备成员口、设置链路策略、查询链路状态、查询成员口状态、查询链路汇聚控制协议报文、和查询成员口LACP协议报文中的至少一项。
[0057] 步骤102,所述第一设备通过所述第一驱动设置所述聚合接口的物理端口配置,使得所述物理端口配置中所述第一物理端口的状态为去使能状态。
[0058] 在一种可能的实施例中,第一设备可通过第一驱动维护聚合接口的全部物理端口的物理端口配置。例如,物理端口配置可指示相应物理端口的端口状态。如前面的描述,当该配置中的物理端口状态为使能(或运行)状态,则聚合接口可以与该物理端口之间进行数据包传输;当该配置中的物理端口状态为去使能(或关闭或停止)状态,则聚合接口停止与该物理端口之间的数据包传输。
[0059] 举例来说,聚合接口对应于物理端口0和物理端口1,则可以通过2比特字段表示两个物理端口的运行状态,例如,第1个比特表示物理端口0的端口状态,第2个比特表示物理端口1的端口状态,比特取值为0(或1)表示端口为运行状态,比特取值为1(或0)则表示端口为关闭状态。其中,该2比特字段即物理端口配置。
[0060] 在步骤102中,第一设备可通过第一驱动修改聚合接口的物理端口配置。例如,当根据步骤101确定物理端口0关闭后,第一设备可通过第一驱动设置第1个比特的取值为1。仍沿用上例,当物理端口配置字段的取值为“10”时,表示物理端口0关闭,且物理端口1正常运行,因此聚合接口可以停止与物理端口0之间的数据报文收发。
[0061] 第一设备可向第一驱动发送配置参数,所述配置参数用于第一设备完成端口状态配置。可选的,该配置参数可由驱动生产厂商提供。第一驱动可根据配置参数完成相应的配置动作。当配置参数为更改聚合接口的任一物理端口配置时,第一驱动接收配置参数后,根据配置参数更改物理端口状态。当物理端口配置指示物理端口关闭,则聚合接口就不会与该物理端口传输数据。例如,以第一驱动是fcpf_mdev内核驱动,且聚合接口是FPGA LAG接口为例,任一物理端口对应的链路中断后,所述fcpf_mdev内核驱动重新对FPGA LAG聚合接口的所述物理端口的状态进行配置,设置物理端口配置中的所述物理端口的状态为去使能状态。聚合接口的所述物理端口配置为去使能状态后,FPGA LAG聚合接口将不再将报文发送到该中断链路对应的物理端口。
[0062] 在一种可能的实施例中,所述第一设备可通过所述聚合接口将待发送数据转发至所述第一物理端口以外的其他物理端口。
[0063] 例如,所述智能网卡具有至少两个物理端口,记为物理端口1,物理端口2,……,物理端口N,N为大于1的正整数。其中,该至少两个物理端口可对应一个聚合接口。所述物理端口状态包括运行或停止运行状态。所述聚合接口可保存所述物理端口的运行状态。例如,聚合接口的物理端口配置中存储各个物理端口的状态。
[0064] 可选的,如图3所示,在本申请提供的一种实施例中,所述智能网卡可通过配置命令创建虚拟网桥的bond虚拟端口,并设置链路聚合模式为mode 4。物理端口1和物理端口2可通过bond虚拟端口向物理网卡发送LACP报文,其中,LACP报文可携带链路保活信息。因此支持虚拟网桥通过LACP协议报文进行链路协商和/或链路状态检测。虚拟网桥还可创建分别对应于物理端口1和物理端口2的两个虚拟端口。假设所述物理端口1的初始状态和物理端口2的初始状态都为开启状态,物理端口1的链路和物理端口2的链路都可以正常工作。当其中一条链路中断后,虚拟网桥的第二驱动可根据链路保活信息识别链路中断,并设置相应虚拟端口状态为第一状态。虚拟网桥的第一驱动可以识别虚拟端口的状态为第一状态后,确定端口状态变化为第一状态的第一虚拟端口对应的第一物理端口关闭。进一步可以在确定第一物理端口关闭后,可由第一驱动设置聚合接口的物理端口配置,使得聚合接口停止向该关闭的物理端口发送数据报文,以避免数据传输失败。
[0065] 可选的,如图4所示,在本申请提供的另一种实施例中,所述智能网卡可通过配置命令创建虚拟网桥的bond虚拟端口,并设置链路聚合模式为mode 1。在mode 1下,第一驱动可根据定时器轮询监听物理端口的链路状态,并根据链路状态判断物理端口是否关闭。假设物理端口1的初始状态和物理端口2的初始状态都为开启状态,物理端口1的链路和物理端口2的链路都可以正常工作。当其中一条链路中断后,虚拟网桥的第二驱动可根据定时器轮询监听识别链路中断,并设置相应虚拟端口状态为第一状态。虚拟网桥的第一驱动可以识别虚拟端口的状态为第一状态后,确定端口状态变化为第一状态的第一虚拟端口对应的第一物理端口关闭。进一步可以在确定第一物理端口关闭后,可由第一驱动设置聚合接口的物理端口配置,使得聚合接口停止向该关闭的物理端口发送数据报文,以避免数据传输失败。
[0066] 在一种可能的实施例中,第一设备可获取来自于云平台的配置参数,用于创建前述聚合接口、bond虚拟端口、虚拟端口、第一驱动或第二驱动中的至少一项。可选的,云平台可发送聚合接口等端口和参数至智能网卡,由智能网卡根据相应参数执行创建和配置。可选的,本申请中的所述虚拟网桥位于所述智能网卡控制面中的用户空间。其中,所述云平台可以是开放堆栈(OpenStack)云计算管理平台等开源云平台。
[0067] 在一种可能的实施例中,智能网卡可以通过链路聚合控制命令(英文:bondctl)通过第二驱动保存的链路聚合信息,即链路聚合模式、虚拟端口与物理端口的链路状态等作为bond配置文件。若虚拟网桥重启进程,则第一驱动可读取所述配置文件,获得智能网卡聚合接口模式、物理端口状态配置等参数信息。例如,虚拟网桥进程启动后,智能网卡自动创建bond虚拟端口,并通过第一驱动读取bond配置文件。所述智能网卡用户态驱动根据所述bond配置文件,修改bond虚拟端口的配置。所述智能网卡用户态驱动可重新配置聚合接口。
[0068] 与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种智能网卡链路聚合装置(或第一设备)。该装置可以用于执行以上方法实施例所述的动作。在该实施例中,装置的结构可以如图5所示。如图5所示,本申请示例性的提供一种智能网卡链路聚合装置包括获取模块501和处理模块502。
[0069] 其中,获取模块501,用于通过用户空间内的第一驱动确定所述第一设备的第一物理端口关闭,所述第一物理端口为所述第一设备的多个物理端口中的一个,所述多个物理端口关联至聚合接口;
[0070] 处理模块502,用于通过所述第一驱动设置所述聚合接口的物理端口配置,使得所述物理端口配置中所述第一物理端口的状态为去使能状态。
[0071] 可选的,所述获取模块501具体用于:通过所述用户空间内的第二驱动获取链路保活信息,所述链路保活信息用于指示所述第一物理端口对应的链路中断;通过所述第二驱动配置第一虚拟端口的端口状态变更为第一状态,所述第一虚拟端口与所述第一物理端口相对应;通过所述第一驱动确定所述第一物理端口的端口状态变更为所述第一状态。
[0072] 可选的,所述处理模块502还用于:通过所述第二驱动获取链路汇聚控制协议报文,所述链路汇聚控制协议报文包括所述链路保活信息,所述链路汇聚控制协议报文来自于所述聚合接口。
[0073] 可选的,所述处理模块502具体用于:通过所述第一驱动轮询监听所述多个物理端口的链路状态,获知所述第一物理端口对应的链路中断;通过所述第一驱动配置第一虚拟端口的端口状态变更为第一状态,所述第一虚拟端口与所述第一物理端口相对应;通过所述第一驱动确定所述第一物理端口的端口状态变更为所述第一状态。
[0074] 可选的,所述处理模块502还用于:通过所述聚合接口将待发送数据转发至所述第一物理端口以外的其他物理端口。
[0075] 与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备。该电子设备可以用于执行以上方法实施例所述的动作。在该实施例中,电子设备的结构可以如图6所示,包括存储器601以及一个或多个处理器602。
[0076] 存储器601,用于存储处理器602执行的计算机程序。存储器601可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
[0077] 存储器601可以是易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random‑access memory,缩写为RAM);存储器601也可以是非易失性存储器(英文:non‑volatile memory),例如只读存储器,快闪存储器(英文:flash memory),硬盘(英文:
hard disk drive,缩写为HDD)或固态硬盘(英文:solid‑state drive,缩写为SSD)、或者存储器601是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器601可以是上述存储器的组合。
[0078] 处理器602,可以包括一个或多个中央处理单元(英文:central processing unit,缩写为CPU)或者为数字处理单元等。所述处理器602,用于调用存储器601中存储的计算机程序时实现上述方法。
[0079] 本申请实施例中不限定上述存储器601和处理器602之间的具体连接介质。作为一种示例,本申请实施例在图6中以存储器601和处理器602之间通过总线603连接,总线603在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线603可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0080] 可选的,处理器602可用于执行以上由获取模块501、处理模块502中任意一项或多项执行的动作。
[0081] 根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的方法。
[0082] 程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(英文:random access memory,缩写为RAM)、只读存储器(英文:read‑only memory,缩写为ROM)、可擦式可编程只读存储器(可擦编程只读存储器(英文:erasable programmable read only memory,缩写为EPROM)或闪存)、光纤、便携式紧凑盘只读存储器(英文:compact disc read‑only memory,缩写为CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0083] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

当前第1页 第1页 第2页 第3页