专利名称:数据包传输方法及装置、存储介质、电子设备
专利类型:实用新型专利
专利申请号:CN202210249264.5
专利申请(专利权)人:京东科技信息技术有限公司
权利人地址:北京市大兴区北京经济技术开发区科创十一街18号院2号楼6层601
专利发明(设计)人:向永俊
专利摘要:本公开提供一种数据包传输方法及装置、存储介质、电子设备;涉及云计算技术领域。该方法包括:接收调度服务器转发的由客户端发起的请求数据包;通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并基于虚拟机目标端口信息对请求数据包进行修改,获得转发数据包;接收转发数据包以获取虚拟机目标端口信息;采用虚拟机目标端口信息替换调度服务器端口信息,并存储替换前与替换后的信息对应关系;响应于转发数据包获得响应数据包,通过虚拟交换机将响应数据包转发至客户端。本公开可以解决了相关技术中由于网络双向流量都要经过调度服务器而引起的网络处理性能瓶颈问题。
主权利要求:
1.一种数据包传输方法,应用于目标虚拟服务器组,其特征在于,所述目标虚拟服务器组包含多个虚拟机,每个虚拟机具有多个应用端口,同一虚拟机的多个应用端口添加到同一所述目标虚拟服务器组,所述方法包括:接收调度服务器转发的由客户端发起的请求数据包;所述请求数据包包含源MAC地址信息;
通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并将所述虚拟机目标端口信息编码至所述源MAC地址信息,获得转发数据包;所述转发数据包包含调度服务器端口信息;所述虚拟机目标端口信息为所述目标虚拟服务器组内的虚拟机的一应用端口的信息;
接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息;采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;
响应于所述转发数据包,获得响应数据包;并通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。
2.根据权利要求1所述的数据包传输方法,其特征在于,所述接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息,包括:接收所述转发数据包;所述转发数据包包含修改后的源MAC地址信息;
通过虚拟交换机对所述修改后的源MAC地址信息进行解码,获得虚拟机目标端口信息。
3.根据权利要求1所述的数据包传输方法,其特征在于,所述存储替换前与替换后的信息对应关系,包括:确定替换前的所述调度服务器端口信息与替换后的所述虚拟机目标端口信息的信息对应关系;
将所述信息对应关系存储于虚拟交换机的连接跟踪中。
4.根据权利要求1所述的数据包传输方法,其特征在于,所述响应数据包包含虚拟机目标端口信息,所述通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端,包括:通过虚拟交换机调用所述信息对应关系,确定与所述虚拟机目标端口信息对应的调度服务器端口信息;
通过虚拟交换机将所述响应数据包中的虚拟机目标端口信息替换为所述调度服务器端口信息,获得应答转发包;
通过虚拟交换机将所述应答转发包转发至客户端。
5.根据权利要求1所述的数据包传输方法,其特征在于,所述方法还包括:通过将调度服务器与虚拟IP地址绑定,以使客户端通过虚拟IP地址访问调度服务器。
6.一种数据包传输方法,应用于调度服务器,其特征在于,包括:
接收由客户端发起的请求数据包;所述请求数据包包含源MAC地址信息;
确定目标虚拟服务器和虚拟机目标端口信息,并将所述虚拟机目标端口信息编码至所述源MAC地址信息,获得转发数据包;所述转发数据包包含调度服务器端口信息;所述虚拟机目标端口信息为目标虚拟服务器组内的虚拟机的一应用端口的信息;
通过目标虚拟服务器接收所述转发数据包,以使虚拟交换机获取所述转发数据包中的虚拟机目标端口信息,采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;
通过目标虚拟服务器响应于所述转发数据包,获得响应数据包,以使虚拟交换机基于所述信息对应关系将响应数据包转发至客户端;
其中,所述目标虚拟服务器组包含多个虚拟机,每个虚拟机具有多个应用端口,同一虚拟机的多个应用端口添加到同一所述目标虚拟服务器组。
7.一种数据包传输装置,应用于目标虚拟服务器组,其特征在于,所述目标虚拟服务器组包含多个虚拟机,每个虚拟机具有多个应用端口,同一虚拟机的多个应用端口添加到同一所述目标虚拟服务器组,包括:第一接收模块,用于接收调度服务器转发的由客户端发起的请求数据包;所述请求数据包包含源MAC地址信息;
第一修改模块,用于通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并将所述虚拟机目标端口信息编码至所述源MAC地址信息,获得转发数据包;所述转发数据包包含调度服务器端口信息;所述虚拟机目标端口信息为目标虚拟服务器组内的虚拟机的一应用端口的信息;
第一替换存储模块,用于接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息;采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;
第一响应模块,用于响应于所述转发数据包,获得响应数据包;并通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。
8.一种数据包传输装置,应用于调度服务器,其特征在于,包括:
第二接收模块,用于接收由客户端发起的请求数据包;所述请求数据包包含源MAC地址信息;
第二修改模块,用于确定目标虚拟服务器和虚拟机目标端口信息,并将所述虚拟机目标端口信息编码至所述源MAC地址信息,获得转发数据包;所述转发数据包包含调度服务器端口信息;所述虚拟机目标端口信息为目标虚拟服务器组内的虚拟机的一应用端口的信息;
第二替换存储模块,用于通过目标虚拟服务器接收所述转发数据包,以使虚拟交换机获取所述转发数据包中的虚拟机目标端口信息,采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;
第二响应模块,用于通过目标虚拟服务器响应于所述转发数据包,获得响应数据包,以使虚拟交换机基于所述信息对应关系将响应数据包转发至客户端;
其中,所述目标虚拟服务器组包含多个虚拟机,每个虚拟机具有多个应用端口,同一虚拟机的多个应用端口添加到同一所述目标虚拟服务器组。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1‑6中任一项所述的方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1‑6中任一项所述的方法。 说明书 : 数据包传输方法及装置、存储介质、电子设备技术领域[0001] 本公开涉及云计算技术领域,具体而言,涉及一种数据包传输方法、数据包传输装置、计算机可读存储介质和电子设备。背景技术[0002] 在云计算服务中,调度服务器是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。调度服务器是高可用网络基础架构的关键组件。[0003] 相关技术中,当客户端和虚拟服务器组在同一虚拟私有云(VirtualPrivateCloud,VPC)时,同一台虚拟机的不同端口可以添加到同一个虚拟服务器组。但是,由于无法区分同一台虚拟机的多个端口,网络的双向(请求和应答)流量均需要经过调度服务器节点,从而使调度服务器成为网络处理性能瓶颈。[0004] 需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。发明内容[0005] 本公开实施例的目的在于提供一种数据包传输方法、数据包传输装置、计算机可读存储介质和电子设备,进而在一定程度上解决了相关技术中由于网络双向流量都要经过调度服务器而引起的网络处理性能瓶颈问题。[0006] 根据本公开的第一方面,提供了一种数据包传输方法,应用于目标虚拟服务器组,所述目标虚拟服务器组包含多个虚拟机,每个虚拟机具有多个应用端口,包括:[0007] 接收调度服务器转发的由客户端发起的请求数据包;[0008] 通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息;[0009] 接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息;采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;[0010] 响应于所述转发数据包,获得响应数据包;并通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0011] 在本公开的一种示例性实施例中,基于前述方案,所述客户端和所述目标虚拟服务器组位于同一个私有云网络。[0012] 在本公开的一种示例性实施例中,基于前述方案,所述请求数据包包含源MAC地址信息,所述基于所述虚拟机目标端口信息对所述请求数据包进行修改,包括:[0013] 通过调度服务器将所述虚拟机目标端口信息编码至所述源MAC地址信息。[0014] 在本公开的一种示例性实施例中,基于前述方案,所述接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息,包括:[0015] 接收所述转发数据包;所述转发数据包包含修改后的源MAC地址信息;[0016] 通过虚拟交换机对所述修改后的源MAC地址信息进行解码,获得虚拟机目标端口信息。[0017] 在本公开的一种示例性实施例中,基于前述方案,所述存储替换前与替换后的信息对应关系,包括:[0018] 确定替换前的所述调度服务器端口信息与替换后的所述虚拟机目标端口信息的信息对应关系;[0019] 将所述信息对应关系存储于虚拟交换机的连接跟踪中。[0020] 在本公开的一种示例性实施例中,基于前述方案,所述响应数据包包含虚拟机目标端口信息,所述通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端,包括:[0021] 通过虚拟交换机调用所述信息对应关系,确定与所述虚拟机目标端口信息对应的调度服务器端口信息;[0022] 通过虚拟交换机将所述响应数据包中的虚拟机目标端口信息替换为所述调度服务器端口信息,获得应答转发包;[0023] 通过虚拟交换机将所述应答转发包转发至客户端。[0024] 在本公开的一种示例性实施例中,基于前述方案,所述方法还包括:[0025] 通过将调度服务器与虚拟IP地址绑定,以使客户端通过虚拟IP地址访问调度服务器。[0026] 根据本公开的第二方面,提供一种数据包传输方法,应用于调度服务器,包括:[0027] 接收由客户端发起的请求数据包;[0028] 确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息;[0029] 通过目标虚拟服务器接收所述转发数据包,以使虚拟交换机获取所述转发数据包中的虚拟机目标端口信息,采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;[0030] 通过目标虚拟服务器响应于所述转发数据包,获得响应数据包,以使虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0031] 根据本公开的第三方面,提供一种数据包传输装置,应用于目标虚拟服务器组,所述目标虚拟服务器组包含多个虚拟机,每个虚拟机具有多个应用端口,包括:[0032] 第一接收模块,用于接收调度服务器转发的由客户端发起的请求数据包;[0033] 第一修改模块;用于通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息;[0034] 第一替换存储模块,用于接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息;采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;[0035] 第一响应模块,用于响应于所述转发数据包,获得响应数据包;并通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0036] 根据本公开的第四方面,提供一种数据包传输装置,应用于调度服务器,包括:[0037] 第二接收模块,用于接收由客户端发起的请求数据包;[0038] 第二修改模块,用于确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息;[0039] 第二替换存储模块,用于通过目标虚拟服务器接收所述转发数据包,以使虚拟交换机获取所述转发数据包中的虚拟机目标端口信息,采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;[0040] 第二响应模块,用于通过目标虚拟服务器响应于所述转发数据包,获得响应数据包,以使虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0041] 根据本公开的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。[0042] 根据本公开的第六方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。[0043] 本公开示例性实施例可以具有以下部分或全部有益效果:[0044] 在本公开示例实施方式所提供的数据包传输方法中,可以接收客户端发起的请求数据包;通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;接收转发数据包,以获取转发数据包中的虚拟机目标端口信息;采用虚拟机目标端口信息替换调度服务器端口信息,并存储替换前与替换后的信息对应关系,基于该信息对应关系进行响应数据包应答。一方面通过对请求数据包的修改将虚拟机目标端口信息携带于请求数据包中,使得后端虚拟交换机可以同时获取虚拟机目标端口信息和调度服务器端口信息,通过存储两种信息对应关系,使得应答数据包不需要经过调度服务器节点,也不需要在虚拟机中配置源IP地址为虚拟IP地址,而可以将应答包直接转发至客户端,从而减小调度服务器节点的处理量,避免由调度服务器引起的网络性能瓶颈问题;另一方面,应答过程中减少一跳,可以降低网络时延,提高通信效率。此外,通过本公开方法可以实现同一台虚拟机的不同端口添加到同一个虚拟服务器组中,适用于负载均衡挂载多个容器的情况,扩展了调度服务器的应用。[0045] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明[0046] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0047] 图1示出了可以应用本公开实施例的一种数据包传输方法及装置的示例性系统架构的示意图;[0048] 图2示意性示出了根据本公开的一个实施例的数据包传输方法的流程图;[0049] 图3示意性示出了根据本公开的一个实施例中虚拟交换机将响应数据包转发至客户端的流程图;[0050] 图4示意性示出了根据本公开的一个实施例的数据包传输方法实现过程多端交互流程图;[0051] 图5示意性示出了根据本公开的另一个实施例的数据包传输方法的流程图;[0052] 图6示意性示出了根据本公开的一个实施例的数据包传输装置结构框图;[0053] 图7示意性示出了根据本公开的另一个实施例的数据包传输装置结构框图;[0054] 图8示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。具体实施方式[0055] 现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。[0056] 此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。[0057] 图1示出了可以应用本公开实施例的一种数据包传输方法及装置的示例性应用环境的系统架构100的示意图。如图1所示,系统架构100可以包括客户端101,调度服务器102和后端虚拟服务器103、104。客户端101可以是计算机平台,也可以是云服务中的虚拟机。调度服务器102可以是一组服务器集合,后端虚拟服务器103、104形成一个虚拟服务器组,该虚拟服务器组内包含多个虚拟机,每个虚拟机具有多个应用端口。通过调度服务器102将客户端发送的请求数据包流量转发至后端虚拟服务器103、104进行处理;处理后的响应数据包由后端虚拟服务器103、104直接发送给客户端。客户端101与调度服务器102通过互联网连接,应该理解,图1中的客户端、调度服务器和后端虚拟服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的客户端、调度服务器和后端虚拟服务器。比如后端虚拟服务器103、104可以是多个服务器组成的虚拟服务器集群等。[0058] 本公开实施例所提供的数据包传输方法可以在后端虚拟服务器103、104执行,相应地,数据包传输装置一般设置于后端虚拟服务器103、104中。本公开实施例所提供的数据包传输方法可以在调度服务器102执行,相应地,数据包传输装置一般设置于调度服务器102中。[0059] 云计算服务中,调度服务器(也称网络负载均衡)通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。但是,当同一台虚拟机的不同端口添加到同一个虚拟服务器组时,网络数据包传输过程为:客户端访问调度服务器,调度服务器对请求数据包进行处理,此时,经调度服务器处理后数据包连接的5元组为客户端IP(源IP)、客户端端口(源端口)、调度服务器IP、调度服务器端口和传输协议,目的MAC(物理地址)为后端虚拟机的MAC。由于无法区分同一台虚拟机的多个端口,网络的数据请求和应答双向流量均需要经过调度服务器节点。在请求或者应答流量很大或者QPS(QueryPerSecond,每秒查询率)很高时,调度服务器将成为网络性能瓶颈。[0060] 对于LVS(LinuxVirtualServer)即Linux虚拟服务器,其有三个工作模式:NAT(NetworkAddressTranslation)即网络地址转换模式、TUN(隧道)模式、以及DR(直接路由)模式。[0061] 举例而言,DR模式中LVS仅承担数据的入站请求以及根据算法选出合理的真实服务器,最终由后端真实服务器负责将响应数据包发送返回给客户端。DR模式要求调度服务器与后端服务器必须在同一个局域网内,VIP地址需要在调度服务器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度服务器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的。后的真实服务器的VIP对外界是不可见的,但真实服务器却可以接受目标地址VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址。调度服务器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。[0062] 对于调度服务器挂载多个容器(接口集合)的情况,且同一虚拟机有多个应用端口添加至同一虚拟服务器组时,由于无法区分同一台虚拟机的多个端口,网络的数据请求和应答双向流量均需要经过调度服务器节点。在请求或者应答流量很大或者QPS(每秒查询率)很高时,调度服务器将成为网络性能瓶颈。[0063] 本公开针对以上问题,提出了一种数据包传输方法。[0064] 以下对本公开实施例的技术方案进行详细阐述:[0065] 参考图2所示,本公开提供的一种示例实施方式的数据包传输方法,可以应用于目标虚拟服务器组,目标虚拟服务器组可以包含多个虚拟机和应用端口,每个虚拟机具有多个应用端口。由客户端向目标虚拟服务器发送请求;可以包括以下步骤:[0066] 步骤S210,接收调度服务器转发的由客户端发起的请求数据包。[0067] 在本示例实施方式中,调度服务器即网络负载均衡(Networkloadbalancing,NLB)可以绑定一个虚拟IP地址(VrtualIPAddress,VIP),例如,192.168.0.3。客户端通过该虚拟IP地址访问网络负载均衡。也就是说,客户端发起的请求数据包可以包括该虚拟IP地址信息,使该请求数据包经过该VIP对应的网络负载均衡选定后端服务器,然后对请求数据包进行转发;后端服务器接收网络负载均衡器转发的请求数据包。[0068] 步骤S220,通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息。[0069] 在本示例实施方式中,网络负载均衡(Networkloadbalancing,NLB)工作在传输层,一般支持传输层的协议:TCP(TransmissionControlProtocol,传输控制协议)、UDP(UserDatagramProtocol,用户数据报协议)、以及TLS(TransportLayerSecurity,安全传输协议)。以TCP连接协议为例,NLB基于协议、源IP地址、源端口、目标IP地址、目标端口和TCP序列号,使用流哈希算法选择目标服务器和对应的虚拟机目标端口。目标虚拟服务器可以是客户端的后端虚拟服务器,虚拟机目标端口可以是目标虚拟服务器组内的虚拟机某一端口的标识信息或者端口的编码信息。[0070] 请求数据包经过调度服务器后可以将虚拟机目标端口信息添加至转发数据包中,使后端目标服务器基于转发数据包获取接收该数据包的虚拟机目标端口信息。请求数据包经过调度服务器后还可以将调度服务器的端口信息添加在转发数据包中,以获得虚拟机端口信息与调度服务器端口信息的对应关系。[0071] 步骤S230,接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息;采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系。[0072] 在本示例实施方式中,目标服务器接收转发数据包后,可以将转发数据包中的虚拟机目标端口信息提取出来,采用该虚拟机目标端口信息替换转发数据包中调度服务器端口信息,使数据包能够通过虚拟机目标端口到达目标服务器的虚拟机,形成客户端到目标服务器虚拟机的链路。[0073] 在本示例实施方式中,可以通过目标虚拟服务器的虚拟交换机将请求发送过程中替换前(调度服务器端口信息)与替换后(虚拟机目标端口)的信息对应关系存储起来,以便在应答数据包返回时直接查找替换,使应答包不用再经过调度服务器。[0074] 步骤S240,响应于所述转发数据包,获得响应数据包;并通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0075] 在本示例实施方式中,目标服务器响应于接收到的转发数据包,基于转发数据包中的客户请求对转发数据包进行处理响应,得到响应数据包。响应数据包中可以包括目标服务器对请求数据包的应答信息,还可以包括将响应数据包返回客户端需要的其他信息,例如,调度服务器端口信息、客户端端口信息、客户端IP地址等信息。通过这些信息将响应数据包返回至请求客户端,完成客户端与后端服务器的通信过程。[0076] 在本示例实施方式所提供的数据包传输方法中,可以接收客户端发起的请求数据包;通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;接收转发数据包,以获取转发数据包中的虚拟机目标端口信息;采用虚拟机目标端口信息替换调度服务器端口信息,并存储替换前与替换后的信息对应关系,基于该信息对应关系进行响应数据包应答。一方面通过对请求数据包的修改将虚拟机目标端口信息携带于请求数据包中,使得后端虚拟交换机可以同时获取虚拟机目标端口信息和调度服务器端口信息,通过存储两种信息对应关系,使得应答数据包不需要经过调度服务器节点,也不需要在虚拟机中配置源IP地址为虚拟IP地址,而可以将应答包直接转发至客户端,从而减小调度服务器节点的处理量,避免由调度服务器引起的网络性能瓶颈问题;另一方面,应答过程中减少一跳,可以降低网络时延,提高通信效率。此外,通过本公开方法可以实现同一台虚拟机的不同端口添加到同一个虚拟服务器组中,适用于负载均衡挂载多个容器的情况,扩展了调度服务器的应用。[0077] 在一些实施例中,客户端可以位于公网中,也可以位于目标虚拟服务器组所在的私有云网络中,本示例对此不做限定。[0078] 在一些实施例中,所述请求数据包包含源MAC(MediaAccessControl,媒体访问控制)地址信息,所述基于所述虚拟机目标端口信息对所述请求数据包进行修改,包括:[0079] 通过调度服务器将所述虚拟机目标端口信息编码至所述源MAC地址信息。[0080] 在本示例实施方式中,源MAC地址(或称物理地址)信息可以是客户端的MAC地址信息,MAC地址信息的长度是48比特(6字节),由16进制的数字组成,分为前24位和后24位:MAC地址对应于OSI(OpenSystemInterconnect,开放式系统互联)参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机(虚拟机)MAC地址和自身端口的数据库,交换机根据收到的数据帧中的"目的MAC地址"字段来转发数据帧。[0081] 在本示例实施方式中,可以在调度服务器节点处处理请求数据包,该节点处数据包连接的5元组为客户端IP、客户端端口、调度服务器IP、调度服务器端口和协议,目的MAC地址为目标服务器组中的虚机MAC地址。调度服务器节点根据预设的调度算法选择后端的目标虚拟服务器(如192.168.0.7或192.168.0.8),将数据请求包转发给后端目标虚拟服务器,并且在转发之前调度服务器会修改请求数据包中的目标地址以及目标端口,目标地址与目标端口将被修改为选出的目标虚拟服务器IP地址以及相应的端口(虚拟机目标端口)。在本示例中,转发之前调度服务器还需要修改源MAC地址信息,即将虚拟机目标端口信息编码添加至源MAC地址信息,使得虚拟机目标端口信息携带在源MAC地址信息中。[0082] 在本示例实施方式中,调度服务器中的预设调度算法可以是轮询调度、加权轮询调度、最小连接调度、加权最小连接调度、基于局部最少的连接中的一种,本示例不以此为限。例如,轮询调度(RoundRobin简称RR)算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。[0083] 在一些实施例中,所述接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息,包括:[0084] 首先,接收所述转发数据包。在本示例实施方式中,转发数据包中包含修改后的源MAC地址信息,也就是说转发数据包中携带有虚拟机目标端口信息。[0085] 然后,通过虚拟交换机对所述修改后的源MAC地址信息进行解码,获得虚拟机目标端口信息。[0086] 在本示例实施方式中,当数据包达到目标虚拟服务器组的虚拟机时,虚拟交换机可以从修改后的源MAC地址信息中解码出虚拟机目标端口信息,再根据收到的数据包中的目的MAC地信息转发数据包。[0087] 在一些实施例中,所述存储替换前与替换后的信息对应关系,包括:[0088] 首先,确定替换前的所述调度服务器端口信息与替换后的所述虚拟机目标端口信息的信息对应关系。在本示例实施方式中,通过虚拟交换机确定替换前的调度服务器端口信息与替换后的虚拟机目标端口信息的信息对应关系。[0089] 然后,将所述信息对应关系存储于虚拟交换机的连接跟踪中。在本示例中,虚拟交换机将确定的替换前与替换后的信息对应关系存储于其对应的连接跟踪中。[0090] 在一些实施例中,参考图3所示,所述响应数据包包含虚拟机目标端口信息,所述通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端,包括:[0091] 步骤S310,通过虚拟交换机调用所述信息对应关系,确定与所述虚拟机目标端口信息对应的调度服务器端口信息。[0092] 在本示例实施方式中,响应数据包可以是目标服务器组的虚拟机对请求数据包的应答,响应数据包中可以包含虚拟机对客户端请求的应答信息,还可以包含虚拟机目标端口信息、客户端端口信息、客户端IP地址信息等信息,本示例对此不做特殊限定。本示例中虚拟机不需要将应答包中的源IP地址配置为VIP,而是虚拟机产生的响应数据包通过虚拟交换机直接进行转发。[0093] 在本示例实施方式中,虚拟交换机在转发响应数据包之前调用其连接跟踪中存储的信息对应关系,根据响应数据包中的虚拟机目标端口信息确定与其对应的调度服务器端口信息。[0094] 步骤S320,通过虚拟交换机将所述响应数据包中的虚拟机目标端口信息替换为所述调度服务器端口信息,获得应答转发包。[0095] 在本示例实施方式中,虚拟交换机将响应数据包中的虚拟机目标端口信息替换为调度服务器端口信息,相当于响应数据包经过了调度服务器节点的端口信息改变,获得虚拟交换机处的应答转发包,该应答转发包中具有在调度服务器节点处才可获得的调度服务器端口信息。[0096] 步骤S330,通过虚拟交换机将所述应答转发包转发至客户端。[0097] 在本示例实施方式中,由于虚拟交换机处的应答转发包已经具有调度服务器端口信息,因此可以直接将应答转发包转发至客户端,不用再经过调度服务器,使得在网络数据流量很高或QPS很高的情况下,能够缓解调度服务器处的流量压力,避免由于调度服务器而引起的性能瓶颈问题。[0098] 以下以一个具体示例说明本公开的数据包传输方法,参考图4所示,本示例提供的数据包传输方法包括:[0099] 步骤S401,客户端发起请求数据包。[0100] 在本示例实施方式中,客户端可以是真实的用户计算机平台,也可以是虚拟机,本示例对此不做限定。客户端通过虚拟IP地址(VIP:192.168.0.3)访问与该地址绑定的网络负载均衡。[0101] 步骤S402,网络负载均衡接收请求数据包。在本示例中,请求数据包中包含客户端IP地址和客户端端口信息,还包含用户的请求数据。客户端的请求数据包发送至网络负载均衡。[0102] 步骤S403,网络负载均衡基于该请求数据包根据预设的调度算法确定目标虚拟服务器和虚拟机目标端口信息。[0103] 在本示例实施方式中,网络负载均衡根据预设的调度算法确定接收的请求数据包的目标服务器和虚拟机的目标端口信息。本示例中的调度算法可以是轮询调度、加权轮询调度或最小连接调度等,可以根据具体的需求进行设定。如图4所示,本示例确定的目标服务器组的虚拟机地址分别为192.168.0.7和192.168.0.8,其中每个虚拟机都具有两个应用端口,两个应用端口的端口号分别为8080和80。[0104] 步骤S404,网络负载均衡基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包。[0105] 在本示例实施方式中,网络负载均衡可以将虚拟机目标端口信息编码至所述源MAC地址信息,得到修改后的源MAC地址,将转发数据包中包含该修稿后的源MAC地址信息。[0106] 步骤S405,网络负载均衡发送转发数据包。[0107] 步骤S406,目标虚拟服务器组的虚拟机接收转发数据包,获取转发数据包中的虚拟机目标端口信息。[0108] 在本示例实施方式中,虚拟机接收转发数据包,同时可以通过虚拟交换机对修改后的源MAC地址信息进行解码,获得虚拟机目标端口信息。解码后源MAC地址信息恢复成编码之前的信息。[0109] 步骤S407,虚拟机发送虚拟机目标端口信息至虚拟交换机。[0110] 步骤S408,目标虚拟服务器组的虚拟交换机采用所述虚拟机目标端口信息替换所述网络负载均衡端口信息。[0111] 在本示例实施方式中,虚拟交换机可以将转发数据包中的网络负载均衡端口信息替换为解码出来的虚拟机目标端口信息,以使数据链路层能够确定多端口虚拟机中的目标端口,从而确定同一目标服务器组中的多端口虚拟机的目标端口信息,确定虚拟机节点处的5元组信息。[0112] 步骤S409,目标虚拟服务器组的虚拟交换机存储替换前后的信息对应关系。[0113] 在本示例实施方式中,虚拟交换机在替换信息之后再将替换前后的信息对应关系储存在虚拟交换机的连接跟踪中,以便应答过程中调用。[0114] 步骤S410,虚拟机响应转发数据包,对转发数据包进行处理,得到响应数据包。[0115] 在本示例实施方式中,虚拟机可以根据转发数据包中的请求信息作出相应的应答,并对应答信息与应答链路信息或地址信息进行处理,形成响应数据包。[0116] 步骤S411,虚拟机发送响应数据包至虚拟交换机。[0117] 步骤S412,虚拟交换机基于信息对应关系将响应数据包中的虚拟机目标端口信息替换为网络负载均衡端口信息。[0118] 在本示例实施方式中,响应数据包经过虚拟交换机时调用信息对应关系,将数据包中的虚拟机目标端口信息替换成网络负载均衡端口信息,并据此直接将响应数据包转发至客户端,使响应数据包不经过网络负载均衡节点,减少一跳,降低网络时延;同时降低网络负载均衡处的流量压力,避免网络负载均衡成为性能瓶颈。[0119] 步骤S413,虚拟交换机将含网络负载均衡端口信息的响应数据包转发至客户端。[0120] 在上述实施例中,一方面通过网络负载均衡确定目标虚拟服务器和虚拟机目标端口信息,由于不同节点处的端口信息不同,而源MAC地址信息在不同网络节点处不变,本公开通过将虚拟机目标端口信息编码在源MAC地址中,使得后端目标虚拟服务器组能够获得虚拟机目标端口信息,解决了同一目标服务器组中的虚拟机具有多个端口时,无法确定目标端口的问题。另一方面,通过虚拟交换机将虚拟机目标端口信息与网络负载均衡端口信息的对应关系存储在连接跟踪中,以使在应答过程中不需要经过网络负载均衡而可以直接获得网络负载均衡端口信息,直接从虚拟交换机转发应答包给客户端,减少了网络负载均衡处的流量压力,避免网络负载均衡成为网络处理性能瓶颈,同时减少一跳,降低网络延时。此外,可以实现同一个虚拟机的不同端口添加在同一个目标虚拟服务器组内,使得网络负载均衡可以对多端口虚机进行端口确定,使数据通信方式更加灵活。[0121] 参考图5所示,本公开提供的一种示例实施方式的数据包传输方法,可以应用于调度服务器。执行主体为调度服务器,该方法可以包括以下步骤:[0122] 步骤S510,接收由客户端发起的请求数据包。[0123] 步骤S520,确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息。[0124] 步骤S530,通过目标虚拟服务器接收所述转发数据包,以使虚拟交换机获取所述转发数据包中的虚拟机目标端口信息,采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系。[0125] 步骤S540,通过目标虚拟服务器响应于所述转发数据包,获得响应数据包,以使虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0126] 上述实施例中,调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并将虚拟机目标端口信息编码在源MAC地址中,在目标虚拟服务器组的虚拟交换机处进行解码,获得虚拟机目标端口信息,并采用虚拟机目标端口信息替换调度服务器信息,将替换前后信息的对应关系存储起来,以供应答时调用,从而使应答数据包不经过调度服务器直接转发至客户端,减少了调度服务器处的流量压力,避免调度服务器成为网络处理性能瓶颈,同时减少一跳,降低网络延时。此外,可以实现同一个虚拟机的不同端口添加在同一个目标虚拟服务器组内,使得数据通信方式更加灵活。[0127] 上述提供的数据包传输方法从调度服务器侧进行了限定和说明,与在上文从目标服务器组进行限定和说明的数据包传输方法相比,实现原理与实现手段对应相似,为了避免重复说明,在此不再赘述。[0128] 进一步的,本示例实施方式中,还提供了数据包传输装置600。该数据包传输装置600可以应用于云服务器。参考图6所示,该数据包传输装置600可以包括:[0129] 第一接收模块610,可以用于接收调度服务器转发的由客户端发起的请求数据包;[0130] 第一修改模块620,可以用于通过调度服务器确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息;[0131] 第一替换存储模块630,可以用于接收所述转发数据包,以获取所述转发数据包中的虚拟机目标端口信息;采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;[0132] 第一响应模块640,可以用于响应于所述转发数据包,获得响应数据包;并通过虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0133] 在本公开的一种示例性实施例中,第一修改模块620包括:[0134] 第一子接收模块,可以用于接收所述转发数据包;所述转发数据包包含修改后的源MAC地址信息。[0135] 解码模块,可以用于通过虚拟交换机对所述修改后的源MAC地址信息进行解码,获得虚拟机目标端口信息。[0136] 在本公开的一种示例性实施例中,第一替换存储模块630包括:[0137] 对应关系确定模块,可以用于确定替换前的所述调度服务器端口信息与替换后的所述虚拟机目标端口信息的信息对应关系。[0138] 存储模块,可以用于将所述信息对应关系存储于虚拟交换机的连接跟踪中。[0139] 在本公开的一种示例性实施例中,第一响应模块640包括:[0140] 调用模块,可以用于通过虚拟交换机调用所述信息对应关系,确定与所述虚拟机目标端口信息对应的调度服务器端口信息;[0141] 替换应答模块,可以用于通过虚拟交换机将所述响应数据包中的虚拟机目标端口信息替换为所述调度服务器端口信息,获得应答转发包;[0142] 转发模块,可以用于通过虚拟交换机将所述应答转发包转发至客户端。[0143] 在本公开的一种示例性实施例中,装置600还包括:[0144] 绑定模块,可以用于通过将调度服务器与虚拟IP地址绑定,以使客户端通过虚拟IP地址访问调度服务器。[0145] 在本公开的另一种示例性实施例中,参考图7,数据包传输装置700包括:[0146] 第二接收模块710,可以用于接收由客户端发起的请求数据包;[0147] 第二修改模块720,可以用于确定目标虚拟服务器和虚拟机目标端口信息,并基于所述虚拟机目标端口信息对所述请求数据包进行修改,获得转发数据包;所述转发数据包包含调度服务器端口信息;[0148] 第二替换存储模块730,可以用于通过目标虚拟服务器接收所述转发数据包,以使虚拟交换机获取所述转发数据包中的虚拟机目标端口信息,采用所述虚拟机目标端口信息替换所述调度服务器端口信息,并存储替换前与替换后的信息对应关系;[0149] 第二响应模块740,可以用于通过目标虚拟服务器响应于所述转发数据包,获得响应数据包,以使虚拟交换机基于所述信息对应关系将响应数据包转发至客户端。[0150] 上述数据包传输装置中各模块或单元的具体细节已经在对应的数据包传输方法中进行了详细的描述,因此此处不再赘述。[0151] 作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图2‑图5所示的各个步骤等。[0152] 需要说明的是,本公开所示的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。[0153] 图8示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。[0154] 需要说明的是,图8示出的电子设备的计算机系统800仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。[0155] 如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有系统操作所需的各种程序和数据。CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。[0156] 以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。[0157] 特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的方法和装置中限定的各种功能。[0158] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0159] 需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等,均应视为本公开的一部分。[0160] 应可理解的是,本说明书公开和限定的本公开延伸到文中和/或附图中提到或明显的两个或两个以上单独特征的所有可替代组合。所有这些不同的组合构成本公开的多个可替代方面。本说明书的实施方式说明了已知用于实现本公开的最佳方式,并且将使本领域技术人员能够利用本公开。
专利地区:北京
专利申请日期:2022-03-14
专利公开日期:2024-06-18
专利公告号:CN114640679B