CN116527609A - 报文转发方法、装置、智能网卡、服务器和存储介质 - Google Patents

报文转发方法、装置、智能网卡、服务器和存储介质 Download PDF

Info

Publication number
CN116527609A
CN116527609A CN202310552358.4A CN202310552358A CN116527609A CN 116527609 A CN116527609 A CN 116527609A CN 202310552358 A CN202310552358 A CN 202310552358A CN 116527609 A CN116527609 A CN 116527609A
Authority
CN
China
Prior art keywords
forwarding
message
forwarded
target
port
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.)
Pending
Application number
CN202310552358.4A
Other languages
English (en)
Inventor
文浩
李建国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN202310552358.4A priority Critical patent/CN116527609A/zh
Publication of CN116527609A publication Critical patent/CN116527609A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/33Flow control; Congestion control using forward notification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提出一种报文转发方法、装置、智能网卡、服务器和存储介质,虚拟驱动模块获取多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为预设转发标识;不同的预设转发标识对应不同的转发端口;Bond模块根据预设转发标识确定对应的目标转发端口;虚拟交换模块通过目标转发端口转发每个待转发报文。本方案通过预设多队列的方式提高存取报文的效率,同时直接应用多个发送队列的分流结果实现报文转发,Bond模块根据预设转发标识快速选择目标转发端口完成报文转发,避免进一步解析,有效降低智能网卡适配成本和资源消耗。

Description

报文转发方法、装置、智能网卡、服务器和存储介质
技术领域
本发明涉及数据中心及数据通信领域,具体而言,涉及一种报文转发方法、装置、智能网卡、服务器和存储介质。
背景技术
随着数据中心的发展,服务器的CPU计算能力逐渐成为业务处理的瓶颈,故引入智能网卡来释放服务器的算力。随着通信领域的发展,通信数据的吞吐量越来越大,对数据中心服务器可靠性的要求越来越高,故出现了Bond技术,但普通标准网卡Bond技术的实现依然消耗服务器的算力及资源。由此智能网卡实现Bond技术对服务器算力和资源的释放是十分重要的。
在智能网卡技术领域中,智能网卡实现Bond的方式主要是对网卡自身做开发,将软件Bond集成于网卡内部,这需要依赖Bond驱动来实现,并且需要对网卡内部逻辑做较大的开发,例如hash算法、接口聚合等,由此会消耗智能网卡本身较多的资源,也会增加智能网卡的成本。
发明内容
有鉴于此,本发明的目的在于提供一种报文转发方法、装置、智能网卡、服务器和存储介质,通过预设多队列的方式提高存取报文的效率,同时直接应用多个发送队列的分流结果实现报文转发,Bond模块根据预设转发标识快速选择目标转发端口完成报文转发,避免进一步解析,有效降低智能网卡适配成本和资源消耗。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明提供一种报文转发方法,应用于智能网卡,所述智能网卡预先创建多个发送队列,所述发送队列用来存放来自服务器的待转发报文,所述方法包括:
虚拟驱动模块获取所述多个发送队列中的每个待转发报文,并将待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口;
Bond模块根据所述预设转发标识确定对应的目标转发端口;
虚拟交换模块通过所述目标转发端口转发每个所述待转发报文。
在可选的实施方式中,所述虚拟驱动模块获取所述多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识的步骤,包括:
所述虚拟驱动模块将所述多个发送队列中的全部非空发送队列确定为目标发送队列;
所述虚拟驱动模块获取每个所述目标发送队列中的每个待转发报文,并记录每个待转发报文所在目标发送队列的队列标识;
所述虚拟驱动模块根据将每个所述目标发送队列的队列标识与转发端口的数量进行取模运算的结果,分别将每个所述目标发送队列的队列标识转换为对应的预设转发标识。
在可选的实施方式中,所述Bond模块根据所述预设转发标识确定对应的目标转发端口的步骤,包括:
所述Bond模块根据每个预设转发标识与转发端口的一一对应关系,确定出所述预设转发标识对应的目标转发端口;
所述Bond模块将每个待转发报文以及确定出的目标转发端口发送给所述虚拟交换模块。
在可选的实施方式中,所述虚拟交换模块通过所述目标转发端口转发每个所述待转发报文的步骤,包括:
所述虚拟交换模块获取目标转发端口的端口状态;所述目标转发端口的端口状态由所述虚拟交换模块根据周期性查询结果进行更新;
当所述目标转发端口的端口状态为up状态时,将每个所述待转发报文从对应的所述目标转发端口进行发送;
当所述目标转发端口的端口状态为down状态时,重新从其他端口状态为up状态的转发端口选择一个新的目标转发端口,将每个所述待转发报文从对应的所述新的目标转发端口进行发送。
第二方面,本发明提供一种报文转发装置,应用于智能网卡,所述智能网卡预先创建多个发送队列,所述发送队列用来存放来自服务器的待转发报文,所述装置包括:
虚拟驱动模块,用于获取所述多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口;
Bond模块,用于根据所述预设转发标识确定对应的目标转发端口;
虚拟交换模块,用于通过所述目标转发端口转发每个所述待转发报文。
在可选的实施方式中,所述虚拟驱动模块用于将所述多个发送队列中的全部非空发送队列确定为目标发送队列;获取每个所述目标发送队列中的每个待转发报文,并记录每个待转发报文所在目标发送队列的队列标识;根据将每个所述目标发送队列的队列标识与转发端口的数量进行取模运算的结果,分别将每个所述目标发送队列的队列标识转换为对应的预设转发标识。
在可选的实施方式中,所述Bond模块用于根据每个预设转发标识与转发端口的一一对应关系,确定出所述预设转发标识对应的目标转发端口;将每个待转发报文以及确定出的目标转发端口发送给所述虚拟交换模块。
第三方面,本发明提供一种智能网卡,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于在调用所述计算机程序时执行如前述实施方式任一项所述的报文转发方法。
第四方面,本发明提供一种服务器,所述服务器包括总线,所述服务器通过所述总线与如前述实施方式所述的智能网卡连接。
第五方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前述实施方式任一项所述的报文转发方法。
相比现有技术,本发明实施例提供的报文转发方法、装置、智能网卡、服务器和存储介质,在进行报文转发之前,智能网卡上预先创建多个发送队列,发送队列用来存放来自服务器的待转发报文。虚拟驱动模块获取多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口;Bond模块根据预设转发标识确定对应的目标转发端口;虚拟交换模块通过目标转发端口转发每个待转发报文。本方案通过预设多队列的方式提高存取报文的效率,同时直接应用多个发送队列的分流结果实现报文转发的负载均衡,Bond模块根据预设转发标识快速选择目标转发端口完成报文转发,避免Bond模块进一步解析报文实现报文分流,有效降低智能网卡适配成本和资源消耗。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了智能网卡的一种应用场景示意图。
图2示出了本发明实施例提供的智能网卡的一种方框示意。
图3示出了本发明实施例提供的服务器的一种方框示意图。
图4示出了本发明实施例提供的报文转发方法的一种流程示意图。
图5示出了数据中心场景报文转发处理流程的一种示意图。
图6示出了本发明实施例提供的报文转发装置的方框示意图。
图标:10-智能网卡;11-存储器;12-处理器;13-通信模块;20-服务器;21-总线;30-网络设备;200-报文转发装置;201-虚拟驱动模块;202-Bond模块;203-虚拟交换模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
随着通信领域的发展,通信数据的吞吐量越来越大,对数据中心服务器可靠性的要求越来越高。通常情况下,为了有效解决数据传输效率低、可靠性性差的问题,服务器端需要安装Bond驱动程序实现多网卡绑定,通过Bond驱动程序将多块网卡绑定,在Bond驱动程序中实现负载均衡和容错功能,但上述Bond技术在实现负载均衡和容错功能时仍然消耗服务器的算力和资源,无法降低服务器CPU的消耗。
智能网卡是有线网络和计算资源在同一张卡上的融合,智能网卡可以用于加速网络、存储和安全功能。智能网卡具备计算能力,能够卸载服务器上的部分计算功能。比如,在智能网卡上安装Bond驱动程序,实现Bond技术,从而释放服务器的处理能力,使服务器能够专注于更有效地运行核心的应用程序和操作系统。
Bond驱动本身是服务器实现网卡绑定需要依赖的驱动程序,对每一台通用型服务器都是适配的。Bond驱动本身并没有考虑应用在智能网卡上,所以智能网卡若要集成Bond驱动则需要进行适配。不同的智能网卡的硬件设计和软件设计都是不相同的,这种情况下每一款智能网卡集成Bond驱动都需要从头开始做适配分析,可移植性非常差。当Bond驱动集成到智能网卡内部时,通过Bond驱动实现hash算法、接口聚合以及负载均衡等功能,这将消耗智能网卡较多的资源和算力。
显然,现有技术为了实现智能网卡Bond技术,需要针对不同的智能网卡进行适配分析、设计、开发以及验证,这将产生极大的适配工作量,实现难度大且逻辑复杂度高。这种情况下,即使投入大量的人力和物力,也可能存在某个智能网卡无法集成Bond驱动的现象。即便智能网卡能够成功集成Bond驱动,也需要根据报文进行hash计算,再根据计算得到的hash值实现报文转发的负载均衡,这样的Bond转发报文方式会消耗智能网卡较多的资源和算力,同时也会增加智能网卡研发成本。
基于此,本发明实施例提供了一种报文转发方法、装置、智能网卡、服务器和存储介质,通过预设多队列的方式提高存取报文的效率,同时直接应用多个发送队列的分流结果实现报文转发的负载均衡,Bond模块根据预设转发标识快速选择目标转发端口完成报文转发。由于每个预设转发标识已配置对应的转发端口,Bond模块可直接通过待转发报文的预设转发标识选择目标转发端口转发该报文,无需像现有的集成Bond驱动在获得待转发报文之后,对报文进行hash计算实现报文转发的负载均衡,其可以直接利用预设转发标识与转发端口的对应关系选择目标转发端口进行报文转发,从而避免Bond模块进一步解析报文实现报文分流,有效降低智能网卡适配成本和资源消耗。
下面结合附图对本发明的各实施例进行详细说明。
请参照图1,图1示出了智能网卡的一种应用场景示意图。假设智能网卡10已经搭载在服务器20上,通过如PCIE(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)总线与服务器20通信连接,智能网卡10通过网络与网络设备30通信。智能网卡10上预先创建多个发送队列,服务器20将待转发报文分发到智能网卡10的发送队列中,智能网卡10根据本发明实施例提供的报文转发方法实现负载均衡选择目标转发端口,并将待转发报文通过目标转发端口发送给网络设备30。
在图1的基础上,本发明实施例提供了图1中智能网卡10的方框示意图,请参考图2,智能网卡10包括存储器11、处理器12及通信模块13。存储器11、处理器12以及通信模块13各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器11用于存储程序或者数据。存储器11可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
处理器12用于读/写存储器11中存储的数据或程序,并执行相应地功能。例如,当存储器11中存储的计算机程序被处理器12执行时,可以实现上述各实施例所揭示的报文转发方法。
通信模块13用于通过网络建立智能网卡10与其它网络终端之间的通信连接,并用于通过网络收发数据。
应当理解的是,图2所示的结构仅为智能网卡10的结构示意图,智能网卡10还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
在图1的基础上,本发明实施例提供了图3中服务器20的方框示意图,请参照图3,服务器20包括总线21。服务器20通过总线21与智能网卡10连接。
应当理解的是,图3所示的结构仅为服务器20的结构示意图,服务器20还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。
本发明实施例提供的报文转发方法及装置应用于智能网卡,智能网卡上已预先创建多个发送队列。智能网卡向服务器提供接口,每个智能网卡对服务器提供一个接口,因此每个接口具有多个发送队列。当外界设备从服务器上读取数据时,服务器上层应用构造数据报文,服务器根据报文中的目的IP地址确定接口,并通过接口发送报文。服务器通过接口发送报文时,服务器采用hash算法分流报文,将不同数据流的报文分流到不同的发送队列中。
作为一种实施方式,服务器根据报文的五元组或七元组对报文进行hash计算,根据计算得到的hash值将报文存放在对应的发送队列中。具体地,五元组包括报文中的协议号、源IP地址、目的IP地址、源端口号和目的端口号,七元组在五元组的基础上增加源MAC地址和目的MAC地址。
需要说明的是,任何一款通用型服务器的CPU都具备hash计算的能力,并且任何一款通用型服务器在发送报文时都会进行hash处理,本发明借助服务器hash处理的结果实现报文分流,避免智能网卡重新计算hash值实现报文转发的负载均衡,从而减少智能网卡的算力和资源的消耗。
可见,本发明实施例基于服务器对多队列设备发送处理的均衡策略实现报文转发负载均衡,无需修改服务器的任何驱动,无需额外消耗服务器的任何算力及资源,满足服务器使用智能网卡释放资源和算力的初衷。由于直接应用服务器的分流结果实现报文转发负载均衡的效果,避免智能网卡解析报文数据特征再做分流算法,节省智能网卡的资源和算力,具有较高的通用性和业务适应性。
下面针对智能网卡报文转发负载均衡,本发明实施例给出了一种可能的实现方式,智能网卡中的软件模块包括虚拟驱动模块、Bond模块和虚拟交换模块。服务器将待转发报文发送到接口的发送队列后,发送队列中的待转发报文会依次经过虚拟驱动模块、Bond模块和虚拟交换模块进行处理,最终从Bond模块或虚拟交换模块选择的目标转发端口进行转发。其中,虚拟驱动模块和虚拟交换模块是现有软件模块,为了不依赖现有技术中智能网卡集成Bond驱动实现报文转发,本发明在智能网卡的FPGA器件内部新增软件模块,即Bond模块。Bond模块实现待转发报文与转发端口的映射,能够在不解析报文进行hash计算的情况下快速选择出转发报文的首选端口。
可见,本方案给出的报文转发负载均衡的实现方式,无需对智能网卡进行过多开发适配,有效降低智能网卡的设计成本,具有更高的简化性。
请参照图4,图4示出了本发明实施例提供的报文转发的一种流程示意图,该流程的执行主体可以为前文所述的智能网卡,该方法包括以下步骤:
步骤S101,虚拟驱动模块获取多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口。
在本发明实施例中,虚拟驱动模块是由Virtio驱动提供的软件模块,Virtio驱动包括Virtio-net、Virtio-blk和Virtio-pci三个部分,虚拟驱动模块用于智能网卡与服务器之间通过Virtio-net驱动进行交互。为了节省智能网卡的资源,虚拟驱动模块将队列标识转换为占用空间较小的转发标识。
虚拟驱动模块在处理接口发送队列中的待转发报文时,首先依次获取多个发送队列中的待转发报文,并记录待转发报文所在的发送队列的队列标识;为了减少智能网卡的资源消耗,虚拟驱动模块将待转发报文所在的发送队列对应的队列标识转换为对应的预设转发标识,预设转发标识所占用的存储空间小于队列标识;最后将待转发报文和对应的预设转发标识传给Bond模块,每个预设转发标识对应一个转发端口,待转发报文通过与预设转发标识对应的转发端口进行转发。
在一种实施方式中,假设发送队列标识使用ID唯一标识发送队列,其队列ID是32位无符号整数。为节省智能网卡的资源消耗,将队列ID转换为转发标识,其转发标识是1位无符号整数,取值分别为0和1。例如采用奇偶方式将队列标识转换为转发标识,队列0转换后的转发标识为0,队列1转换后的转发标识为1,队列2转换后的转发标识为0,队列3转换后的转发标识为1,依次类推,将所有偶数队列标识都转换为0,所有奇数队列标识都转换为1,由此实现从队列标识到转发标识的转换。
步骤S102,Bond模块根据预设转发标识确定对应的目标转发端口。
在本发明实施例中,由智能网卡配置的物理网络端口构成报文的转发端口,为了快速实现转发端口业务流量的负载均衡,一个预设转发标识设置一个与之对应的转发端口。Bond模块主要用于确定待转发报文的目标转发端口,Bond模块识别虚拟驱动模块传过来的预设转发标识,根据预设转发标识确定对应的目标转发端口。
最后将目标转发端口和对应的待转发报文传给虚拟交换模块,以使目标转发端口成为转发目标报文的首选端口。
步骤S103,虚拟交换模块通过目标转发端口转发每个待转发报文。
在本发明实施例中,虚拟交换模块是智能网卡的FPGA器件内部的一个软件模块,主要负责检测和维护转发端口的状态,同时用于接收Bond模块发送的待转发报文和对应的目标转发端口,并将目标转发端口作为首选端口转发待转发报文。
综上所述,本发明实施例提供的报文转发方法,在进行报文转发之前,智能网卡上预先创建多个发送队列,发送队列用来存放来自服务器的待转发报文。虚拟驱动模块获取多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为预设转发标识;不同的预设转发标识对应不同的转发端口;Bond模块根据预设转发标识确定对应的目标转发端口;虚拟交换模块通过目标转发端口转发每个待转发报文。本方案通过预设多队列的方式提高存取报文的效率,同时直接应用多个发送队列的分流结果实现报文转发,Bond模块根据预设转发标识快速选择目标转发端口完成报文转发,避免进一步解析,有效降低智能网卡适配成本和资源消耗。
可选地,在实际应用中,为了提高转发报文的效率,可以通过多线程并发的方式获取待转发报文。图4中步骤S101的子步骤,可以包括:
虚拟驱动模块将多个发送队列中的全部非空发送队列确定为目标发送队列;虚拟驱动模块获取每个目标发送队列中的每个待转发报文,并记录每个待转发报文所在目标发送队列的队列标识;虚拟驱动模块根据将每个目标发送队列的队列标识与转发端口的数量进行取模运算的结果,分别将每个目标发送队列的队列标识转换为对应的预设转发标识。
在本发明实施例中,虚拟驱动模块调用FPGA接口分别查询每个发送队列中已存放的待转发报文的数量,当发送队列中已存放的待转发报文的数量大于0时,则说明该发送队列非空。
虚拟驱动模块获取全部非空发送队列,将其作为目标发送队列。并发获取每个目标发送队列中每个待转发报文,并记录每个待转发报文所在目标发送队列的队列标识,同时对每个待转发报文所在目标发送队列的队列标识和转发端口的数量进行取模运算,最后根据取模运算的结果分别将每个目标发送队列的队列标识转换为对应预设转发标识。
作为一种实施方式,假设智能网卡预先创建4个发送队列,每个发送队列中都已存放来自服务器的待转发报文,即虚拟驱动模块确定4个目标发送队列,4个目标发送队列的队列标识分别为0、1、2和3。智能网卡有2个转发端口,分别使用队列标识对2进行取模运算的,得到每个队列标识对应的预设转发标识,如表1所示。
表1
队列标识 预设转发标识
0 0
1 1
2 0
3 1
可选地,在实际应用中,为了快速实现报文转发的负载均衡,直接根据预设转发标识确定待转发报文的转发端口。图4中步骤S102的子步骤,可以包括:
Bond模块根据每个预设转发标识与转发端口的一一对应关系,确定出预设转发标识对应的目标转发端口;Bond模块将每个待转发报文以及确定出的目标转发端口发送给虚拟交换模块。
在本发明实施例中,Bond模块记录着预设转发标识和转发端口的一一对应关系,根据待转发报文的预设转发标识能够获得待转发报文的目标转发端口。Bond模块主要负责快速确定目标转发端口,并将待转发报文和对应的目标转发端口发送给虚拟交换模块。
在一种实施方式中,假设智能网卡有2个转发端口,分别为以太口Eth0和Eth1。Bond模块的对应关系中记录预设转发标识0对应转发端口Eth0,预设转发标识1对应转发端口Eth1,如表2所示。当预设转发标识为0时,Bond模块选择Eth0作为对应的待转发报文的目标转发端口;当预设转发标识为1时,Bond模块选择Eth1作为对应的待转发报文的目标转发端口,并将选择结果传给虚拟交换模块进行报文转发。这种情况下,预设转发标识和转发端口一一对应,同时待转发报文由服务器根据hash算法打散到不同的发送队列中,此时根据队列标识转换得到的预设转发标识通常情况下都是均衡的,因此能够实现转发端口所承载业务的负载均衡。
表2
预设转发标识 转发端口
0 Eth0
1 Eth1
需要说明的是,假设表2中以太口Eth0不参与转发报文,预设转发标识0和预设转发标识1对应的目标转发端口则在参与转发报文的转发端口中选择,即将以太口Eth1作为全部待转发报文的目标转发端口。
当任一个预设转发标识对应的转发端口无法参与转发报文,且存在多个参与转发报文的转发端口的情况下,为了进一步实现Bond负载均衡,可以采用轮询的方式在转发端口中选择一个端口作为该预设转发标识的目标转发端口。假设当前参与转发报文的转发端口ID为1-3,未参与转发报文的转发端口ID为0,预设转发标识0对应的转发端口为0,此时ID为0的转发端口不参与转发报文,则从ID为1-3的三个转发端口中确定预设转发标识0对应的目标转发端口。若上一次轮询的目标转发端口是ID为1的转发端口,则本次报文转发则选择ID为2的转发端口作为预设转发标识0对应的目标转发端口,并使用本次选择的目标转发端口更新轮询的目标转发端口。
可选地,在实际应用中,为了提高报文转发的可靠性和传输效率,避免因端口状态异常导致报文丢失或转发失败,虚拟交换模块周期性更新参与报文转发的转发端口。虚拟交换模块通过目标转发端口转发每个待转发报文的步骤,包括:
虚拟交换模块获取目标转发端口的端口状态;目标转发端口的端口状态由虚拟交换模块根据周期性查询结果进行更新。
当目标转发端口的端口状态为up状态时,将每个待转发报文从对应的目标转发端口进行发送;当目标转发端口的端口状态为down状态时,重新从其他端口状态为up状态的转发端口选择一个新的目标转发端口,将每个待转发报文从对应的新的目标转发端口进行发送。
在本发明实施例中,虚拟交换模块周期性获取智能网卡全部物理网络端口的端口状态,即转发端口的端口状态,并根据周期性查询结果更新内存中记录的每个转发端口的端口状态,同时根据每个转发端口的链路状态更新Bond模块记录的参与报文转发的转发端口信息。比如周期为1微秒,查询间隔周期较短时,相当于实时获取转发端口的端口状态,能够精准掌握转发端口的工作状态,便于从优选择目标转发端口发送报文。端口状态为up状态表示转发端口处于正常状态,具备报文转发能力,参与发送待转发报文;端口状态为down状态表示转发端口处于异常状态,目前不具备报文转发能力,不参与发送待转发报文。
需要说明的是,转发端口的链路状态随时可能发生变化,为了进一步提高报文转发的可靠性,虚拟交换模块转发报文时再次检查目标转发端口的端口状态。当目标转发端口的端口状态为up状态时,从目标转发端口发送对应的待转发报文;当目标转发端口的端口状态为down状态时,重新从其他端口状态为up状态的转发端口中选择新的目标转发端口发送对应的待转发报文。
为了更清楚说明本发明实施例提供报文转发方法,结合数据中心场景进行示例性说明。
作为一种实施方式,以图5为例,数据中心服务器搭载智能网卡释放服务器CPU的算力和资源,并要求智能网卡以太口配置Bond与交换机链路汇聚口直连,由此与外界设备进行数据交互以满足可靠性要求。
当外部设备从数据中心服务器读写数据时,服务器上层应用构造待转发报文发送给接口,服务器的CPU通过hash算法根据五元组将不同的待转发报文分发到不同的发送队列中。报文的五元组有任何一元组不同都会hash到不同的发送队列,有多元组不同时也可能hash到相同的发送队列。
图5中队列1至队列N都可能存在待转发报文,智能网卡直接应用服务器的分流结果,不再解析报文数据特征做分流。此时虚拟驱动模块并发获取每一个待转发报文,并识别每个待转发报文所在发送队列的队列标识(如队列ID),然后将每个待转发报文所在发送队列的队列标识转换为预设转发标识,最后将待转发报文和对应的预设转发标识传给Bond模块。
Bond模块根据预设转发标识(如0或者1)确定对应的目标转发端口,即Bond模块选择的待转发报文的转发端口。例如,表2中记录预设转发标识为0的待转发报文选择从Eth0进行转发,预设转发标识为1的待转发报文选择从Eth1进行转发。假设待转发报文的预设转发标识为0,根据表1可以确定目标转发端口为Eth0,Bond模块将待转发报文和对应的目标转发端口传给虚拟交换模块。
虚拟交换模块获取Bond模块选择的目标转发端口的端口状态,若目标转发端口的状态正常(如端口状态为up状态)时,则按照Bond模块选择的目标转发端口(如Eth0)发送对应的待转发报文;若目标转发端口的状态异常(如端口状态为down状态)时,虚拟交换模块重新选择状态正常(如端口状态为up状态)的转发端口转发报文,从而实现智能网卡Bond技术负载均衡,并提高负载链路的可靠性和传输带宽。
基于同一发明构思,本发明实施例还提供了一种报文转发装置。其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。请参照图6,图6示出了本发明实施例提供的报文转发装置200的方框示意图。报文转发装置200应用于智能网卡,智能网卡预先创建多个发送队列,发送队列用来存放待转发报文。报文转发装置200包括虚拟驱动模块201、Bond模块202和虚拟交换模块203。
虚拟驱动模块201,用于获取多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口。
Bond模块202,用于根据预设转发标识确定对应的目标转发端口。
虚拟交换模块203,用于通过目标转发端口转发每个待转发报文。
综上所述,本发明实施例提供的报文转发装置,在进行报文转发之前,智能网卡上预先创建多个发送队列,发送队列用来存放来自服务器的待转发报文。虚拟驱动模块用于获取多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口;Bond模块用于根据预设转发标识确定目标转发端口;虚拟交换模块用于通过目标转发端口转发每个待转发报文。本方案通过预设多队列的方式提高存取报文的效率,同时直接应用多个发送队列的分流结果实现报文转发,Bond模块根据预设转发标识快速选择目标转发端口完成报文转发,避免进一步解析,有效降低智能网卡适配成本和资源消耗。
可选地,虚拟驱动模块201,具体用于将多个发送队列中的全部非空发送队列确定为目标发送队列,发获取每个目标发送队列中的每个待转发报文,并记录待转发报文所在目标发送队列的队列标识;根据将每个目标发送队列的队列标识与转发端口的数量进行取模运算的结果,分别将每个目标发送队列的队列标识转换为对应的预设转发标识。
可选地,Bond模块202,具体用于根据每个预设转发标识与转发端口的一一对应关系,确定出预设转发标识对应的目标转发端口;将每个待转发报文以及确定出的目标转发端口发送给虚拟交换模块。
可选地,虚拟交换模块203,具体用于获取目标转发端口的端口状态;目标转发端口的端口状态由虚拟交换模块根据周期性查询结果进行更新;当目标转发端口的端口状态为up状态时,将每个待转发报文从对应的目标转发端口进行发送;当目标转发端口的端口状态为down状态时,重新从其他端口状态为up状态的转发端口选择一个新的目标转发端口,将每个待转发报文从对应的新的目标转发端口进行发送。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被第一处理器12执行时实现上述各实施例所揭示的报文转发方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种报文转发方法,其特征在于,应用于智能网卡,所述智能网卡预先创建多个发送队列,所述发送队列用来存放来自服务器的待转发报文,所述方法包括:
虚拟驱动模块获取所述多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口;
Bond模块根据所述预设转发标识确定对应的目标转发端口;
虚拟交换模块通过所述目标转发端口转发每个所述待转发报文。
2.根据权利要求1所述的报文转发方法,其特征在于,所述虚拟驱动模块获取所述多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识的步骤,包括:
所述虚拟驱动模块将所述多个发送队列中的全部非空发送队列确定为目标发送队列;
所述虚拟驱动模块获取每个所述目标发送队列中的每个待转发报文,并记录每个待转发报文所在目标发送队列的队列标识;
所述虚拟驱动模块根据将每个所述目标发送队列的队列标识与转发端口的数量进行取模运算的结果,分别将每个所述目标发送队列的队列标识转换为对应的预设转发标识。
3.根据权利要求1所述的报文转发方法,其特征在于,所述Bond模块根据所述预设转发标识确定对应的目标转发端口的步骤,包括:
所述Bond模块根据每个预设转发标识与转发端口的一一对应关系,确定出所述预设转发标识对应的目标转发端口;
所述Bond模块将每个待转发报文以及确定出的目标转发端口发送给所述虚拟交换模块。
4.根据权利要求1所述的报文转发方法,其特征在于,所述虚拟交换模块通过所述目标转发端口转发每个所述待转发报文的步骤,包括:
所述虚拟交换模块获取目标转发端口的端口状态;所述目标转发端口的端口状态由所述虚拟交换模块根据周期性查询结果进行更新;
当所述目标转发端口的端口状态为up状态时,将每个所述待转发报文从对应的所述目标转发端口进行发送;
当所述目标转发端口的端口状态为down状态时,重新从其他端口状态为up状态的转发端口选择一个新的目标转发端口,将每个所述待转发报文从对应的所述新的目标转发端口进行发送。
5.一种报文转发装置,其特征在于,应用于智能网卡,所述智能网卡预先创建多个发送队列,所述发送队列用来存放来自服务器的待转发报文,所述装置包括:
虚拟驱动模块,用于获取所述多个发送队列中的每个待转发报文,并将每个待转发报文所在的发送队列的队列标识转换为对应的预设转发标识;不同的预设转发标识对应不同的转发端口;
Bond模块,用于根据所述预设转发标识确定对应的目标转发端口;
虚拟交换模块,用于通过所述目标转发端口转发每个所述待转发报文。
6.根据权利要求5所述的报文转发装置,其特征在于,所述虚拟驱动模块用于将所述多个发送队列中的全部非空发送队列确定为目标发送队列;获取每个所述目标发送队列中的每个待转发报文,并记录每个待转发报文所在目标发送队列的队列标识;根据将每个所述目标发送队列的队列标识与转发端口的数量进行取模运算的结果,分别将每个所述目标发送队列的队列标识转换为对应的预设转发标识。
7.根据权利要求5所述的报文转发装置,其特征在于,所述Bond模块用于根据每个预设转发标识与转发端口的一一对应关系,确定出所述预设转发标识对应的目标转发端口;将每个待转发报文以及确定出的目标转发端口发送给所述虚拟交换模块。
8.一种智能网卡,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于在调用所述计算机程序时执行如权利要求1-4任一项所述的报文转发方法。
9.一种服务器,其特征在于,所述服务器包括总线,所述服务器通过所述总线与如权利要求8所述的智能网卡连接。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-4任一项所述的报文转发方法。
CN202310552358.4A 2023-05-16 2023-05-16 报文转发方法、装置、智能网卡、服务器和存储介质 Pending CN116527609A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310552358.4A CN116527609A (zh) 2023-05-16 2023-05-16 报文转发方法、装置、智能网卡、服务器和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310552358.4A CN116527609A (zh) 2023-05-16 2023-05-16 报文转发方法、装置、智能网卡、服务器和存储介质

Publications (1)

Publication Number Publication Date
CN116527609A true CN116527609A (zh) 2023-08-01

Family

ID=87399293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310552358.4A Pending CN116527609A (zh) 2023-05-16 2023-05-16 报文转发方法、装置、智能网卡、服务器和存储介质

Country Status (1)

Country Link
CN (1) CN116527609A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117749739A (zh) * 2024-02-18 2024-03-22 北京火山引擎科技有限公司 数据发送方法、数据接收方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117749739A (zh) * 2024-02-18 2024-03-22 北京火山引擎科技有限公司 数据发送方法、数据接收方法、装置、设备及存储介质
CN117749739B (zh) * 2024-02-18 2024-06-04 北京火山引擎科技有限公司 数据发送方法、数据接收方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN105989539B (zh) 一种金融交易行情获取系统以及获取方法
US20160212696A1 (en) Data Packet Processing Method, Network Traffic Management Method, Apparatus, and System
CN102148768B (zh) 报文转发方法和报文转发设备
US20170339030A1 (en) Traffic Statistic Generation For Datacenters
CN112291293B (zh) 任务处理方法、相关设备及计算机存储介质
CN111200830B (zh) 数据传输方法及装置、电子设备
CN111726293B (zh) 一种报文传输方法及装置
CN104468401A (zh) 一种报文处理方法和装置
CN116527609A (zh) 报文转发方法、装置、智能网卡、服务器和存储介质
CN112565341A (zh) 诊断路由的方法、装置、系统、设备和存储介质
EP3489836B1 (en) Data processing method and system, peripheral component interconnect express device and host
CN113472624A (zh) 一种基于vDPA实现虚拟网络数据包转发的方法及应用
CN107645540A (zh) web应用系统的负载均衡方法
CN103986585A (zh) 报文预处理方法及其装置
CN102870381B (zh) 一种pcie交换系统、装置及交换方法
EP3691210A1 (en) Flexible ethernet message forwarding method and apparatus
US8533360B2 (en) Method and apparatus to report resource values in a mobile network
CN117793007A (zh) 拥塞控制方法及网络设备
WO2017165999A1 (zh) 网络服务实现方法、服务控制器及通信系统
CN105933183A (zh) 基于potn的流量控制优化方法
US20220278912A1 (en) Data Obtaining Method and Apparatus
CN111064768A (zh) 打印机数据传输控制方法、装置、设备及存储介质
WO2023133697A1 (zh) 丢包处理方法、装置、交换机、发送设备和数据传输系统
CN114143320A (zh) 一种基于分布式数据库的数据网关方法及系统
US8225004B1 (en) Method and system for processing network and storage data

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