CN110177047A - 报文发送方法、装置、电子设备和计算机可读存储介质 - Google Patents

报文发送方法、装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN110177047A
CN110177047A CN201910445629.XA CN201910445629A CN110177047A CN 110177047 A CN110177047 A CN 110177047A CN 201910445629 A CN201910445629 A CN 201910445629A CN 110177047 A CN110177047 A CN 110177047A
Authority
CN
China
Prior art keywords
message
cpu core
forwarding
table item
transmitting method
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
CN201910445629.XA
Other languages
English (en)
Other versions
CN110177047B (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.)
Douyin Vision Co Ltd
Douyin Vision Beijing Co Ltd
Original Assignee
Beijing ByteDance 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 ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201910445629.XA priority Critical patent/CN110177047B/zh
Publication of CN110177047A publication Critical patent/CN110177047A/zh
Application granted granted Critical
Publication of CN110177047B publication Critical patent/CN110177047B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs

Landscapes

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

Abstract

本公开公开了一种报文发送方法、装置、电子设备和计算机可读存储介质。其中该报文发送方法包括:第一CPU核接收第一报文并为所述第一报文建立会话表项和全局转发表项;第二CPU核接收第二报文并根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列;所述第一CPU核从报文接收队列中获取、处理并发送所述第二报文。本公开实施例通过建立共享的全局转发表和非共享的报文接收队列,实现不依赖于特定的流过滤规则的负载均衡方案,并保持每个CPU核的独立性,从而保证报文处理的高性能。

Description

报文发送方法、装置、电子设备和计算机可读存储介质
技术领域
本公开涉及计算机网络领域,尤其涉及一种报文发送方法、装置、电子设备及计算机可读存储介质。
背景技术
随着计算机网络的普及,网络的访问流量也在快速增长,为了增加网络吞吐量、最优化资源使用,需要对网络负载进行合理分配。目前较为普遍的负载均衡方法是基于IP和端口的四层接入负载均衡器(Load Balancer),它基于数据平面开发套件(Data PlaneDevelopment Kit,DPDK)的Linux虚拟服务器(Linux Virtual Server,LVS)用户态实现,网络接入服务器通常采用基于Intel X86的多核服务器。四层接入负载均衡器的一项重要作用是报文转发,例如在接收到来自客户端的报文后,通过修改数据包的IP地址将报文转发给网络接入服务器。一般地,四层接入负载均衡器可以支持多种报文转发模式,例如DR模式、Tunnel模式、NAT模式、Full-NAT模式、Source-NAT模式等。
对于Full-NAT/NAT/Source-NAT模式,报文经过负载均衡器被分发到特定的CPU核(CPU Core)进行处理并建立会话。为了保证包处理的高性能,每个CPU核建立自己独有的会话表,该会话表不与其它CPU核共享。一般要求同一个会话的正向流和反向流都被转发至同一个CPU核处理,以此最大化包处理在快速路径上的性能。为了实现这一目的,需要利用DPDK所支持网卡的数据流重定向(Flow Director)功能,在网卡上设置“基于报文目的IP组合目的端口掩码”的流过滤(Flow Filter)规则。这样,接收到的反向流就被转发至处理其对应的正向流的CPU核。
但是,现实中经常无法满足上述流过滤规则,导致无法将同一个会话的双向流转发至同一个CPU核进行处理。例如:
1)在Full-NAT工作模式下,有些网卡(例如,Intel 82599网卡)虽然支持IPv4完美模式(perfect mode)下“基于报文目的IP组合目的端口掩码”的流过滤规则,但在IPv6下仅能使用签名模式(signature mode),而签名模式不支持“基于报文目的IP组合目的端口掩码”的流过滤规则。
2)在Full-NAT工作模式下,有些网卡(例如,Intel i40e网卡)不支持“基于对报文目的端口掩码”的流过滤规则。
3)在NAT模式下,四层接入负载均衡器以网关的形式存在于网络中,由于不做客户端IP地址的转换,面向内网的均衡器IP(Director IP)就等于客户端IP地址。但是,FlowDirector仅能设定有限数量的流过滤规则,客户端IP地址却可以是任意的,因此无法支持上述流过滤规则。
由此可见,现有技术的四层接入负载均衡器对Flow Director有较强的依赖性,在很多情况下无法满足用户的客观需要。因此,亟需一种不依赖于DPDK Flow Director的报文发送方法,并且仍然能够保持每个CPU核的会话表的独立性,以维持报文处理的高性能。
发明内容
本公开实施例提供报文发送方法、装置、电子设备和计算机可读存储介质,能够不依赖于特定的流过滤规则,并保持每个CPU核的独立性,从而保证报文处理的高性能。
第一方面,本公开实施例提供一种报文发送方法,包括:第一CPU核接收第一报文;所述第一CPU核为所述第一报文建立会话表项和全局转发表项,其中,所述会话表项包含所述第一报文的正向流信息和反向流信息,所述全局转发表项包含所述第一CPU核的标识信息;所述第一CPU核发送所述第一报文;所述第一CPU核从报文接收队列中获取并处理第二报文,其中,所述第二报文由第二CPU核根据所述全局转发表项加入到所述报文接收队列,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理;所述第一CPU核发送处理后的所述第二报文,其中,所述第二报文是所述第一报文的反向流。
进一步的,所述正向流信息包含所述正向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口;所述反向流信息包含所述反向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口。
进一步的,所述全局转发表项还包含所述反向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口。
进一步的,所述报文接收队列包含所述第一CPU核为由所述负载均衡器管理的其它CPU核的每一个建立的队列。
进一步的,所述报文接收队列为所述第一CPU核为由所述负载均衡器管理的所有其它CPU核建立的一个共用队列。
进一步的,所述全局转发表项所属的全局转发表存储在所述第一CPU核、所述负载均衡器或预设存储单元中。
进一步的,所述报文发送方法支持Full-NAT模式、NAT模式和SNAT模式。
第二方面,本公开实施例提供一种报文发送方法,包括:第二CPU核接收第二报文,其中,所述第二报文是第一报文的反向流;所述第二CPU核在全局转发表中查找所述第一报文的全局转发表项,其中,所述全局转发表项包含所述第一报文的会话表项归属的第一CPU核的标识信息;所述第二CPU核根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列,其中,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理。
进一步的,所述全局转发表项还包含所述反向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口。
进一步的,所述报文接收队列包含所述第一CPU核为由所述负载均衡器管理的其它CPU核的每一个建立的队列。
进一步的,所述报文接收队列为所述第一CPU核为由所述负载均衡器管理的所有其它CPU核建立的一个共用队列。
进一步的,所述全局转发表项所属的全局转发表存储在所述第一CPU核、所述负载均衡器或预设存储单元中。
进一步的,所述报文发送方法支持Full-NAT模式、NAT模式和SNAT模式。
第三方面,本公开实施例提供一种报文发送装置,包括:接收模块,用于接收第一报文;表项建立模块,用于为所述第一报文建立会话表项和全局转发表项,其中,所述会话表项包含所述第一报文的正向流信息和反向流信息,所述全局转发表项包含所述第一CPU核的标识信息;发送模块,用于发送所述第一报文;处理模块,用于从报文接收队列中获取并处理第二报文,其中,所述第二报文由第二CPU核根据所述全局转发表项加入到所述报文接收队列,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理;所述发送模块发送处理后的所述第二报文,其中,所述第二报文是所述第一报文的反向流。
第四方面,本公开实施例提供一种报文发送装置,包括:接收模块,用于接收第二报文,其中,所述第二报文是第一报文的反向流;查找模块,用于在全局转发表中查找所述第一报文的全局转发表项,其中,所述全局转发表项包含所述第一报文的会话表项归属的第一CPU核的标识信息;发送模块,用于根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列,其中,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理。
第五方面,本公开实施例提供一种报文发送系统,包括上述第三方面和上述第四方面所述的报文发送装置。
第六方面,本公开实施例提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面或第二方面中的任一所述报文发送方法。
第七方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面或第二方面中的任一所述报文发送方法。
本公开公开了一种报文发送方法、装置、电子设备和计算机可读存储介质。其中该报文发送方法包括:第一CPU核接收第一报文;所述第一CPU核为所述第一报文建立会话表项和全局转发表项;所述第一CPU核发送所述第一报文;第二CPU核接收第二报文;所述第二CPU核在全局转发表中查找所述第一报文的全局转发表项;所述第二CPU核根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列;所述第一CPU核从报文接收队列中获取并处理第二报文;所述第一CPU核发送处理后的所述第二报文。本公开实施例通过建立共享的全局转发表和非共享的报文接收队列,实现不依赖于特定的流过滤规则的负载均衡方案,并保持每个CPU核的独立性,从而保证报文处理的高性能。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的四层接入负载均衡器的网络拓扑图;
图2为本公开实施例提供的报文发送方法的网络拓扑图;
图3为本公开实施例提供的报文发送方法的流程图;
图4为本公开一个实施例提供的报文发送装置的结构示意图;
图5为本公开另一个实施例提供的报文发送装置的结构示意图;
图6为根据本公开实施例提供的电子设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
图1示出了本公开实施例提供的四层接入负载均衡器的网络拓扑图。所述四层接入负载均衡器网络包括调度器(Director)和多个真实服务器(Realserver)。在接收到来自客户端的报文后,Director通过修改数据包的IP地址将报文转发给真实服务器进行处理,待处理数据包返回后再次修改IP地址将报文转发回客户端。下面以四层接入负载均衡器的NAT模式和Full-NAT模式为例,对上述修改IP地址的过程进行说明。
NAT模式通过两次修改IP地址完成报文的转发。Director和Realserver位于同一个局域网段,Director是Realserver的默认网关。客户在广域网上不能获知Realserver的IP地址(Realserver IP,RIP),而只能获知预先设置的虚拟IP地址(Virtual IP,VIP)。
当用户通过客户端进行网络访问时,所述客户端向Director发送一个请求报文,该请求报文的源IP地址为客户端IP地址(Client IP,CIP)。由于只有VIP在广域网可见,因此该请求报文的目的IP地址为VIP。Director在收到该请求报文后,利用网卡驱动技术(例如,接收端缩放(Receive Side Scaling,RSS))选择一个Realserver,将该请求报文中的目的IP地址替换为该Realserver的RIP,并将该报文发送给这个Realserver。
报文处理完成后生成返回报文,该返回报文的源IP为调度器IP地址(DirectorIP,DIP),目的IP为CIP。但是,客户端不能识别DIP,因此不能正常接收这个报文。这时需要将返回报文的源IP地址替换回VIP并发送给客户端。由此,NAT模式通过两次修改IP地址完成报文的发送和接收。
Full-NAT模式则通过同时修改源IP地址和目的IP地址完成报文的转发。当用户通过客户端访问网络时,请求报文的源IP地址为CIP,目的IP地址为VIP。Director在收到该请求报文后选择一个Realserver,将该请求报文中的源IP地址替换为DIP,以及将目的IP地址替换为RIP,并将该报文发送给这个Realserver。
报文处理完成后生成返回报文,该返回报文的源IP地址为RIP,目的IP为DIP。对该报文的源IP地址和目的IP地址再次进行修改,将源IP地址替换为VIP,目的IP地址为CIP并发送给客户端。由此,Full-NAT模式通过四次IP地址修改完成报文的发送和接收。
图2和图3分别示出了本公开实施例提供的报文发送方法的网络拓扑图和流程图。本公开实施例提供的报文发送方法可以由一个报文发送装置来执行,该装置可以实现为软件,可以实现为硬件,还可以实现为软件和硬件的组合,例如所述报文发送装置包括计算机设备(例如CPU核),从而通过该计算机设备来执行本实施例提供的报文发送方法。
可选的,本公开实施例提供的报文发送方法基于四层接入负载均衡器的NAT模式、Full-NAT模式或Source-NAT模式。
下面结合图2和图3,对本公开实施例提供的报文发送方法进行详细说明。通过本公开实施例提供的报文发送方法对来自客户端的报文进行处理的流程如下:
S1,第一CPU核接收第一报文。
一般地,客户端要对网络进行访问时,会向进方向网卡(Incoming NIC)发送第一报文。其中,所述第一报文的数据包(记为packet 1A)包括所述第一报文的五元组信息。所述五元组信息包括所述第一报文的传输层协议、源IP地址、源端口、目的IP地址和目的端口。
可选的,进方向网卡通过RSS技术将packet 1A分发到第一CPU核(例如,图2中的Core A)。所述第一CPU核为负载均衡器所管理的N个CPU核中的一个。可以理解,所述第一CPU核可以包含于图1中的Realserver。
S2,所述第一CPU核为所述第一报文建立会话表项和全局转发表项。
其中,所述会话表项包含所述第一报文的正向流信息和反向流信息,所述全局转发表项包含所述第一CPU核的标识信息。
可以理解,所述第一CPU核接收到packet 1A后,首先查找本地私有的会话表,确定会话表中是否包含packet 1A对应的会话表项,如果packet 1A是所述第一CPU核首个接收的报文,则其没有对应的会话表项。
其次,所述第一CPU核查找全局转发表,确定全局转发表中是否包含packet 1A对应的全局转发表项。所述全局转发表由所述负载均衡器管理的N个CPU核共享。所述全局转发表项可以存储在所述第一CPU核中,也可以存储在所述负载均衡器中,还可以存储于预设存储单元中,只要所述负载均衡器所管理的N个CPU核可以同等的访问和查找所述全局转发表即可。
如果packet 1A没有对应的会话表项和全局转发表项,则所述第一CPU核为packet1A建立一个会话表项。所述会话表项包含所述第一报文的正向流和反向流两个方向的五元组信息。一个可能的会话表项如下表所示:
会话表项 流向 五元组
正向流(Forward flow) CIP->VIP (PROTOCOL,CIP,CPORT,VIP,VPORT)
反向流(Reverse Flow) RIP->DIP (PROTOCOL,RIP,RPORT,DIP,DPORT)
上述表格中,所述正向流的流向可以为报文的发送方向,所述反向流的流向可以为报文的接收方向。可以理解的是,以上仅是所述正向流和所述反向流的一种例举,它们是指相反流向的两个流,本公开实施例并不对这两个流的传输方向做具体限制。
针对本实施例,举例来说,在Full-NAT模式下所述第一CPU核为packet 1A建立会话表项A-1000:
所述第一CPU核还为packet 1A建立一个全局转发表项。所述全局转发表项包含所述反向流的五元组信息和所述第一CPU核的标识信息。接上例,所述第一CPU核为packet 1A建立全局转发表项R-2000:
表项 协议 源IP 源端口 目的IP 目的端口 核标识
R-2000 TCP 10.14.41.213 443 10.14.127.11 2624 Core 1
上述全局转发表项中,包含了所述反向流信息以及所述第一CPU核的标识信息Core 1。
S3,所述第一CPU核发送所述第一报文。
在建立了会话表项和全局转发表项后,所述第一CPU核根据图1所描述的方法对packet 1A进行IP地址转换,转换后的数据包记为packet 1B。即Full-NAT模式下packet 1B的五元组信息为(protocol,DIP,DPORT,RIP,RPORT),NAT模式下,packet 1B的五元组信息为(protocol,CIP,CPORT,RIP,RPORT)。此后,packet 1B被发送至出方向网卡。所述出方向网卡根据数据包的目的媒体访问控制地址(Media Access Control Address,MAC)将其发送至邻居网关。
S4,第二CPU核接收第二报文。
在S3中的数据包经过处理后,所述出方向网卡(Outgoing NIC)接收所述第一报文的反向流报文,即所述第二报文。将所述第二报文记为packet 2A,packet 2A的五元组信息为(protocol,RIP,RPORT,DIP,DPORT)。所述出方向网卡根据packet 2A的五元组信息进行RSS并将其分配至第二CPU核(例如,图2中的Core D)。
可选的,所述第二CPU核为所述负载均衡器所管理的N个CPU核中的一个。所述第二CPU核可以包含于图1中的Realserver。
可以理解,所述第二CPU核与所述第一CPU核可以是相同的CPU核。此时,所述第二CPU核按照图1所示方法对packet 2A进行IP地址转换并将其发送回所述进方向网卡。
但是,由于所述负载均衡器没有设置流过滤规则,因此所述第二CPU核通常不同于所述第一CPU核,此时所述第二CPU核无法快速处理packet 2A,而需要将其转发回所述第一CPU核进行处理。
S5,所述第二CPU核在全局转发表中查找所述第一报文的全局转发表项。
所述第二CPU核在接收到packet 2A后,首先查找本地私有的会话表,确定会话表中是否包含packet 2A对应的会话表项。当本地私有的会话表中不包含packet 2A对应的会话表项时,查找由所述N个CPU核共享的全局转发表,确定全局转发表中是否包含packet 2A对应的全局转发表项。
所述第二CPU核可以查看与所述第一CPU核共享的全局转发表,接前例,所述第二CPU核查找到packet 2A对应的全局转发表项R-2000:
表项 协议 源IP 源端口 目的IP 目的端口 核标识
R-2000 TCP 10.14.41.213 443 10.14.127.11 2624 Core 1
所述第二CPU核根据转发表项R-2000中的核标识Core 1获知packet 2A应归属于所述第一CPU核处理。
S6,所述第二CPU核根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列。
可选的,所述负载均衡器管理的N个CPU核中的每个CPU核均建立报文接收队列,每个CPU核的报文接收队列用于接收来自于其它N-1个CPU核的报文。所述第一CPU核归属于所述负载均衡器管理,因此所述第一CPU核也为其它N-1个CPU核建立报文接收队列。
一种可能的方式中,每个CPU核为其它N-1个CPU核中的每一个CPU核分别建立一个报文接收队列,即N个CPU核总共建立N*(N-1)个报文接收队列。在这种方式下,所述第一CPU核为由所述负载均衡器管理的剩余N-1个CPU核中的每一个建立报文接收队列,即所述第一CPU核总共建立N-1个报文接收队列。例如图2所示,所述负载均衡器共管理四个CPU核CoreA、Core B、Core C和Core D,此时Core A为剩余的三个CPU核建立三个报文接收队列,分别为queue A-B、queue A-C和queue A-D。
另一种可能的方式中,每个CPU核仅建立一个报文接收队列,该报文接收队列由其它N-1个CPU核共用,即N个CPU核总共建立N个报文接收队列。在这种方式下,所述第一CPU核为由所述负载均衡器管理的剩余N-1个CPU核建立一个共用的报文接收队列。
可以理解,每个CPU核为其它CPU核建立的所述报文接收队列是非共享的,从而保证各CPU核将报文放入所述报文接收队列中时互不干扰,从而保证CPU核性能的最大化。
S7,所述第一CPU核从报文接收队列中获取并处理第二报文。
可以理解,所述第一CPU核在进行报文处理时,不仅轮询网卡的报文接收队列,也轮询为其它N-1个CPU核建立的所述报文接收队列。当所述第一CPU核从所述报文接收队列(例如,queue A-D)中摘下packet 2A后,首先查找本地私有的会话表,确定是否存在packet2A对应的会话表项。此例中,所述第一CPU和在本地私有的会话表中查找到packet 2A对应的会话表项A-1000。
在找到packet 2A对应的会话表项A-1000后,所述第一CPU核对所述第二报文进行处理。所述第一CPU核根据图1所描述的方法对packet 2A进行IP地址转换,转换后的数据包记为packet 2B,packet 2B的五元组信息为(protocol,VIP,VPORT,CIP,CPORT)。
S8,所述第一CPU核发送处理后的所述第二报文。
其中,packet 1B被发送至所述进方向网卡。所述进方向网卡根据数据包的目的MAC将其发送至邻居网关,并最终作为应答报文发送回客户端。
本公开公开了一种报文发送方法、装置、电子设备和计算机可读存储介质。其中该报文发送方法包括:第一CPU核接收第一报文;所述第一CPU核为所述第一报文建立会话表项和全局转发表项;所述第一CPU核发送所述第一报文;第二CPU核接收第二报文;所述第二CPU核在全局转发表中查找所述第一报文的全局转发表项;所述第二CPU核根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列;所述第一CPU核从报文接收队列中获取并处理第二报文;所述第一CPU核发送处理后的所述第二报文。本公开实施例通过建立共享的全局转发表和非共享的报文接收队列,实现不依赖于特定的流过滤规则的负载均衡方案,并保持每个CPU核的独立性,从而保证报文处理的高性能。
图4为本公开一个实施例提供的报文发送装置的结构示意图,如图4所示,报文发送装置400包括:接收模块401、表项建立模块402、发送模块403和处理模块404。其中,
接收模块401,用于接收第一报文;
表项建立模块402,用于为所述第一报文建立会话表项和全局转发表项,其中,所述会话表项包含所述第一报文的正向流信息和反向流信息,所述全局转发表项包含所述第一CPU核的标识信息;
发送模块403,用于发送所述第一报文;
处理模块404,用于从报文接收队列中获取并处理第二报文,其中,所述第二报文由第二CPU核根据所述全局转发表项加入到所述报文接收队列,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理;
所述发送模块403发送处理后的所述第二报文,其中,所述第二报文是所述第一报文的反向流。
可选的,所述报文发送装置400包含所述第一CPU核。
图4所示装置可以执行图3所示实施例的方法,本实施例未详细描述的部分,可参考对图3所示实施例的相关说明。该技术方案的执行过程和技术效果参见图3所示实施例中的描述,在此不再赘述。
图5为本公开另一个实施例提供的报文发送装置的结构示意图,如图5所示,报文发送装置500包括:接收模块501、查找模块502和发送模块503。其中,
接收模块501,用于接收第二报文,其中,所述第二报文是第一报文的反向流;
查找模块502,用于在全局转发表中查找所述第一报文的全局转发表项,其中,所述全局转发表项包含所述第一报文的会话表项归属的第一CPU核的标识信息;
发送模块503,用于根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列,其中,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理。
可选的,所述报文发送装置500包含所述第二CPU核。
图5所示装置可以执行图3所示实施例的方法,本实施例未详细描述的部分,可参考对图3所示实施例的相关说明。该技术方案的执行过程和技术效果参见图3所示实施例中的描述,在此不再赘述。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:第一CPU核接收第一报文;所述第一CPU核为所述第一报文建立会话表项和全局转发表项,其中,所述会话表项包含所述第一报文的正向流信息和反向流信息,所述全局转发表项包含所述第一CPU核的标识信息;所述第一CPU核发送所述第一报文;所述第一CPU核从报文接收队列中获取并处理第二报文,其中,所述第二报文由第二CPU核根据所述全局转发表项加入到所述报文接收队列,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理;所述第一CPU核发送处理后的所述第二报文,其中,所述第二报文是所述第一报文的反向流。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (13)

1.一种报文发送方法,其特征在于,包括:
第一CPU核接收第一报文;
所述第一CPU核为所述第一报文建立会话表项和全局转发表项,
其中,所述会话表项包含所述第一报文的正向流信息和反向流信息,所述全局转发表项包含所述第一CPU核的标识信息;
所述第一CPU核发送所述第一报文;
所述第一CPU核从报文接收队列中获取并处理第二报文,
其中,所述第二报文由第二CPU核根据所述全局转发表项加入到所述报文接收队列,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理;
所述第一CPU核发送处理后的所述第二报文,
其中,所述第二报文是所述第一报文的反向流。
2.如权利要求1所述的报文发送方法,其特征在于,
所述正向流信息包含所述正向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口;
所述反向流信息包含所述反向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口。
3.如权利要求1或2所述的报文发送方法,其特征在于,所述全局转发表项还包含所述反向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口。
4.一种报文发送方法,其特征在于,包括:
第二CPU核接收第二报文,其中,所述第二报文是第一报文的反向流;
所述第二CPU核在全局转发表中查找所述第一报文的全局转发表项,其中,所述全局转发表项包含所述第一报文的会话表项归属的第一CPU核的标识信息;
所述第二CPU核根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列,其中,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理。
5.如权利要求4所述的报文发送方法,其特征在于,所述全局转发表项还包含所述反向流的传输层协议,源IP地址,源端口,目的IP地址和目的端口。
6.如权利要求1-5中任一项所述的报文发送方法,其特征在于,所述报文接收队列包含所述第一CPU核为由所述负载均衡器管理的其它CPU核的每一个建立的队列。
7.如权利要求1-5中任一项所述的报文发送方法,其特征在于,所述报文接收队列为所述第一CPU核为由所述负载均衡器管理的所有其它CPU核建立的一个共用队列。
8.如权利要求1-5中任一项所述的报文发送方法,其特征在于,所述全局转发表项所属的全局转发表存储在所述第一CPU核、所述负载均衡器或预设存储单元中。
9.如权利要求1或4所述的报文发送方法,其特征在于,所述报文发送方法支持Full-NAT模式、NAT模式和SNAT模式。
10.一种报文发送装置,包含第一CPU核,其特征在于,包括:
接收模块,用于接收第一报文;
表项建立模块,用于为所述第一报文建立会话表项和全局转发表项,
其中,所述会话表项包含所述第一报文的正向流信息和反向流信息,所述全局转发表项包含所述第一CPU核的标识信息;
发送模块,用于发送所述第一报文;
处理模块,用于从报文接收队列中获取并处理第二报文,
其中,所述第二报文由第二CPU核根据所述全局转发表项加入到所述报文接收队列,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理;
所述发送模块发送处理后的所述第二报文,
其中,所述第二报文是所述第一报文的反向流。
11.一种报文发送装置,包含第二CPU核,其特征在于,包括:
接收模块,用于接收第二报文,其中,所述第二报文是第一报文的反向流;
查找模块,用于在全局转发表中查找所述第一报文的全局转发表项,其中,所述全局转发表项包含所述第一报文的会话表项归属的第一CPU核的标识信息;
发送模块,用于根据所述全局转发表项将所述第二报文加入到所述第一CPU核的报文接收队列,其中,所述第二CPU核与所述第一CPU核由同一个负载均衡器管理。
12.一种电子设备,包括:
存储器,用于存储非暂时性计算机可读指令;以及
处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现根据权利要求1-9中任意一项所述的报文发送方法。
13.一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行权利要求1-9中任意一项所述的报文发送方法。
CN201910445629.XA 2019-05-27 2019-05-27 报文发送方法、装置、电子设备和计算机可读存储介质 Active CN110177047B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910445629.XA CN110177047B (zh) 2019-05-27 2019-05-27 报文发送方法、装置、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910445629.XA CN110177047B (zh) 2019-05-27 2019-05-27 报文发送方法、装置、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN110177047A true CN110177047A (zh) 2019-08-27
CN110177047B CN110177047B (zh) 2022-03-04

Family

ID=67695870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910445629.XA Active CN110177047B (zh) 2019-05-27 2019-05-27 报文发送方法、装置、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110177047B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111262786A (zh) * 2020-01-13 2020-06-09 北京奇艺世纪科技有限公司 一种网关控制方法、网关设备、电子设备及存储介质
CN112769959A (zh) * 2021-03-04 2021-05-07 北京字节跳动网络技术有限公司 会话同步方法、装置、第一节点、第二节点、系统及介质
CN112929277A (zh) * 2019-12-06 2021-06-08 华为技术有限公司 一种报文处理方法及装置
CN116232992A (zh) * 2022-12-16 2023-06-06 中国联合网络通信集团有限公司 数据转发方法、装置、设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286919A (zh) * 2007-04-11 2008-10-15 杭州华三通信技术有限公司 虚拟专用网间通过网络地址转换实现互访的方法及装置
US20120030364A1 (en) * 2010-02-03 2012-02-02 Nec Corporation Proxy appparatus and operation method thereof
US8291487B1 (en) * 2006-08-08 2012-10-16 A10 Networks, Inc. System and method for distributed multi-processing security gateway
CN105516302A (zh) * 2015-12-07 2016-04-20 东软集团股份有限公司 一种数据处理方法及网络设备
CN105915462A (zh) * 2016-06-03 2016-08-31 中国航天科技集团公司第九研究院第七七研究所 一种面向tcp会话的对称性rss电路
US20170093792A1 (en) * 2015-09-30 2017-03-30 Radware, Ltd. System and method for stateless distribution of bidirectional flows with network address translation
CN107222408A (zh) * 2017-06-01 2017-09-29 杭州迪普科技股份有限公司 一种分流方法及装置
CN107733808A (zh) * 2017-11-20 2018-02-23 新华三技术有限公司 一种流量传输方法及装置
CN109218205A (zh) * 2018-09-26 2019-01-15 新华三信息安全技术有限公司 一种报文转发方法及装置
CN111866046A (zh) * 2019-04-30 2020-10-30 华为技术有限公司 一种实现集群的方法及相关设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291487B1 (en) * 2006-08-08 2012-10-16 A10 Networks, Inc. System and method for distributed multi-processing security gateway
CN101286919A (zh) * 2007-04-11 2008-10-15 杭州华三通信技术有限公司 虚拟专用网间通过网络地址转换实现互访的方法及装置
US20120030364A1 (en) * 2010-02-03 2012-02-02 Nec Corporation Proxy appparatus and operation method thereof
US20170093792A1 (en) * 2015-09-30 2017-03-30 Radware, Ltd. System and method for stateless distribution of bidirectional flows with network address translation
CN105516302A (zh) * 2015-12-07 2016-04-20 东软集团股份有限公司 一种数据处理方法及网络设备
CN105915462A (zh) * 2016-06-03 2016-08-31 中国航天科技集团公司第九研究院第七七研究所 一种面向tcp会话的对称性rss电路
CN107222408A (zh) * 2017-06-01 2017-09-29 杭州迪普科技股份有限公司 一种分流方法及装置
CN107733808A (zh) * 2017-11-20 2018-02-23 新华三技术有限公司 一种流量传输方法及装置
CN109218205A (zh) * 2018-09-26 2019-01-15 新华三信息安全技术有限公司 一种报文转发方法及装置
CN111866046A (zh) * 2019-04-30 2020-10-30 华为技术有限公司 一种实现集群的方法及相关设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112929277A (zh) * 2019-12-06 2021-06-08 华为技术有限公司 一种报文处理方法及装置
CN112929277B (zh) * 2019-12-06 2024-03-05 华为云计算技术有限公司 一种报文处理方法及装置
CN111262786A (zh) * 2020-01-13 2020-06-09 北京奇艺世纪科技有限公司 一种网关控制方法、网关设备、电子设备及存储介质
CN112769959A (zh) * 2021-03-04 2021-05-07 北京字节跳动网络技术有限公司 会话同步方法、装置、第一节点、第二节点、系统及介质
CN116232992A (zh) * 2022-12-16 2023-06-06 中国联合网络通信集团有限公司 数据转发方法、装置、设备及存储介质
CN116232992B (zh) * 2022-12-16 2024-05-14 中国联合网络通信集团有限公司 数据转发方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110177047B (zh) 2022-03-04

Similar Documents

Publication Publication Date Title
CN110177047A (zh) 报文发送方法、装置、电子设备和计算机可读存储介质
CN110708393B (zh) 用于传输数据的方法、装置和系统
CN110198307A (zh) 一种移动边缘计算节点的选择方法、装置及系统
CN103477588B (zh) 刀片服务器中刀片间网络业务的分类和管理方法和系统
CN110198363A (zh) 一种移动边缘计算节点的选择方法、装置及系统
CN106101232A (zh) 负载均衡方法及装置
CN109547580A (zh) 一种处理数据报文的方法和装置
CN107317887B (zh) 一种负载均衡方法、装置和系统
US12010195B2 (en) Efficient flow management utilizing control packets
CN110166570A (zh) 业务会话管理方法、装置、电子设备
WO2015114473A1 (en) Method and apparatus for locality sensitive hash-based load balancing
US20220263793A1 (en) Cloud infrastructure resources for connecting a service provider private network to a customer private network
CN110515731A (zh) 一种数据处理方法、装置及系统
US11729088B2 (en) Broadcast switch system in a network-on-chip (NoC)
US11671355B2 (en) Packet flow control in a header of a packet
CN110784489B (zh) 安全通信系统及其方法
US12015562B2 (en) Port addressing via packet header modification
US11637770B2 (en) Invalidating cached flow information in a cloud infrastructure
CN110391919A (zh) 组播流量转发方法、装置、电子设备
US20230396579A1 (en) Cloud infrastructure resources for connecting a service provider private network to a customer private network
CN109783409A (zh) 用于处理数据的方法和装置
US12015557B2 (en) Efficient flow management utilizing unified logging
CN114640679A (zh) 数据包传输方法及装置、存储介质、电子设备
CN106656772B (zh) 一种网络接入系统
CN109933432A (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: Tiktok vision (Beijing) Co.,Ltd.