CN112965824A - 报文的转发方法及装置、存储介质、电子设备 - Google Patents

报文的转发方法及装置、存储介质、电子设备 Download PDF

Info

Publication number
CN112965824A
CN112965824A CN202110351749.0A CN202110351749A CN112965824A CN 112965824 A CN112965824 A CN 112965824A CN 202110351749 A CN202110351749 A CN 202110351749A CN 112965824 A CN112965824 A CN 112965824A
Authority
CN
China
Prior art keywords
message
processing thread
thread
data flow
forwarding
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
Application number
CN202110351749.0A
Other languages
English (en)
Other versions
CN112965824B (zh
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.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network 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 Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202110351749.0A priority Critical patent/CN112965824B/zh
Publication of CN112965824A publication Critical patent/CN112965824A/zh
Application granted granted Critical
Publication of CN112965824B publication Critical patent/CN112965824B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种报文的转发方法及装置、存储介质、电子设备,属于通信领域。其中,该方法包括:接收待转发的报文;解析所述报文的数据流向;若所述数据流向为流出方向,通过对所述报文所包含的元信息进行哈希计算,以确定所述报文的处理线程;若所述数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个所述处理线程绑定一个处理器核心;在所述处理线程上采用预设会话表转发所述报文。通过本发明,解决了相关技术的多核CPU转发报文的效率低的技术问题,提高了报文的转发速度和处理效率。

Description

报文的转发方法及装置、存储介质、电子设备
技术领域
本发明涉及通信领域,具体而言,涉及一种报文的转发方法及装置、存储介质、电子设备。
背景技术
相关技术中,随着服务器级处理器(CPU)的发展,利用多核平台CPU做软件网关转发已成为云计算业界普遍标准。软件转发具有开发周期快、业务处理灵活以及高性能等优势。而如何将业务流量均匀分配至各个CPU核心则成为了充分利用服务器硬件性能的关键技术实现。
相关技术中,NAT(Network Address Translation,网络地址转换)网关是云计算中一项关键技术,当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信时,可使用NAT方法,在专用网(私网IP)连接到因特网(公网IP)的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器或NAT网关,它至少有一个有效的外部全球IP地址(公网IP地址)。这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。此外,通过NAT网关,将专用网内多用户overlay网络流量映射为underlay流量与公网进行通信。NAT网关通常以集群方式部署,而对于负载到某一台NAT上的双向流量,相关技术将所有的会话表存储在CPU的内存上,CPU的所有核心都可以访问,随机选择一个线程来实现路由转换和流量转发,且不能将同一路由链路的双向报文分发到同一个处理线程,各个线程之间需要相互调用会话表,容易触发CPU多核间访问的读写锁机制,增加鉴权时间,降低处理效率,而且多核心的CPU资源得不到充分利用,多核心之间负载不均衡。
针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
发明内容
本发明实施例提供了一种报文的转发方法及装置、存储介质、电子设备。
根据本发明实施例的一个方面,提供了一种报文的转发方法,包括:接收待转发的报文;解析所述报文的数据流向;若所述数据流向为流出方向,通过对所述报文所包含的元信息进行哈希计算,以确定所述报文的处理线程;若所述数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个所述处理线程绑定一个处理器核心;在所述处理线程上采用预设会话表转发所述报文。
进一步,所述通过对所述报文所包含的元信息进行哈希计算,以确定所述报文的处理线程,包括:提取所述报文的六元组信息,其中,所述六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;以所述六元组信息为哈希因子计算哈希值;基于所述哈希值确定所述报文的处理线程。
进一步,所述基于所述哈希值确定所述报文的处理线程,包括:以所述哈希值为索引根据预设映射表在线程集合中查找与所述哈希值匹配的处理线程,其中,所述预设映射表包括所述哈希值与所述处理线程的映射关系。
进一步,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,包括:提取所述报文中的目的端口编号,并获取报文转发装置的处理器的总线程数;根据所述目的端口编号与所述总线程数的映射关系查找该报文所在数据流在流出方向上对应的处理线程。
进一步,所述报文转发装置的处理线程与端口满足以下关系:Pi={x|x=i+m*N,m∈自然数,1024≤x≤65535};其中,Pi为处理线程i对应的端口编号集合,x为端口编号,i为处理线程的编号,N为总线程数;所述根据所述目的端口编号与所述总线程数的映射关系查找该报文所在数据流在流出方向上对应的处理线程,包括:采用以下映射关系查找报文所在数据流在流出方向上对应的处理线程:线程编号=W%N,其中,N为总线程数,W为目的端口编号。
进一步,所述在所述处理线程上采用预设会话表转发所述报文,包括:将所述报文分流至所述处理线程;在所述处理线程上提取所述报文中的原始元信息;在所述处理线程的内存区域中查找与所述原始元信息匹配的预设会话表;基于所述预设会话表将所述原始元信息转换为目标元信息;采用所述目标元信息转发所述报文。
进一步,在所述处理线程上采用预设会话表转发所述报文之前,所述方法还包括:在所述报文为初始报文的情况下,提取所述初始报文的六元组信息,其中,所述六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;以所述六元组信息为哈希因子计算哈希值,并基于所述哈希值分配处理线程;在所述处理线程的内存区域中创建初始报文对应的数据流的会话表,以作为所述预设会话表。
根据本发明实施例的另一个方面,提供了一种报文的转发装置,包括:第一接收模块,用于接收待转发的报文;解析模块,用于解析所述报文的数据流向;查找模块,用于若所述数据流向为流出方向,通过对所述报文所包含的元信息进行哈希计算,以确定所述报文的处理线程;若所述数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个所述处理线程绑定一个处理器核心;转发模块,用于在所述处理线程上采用预设会话表转发所述报文。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本发明实施例的另一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。
在本发明实施例中,通过接收待转发的报文,解析报文的数据流向,若数据流向为流出方向,通过对报文所包含的元信息进行哈希计算,以确定报文的处理线程;若数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,在处理线程上采用预设会话表转发报文。如此,既实现了不同处理线程之间的负载均衡,又实现了同一数据流(即路由链路)的双向报文的同流同核,避免了CPU多核间访问的读写锁机制,从而保证网关高性能转发,解决了相关技术的多核CPU转发报文的效率低的技术问题,提高了报文的转发速度和处理效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种网关服务器的硬件结构框图;
图2是根据本发明实施例的一种报文的转发方法的流程图;
图3是本发明实施例的基于多核平台的NAT网关流水线架构示意图;
图4是本发明实施例中会话表的示意图;
图5是本发明实施例NAT出方向原始数据包的结构示意图;
图6是本发明实施例NAT出方向转换后数据包的结构示意图;
图7是根据本发明实施例的一种报文的转发装置的结构框图;
图8是实施本发明实施例的一种电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本发明实施例一所提供的方法实施例可以在网关服务器(如NAT网关)、路由器、交换机或者类似的报文转发装置中执行。以运行在网关服务器上为例,图1是本发明实施例的一种网关服务器的硬件结构框图。如图1所示,网关服务器可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述网关服务器还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述网关服务器的结构造成限定。例如,网关服务器还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储网关服务器程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种报文的转发方法对应的网关服务器程序,处理器102通过运行存储在存储器104内的网关服务器程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至网关服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括网关服务器的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种报文的转发方法,图2是根据本发明实施例的一种报文的转发方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,接收待转发的报文;
本实施例的报文来自专用网内的设备或因特网的设备,用于在专用网和因特网之间传输数据。报文包括元信息和数据载荷,可选的,元信息包括源IP地址,目的IP地址等,其中,从专用网内发出的报文的源IP地址为私网IP,需要将其转换为公网IP后,才能转发到因特网的目标设备,对应的从因特网发来的报文的目的IP地址为公网IP,需要转换为私网IP后,才能转发到专用网的目标设备。
步骤S204,解析报文的数据流向;
可选的,可以通过报文中源IP地址或目的IP地址来解析,若源IP地址为私网IP,则是流出方向(从专用网到因特网),若源IP地址为公网IP,则是流入方向(从因特网到专用网),此外,也可以根据目的IP来解析流量方向。
步骤S206,若数据流向为流出方向,通过对报文所包含的元信息进行哈希计算,以确定报文的处理线程;若数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个处理线程绑定一个处理器核心;
为加速CPU访问会话信息速度,可以将会话表存储在每个处理器(例如CPU)核心的独立内存空间,通过这样的设计可以避免多核间访问的读写锁机制从而保证软件高性能转发处理。这就需要将同一条数据流(即路由链路)的双向报文映射至同一处理器核心进行处理,由于不同流向的报文携带的元信息不同,可用的哈希因子不同,采用同样的哈希方式不能将不同流向的报文映射到同一条处理线程。因此,对于一条数据流,对流出方向的报文采用哈希计算来分配处理线程,可以实现各个线程之间的负载均衡,对流入方向的报文通过目的端口查找与流出方向的报文相同的处理线程,可以将同一数据流不同流向的报文映射到同一条处理线程,进而实现同流同核。
步骤S208,在处理线程上采用预设会话表转发报文。
如此,通过接收待转发的报文,解析报文的数据流向,若数据流向为流出方向,通过对报文所包含的元信息进行哈希计算,以确定报文的处理线程;若数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,在处理线程上采用预设会话表转发报文。既实现了不同处理线程之间的负载均衡,又实现了同一数据流(即路由链路)的双向报文的同流同核,避免了CPU多核间访问的读写锁机制,从而保证网关高性能转发,解决了相关技术的多核CPU转发报文的效率低的技术问题,提高了报文的转发速度和处理效率。
实施例在此对流入方向和流出方向采用的线程查找策略分别进行说明:在本实施例中,在分流线程采取不同的哈希策略(对于出向报文使用例如六元组作为哈希因子,通过哈希计算分配处理线程;对于入向报文使用目的端口与处理线程的映射关系确定与出向报文相同的处理线程)。使得在保证同流同核处理的同时,最大限度的保证处理线程间的负载均衡,充分利用了服务器计算资源、内存资源及网络资源。
在一个实施场景中,若数据流向为流出方向,通过对报文所包含的元信息进行哈希计算,以确定报文的处理线程,包括:提取报文的六元组信息,其中,六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;以六元组信息为哈希因子计算哈希值;基于哈希值确定报文的处理线程。其中,用户虚拟网络标识可以例如为VNI(VXLAN Network Identifier,VXLAN标识)。通过采用六元组作为哈希因子,增加了用户虚拟网络标识的维度,调高了哈希值的随机性,可以提高负载均衡程度。
在该实施场景的一个实施方式中,基于哈希值确定报文的处理线程包括:以哈希值为索引根据预设映射表在线程集合中查找与哈希值匹配的处理线程,其中,预设映射表包括哈希值与处理线程的映射关系。
在另一个实施场景中,若数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,包括:提取报文中的目的端口编号,并获取报文转发装置的处理器的总线程数;根据目的端口编号与总线程数的映射关系查找该报文所在数据流在流出方向上对应的处理线程。
在一个完整的转发流程中,流量A1(从内网设备1到外网设备2)在流出时,通过哈希计算得到的处理线程为线程A,线程A绑定的可用端口为端口B(线程A绑定的可用端口可以是一个或者多个,线程A的每个可用端口唯一映射线程A),线程A为流量A1分配绑定的端口B来向外转发报文,流量A2(从外网设备2到内网设备1)在流入时,元信息中携带了端口B的端口编号等标识信息,由于端口B与线程A具有绑定关系,因此可以将该流入的流量A2基于端口B查找到线程A,从而实现同流同核。
在一个示例中,报文转发装置的处理线程与端口满足以下关系:Pi={x|x=i+m*N,m∈自然数,1024≤x≤65535};其中,Pi为处理线程i对应的端口编号集合,x为端口编号,i为处理线程的编号,N为总线程数;根据目的端口编号与总线程数的映射关系查找该报文所在数据流在流出方向上对应的处理线程,包括:采用以下映射关系查找报文所在数据流在流出方向上对应的处理线程:线程编号=W%N,其中,N为总线程数,W为目的端口编号。可以理解的是,目的端口编号为该数据流的报文在出向时报文转发装置为其分配的端口编号。公式中%为求余符号,例如,W为12,N为5,则线程编号为2。采用本实施例的方式,在分配入向报文的处理线程时,无需查表,提高了入向报文的转发效率,并且入向报文分配的处理线程和出向报文的处理线程相同,实现同流同核处理。
图3是本发明实施例的基于多核平台的NAT网关流水线架构示意图,以报文转发装置为NAT网关为例进行说明,NAT采用两级流水线架构设计,其中分流线程对进入NAT的报文进行分发处理,将数据包传递至处理线程进行数据包处理后,由处理线程将数据包从网卡发出。处理线程对于每一条数据流(即路由链路)需保存其关键信息作为会话表,用于该流生命周期内出入向报文的包转换过程。出入方向的数据包分别通过不同映射方式查找到该会话表。在本实施例中,为了实现数据包的高性能处理,可以将会话表设计为每个处理线程间私有且隔离,对于同一条数据流的出入向报文,需由分流线程传递到同一处理线程处理。
在本实施例的一个实施方式中,在处理线程上采用预设会话表转发报文包括:将报文分流至处理线程;在处理线程上提取报文中的原始元信息(原始元信息即报文转发装置未对报文进行处理前,报文中携带的元信息);在处理线程的内存区域中查找与原始元信息匹配的预设会话表;基于预设会话表将原始元信息转换为目标元信息;采用目标元信息转发报文。
图4是本发明实施例中会话表的示意图,包括出向报文与入向报文之间的路由映射表。图5是本发明实施例NAT出方向原始数据包的结构示意图,图6是本发明实施例NAT出方向转换后数据包的结构示意图,以vxlan报文为例进行说明(报文可以采用vxlan、ipip、gre等隧道封装方式,本实施例以vxlan为例进行说明),相较于原始数据包,将宿主机IP映射为用户NAT IP,用户主机端口映射为用户NAT端口。
在本发明一个实施例中,如图4-图6所示,对于出向报文,可以在分流层通过软件进行内层六元组哈希计算,以该入向报文的用户VNI、内层源IP地址、内层目的IP地址、内层源端口、内层目的端口、内层IP协议号(例如,TCP或UDP)作为哈希因子,向处理层进行报文分发,由于内层五元组为任意用户云主机访问任意外网目的地址,故组合值具有极大随机性。在公有云高密度等流量模型中,能够保证哈希至处理层时分发均匀,实现了报文在处理线程上的均衡分配,保证了最大限度的负载均衡。
处理层由分布在多核平台上的多个软件处理线程(编号1,2,…,i,…n)组成,每个处理线程与其所在CPU核心一一绑定,互不侵扰。对于每个处理线程i,为其划分一端口组集合Pi={x|x=i+m*N,m∈自然数,1024≤x≤65535}。对于任意用户在natpool(即NAT池)中配置的natport使用段[PORTstart,PORTend],其每个natport(即NAT端口)可用值以周期性连续分布在所有处理线程的端口组集合中,当某一新数据流经由分流层分流至处理线程i时,处理线程i需为该数据流分配新的可用natport用于与外网通信。对于处理线程i,其可用natport集合则为处理线程i自身的端口组集合与该数据流所属用户自定义的[PORTstart,PORTend]端口组集合的交集。除使用端口多路复用(PortaddressTranslation,PAT)作为NAT的实现方式,将NAT端口作为负载均衡外,还可以采用动态转换的NAT的实现方式,可通过将NAT IP拆分至各个处理线程,线程间NAT IP独立,从而实现同流同核。而在一些NAT实际场景中,用户配置NAT IP较少(通常为个位数),以此方式实现便不能很好的将同一用户流量均衡到各个处理线程,从而造成处理线程间负载不均衡,因此在NAT IP的数量少于核心数时,可以选择端口多路复用的实现方式,而在NAT IP的数量大于或等于核心数时,可以在两中实现方式中择一使用。
表1是CPU核心(每个核心对应一个处理线程)与可用端口集合的映射表:
表1
可用端口集合
核1 {1,n+1,2n+1,…,}
核2 {2,n+2,2n+2,…,}
核n {n,2n,3n,…,}
在处理线程为该路由链路新分natport之后,该处理线程还会在该线程内存区域中存储针对该数据流的会话表。该会话表内存的索引只能由对应的创建线程访问。通过此机制保证了各个处理线程间会话表缓存的隔离,避免了处理线程间锁的开销、缓存的失效以及内存的远程访问等低效手段,从而提高了NAT网关针对报文的高性能转发处理。
对于入向报文(即公网侧返回报文),其目的端口为出向时NAT网关为其所在数据流所分配的natport,记为W。分流层根据其目的端口W分流至与出向同一处理线程处理。其分发方法为:分发目的线程编号=W%N,N为总处理线程数,通过取余,将余数作为哈希值,该哈希值与线程编号相同,对于同一条数据流,出入向落在同一处理线程处理才可保证其会话表可在该处理线程内存区域内找到并处理。
在初始创建路由链路时,还需要在处理线程绑定的内存区域中创建会话表,并保存,以此作为一个会话周期的预设会话表,后续再在该路由链路上传输报文时,基于预设会话表进行元信息转换。在处理线程上采用预设会话表转发报文之前,还包括:接收待转发的初始报文,在报文为初始报文的情况下,提取初始报文的六元组信息,其中,六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;以六元组信息为哈希因子计算哈希值,并基于哈希值分配处理线程;在处理线程的内存区域中创建初始报文对应的数据流的会话表,以作为预设会话表。通过在线程的内存区域中存储该线程的会话表,避免多核间访问的读写锁机制从而保证软件高性能转发处理。
由于六元组信息中的内层五元组(用户虚拟网络标识、源IP地址、目的IP地址、源端口和目的端口)为任意用户云主机访问任意外网目的地址,故组合值具有极大随机性,在公有云等高密度流量模型中,能够保证哈希至处理层时分发均匀,实现了各个核心间最大限度的负载均衡策略,充分利用了服务器计算资源、内存资源及网络资源。从而优化了单台服务器包处理能力的各项指标,包括总吞吐量、最大每秒包处理量、平均包处理时延等关键指标。
本实施例的方案提出了一种新的软件分流方案,用于将双向流量分流至同一处理线程处理的同时,最大程度保障各个处理线程间负载均衡。提出了一种基于端口映射的负载均衡分流策略,从而实现在多核平台服务器上最大限度发挥服务器转发性能的NAT网关软件实现。对于NAT流量出、入两个方向流量进入服务器网卡后,在分流线程采取不同的线程分配策略,使得在保证同流同核处理的同时,最大限度的保证处理线程间的负载均衡。
NAT网关设计为两级流水线架构,通过对NAT出入向报文采取不同线程分配策略保证在同流同核处理的基础上,实现了各个处理线程间最大限度的负载均衡策略。充分利用了服务器计算资源、内存资源及网络资源。从而优化了单台服务器包处理能力的各项指标,包括总吞吐量、最大每秒包处理量、平均包处理时延等关键指标。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种报文的转发装置,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本发明实施例的一种报文的转发装置的结构框图,如图7所示,该装置包括:第一接收模块70,解析模块72,查找模块74,转发模块76,其中,
第一接收模块70,用于接收待转发的报文;
解析模块72,用于解析报文的数据流向;
查找模块74,用于若数据流向为流出方向,通过对报文所包含的元信息进行哈希计算,以确定报文的处理线程;若数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个处理线程绑定一个处理器核心;
转发模块76,用于在处理线程上采用预设会话表转发报文。
可选的,所述查找模块包括:提取单元,用于提取报文的六元组信息,其中,六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;计算单元,用于以六元组信息为哈希因子计算哈希值;第一查找单元,用于基于哈希值确定报文的处理线程。
可选的,第一查找单元包括:查找子单元,用于以哈希值为索引根据预设映射表在线程集合中查找与该哈希值匹配的处理线程,其中,预设映射表包括哈希值与处理线程的映射关系。
可选的,查找模块包括:处理单元,用于提取报文中的目的端口编号,并获取报文转发装置的处理器的总线程数;第二查找单元,用于根据目的端口编号与总线程数的映射关系查找该报文所在数据流在流出方向上对应的处理线程。
可选的,报文转发装置的处理线程与端口满足以下关系:Pi={x|x=i+m*N,m∈自然数,1024≤x≤65535};其中,Pi为处理线程i对应的端口编号集合,x为端口编号,i为处理线程的编号,N为总线程数。
可选的,第二查找单元包括:查找子单元,用于采用以下映射关系查找报文所在数据流在流出方向上对应的处理线程:线程编号=W%N,其中,N为总线程数,W为目的端口编号。目的端口编号为报文在出向时网关为其分配的端口编号。
可选的,所述转发模块包括:分流单元,用于将报文分流至处理线程;提取单元,用于在处理线程上提取报文中的原始元信息;查找单元,用于在处理线程的内存区域中查找与原始元信息匹配的预设会话表;转换单元,用于基于预设会话表将原始元信息转换为目标元信息;转发单元,用于采用目标元信息转发报文。
可选的,所述装置还包括:提取模块,在转发模块在处理线程上采用预设会话表转发报文之前,提取模块用于在报文为初始报文的情况下,提取初始报文的六元组信息,其中,六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;分配模块,用于以六元组信息为哈希因子计算哈希值,并基于哈希值分配处理线程;创建模块,用于在处理线程的内存区域中创建初始报文对应的数据流的会话表,以作为预设会话表。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本申请实施例还提供了一种电子设备,图8是本发明实施例的一种电子设备的结构图,如图8所示,包括处理器81、通信接口82、存储器83和通信总线84,其中,处理器81,通信接口82,存储器83通过通信总线84完成相互间的通信,存储器83,用于存放计算机程序;处理器81,用于执行存储器83上所存放的程序时,实现如下步骤:接收待转发的报文;解析报文的数据流向;若数据流向为流出方向,通过对报文所包含的元信息进行哈希计算,以确定报文的处理线程;若数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个处理线程绑定一个处理器核心;在处理线程上采用预设会话表转发报文。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的报文的转发方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的报文的转发方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种报文的转发方法,其特征在于,包括:
接收待转发的报文;
解析所述报文的数据流向;
若所述数据流向为流出方向,通过对所述报文所包含的元信息进行哈希计算,以确定所述报文的处理线程;若所述数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个所述处理线程绑定一个处理器核心;
在所述处理线程上采用预设会话表转发所述报文。
2.根据权利要求1所述的方法,其特征在于,所述通过对所述报文所包含的元信息进行哈希计算,以确定所述报文的处理线程,包括:
提取所述报文的六元组信息,其中,所述六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;
以所述六元组信息为哈希因子计算哈希值;
基于所述哈希值确定所述报文的处理线程。
3.根据权利要求2所述的方法,其特征在于,所述基于所述哈希值确定所述报文的处理线程,包括:
以所述哈希值为索引根据预设映射表在线程集合中查找与所述哈希值匹配的处理线程,其中,所述预设映射表包括所述哈希值与所述处理线程的映射关系。
4.根据权利要求1所述的方法,其特征在于,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,包括:
提取所述报文中的目的端口编号,并获取报文转发装置的处理器的总线程数;
根据所述目的端口编号与所述总线程数的映射关系查找该报文所在数据流在流出方向上对应的处理线程。
5.根据权利要求4所述的方法,其特征在于,
所述报文转发装置的处理线程与端口满足以下关系:
Pi={x|x=i+m*N,m∈自然数,1024≤x≤65535};其中,Pi为处理线程i对应的端口编号集合,x为端口编号,i为处理线程的编号,N为总线程数;
所述根据所述目的端口编号与所述总线程数的映射关系查找该报文所在数据流在流出方向上对应的处理线程,包括:
采用以下映射关系查找报文所在数据流在流出方向上对应的处理线程:线程编号=W%N,其中,N为总线程数,W为目的端口编号。
6.根据权利要求1所述的方法,其特征在于,所述在所述处理线程上采用预设会话表转发所述报文,包括:
将所述报文分流至所述处理线程;
在所述处理线程上提取所述报文中的原始元信息;
在所述处理线程的内存区域中查找与所述原始元信息匹配的预设会话表;
基于所述预设会话表将所述原始元信息转换为目标元信息;
采用所述目标元信息转发所述报文。
7.根据权利要求1所述的方法,其特征在于,在所述处理线程上采用预设会话表转发所述报文之前,所述方法还包括:
在所述报文为初始报文的情况下,提取所述初始报文的六元组信息,其中,所述六元组信息包括以下元信息:用户虚拟网络标识、源IP地址、目的IP地址、源端口、目的端口和通信协议号;
以所述六元组信息为哈希因子计算哈希值,并基于所述哈希值分配处理线程;
在所述处理线程的内存区域中创建初始报文对应的数据流的会话表,以作为所述预设会话表。
8.一种报文的转发装置,其特征在于,包括:
第一接收模块,用于接收待转发的报文;
解析模块,用于解析所述报文的数据流向;
查找模块,用于若所述数据流向为流出方向,通过对所述报文所包含的元信息进行哈希计算,以确定所述报文的处理线程;若所述数据流向为流入方向,根据目的端口和处理线程的映射关系,确定该报文所在数据流在流出方向上对应的处理线程,其中,每个所述处理线程绑定一个处理器核心;
转发模块,用于在所述处理线程上采用预设会话表转发所述报文。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7中任一项所述的方法步骤。
10.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:
存储器,用于存放计算机程序;
处理器,用于通过运行存储器上所存放的程序来执行权利要求1至7中任一项所述的方法步骤。
CN202110351749.0A 2021-03-31 2021-03-31 报文的转发方法及装置、存储介质、电子设备 Active CN112965824B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110351749.0A CN112965824B (zh) 2021-03-31 2021-03-31 报文的转发方法及装置、存储介质、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110351749.0A CN112965824B (zh) 2021-03-31 2021-03-31 报文的转发方法及装置、存储介质、电子设备

Publications (2)

Publication Number Publication Date
CN112965824A true CN112965824A (zh) 2021-06-15
CN112965824B CN112965824B (zh) 2024-04-09

Family

ID=76280692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110351749.0A Active CN112965824B (zh) 2021-03-31 2021-03-31 报文的转发方法及装置、存储介质、电子设备

Country Status (1)

Country Link
CN (1) CN112965824B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113596038A (zh) * 2021-08-02 2021-11-02 武汉绿色网络信息服务有限责任公司 数据包解析的方法和服务器
CN113626160A (zh) * 2021-07-07 2021-11-09 厦门市美亚柏科信息股份有限公司 一种基于cavium处理器的网络数据包高并发处理方法与系统
CN113630331A (zh) * 2021-10-11 2021-11-09 北京金睛云华科技有限公司 全流量存储回溯分析系统中父子连接的处理方法
CN113726907A (zh) * 2021-09-15 2021-11-30 腾讯科技(深圳)有限公司 一种路由处理方法、网元设备、装置以及可读存储介质
CN113783973A (zh) * 2021-08-31 2021-12-10 上海弘积信息科技有限公司 一种nat端口分配在多核下对数据流免锁的实现方法
CN114257545A (zh) * 2021-12-09 2022-03-29 北京奇艺世纪科技有限公司 一种报文转发方法及装置
CN115065599A (zh) * 2022-04-09 2022-09-16 北京金睛云华科技有限公司 全流量存储回溯分析系统中nat规则优化配置方法
CN115065672A (zh) * 2022-04-29 2022-09-16 武汉斗鱼鱼乐网络科技有限公司 一种sfu系统数据传输方法及相关设备
CN115514732A (zh) * 2022-09-02 2022-12-23 上海量讯物联技术有限公司 一种基于tcp连接数的源nat ip分配方法与装置
CN116232992A (zh) * 2022-12-16 2023-06-06 中国联合网络通信集团有限公司 数据转发方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004112313A2 (fr) * 2003-06-18 2004-12-23 Lenovo (Beijing) Limited Equipement de securite reseau et son procede de production
CN104618253A (zh) * 2015-01-22 2015-05-13 大唐移动通信设备有限公司 一种动态变更的传输报文处理方法和装置
KR20150067984A (ko) * 2013-12-11 2015-06-19 단국대학교 산학협력단 어플리케이션 불법 유포를 방지하는 방법과 이를 위한 장치
WO2016206511A1 (zh) * 2015-06-26 2016-12-29 中兴通讯股份有限公司 一种实现nat的方法和装置
CN109495404A (zh) * 2018-12-14 2019-03-19 北京金山云网络技术有限公司 一种报文处理方法、装置、交换机设备及存储介质
CN111711577A (zh) * 2020-07-24 2020-09-25 杭州迪普信息技术有限公司 流控设备的报文转发方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004112313A2 (fr) * 2003-06-18 2004-12-23 Lenovo (Beijing) Limited Equipement de securite reseau et son procede de production
KR20150067984A (ko) * 2013-12-11 2015-06-19 단국대학교 산학협력단 어플리케이션 불법 유포를 방지하는 방법과 이를 위한 장치
CN104618253A (zh) * 2015-01-22 2015-05-13 大唐移动通信设备有限公司 一种动态变更的传输报文处理方法和装置
WO2016206511A1 (zh) * 2015-06-26 2016-12-29 中兴通讯股份有限公司 一种实现nat的方法和装置
CN109495404A (zh) * 2018-12-14 2019-03-19 北京金山云网络技术有限公司 一种报文处理方法、装置、交换机设备及存储介质
CN111711577A (zh) * 2020-07-24 2020-09-25 杭州迪普信息技术有限公司 流控设备的报文转发方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李凯;叶麟;余翔湛;胡阳;: "基于DPDK的流量动态负载均衡方法", 智能计算机与应用, no. 04 *
杨惠;陈一骄;李韬;李世星;戴幻尧;: "面向多核网络分组处理系统的线程亲和缓冲区管理机制", 国防科技大学学报, no. 05 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626160A (zh) * 2021-07-07 2021-11-09 厦门市美亚柏科信息股份有限公司 一种基于cavium处理器的网络数据包高并发处理方法与系统
CN113626160B (zh) * 2021-07-07 2023-03-24 厦门市美亚柏科信息股份有限公司 一种基于cavium处理器的网络数据包高并发处理方法与系统
CN113596038A (zh) * 2021-08-02 2021-11-02 武汉绿色网络信息服务有限责任公司 数据包解析的方法和服务器
CN113596038B (zh) * 2021-08-02 2023-04-07 武汉绿色网络信息服务有限责任公司 数据包解析的方法和服务器
CN113783973B (zh) * 2021-08-31 2023-09-15 上海弘积信息科技有限公司 一种nat端口分配在多核下对数据流免锁的实现方法
CN113783973A (zh) * 2021-08-31 2021-12-10 上海弘积信息科技有限公司 一种nat端口分配在多核下对数据流免锁的实现方法
CN113726907B (zh) * 2021-09-15 2024-03-19 腾讯科技(深圳)有限公司 一种路由处理方法、网元设备、装置以及可读存储介质
CN113726907A (zh) * 2021-09-15 2021-11-30 腾讯科技(深圳)有限公司 一种路由处理方法、网元设备、装置以及可读存储介质
CN113630331B (zh) * 2021-10-11 2021-12-28 北京金睛云华科技有限公司 全流量存储回溯分析系统中父子连接的处理方法
CN113630331A (zh) * 2021-10-11 2021-11-09 北京金睛云华科技有限公司 全流量存储回溯分析系统中父子连接的处理方法
CN114257545A (zh) * 2021-12-09 2022-03-29 北京奇艺世纪科技有限公司 一种报文转发方法及装置
CN114257545B (zh) * 2021-12-09 2023-09-05 北京奇艺世纪科技有限公司 一种报文转发方法及装置
CN115065599A (zh) * 2022-04-09 2022-09-16 北京金睛云华科技有限公司 全流量存储回溯分析系统中nat规则优化配置方法
CN115065599B (zh) * 2022-04-09 2023-07-18 北京金睛云华科技有限公司 全流量存储回溯分析系统中nat规则优化配置方法
CN115065672A (zh) * 2022-04-29 2022-09-16 武汉斗鱼鱼乐网络科技有限公司 一种sfu系统数据传输方法及相关设备
CN115514732B (zh) * 2022-09-02 2023-08-25 上海量讯物联技术有限公司 一种基于tcp连接数的源nat ip分配方法与装置
CN115514732A (zh) * 2022-09-02 2022-12-23 上海量讯物联技术有限公司 一种基于tcp连接数的源nat ip分配方法与装置
CN116232992A (zh) * 2022-12-16 2023-06-06 中国联合网络通信集团有限公司 数据转发方法、装置、设备及存储介质
CN116232992B (zh) * 2022-12-16 2024-05-14 中国联合网络通信集团有限公司 数据转发方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN112965824B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
CN112965824B (zh) 报文的转发方法及装置、存储介质、电子设备
CN108449282B (zh) 一种负载均衡方法及其装置
CN107465590B (zh) 网络基础设施系统、路由网络业务的方法及计算机可读介质
US9485183B2 (en) System and method for efectuating packet distribution among servers in a network
US9722923B2 (en) Method operating in a fixed access network and UEs
US8509239B2 (en) Method, apparatus and system for processing packets
KR20160099473A (ko) 모듈식 포워딩 테이블 확장성을 위한 기술
CN104468401A (zh) 一种报文处理方法和装置
CN109474713B (zh) 报文转发方法和装置
US9135833B2 (en) Process for selecting compressed key bits for collision resolution in hash lookup table
WO2024093064A1 (zh) 一种大规模多模态网络中标识管理及优化转发方法和装置
CN104734930B (zh) Vlan接入vf网络的实现方法及装置、fcf
CN111464443B (zh) 基于服务功能链的报文转发方法、装置、设备及存储介质
US9374308B2 (en) Openflow switch mode transition processing
CN112583655A (zh) 数据传输方法、装置、电子设备及可读存储介质
CN111294316B (zh) 基于用户态协议栈虚拟路由器的网络隔离方法和装置
CN110636149A (zh) 远程访问方法、装置、路由器及存储介质
CN116016448A (zh) 一种服务网络访问方法、装置、设备及存储介质
CN114157632A (zh) 网络隔离方法、装置、设备和存储介质
CN117499318B (zh) 云计算虚拟网络系统、及其使用方法、装置、设备及介质
CN115086274B (zh) 一种网络流量分配方法、装置、设备和存储介质
CN115664920A (zh) 云平台的网络通信管理方法、装置、设备及存储介质
CN111147345B (zh) 云环境网络隔离装置、方法及云系统
CN113923187B (zh) 一种网络访问方法及装置、电子设备、存储介质
CN107124411A (zh) 经典网络环境下的虚拟私有云实现方法、装置、以及系统

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