CN115834291B - 分布式内网服务数据获取方法、装置、设备及存储介质 - Google Patents

分布式内网服务数据获取方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115834291B
CN115834291B CN202211434128.XA CN202211434128A CN115834291B CN 115834291 B CN115834291 B CN 115834291B CN 202211434128 A CN202211434128 A CN 202211434128A CN 115834291 B CN115834291 B CN 115834291B
Authority
CN
China
Prior art keywords
data packet
access
channel
bridge
target
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.)
Active
Application number
CN202211434128.XA
Other languages
English (en)
Other versions
CN115834291A (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.)
China United Network Communications Group Co Ltd
Unicom Digital Technology Co Ltd
Unicom Cloud Data Co Ltd
Original Assignee
China United Network Communications Group Co Ltd
Unicom Digital Technology Co Ltd
Unicom Cloud Data 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 China United Network Communications Group Co Ltd, Unicom Digital Technology Co Ltd, Unicom Cloud Data Co Ltd filed Critical China United Network Communications Group Co Ltd
Priority to CN202211434128.XA priority Critical patent/CN115834291B/zh
Publication of CN115834291A publication Critical patent/CN115834291A/zh
Application granted granted Critical
Publication of CN115834291B publication Critical patent/CN115834291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种分布式内网服务数据获取方法、装置、设备及存储介质,涉及通信技术领域,用于提高虚拟机访问内部服务的效率。方法包括:通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥,并在通道网桥对访问数据包进行处理,得到目标处理结果,目标处理结果用于指示访问数据包对应的目标地址和访问数据包在核心设备对应的MAC地址,访问数据包用于目标虚拟机访问目标服务;根据目标处理结果,在通道网桥确定访问数据包对应的访问通道,并基于访问通道将访问数据包发送至核心设备;通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥;通过集成网桥将响应数据包发送到目标虚拟机。

Description

分布式内网服务数据获取方法、装置、设备及存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种分布式内网服务数据获取方法、装置、设备及存储介质。
背景技术
随着云平台网络技术的不断发展,当前在开源的云计算管理平台项目OpenStack(简称云平台)中,在租户虚拟机访问云服务商的某些服务(例如域名***(domain namesystem,DNS)服务、红帽软件包管理器(red hat package manager,RPM)源服务、对象存储服务等)时,首先发送访问流量,访问流量默认进入租户的虚拟私有云(virtual privatecloud,VPC)网关,通过VPC网关到达特定内核协议栈路由,进入核心设备(也可称为云池物理设备或物理设备),最后通过核心设备上配置的路由访问目的服务。具体的,租户虚拟机访问云服务商服务时,访问流量会根据虚拟机配置的默认路由,到达租户VPC的网关namespace。再经过网关namespace的路由,到达核心设备,核心设备上再配置相应的路由,到达最终目的服务。
在上述方法中,当在特定数据中心网络架构下,访问流量可能进入公网设备,经过较长的传输路径后又回到云内网,导致租户虚拟机访问目的服务的路径太长。以及,当在同一个节点调度多个租户VPC时,访问流量被导入到集中式VPC网关,会导致VPC网关流量压力增大,且集中式网关的可用性直接影响访问流量通道的可用性。并且,由于经过了内核协议栈路由,且经过集中式设备,访问内部服务的性能在多租户共享时,性能会出向衰减和下降。同时,在上述流量的访问路径中,缺少可控的安全设施和对内部服务流量的流控以及限速。租户虚拟机需要通过租户的VPC访问内部服务,而VPC和虚拟机在不同的节点上,虚拟机需要跨节点进行访问,导致租户虚拟机访问目的服务的路径太长。从而,虚拟机访问内部服务时的效率较低。
发明内容
本申请提供一种分布式内网服务数据获取方法、装置、设备及存储介质,用于解决虚拟机访问内部服务的路径太长的问题,从而提高虚拟机访问内部服务的效率。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供了一种分布式内网服务数据获取方法,方法包括:通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥,并在通道网桥对访问数据包进行处理,得到目标处理结果,目标处理结果用于指示访问数据包对应的目标地址和访问数据包在核心设备对应的MAC地址,访问数据包用于目标虚拟机访问目标服务;根据目标处理结果,在通道网桥确定访问数据包对应的访问通道,并基于访问通道将访问数据包发送至核心设备;通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥;通过集成网桥将响应数据包发送到目标虚拟机。
在一种可能的实现方式中,通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥,包括:通过集成网桥接收目标虚拟机发送的访问数据包,并在确定访问数据包合法的情况下,判断访问数据包对应的访问地址是否为预设地址;在确定访问数据包对应的访问地址为预设地址的情况下,为访问数据包标记目标地址,并将访问数据包发送至通道网桥,目标地址用于指示目标虚拟机。
在一种可能的实现方式中,通过通道网桥接收核心设备基于访问通道返回的响应数据包之前,方法还包括:通过通道网桥接收核心设备基于访问通道发送的地址解析协议ARP请求,并根据ARP请求确定访问通道对应的通道标识,通道标识用于指示ARP请求对应的访问通道;通过通道网桥基于通道标识指示的访问通道向核心设备发送ARP应答,ARP应答包括访问数据包对应的目标地址。
在一种可能的实现方式中,在通道网桥对访问数据包进行处理,包括:在通道网桥对访问数据包对应的源地址进行设置,确定访问数据包对应的目标地址,访问数据包对应的源地址为目标虚拟机的地址,访问数据包对应的目标地址用于核心设备将响应数据包发送到目标虚拟机;在通道网桥对访问数据包对应的目的MAC进行设置,确定访问数据包在核心设备对应的MAC地址,核心设备对应的MAC地址用于将访问数据包发送至核心设备。
在一种可能的实现方式中,将响应数据包发送到集成网桥之前,方法还包括:在通过通道网桥确定响应数据包合法的情况下,判断响应数据包对应的源地址是否为预设地址;在确定响应数据包对应的源地址为预设地址的情况下,判断响应数据包对应的目的地址是否为目标地址;在确定响应数据包对应的目的地址为目标地址的情况下,将响应数据包对应的目的地址修改为访问数据包对应的源地址。
在一种可能的实现方式中,在通道网桥对访问数据包进行处理,还包括:将访问数据包对应的目的端口号修改为目标服务对应的真实端口号;在确定响应数据包对应的目的地址为目标地址的情况下,将响应数据包对应的目的地址修改为访问数据包对应的源地址之前,方法还包括:将响应数据包对应的源端口号修改为目标服务对应的虚拟端口号。
第二方面,提供了一种分布式内网服务数据获取装置,数据获取装置包括:传输单元和处理单元;传输单元,用于通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥;处理单元,用于在通道网桥对访问数据包进行处理,得到目标处理结果,目标处理结果用于指示访问数据包对应的目标地址和访问数据包在核心设备对应的MAC地址,访问数据包用于目标虚拟机访问目标服务;处理单元,还用于根据目标处理结果,在通道网桥确定访问数据包对应的访问通道;传输单元,还用于基于访问通道将访问数据包发送至核心设备;传输单元,还用于通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥;传输单元,还用于通过集成网桥将响应数据包发送到目标虚拟机。
在一种可能的实现方式中,传输单元,还用于通过集成网桥接收目标虚拟机发送的访问数据包;处理单元,还用于在确定访问数据包合法的情况下,判断访问数据包对应的访问地址是否为预设地址;处理单元,还用于在确定访问数据包对应的访问地址为预设地址的情况下,为访问数据包标记目标地址;传输单元,还用于将访问数据包发送至通道网桥,目标地址用于指示目标虚拟机。
在一种可能的实现方式中,传输单元,还用于通过通道网桥接收核心设备基于访问通道发送的地址解析协议ARP请求;处理单元,还用于根据ARP请求确定访问通道对应的通道标识,通道标识用于指示ARP请求对应的访问通道;传输单元,还用于通过通道网桥基于通道标识指示的访问通道向核心设备发送ARP应答,ARP应答包括访问数据包对应的目标地址。
在一种可能的实现方式中,处理单元,还用于在通道网桥对访问数据包对应的源地址进行设置,确定访问数据包对应的目标地址,访问数据包对应的源地址为目标虚拟机的地址,访问数据包对应的目标地址用于核心设备将响应数据包发送到目标虚拟机;处理单元,还用于在通道网桥对访问数据包对应的目的MAC进行设置,确定访问数据包在核心设备对应的MAC地址,核心设备对应的MAC地址用于将访问数据包发送至核心设备。
在一种可能的实现方式中,处理单元,还用于在通过通道网桥确定响应数据包合法的情况下,判断响应数据包对应的源地址是否为预设地址;处理单元,还用于在确定响应数据包对应的源地址为预设地址的情况下,判断响应数据包对应的目的地址是否为目标地址;处理单元,还用于在确定响应数据包对应的目的地址为目标地址的情况下,将响应数据包对应的目的地址修改为访问数据包对应的源地址。
在一种可能的实现方式中,处理单元,还用于将访问数据包对应的目的端口号修改为目标服务对应的真实端口号;处理单元,还用于将响应数据包对应的源端口号修改为目标服务对应的虚拟端口号。
第三方面,一种电子设备,包括:处理器以及存储器;其中,存储器用于存储一个或多个程序,一个或多个程序包括计算机执行指令,当电子设备运行时,处理器执行存储器存储的计算机执行指令,以使电子设备执行如第一方面的一种分布式内网服务数据获取方法。
第四方面,提供了一种存储一个或多个程序的计算机可读存储介质,该一个或多个程序包括指令,上述指令当被计算机执行时使计算机执行如第一方面的一种分布式内网服务数据获取方法。
本申请提供了一种分布式内网服务数据获取方法、装置、设备及存储介质,应用于虚拟机访问内部服务的场景中。在虚拟机需要访问并获取内部服务的数据包时,可以通过集成网桥将目标虚拟机对应的用于访问目标服务的访问数据包导入至通道网桥,在通道网桥对访问数据包进行处理,以确定访问数据包对应的访问通道,进而基于访问通道将访问数据包发送至核心设备;进一步的,通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥,从而通过集成网桥将响应数据包发送到目标虚拟机。通过上述方法,在虚拟机需要访问并获取内部服务的数据包时,可以基于通道网桥确定访问数据包对应的访问通道,进而基于访问通道,通过集成网桥、通道网桥和核心设备获取访问内部服务的响应数据包,以解决虚拟机通过租户的VPC访问内部服务,而VPC和虚拟机在不同的节点上,则虚拟机需要跨节点进行访问,导致租户虚拟机访问目的服务的路径太长的问题。从而,提高了虚拟机访问内部服务的效率。
附图说明
图1为本申请的实施例提供的一种传统模式下虚拟机访问内部服务的路径示意图;
图2为本申请的实施例提供的一种分布式内网服务数据获取***结构示意图;
图3为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图一;
图4为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图二;
图5为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图三;
图6为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图四;
图7为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图五;
图8为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图六;
图9为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图七;
图10为本申请的实施例提供的一种分布式内网服务数据获取方法流程示意图八;
图11为本申请的实施例提供的一种虚拟机以及虚拟机中容器访问IPv6目标服务的结构示意图;
图12为本申请的实施例提供的一种分布式内网服务数据获取装置的结构示意图;
图13为本申请的实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在本申请的描述中,除非另有说明,“/”表示“或”的意思,例如,A/B可以表示A或B。本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。此外,“至少一个”“多个”是指两个或两个以上。“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在当前云平台中,租户虚拟机需要访问云服务商的某些特定服务,这些服务是云服务提供商的必要组件。在默认情况下,租户虚拟机访问云服务商服务(可称为内部服务或云内服务)时,首先通过虚拟机配置的默认路由,访问流量到达租户VPC的网关命名空间(namespace)。再通过网关namespace的路由,到达核心设备,通过核心设备上配置的相应的路由,到达最终目的服务。上述访问路径,与虚拟机访问公网服务没有本质差别,用户访问内部服务的路径长度和访问公网服务的路径长度一致。
具体的,如图1所示,示出了传统模式下虚拟机以及租户虚拟机访问内部服务的路径。租户虚拟机以及租户虚拟机内容器访问内部服务时,首先通过虚拟机所在计算节点内的网桥,将访问流量发送至第一接入设备,第一接入设备再将访问流量转发至租户VPC的网关namespace所在的网络节点上,通过网络节点上的网桥将访问流量发送至网关namespace的路由,进而通过网络节点上的网桥将访问流量返回至第一接入设备。进一步的,第一接入设备将访问流量传输至核心设备,通过核心设备上配置的路由将访问流量传输至第二接入设备,进而通过第二接入设备将访问流量传输至目的服务节点。
在上述方法中,访问内部服务时,在同一个计算节点可能调度多个租户VPC网关,不能保证集中式网关的可用性,进而直接导致影响访问流量通道的可用性。VPC集中式网关采用Linux namespace下的虚拟设备实现,需要使用内核协议栈路由以及iptables进行网络地址转换(network address translation,NAT),导致在高压力、高并发的情况下,无法保障集中式网关的性能。同时,在流量的访问路径上,缺少可控的安全设施,可以在租户安全组、虚拟路由网关设备上设置安全策略,增加访问流量与租户安全组、VPC的防火墙功能的耦合度。在流量的访问路径上,还缺少对访问内部服务流量的流控和限速机制,流量出虚拟机后,需要在计算节点和虚拟网络之间就近实现流量控制,以避免终端恶意大流量到达集中式网络设备,或者直接到达目的服务。
本申请提供了一种分布式内网服务数据获取方法、装置、设备及存储介质,应用于虚拟机访问内部服务的场景中。在虚拟机需要访问并获取内部服务的数据包时,可以通过集成网桥将目标虚拟机对应的用于访问目标服务的访问数据包导入至通道网桥,在通道网桥对访问数据包进行处理,以确定访问数据包对应的访问通道,进而基于访问通道将访问数据包发送至核心设备;进一步的,通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥,从而通过集成网桥将响应数据包发送到目标虚拟机。通过上述方法,在虚拟机需要访问并获取内部服务的数据包时,可以基于通道网桥确定访问数据包对应的访问通道,进而基于访问通道,通过集成网桥、通道网桥和核心设备获取访问内部服务的响应数据包,以解决虚拟机通过租户的VPC访问内部服务,而VPC和虚拟机在不同的节点上,则虚拟机需要跨节点进行访问,导致租户虚拟机访问目的服务的路径太长的问题。从而,提高了虚拟机访问内部服务的效率。
本申请实施例提供的一种分布式内网服务数据获取方法,可以适用于数据获取***。图2示出了数据获取***的结构示意图。如图2所示,数据获取***20包括:虚拟机21、集成网桥(integration bridge,br-int)22、通道网桥(可称为br-snat、br-vlan、br-virt、br-ex或br-provider)23、隧道相关网桥(br-tun)24、第一接入设备(Switch)25、核心设备(Core)26、第二接入设备(Switch)27和目标服务设备28。集成网桥22包括patch port口;通道网桥23包括patch port口和物理口(bond)。第一接入设备25包括port口,第二接入设备27包括port口。
其中,虚拟机21用于将对应的访问数据包发送至集成网桥22、接收来自集成网桥22的响应数据包;集成网桥22用于将来自虚拟机21的访问数据包导入至通道网桥23、将来自通道网桥23的响应数据包发送到对应的虚拟机21;通道网桥23用于将来自集成网桥22的访问数据包发送至第一接入设备25、将来自第一接入设备25的响应数据包发送至集成网桥22;第一接入设备25用于将来自通道网桥23的访问数据包转发至核心设备26、将来自核心设备26的响应数据包转发至通道网桥23;核心设备26用于将来自第一接入设备25的访问数据包发送至第二接入设备27、将来自第二接入设备27的响应数据包发送至第一接入设备25;第二接入设备27用于将来自核心设备26的访问数据包转发至目标服务设备28、将来自目标服务设备28的响应数据包转发至核心设备26;目标服务设备28用于接收来自第二接入设备27的访问数据包、根据访问数据包发送响应数据包至第二接入设备27。
如图2所示,在OpenStack虚拟网络设备的设计架构中,虚拟机(虚拟机网卡)设置在开放虚拟交换机(OpenVswitch)集成网桥上,在集成网桥下是对用户隐藏的底层租户VPC隔离架构(分为物理网络网桥(通常取名:br-vlan、br-ex或br-provider等)和隧道相关网桥(通常取名为br-tun))。
对于整个云平台的虚拟设备拓扑,可以将集成网桥抽象为一个网络设备,不同用户的虚拟机都接在这个网络设备上,并在这个网络设备上做网络隔离。同时,开放虚拟交换机网桥具有基本的二三层网络转发能力,可以修改数据包的特定字段,并控制数据包的流向。进一步的,将开放虚拟交换机流表下发到开放虚拟交换机网桥上,用来表达对数据包的匹配规则,以及对数据包执行什么动作。并且,结合OpenStack虚拟网络服务(Neutron)的控制器(OpenVswitch-agent),设计相关的开放虚拟交换机流表流水线,在开放虚拟交换机网桥上增加相应的开放虚拟交换机流表,以完成内网服务访问通道的全部功能。
下面结合附图对本申请实施例提供的一种分布式内网服务数据获取方法进行描述。如图3所示,本申请实施例提供的一种分布式内网服务数据获取方法,应用于计算节点,方法包括S201-S204:
S201、通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥,并在通道网桥对访问数据包进行处理,得到目标处理结果。
其中,目标处理结果用于指示访问数据包对应的目标地址和访问数据包在核心设备对应的MAC地址,访问数据包用于目标虚拟机访问目标服务。
可以理解,计算节点可以通过集成网桥,确定来自目标虚拟机的发送的访问数据包合法,进一步的,确定访问数据包的目的地址为预设地址,进而将访问数据包标记为目标虚拟机对应的vlan ID发送至通道网桥,并在通道网桥对访问数据包进行处理,得到目标处理结果。
需要说明的是,预设地址可以为云内服务的固定地址。在通道网桥对访问数据包进行处理包括对访问数据包对应的源地址进行设置、确定访问数据包对应的目标地址、对访问数据包对应的目的MAC进行设置、确定访问数据包在核心设备对应的MAC地址、确定访问数据包对应的数据类别、将访问数据包对应的目的端口号修改为目标服务对应的真实端口号以及确定访问数据包对应的访问通道。
示例性的,云内服务可以为云服务商云内的域名***服务、红帽软件包管理器源服务、对象存储服务中的任意一个。
S202、根据目标处理结果,在通道网桥确定访问数据包对应的访问通道,并基于访问通道将访问数据包发送至核心设备。
可以理解,计算节点可以通过通道网桥对访问数据包进行处理,确定访问数据包对应的访问通道,并基于访问通道将访问数据包发送至核心设备。
可选地,基于访问通道将访问数据包发送至核心设备时,可以基于第一接入设备上相应的port口的vlan ID号,通过通道网桥上的物理口将访问数据包发送至第一接入设备上相应的port口,进而通过第一接入设备将访问数据包转发至核心设备。
示例性的,第一接入设备上相应的port口的vlan ID号可以为1000。
示例性的,在通道网桥上访问数据包的流量路径可以为在通道网桥Table=88或Table=89,对访问数据包设置第一接入设备上相应的port口的vlan ID号,从通道网桥的物理口送出。具体的,流量路径信息可以为:Table=88Match:tcp actions=mod_vlan_vid:1000,output:“bond”;Table=89Match:udp actions=mod_vlan_vid:1000,output:“bond”。
S203、通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥。
可以理解,计算节点通过通道网桥可以接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥。
可选地,通过通道网桥接收核心设备基于访问通道返回的响应数据包时,可以基于第一接入设备上相应的port口的vlan ID号,通过通道网桥上的物理口,通过第一接入设备上相应的port口和通道网桥上的物理口将响应数据包发送至通道网桥,进而通过通道网桥将响应数据包发送至集成网桥。
示例性的,在通道网桥上响应数据包的流量路径可以为响应数据包从物理网口到达通道网桥的Table=0,检查第一接入设备上相应的port口的vlan ID号,送到通道网桥的Table=81。具体的,流量路径信息可以为:Table=0Match:ip,dl_vlan=1000Action:resubmit(,91)。
S204、通过集成网桥将响应数据包发送到目标虚拟机。
可以理解,计算节点通过集成网桥可以响应数据包对应的目的地址确定目标虚拟机,将响应数据包发送至目标虚拟机。
可选地,可以在集成网桥上确定响应数据包对应的协议为IP协议、响应数据包对来源为通道网桥、响应数据包对应的目的MAC为访问数据包对应的源MAC并且响应数据包对应的源IP地址为预设地址,进而将响应数据包发送至目标虚拟机。
示例性的,在集成网桥上响应数据包的流量路径可以为在集成网桥的br-int的Table=0中,匹配IP协议,匹配来源为通道网桥、目的MAC为访问数据包对应的源MAC、源IP地址为预设地址的响应数据包,最终发送到虚拟机的虚拟网卡。具体的,流量路径信息可以为:Table=0Match:ip,in_port=<patch_br_snat>,dl_vlan=1,dl_dst=<vm1_mac>,nw_src=172.20.13.0/24actions=strip_vlan,output:“tap-vm”。
本申请提供了一种分布式内网服务数据获取方法、装置、设备及存储介质,应用于虚拟机访问内部服务的场景中。在虚拟机需要访问并获取内部服务的数据包时,可以通过集成网桥将目标虚拟机对应的用于访问目标服务的访问数据包导入至通道网桥,在通道网桥对访问数据包进行处理,以确定访问数据包对应的访问通道,进而基于访问通道将访问数据包发送至核心设备;进一步的,通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥,从而通过集成网桥将响应数据包发送到目标虚拟机。通过上述方法,在虚拟机需要访问并获取内部服务的数据包时,可以基于通道网桥确定访问数据包对应的访问通道,进而基于访问通道,通过集成网桥、通道网桥和核心设备获取访问内部服务的响应数据包,以解决虚拟机通过租户的VPC访问内部服务,而VPC和虚拟机在不同的节点上,则虚拟机需要跨节点进行访问,导致租户虚拟机访问目的服务的路径太长的问题。从而,提高了虚拟机访问内部服务的效率。
本申请实施例中,在虚拟机需要访问并获取内部服务的数据包时,可以基于通道网桥确定访问数据包对应的访问通道,进而基于访问通道,通过与虚拟机在同一个计算节点上的集成网桥、通道网桥和核心设备获取访问内部服务的响应数据包,解决了虚拟机在同一个计算节点可能调度多个租户VPC网关,不能保证集中式网关的可用性,进而直接导致影响访问流量通道的可用性的问题。进一步的,解决了VPC集中式网关采用Linuxnamespace下的虚拟设备实现,需要使用内核协议栈路由以及iptables进行网络地址转换,导致在高压力、高并发的情况下,无法保障集中式网关的性能的问题。
在一种设计中,如图4所示,本申请实施例提供的一种分布式内网服务数据获取方法,应用于计算节点,上述步骤S201中的“通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥”方法具体包括S301-S302:
S301、通过集成网桥接收目标虚拟机发送的访问数据包,并在确定访问数据包合法的情况下,判断访问数据包对应的访问地址是否为预设地址。
需要说明的是,访问地址为目标虚拟机所要访问的目标服务的地址。
可以理解,计算节点通过集成网桥可以接收来自目标虚拟机发送的访问数据包,并且通过集成网桥判断访问数据包是否合法。若访问数据包合法,则进一步判断访问数据包对应的访问地址是否为预设地址,若访问数据包不合法,则丢弃访问数据包。
S302、在确定访问数据包对应的访问地址为预设地址的情况下,为访问数据包标记目标地址,并将访问数据包发送至通道网桥。
其中,目标地址用于指示目标虚拟机。
可以理解,计算节点集成网桥判断访问数据包对应的访问地址是否为预设地址。若访问数据包对应的访问地址是预设地址,则集成网桥将访问数据包标记为目标虚拟机对应的vlan ID,并通过集成网桥上的patch port发送到通道网桥上的patch port;若访问数据包对应的访问地址不是预设地址,则由集成网桥处理对应的访问地址不是预设地址的访问数据包。
可选的,patch port可以分别位于集成网桥与通道网桥上。
需要说明的是,patch port是用于连接集成网桥和通道网桥的设备,从一端发送数据包,另一端即可接收到该数据包。vlan ID用来唯一标识对应的虚拟机。
示例性的,预设地址可以为172.20.13.0/24,目标虚拟机对应的vlan ID可以为1。
示例性的,在集成网桥上访问数据包的流量路径可以为Table=0,将访问预设地址的流量,直接导入到通道网桥,具体的,流量路径信息可以为:Table=0:Match:ip,in_port=<of_vm1>,nw_dst=172.20.13.0/24action s=mod_vlan_vid:1,output:“patch-port”。
可选的,对于访问目标服务的访问数据包,可以在集成网桥的Table=0流表规则上增加meter限速规则。
需要说明的是,meter限速规则用于限制访问数据包的出入放行速率。
示例性的,meter限速规则可以为ovs-ofctl add-meter-OOPENFLOW13br-intmeter=1,pktps,band=type=drop,rate=100。具体的,把meter限速规则应用到集成网桥Table=0对应流表规则上的信息为:Table=0:Match:ip,in_port=<of_vm1>,nw_dst=172.20.13.0/24actions=mete r:1,mod_vlan_vid:1,output:“patch-port”。
需要说明的是,在包括上述步骤S301-S302的情况下,上述步骤S201中的方法具体可以包括“在通道网桥对访问数据包进行处理”。
在本申请实施例中,通过在集成网桥的上增加meter限速规则,实现了流量出虚拟机后,在计算节点和虚拟网络之间就近实现流量控制,在流量的访问路径上,增加对访问内部服务流量的流控和限速机制,解决了终端恶意大流量到达集中式网络设备,或者直接到达目的服务的问题。
在一种设计中,如图5所示,本申请实施例提供的一种分布式内网服务数据获取方法,应用于计算节点,上述步骤S203中的“通过通道网桥接收核心设备基于访问通道返回的响应数据包”之前,方法还包括S401-S402:
S401、通过通道网桥接收核心设备基于访问通道发送的地址解析协议ARP请求,并根据ARP请求确定访问通道对应的通道标识。
其中,通道标识用于指示ARP请求对应的访问通道。
可以理解,计算节点在通过通道网桥接收核心设备基于访问通道返回的响应数据包之前,核心设备可以基于访问通道向通道网桥发送ARP请求。
需要说明的是,地址解析协议(address resolution protocol,ARP)请求用于请求获取ARP应答。ARP请求包括访问数据包对应的目标地址的IP地址。
可选地,通过通道网桥接收核心设备基于访问通道发送的ARP请求时,可以基于第一接入设备上相应的port口的vlan ID号,通过通道网桥上的物理口接收来自核心设备的ARP请求。
示例性的,第一接入设备上相应的port口的vlan ID号可以为1000。
示例性的,核心设备基于访问通道向通道网桥发送ARP请求的响应过程可以为ARP请求从物理网口到达通道网桥的Table=0,命中ARP的匹配流表,检查ARP请求的vlan ID号,送到通道网桥的Table=90。具体的,响应过程信息可以为:Table=0Match:arp,dl_vlan=1000,Action:r esubmit(,90)。
S402、通过通道网桥基于通道标识指示的访问通道向核心设备发送ARP应答。
其中,ARP应答包括访问数据包对应的目标地址。
需要说明的是,访问数据包对应的目标地址用于核心设备将响应数据包发送到所述目标虚拟机,访问数据包对应的目标地址可以标识对应的虚拟机。ARP应答包括访问数据包对应的目标地址的MAC地址。
示例性的,访问数据包对应的目标地址可以为fa:16:3e:39:fb:37。
示例性的,核心设备基于访问通道向通道网桥发送ARP请求的响应过程可以为在通道网桥的Table=90,进行ARP代答处理。具体的,响应过程信息可以为:Table=90Match:dl_vlan=1000,arp,arp_tpa=100.64.3.141Action:ARP Responder with MAC(e.g.fa:16:3e:39:fb:37),IN_PORT。
需要说明的是,ARP应答(ARP responder)的主要作用是把ARP请求的数据包,修改和填充相关字段,作为应答包发送回请求方,主要操作为:设置ARP请求包类型为应答;把ARP请求包源MAC直接设置为目的MAC;设置源MAC为计算节点唯一标识MAC;把ARP协议的源硬件地址(sender hardware address,SHA)直接设置为其目的硬件地址(target hardwareaddress,THA);把ARP协议的源协议地址(sender protocol address,SPA)直接设置为目的协议地址(target protocol address,TPA)(MAC和IP应答关键部分);设置ARP协议的源硬件地址为计算节点唯一标识MAC;设置ARP协议的源协议地址为请求的IP地址;最后将ARP应答从ARP请求进入通道网桥的物理口发出。
示例性的,标准的ARP应答信息可以为:Table=90,arp,arp_tpa=100.64.3.141actions=load:0x2->NXM_OF_ARP_OP[],move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:39:fb:37,move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xfa163e39fb37->NXM_NX_ARP_SH A[],load:0x6440038d->NXM_OF_ARP_SPA[],IN_PORT。
在一种设计中,如图6所示,本申请实施例提供的一种分布式内网服务数据获取方法中,上述步骤S201中的“在通道网桥对访问数据包进行处理”方法具体包括S501-S503:
S501、在通道网桥对访问数据包对应的源地址进行设置,确定访问数据包对应的目标地址。
其中,访问数据包对应的源地址为目标虚拟机的地址,访问数据包对应的目标地址用于核心设备将响应数据包发送到目标虚拟机。
可以理解,计算节点在通道网桥可以确定访问数据包来自集成网桥,进而对访问数据包对应的源地址进行设置,确定访问数据包对应的目标地址,将源地址修改为访问数据包对应的目标地址。
示例性的,访问数据包对应的源MAC地址可以为fa:16:3e:c8:7d:12,访问数据包对应的源IP地址可以为192.168.222.154,访问数据包对应的目标地址的IP地址可以为100.64.3.141。
示例性的,在通道网桥上访问数据包的流量路径可以为在通道网桥Table=0,对流量做初始分类,如果是从集成网桥来的访问目标服务IP的流量,送到Table=80;在通道网桥Table=80,对访问数据包的源MAC和源IP进行设置,修改为访问数据包对应的目标地址的IP,之后送到Table=82。具体的,流量路径信息可以为:Table=0:Match:ip,in_port=<pa tch_br_int>,nw_dst=172.20.13.0/24Action:resubmit(,80);Table=80:Match:ip,dl_vlan=<local_vlan1>,dl_src=fa:16:3e:c8:7d:12,nw_src=192.168.222.154;actions=strip_vlan,0x1->NXM_NX_REG7[],mod_dl_src:fa:16:3e:39:fb:37,mod_nw_src:100.64.3.141,resubmit(,82)。
S502、在通道网桥对访问数据包对应的目的MAC进行设置,确定访问数据包在核心设备对应的MAC地址。
其中,核心设备对应的MAC地址用于将访问数据包发送至核心设备。
可以理解,计算节点可以在通道网桥对访问数据包对应的目的MAC进行设置,确定访问数据包在核心设备对应的MAC地址,将访问数据包对应的目的MAC修改为访问数据包在核心设备对应的MAC地址。
示例性的,访问数据包在核心设备对应的MAC地址可以为08:00:27:9c:cb:0c。
示例性的,在通道网桥上访问数据包的流量路径可以为在通道网桥Table=82,对访问数据包的目的MAC进行设置,修改为访问数据包在核心设备对应的MAC地址,之后送到Table=83。具体的,流量路径信息可以为:Table=82:Match:ip,nw_dst=172.20.13.0/24actions=mod_dl_dst:08:00:27:9c:cb:0c,resubmit(,83)。
可选地,可以通过控制器在预设时间段内学习核心设备对应的MAC地址。具体的,OpenStack Neutron网络控制器在预设时间段内向核心设备发送ARP请求流表,核心设备根据ARP请求流表发送ARP应答,并将ARP应答上送至控制器,控制器根据ARP应答的相关字段,下发ARP应答流表至通道网桥,进而通道网桥根据ARP应答流表确定访问数据包在核心设备对应的MAC地址。
可选地,对于不支持控制器发送ARP流表来进行学习核心设备对应的MAC地址的情况,可以在核心设备中增加固定的核心设备对应的MAC地址,控制器直接使用固定的MAC核心设备对应的MAC地址下发流表至通道网桥,进而通道网桥根据流表确定访问数据包在核心设备对应的MAC地址。
需要说明的是,控制器可以为运行于虚拟机所在的服务器上的一个流程。
S503、在通道网桥确定访问数据包对应的数据类别。
其中,数据类别包括:传输控制协议(transmission control protocol,TCP)、用户数据报协议(user datagram protocol,UDP)。
可以理解,计算节点在通道网桥可以判断访问数据包对应的数据类别。若访问数据包对应的数据类别为TCP,则将访问数据包发送TCP对应的流表结构上,若访问数据包对应的数据类别为UDP,则将访问数据包发送UDP对应的流表结构上。
示例性的,在通道网桥上访问数据包的流量路径可以为在通道网桥Table=83,对访问数据包进行分类,TCP协议包送到Table=88,UDP协议包送到Table=89。具体的,流量路径信息可以为:Table=83:Match:tcp action s=resubmit(,88)Match:udp actions=resubmit(,89)。
可选的,在通道网桥确定访问数据包对应的数据类别时,可以将虚拟机访问的存储目标服务的IP地址,固定设置为全局统一IP地址。存储目标服务的IP地址为实际部署服务的IP地址,全局统一IP地址为非服务器实际配置的目标服务的IP地址),存储目标服务的IP地址对用户不可见。
示例性的,全局统一IP地址为数据中心地址100.100.100.100,存储目标服务的IP地址为172.11.22.33。
示例性的,在通道网桥Table=83将全局统一IP地址转换为存储目标服务的IP地址的具体信息为:Table=83:Match:tcp,nw_dst=100.100.100.100Action:mod_nw_dst:172.11.22.33resubmit(,88);Match:udp,nw_dst=100.100.100.100Action:mod_nw_dst:172.11.22.33resubmit(,89)。
需要说明的是,在包括上述步骤S501-S503的情况下,上述步骤S201中的方法具体可以包括“通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥”。
在本申请实施例中,通过在通道网桥上将实际存储目标服务但为用户不可见的目标服务的IP地址,固定设置为用户可见全局统一IP地址,实现了在租户安全组、虚拟路由网关设备上设置安全策略,增加访问流量与租户安全组、VPC的防火墙功能的耦合度,解决了在流量的访问路径上缺少可控的安全设施的问题。
在一种设计中,如图7所示,本申请实施例提供的一种分布式内网服务数据获取方法中,应用于计算节点,上述步骤S203中的“将响应数据包发送到集成网桥”之前,方法还包括S601-S603:
S601、在通过通道网桥确定响应数据包合法的情况下,判断响应数据包对应的源地址是否为预设地址。
可以理解,计算节点可以通过通道网桥判断访问数据包是否合法。若响应数据包合法,则进一步判断响应数据包对应的源地址是否为预设地址,若访问数据包不合法,则丢弃访问数据包。
S602、在确定响应数据包对应的源地址为预设地址的情况下,判断响应数据包对应的目的地址是否为目标地址。
可以理解,计算节点可以通过通道网桥判断响应数据包对应的源地址是否为预设地址。若响应数据包对应的源地址是预设地址,则进一步判断响应数据包对应的目的地址是否为目标地址;若响应数据包对应的源地址不是预设地址,则由通道网桥处理对应的源地址不是预设地址的响应数据包。
S603、在确定响应数据包对应的目的地址为目标地址的情况下,将响应数据包对应的目的地址修改为访问数据包对应的源地址。
可以理解,计算节点通过通道网桥可以判断响应数据包对应的目的地址是否为目标地址。若响应数据包对应的目的地址是访问数据包对应的目标地址,则将响应数据包对应的目的地址修改为访问数据包对应的源地址,将响应数据包中第一接入设备上相应的port口的vlan ID修改为目标虚拟机对应的vlan ID,进而将响应数据包发送至集成网桥。
需要说明的是,访问数据包对应的源地址包括源IP地址和源MAC地址。
具体的,在通道网桥上响应数据包的流量路径可以为在通道网桥的Table=91,匹配vlan ID号,匹配目的IP地址为虚拟的访问数据包对应的目标地址,对响应数据包的操作为:设置响应数据包的vlan ID为目标虚拟机对应的vlan ID,设置目的MAC为访问数据包对应的源MAC,设置目的IP为访问数据包对应的源IP,发送到集成网桥br-int。具体的,流量路径信息可以为:Table=91Match:ip,dl_vlan=1000,nw_dst=100.64.3.141actions=mod_vlan_vid:1,mod_dl_dst:fa:16:3e:c8:7d:12,mod_nw_dst:192.168.222.154,output:“to-br-int”。
需要说明的是,在包括上述步骤S601-S603的情况下,上述步骤S203中的方法具体可以包括“将响应数据包发送到集成网桥”。
在一种设计中,如图8所示,本申请实施例提供的一种分布式内网服务数据获取方法中,应用于计算节点,上述步骤S204中的“通过集成网桥将响应数据包发送到目标虚拟机”方法具体包括S701:
S701、通过集成网桥基于访问数据包对应的源地址,将响应数据包发送到目标虚拟机。
可以理解,计算节点可以通过集成网桥基于访问数据包对应的源地址,确定响应数据包对应的目的地址为访问数据包对应的源地址,进而将响应数据包发送到目标虚拟机。
可选的,对于返回目标虚拟机的响应数据包,可以在集成网桥的Table=0流表规则上增加meter限速规则。
需要说明的是,meter限速规则用于限制响应数据包的出入放行速率。
示例性的,meter限速规则可以为ovs-ofctl add-meter-OOPENFLOW13br-intmeter=2,pktps,band=type=drop,rate=200。具体的,把meter限速规则应用到集成网桥Table=0对应流表规则上的信息为:Table=0:Ma tch:ip,in_port=<patch_br_snat>,dl_vlan=1,dl_dst=<vm1_mac>,nw_src=172.20.13.0/24actions=meter:2,strip_vlan,output:“tap-vm”。
在一种设计中,本申请实施例提供的一种分布式内网服务数据获取方法中,应用于计算节点,上述步骤S201中的“在通道网桥对访问数据包进行处理”方法具体还包括S801,并且,在上述步骤S603“在确定所述响应数据包对应的目的地址为所述目标地址的情况下,将所述响应数据包对应的目的地址修改为所述访问数据包对应的源地址”之前,方法还包括S802:
S801、将访问数据包对应的目的端口号修改为目标服务对应的真实端口号。
可以理解,计算节点通过通道网桥可以将访问数据包对应的目的端口号修改为目标服务对应的真实端口号。
需要说明的是,访问数据包对应的目的端口号可以用于隐藏目标服务对应的真实端口号。
可选的,可以将访问目标服务的四层协议端口号固定,将存储目标服务的端口号(访问数据包对应的目的端口号)设置为任意一个数字,存储目标服务的端口号所设置的数字与实际存储对象目标服务的端口号(目标服务对应的真实端口号)不同,并且实际存储对象目标服务的端口号对用户不可见。
示例性的,存储目标服务的端口号为10000,实际存储对象目标服务的端口号为8888。
示例性的,在通道网桥上将访问数据包对应的目的端口号修改为目标服务对应的真实端口号的具体信息可以为:Table=88Match:tcp,nw_dst:172.11.22.33,tp_dst=10000Action:mod_vlan_vid:2000,mod_tp_dst:8888,output:“bond”;Table=89Match:udp,nw_dst:172.11.22.33,tp_dst=10000Action:mod_vlan_vid:2000,mod_tp_dst:8888,output:“bond”。
S802、将响应数据包对应的源端口号修改为目标服务对应的虚拟端口号。
可以理解,计算节点可以在通道网桥上将响应数据包对应的源端口号修改为目标服务对应的虚拟端口号。
可选的,响应数据包对应的源端口号为用户可见的存储目标服务的端口号,目标服务对应的虚拟端口号为实际存储对象目标服务的端口号。
示例性的,响应数据包对应的源端口号为18888,目标服务对应的虚拟端口号为8888。
示例性的,在通道网桥将响应数据包对应的源端口号修改为目标服务对应的虚拟端口号的方法为在通道网桥的Table=81对四层协议(TCP/UDP)源端口号进行转换,源端口号转换为目标服务对应的虚拟端口号。具体的,在通道网桥将响应数据包对应的源端口号修改为目标服务对应的虚拟端口号的具体信息为:Table=81Match:tcp,nw_src=172.20.14.100,tp_src=18888Action:mod_tp_src:8888,resubmit(,91);Match:tcp,nw_src=172.20.14.100,tp_src=19999Action:mod_tp_sr c:9999,resubmit(,91);Match:udp,nw_src=172.20.14.100,tp_src=11111Action:mod_tp_src:1111,resubmit(,91);Match:udp,nw_src=172.20.14.100,tp_src=12222Action:mod_tp_src:2222,resubmit(,91)。
在一种实现方式中,如图9所示,示出了一种分布式内网服务数据获取方法流程图。首先虚拟机向集成网桥发送访问数据包,集成网桥判断访问数据包是否合法。若访问数据包合法,则集成网桥判断访问数据包的目的地址是否为云内服务的固定地址;若访问数据包不合法,则集成网桥将访问数据包丢弃。集成网桥判断访问数据包的目的地址是否为云内服务的固定地址,若访问数据包的目的地址是云内服务的固定地址,则将访问数据包标记为本地vlan并发送到通道网桥。若访问数据包的目的地址不是云内服务的固定地址,集成网桥将访问数据包作为其它数据包进行处理。
通道网桥确定访问数据包的目的地址是云内服务的固定地址,进而修改访问数据包的源MAC为该服务器唯一通道MAC;修改访问数据包的源IP为云池内部唯一通道IP;修改访问数据包的目的MAC为核心设备上云池内部通道IP地址的网关MAC;修改访问数据包的目的IP为云内服务的真实IP。进一步的,通道网桥判断访问数据包对应的数据类别,若访问数据包对应的数据类别为TCP,则修改TCP访问数据包的目的端口号为云内服务的实际端口号,若访问数据包对应的数据类别为UDP,则修改UDP访问数据包的目的端口号为云内服务的实际端口号。最后,通道网桥在访问数据包上标记物理vlan号,并从物理网卡发出。
在一种实现方式中,如图10所示,示出了一种分布式内网服务数据获取方法流程图。首先通道网桥的物理网卡接收响应数据包,通道网桥判断响应数据包是否合法。若响应数据包合法,则通道网桥判断响应数据包的源地址是否为云内服务的固定地址;若响应数据包不合法,则通道网桥将响应数据包丢弃。通道网桥判断响应数据包的源地址是否为云内服务的固定地址。若响应数据包的源地址是云内服务的固定地址,则通道网桥判断响应数据包vlan是否为物理vlan;若响应数据包的源地址不是云内服务的固定地址,则通道网桥将响应数据包作为其它数据包进行处理。
通道网桥判断响应数据包vlan是否为物理vlan。若响应数据包vlan是物理vlan,则判断响应数据包目的地址是否为云池内部唯一通道IP;若响应数据包vlan不是物理vlan,则通道网桥将响应数据包丢弃。通道网桥判断响应数据包目的地址是否为云池内部唯一通道IP。若响应数据包目的地址是云池内部唯一通道IP,则修改响应数据包源IP为云内服务的真实IP;若响应数据包目的地址不是云池内部唯一通道IP,则通道网桥将响应数据包丢弃。
通道网桥判断响应数据包对应的数据类别,若响应数据包对应的数据类别为TCP,则修改TCP响应数据包的源端口号为用户可见的虚拟机端口号,若响应数据包对应的数据类别为UDP,则修改UDP响应数据包的目的端口号为用户可见的虚拟机端口号。通道网桥修改响应数据包的目的IP为虚拟机IP;修改响应数据包的源MAC为虚拟机网关MAC;修改响应数据包的源IP为云内服务真实IP。通道网桥将响应数据包标记为本地vlan并发送到集成网桥。集成网桥确定响应数据包的目的MAC和IP地址为虚拟机的MAC和IP地址。最后集成网桥删除响应数据包本地vlan并发送到虚拟机网卡。
在一种实现方式中,如图11所示,示出了虚拟机以及虚拟机中容器访问IPv6目标服务的结构示意图。在互联网协议第6版(internet protocol version 6,IPv6)协议下,虚拟机需要获取访问内部服务时,首先虚拟机需要向集成网桥发送IPv6访问数据包,在集成网桥确定IPv6访问数据包合法的情况下,判断IPv6访问数据包对应的访问地址是否为预设地址。在确定IPv6访问数据包对应的访问地址为预设地址的情况下,将IPv6访问数据包发送至通道网桥。在通道网桥对IPv6访问数据包对应的源地址进行设置。在通道网桥对IPv6访问数据包对应的目的MAC进行设置,确定IPv6访问数据包在核心设备对应的MAC地址。在通道网桥确定IPv6访问数据包对应的数据类别,确定IPv6访问数据包对应的访问通道,进而基于访问通道将IPv6访问数据包发送至核心设备。
其中,预设地址为云服务商的内部服务地址,IPv6访问数据包对应的源地址为目标虚拟机的地址,核心设备对应的MAC地址用于将IPv6访问数据包发送至核心设备。
可选地,基于第一接入设备上相应的port口的vlan ID号和普通(NORMAL)规则,访问通道可以为将IPv6访问数据包通过通道网桥发送至第一接入设备上相应的port口,进而通过第一接入设备将IPv6访问数据包转发至核心设备。
示例性的,集成网桥将目标虚拟机对应的访问地址是预设地址的IPv6访问数据包,导入至通道网桥的流量路径为在集成网桥(br-int)的Table=0,匹配目的访问地址是预设地址的IPv6地址,则将IPv6访问数据包直接引出发送到通道网桥。具体的,流量路径信息为:Table=0,ipv6,in_port=“tapc658c0ad-a2”,ipv6_dst=fc00:2022:1111:2222::/64actions=mod_vlan_vid:10,output:“patch-port”。
在通道网桥对IPv6访问数据包对应的源地址进行设置的流量路径为:在通道网桥的Table=0,匹配IPv6访问数据包来源为集成网桥,目的地址为目标服务地址的IPv6地址,发送到Table=80;在通道网桥Table=80,匹配虚拟机的vlan ID,匹配虚拟机的MAC地址,匹配虚拟机的IPv6地址,修改包动作为去掉vlan头,设置源MAC为服务器唯一通道MAC,之后发送到Table=82。具体的,流量路径信息为:Table=0,ipv6,in_port=“phy-br-e x”,ipv6_dst=fc00:2022:1111:2222::/64actions=resubmit(,80);Table=80,ipv6,dl_vlan=10,dl_src=fa:16:3e:03:a2:3e,ipv6_src=fda7:a5cc:3460:7::60actions=strip_vlan,mod_dl_src:fa:16:3e:fd:0c:03,resubmit(,82)。
在通道网桥对IPv6访问数据包对应的目的MAC进行设置的流量路径为在通道网桥Table=82,匹配目的地址为目标服务地址的IPv6地址,将目的MAC修改为核心设备对应的MAC地址,之后发送到Table=83。具体的,流量路径信息为:Table=82,ipv6,ipv6_dst=fc00:2022:1111:2222::/64actions=mod_dl_dst:08:00:27:9c:cb:0c,resubmit(,83)。
可选地,可以通过控制器在预设时间段内学习核心设备对应的MAC地址。具体的,OpenStack Neutron网络控制器在预设时间段内通过集成网桥向核心设备发送邻居请求报文(neighbor solicition,NS),核心设备根据NS报文发送邻居发现协议(neighbordiscovery protocol,NDP)代答,如果NDP代答中的nd_target为本地IPv6构造地址,则将NDP代答上送至控制器,控制器学习核心设备对应的MAC地址,并下发流表至通道网桥,进而通道网桥根据该流表确定IPv6访问数据包在核心设备对应的MAC地址。
示例性的,NDP报文的源地址可以为本地IPv6构造地址:fc00:2021:2022:2023:f816:3eff:fefd:c03。通道网桥将NDP代答上送至控制器的流量路径具体信息为:Table=0,icmp6,dl_vlan=2000,icmp_type=136,nd_target=fc00:2021:2022:2023:f816:3eff:fefd:c03 actions=CONTROLLER:0。
可选地,对于不支持控制器发送NS报文来进行学习核心设备对应的MAC地址的情况,可以在核心设备中增加固定的核心设备对应的MAC地址,控制器直接使用固定的MAC核心设备对应的MAC地址下发流表至通道网桥,进而通道网桥根据流表确定IPv6访问数据包在核心设备对应的MAC地址。
需要说明的是,控制器可以为运行于虚拟机所在的服务器上的一个流程。
示例性的,在通道网桥确定IPv6访问数据包对应的数据类别的流量路径为在通道网桥Table=83,对TCP v6和UDP v6两种类型数据包进行分类,TCP v6发送到Table=88,UDP v6发送到Table=89。具体的,流量路径信息为:Table=83,tcp6 actions=resubmit(,88);Table=83,udp6 actions=resubmit(,89)。
确定IPv6访问数据包对应的访问通道,进而基于访问通道将IPv6访问数据包发送至核心设备的流量路径为:在通道网桥Table=88和Table=89执行相同的动作,对IPv6访问数据包设置第一接入设备上相应的port口的vlan ID后,通过NORMAL规则发送到核心设备。具体的,流量路径信息为:Table=88,tcp6 actions=mod_vlan_vid:2000,NORMAL;Table=89,udp6 actions=mod_vlan_vid:2000,NORMAL。
在一种实现方式中,如图11所示,核心设备将来自第一接入设备IPv6访问数据包转发至第二接入设备,并将IPv6访问数据包基于目的地址通过第二接入设备转发至目标服务。目标服务基于IPv6访问数据包向第二接入设备发送IPv6响应数据包,第二接入设备将来自目标服务的IPv6响应数据包转发至核心设备。通过通道网桥接收核心设备基于访问通道发送的NDP请求,并根据NDP请求生成NDP代答,进而发送NDP代答至核心设备。通过通道网桥接收核心设备基于访问通道返回的IPv6响应数据包,将IPv6响应数据包对应的目的地址修改为IPv6访问数据包对应的源地址。通过集成网桥基于IPv6响应数据包对应的源地址,将IPv6响应数据包发送到目标虚拟机。
需要说明的是,NDP代答可以为邻居通告(neighbor advertisement,NA)报文。
可选地,基于访问通道接收和发送数据包时,可以基于第一接入设备上相应的port口的vlan ID号接收和发送数据包。
示例性的,通道网桥根据NDP请求生成NDP代答的流量路径为在通道网桥的Table=0,修改NDP请求的类型为邻居通告(136,0x88),发送到Table=90;在通道网桥的Table=90,构造邻居通告报文:把包源MAC直接设置为目的MAC;设置源MAC为本服务器唯一标识MAC;把IPv6协议的源地址直接设置为目的地址;把IPv6协议的源地址设置为邻居请求的IPv6地址;设置ICMPv6协议的code为0(应答);设置ICMPv6协议NDP协议字段保留位为0x60000000;设置ICMPv6协议NDP协议字段目标链路地址为该服务器唯一通道MAC;设置ICMPv6协议NDP协议字段NDP选项类型为0x2(),最后将NDP代答包从NDP请求包进来的口发回。
通道网桥根据NDP请求生成NDP代答的具体流量路径信息:Table=0,icmp6,dl_vlan=2000,icmp_type=135,nd_target=fda7:a5cc:346 0:1::3b3actions=load:0x88->NXM_NX_ICMPV6_TYPE[],resubmit(,90);Table=90,icmp6,dl_vlan=2000,icmp_type=136,nd_target=fda7:a5cc:3460:1::3b3actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_sr c:fa:16:3e:fd:0c:03move:NXM_NX_IPV6_SRC[]->NXM_NX_IPV6_D ST[],load:0x3b3->NXM_NX_IPV6_SRC[0..63],load:0xfda7a5cc34600001->NX M_NX_IPV6_SRC[64..127],load:0->NXM_NX_ICMPV6_CODE[],load:0x60000000->ERICOXM_OF_ICMPV6_ND_RESERVED[],load:0xfa163 efd0c03->NXM_NX_ND_TLL[],load:0x2->ERICOXM_OF_ICMPV6_ND_OP TIONS_TYPE[],IN_PORT。
通过通道网桥接收核心设备基于访问通道返回的IPv6响应数据包,将IPv6响应数据包对应的目的地址修改为IPv6访问数据包对应的源地址的流量路径可以为通道网桥Table=0,匹配IPv6响应数据包的vlan ID,匹配IPv6流量,发送到Table=91;通道网桥Table=91,匹配目的地址为IPv6访问数据包对应的源IPv6地址,修改vlan ID为目标虚拟机vlan,修改目的MAC为IPv6访问数据包对应的源MAC,发回集成网桥(br-int)。具体的,流量路径信息可以为:Table=0,ipv6,dl_vlan=2000actions=resubmit(,91);Table=91,ipv6,dl_vlan=2000,ipv6_dst=fda7:a5cc:3460:7::60actions=mod_vlan_vid:10,mod_dl_dst:fa:16:3e:03:a2:3e,output:“patch-port”。
通过集成网桥基于IPv6响应数据包对应的源地址,将IPv6响应数据包发送到目标虚拟机的流量路径可以为在集成网桥Table=0,匹配目的MAC,匹配源IP为目标服务的IPv6地址,去掉vlan头,直接发给目标虚拟机。具体的,流量路径信息可以为:Table=0,ipv6,in_port=1,dl_vlan=10,dl_dst=fa:16:3e:03:a2:3e,ipv6_src=fc00:2022:1111:2222::/64actions=st rip_vlan,output:“tap-vm”。
在一种实现方式中,在互联网协议第4版(internet protocol version 4,IPv4)协议下,虚拟机中容器(Pod)需要获取访问内部服务时,首先虚拟机中容器需要向集成网桥发送访问数据包,在集成网桥确定访问数据包合法的情况下,判断访问数据包对应的访问地址是否为预设地址。在确定访问数据包对应的访问地址为预设地址的情况下,将访问数据包发送至通道网桥。在通道网桥对访问数据包对应的源地址进行设置,学习如何将响应数据包对应的目的地址转换为访问数据包对应的源地址,在通道网桥对访问数据包对应的目的MAC进行设置。在通道网桥确定访问数据包对应的数据类别,确定访问数据包对应的访问通道,进而基于访问通道将访问数据包发送至核心设备。
可选地,可以为每个服务器预制一个列表,列表包含无类别域间路由(classlessinter-domain routing,CIDR)地址段。
示例性的,CIDR地址段可以为100.100.0.0/16、100.200.100.0/24、1.1.1.0/24中的任意一个。
示例性的,在集成网桥上访问数据包流量路径可以为Table=0,将访问预设地址的流量,直接导入到通道网桥,具体的,流量路径信息可以为:Table=0:Match:ip,in_port=<of_vm1>,nw_dst=172.20.13.0/24acti ons=mod_vlan_vid:1,output:“patch-port”。
在通道网桥上访问数据包的流量路径可以为在通道网桥Table=0,对流量做初始分类,如果是从集成网桥来的访问目标服务IP的流量,送到Table=80;在通道网桥Table=80,对访问数据包的源MAC和源IP进行设置,修改源MAC为虚拟机唯一通道MAC,源IP地址修改为虚拟机唯一通道IP地址,根据虚拟机唯一通道IP的来源子网打上寄存器reg7的值,之后送到Table=82。具体的,流量路径信息可以为:Table=0:Match:ip,in_port=<patch_br_int>,nw_dst=172.20.13.0/24Action:resubmit(,80);Table=80:strip_vlan,mod_dl_src:fa:16:3e:39:fb:37,mod_nw_src:100.64.0.17,load:0x1->NXM_NX_REG7[],resubmit(,82)。
通道网桥学习如何将响应数据包对应的目的地址转换为访问数据包对应的源地址流量路径可以为在Table=80,匹配虚拟机源MAC、VLAN id和协议TCP/UDP;在Table=80为Table=91学习流表,学习流表内容为:匹配vlan_id为物理vlan,匹配协议为TCP/UDP,学习匹配源IP是TCP/UDP访问的IP,匹配目的IP是虚拟机通道唯一IP,学习匹配TCP/UDP源端口和目的端口,学习流量动作为:学习打上出向包的local_vlan、学习替换目的MAC为虚拟机MAC、替换目的IP为学习到的源IP。
具体的,流量路径信息为:#TCP Table=80,tcp,dl_vlan=1,dl_src=fa:16:3e:05:ac:84actions=learn(Table=91,NXM_OF_VLAN_TCI[0..11]=0x3e8,eth_type=0x800,nw_proto=6,NXM_OF_IP_SRC[]=NXM_OF_IP_DST[],ip_dst=100.64.0.17,NXM_OF_TCP_SRC[]=NXM_OF_TCP_DST[],NXM_OF_TCP_DST[]=NXM_OF_TCP_SRC[],load:NXM_OF_VL AN_TCI[]->NXM_OF_VLAN_TCI[],load:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],load:NXM_OF_IP_SRC[]->NXM_OF_IP_DST[],output:OX M_OF_IN_PORT[]),strip_vlan,mod_dl_src:fa:16:3e:39:fb:37,mod_nw_sr c:100.64.0.17,load:0x1->NXM_NX_REG7[],resubmit(,82);#UDP ta ble=80,udp,dl_vlan=1,dl_src=fa:16:3e:05:ac:84actions=learn(Table=91,NXM_OF_VLAN_TCI[0..11]=0x3e8,eth_type=0x800,nw_proto=17,NXM_OF_IP_SRC[]=NXM_OF_IP_DST[],ip_dst=100.64.0.1 7,NXM_OF_UDP_SRC[]=NXM_OF_UDP_DST[],NXM_OF_UDP_DS T[]=NXM_OF_UDP_SRC[],load:NXM_OF_VLAN_TCI[]->NXM_OF_VLA N_TCI[],load:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],load:NXM_OF_IP_SRC[]->NXM_OF_IP_DST[],output:OXM_OF_IN_PORT[]),strip_vlan,mod_dl_src:fa:16:3e:05:ac:84,mod_nw_src:100.64.0.17,resubmit(,82)。
在通道网桥对访问数据包对应的目的MAC进行设置的流量路径可以为在通道网桥Table=82,对访问数据包的目的MAC进行设置,修改为访问数据包在核心设备对应的MAC地址,之后送到Table=83。具体的,流量路径信息可以为:Table=82:Match:ip,nw_dst=172.20.13.0/24actions=mod_dl_dst:08:00:27:9c:cb:0c,resubmit(,83)。
在通道网桥确定访问数据包对应的数据类别,确定访问数据包对应的访问通道,进而基于访问通道将访问数据包发送至核心设备流量路径可以为在通道网桥Table=83,对访问数据包进行分类,TCP协议包送到Table=88,UDP协议包送到Table=89;在通道网桥Table=88或Table=89,对访问数据包设置物理vlan ID号,从通道网桥的物理口送出。具体的,流量路径信息可以为:Table=83:Match:tcp actions=resubmit(,88)Match:udpactions=resubmit(,89);Table=88Match:tcp actions=mod_vlan_vid:1000,output:“bond”;Table=89Match:udp actions=mod_vlan_vid:1000,output:“bond”。
在一种实现方式中,核心设备将访问数据包转发至第二接入设备,并将访问数据包基于目的地址通过第二接入设备转发至目标服务。目标服务基于访问数据包向第二接入设备发送响应数据包,第二接入设备将来自目标服务的响应数据包转发至核心设备。通过通道网桥接收核心设备基于访问通道返回的响应数据包,将响应数据包对应的目的地址修改为访问数据包对应的源地址。通过集成网桥基于响应数据包对应的源地址,将响应数据包发送到目标虚拟机。
示例性的,通过通道网桥接收核心设备基于访问通道返回的响应数据包,将响应数据包对应的目的地址修改为访问数据包对应的源地址的流量路径可以为:响应数据包从物理网口到达通道网桥的Table=0,检查物理vlan ID号,送到通道网桥的Table=91;在Table=91,匹配学习到的流表(匹配目的IP是虚拟机唯一通道IP,动作:打上local_vlan、替换目的MAC为虚拟机MAC、替换目的IP为虚拟机的IP)。
具体的,流量路径信息可以为:Table=0Match:ip,dl_vlan=1000Action:resubmit(,91);#TCP Table=91,tcp,vlan_tci=0x03e8/0x0fff,nw_src=172.20.14.100,nw_dst=100.64.0.17,tp_src=8000,tp_dst=58728actions=load:0x1001->NXM_OF_VLAN_TCI[],load:0xfa163e05ac84->NX M_OF_ETH_DST[],load:0xc0a86fc5->NXM_OF_IP_DST[],output:“phy-br-ex”;#UDP Table=91,udp,vlan_tci=0x03e8/0x0fff,nw_src=172.20.14.100,nw_dst=100.64.0.17,tp_src=8888,tp_dst=40800actions=load:0x1001->NXM_OF_VLAN_TCI[],load:0xfa163e05ac84->NXM_OF_ETH_DST[],load:0xc0a86fc5->NXM_OF_IP_DST[],output:“phy-br-ex”。
可选的,目的端超文本传输协议(Hyper Text Transfer Protocol,HTTP)server地址可以为172.20.14.100:8000,目的端UDP server地址可以为172.20.14.100:8888。在虚拟机第一次发起访问目标服务请求时,通道网桥学习流表。
一种实现方式中,如图11所示,示出了虚拟机以及虚拟机中容器访问IPv6目标服务的结构示意图,在IPv6协议下,虚拟机中容器访问内部服务时,首先虚拟机中容器需要通过虚拟机网卡向集成网桥发送IPv6访问数据包,在集成网桥确定IPv6访问数据包合法的情况下,判断IPv6访问数据包对应的访问地址是否为预设地址。在确定IPv6访问数据包对应的访问地址为预设地址的情况下,将IPv6访问数据包发送至通道网桥。在通道网桥对IPv6访问数据包对应的源地址进行设置。在通道网桥对IPv6访问数据包对应的目的MAC进行设置,确定IPv6访问数据包在核心设备对应的MAC地址。在通道网桥确定IPv6访问数据包对应的数据类别,确定IPv6访问数据包对应的访问通道,进而基于访问通道将IPv6访问数据包发送至核心设备。
可选的,在容器集群管理***(简称guest k8s)的node虚拟机里创建Pod,为Pod分配IPv6(总)地址段,Pod的IPv6(总)地址段固定;在核心设备上增加一条Pod IPv6(总)地址段的直连路由。
示例性的,Pod的IPv6(总)地址段可以为2222:2222:2222::/48,Pod的IPv6地址可以为2222:2222:2222::2222/64,node虚拟机地址可以为1111:1111:1111:2222/64。
可选的,在虚拟机中容器向集成网桥发送IPv6访问数据包之前,guest k8s的node虚拟机通过网桥向控制器发送邻居发现(neighbor discovery,ND)和NS报文(类似通用属性注册协议(generic attribute registration protocol,GARP)),控制器基于ND和NS报文学习虚拟机内部IPv6地址(node虚拟机地址和虚拟机中容器地址),并向通道网桥下发一条NDP代答流表。
在一种实现方式中,如图11所示,核心设备将来自第一接入设备IPv6访问数据包转发至第二接入设备,并将IPv6访问数据包基于目的地址通过第二接入设备转发至目标服务。目标服务基于IPv6访问数据包向第二接入设备发送IPv6响应数据包,第二接入设备将来自目标服务的IPv6响应数据包转发至核心设备。通过通道网桥接收核心设备基于访问通道发送的NS请求,并根据NS请求生成NDP代答,进而发送NDP代答至核心设备。通过通道网桥接收核心设备基于访问通道返回的IPv6响应数据包,将IPv6响应数据包对应的目的地址修改为访问数据包对应的源地址。通过集成网桥基于IPv6响应数据包对应的源地址,将IPv6响应数据包发送到目标虚拟机。
可选的,第二接入设备将来自目标服务的IPv6响应数据包转发至核心设备,核心设备上的Pod IPv6(总)地址段的直连路由学习Pod IPv6MAC地址,基于访问通道向通道网桥发送的NS报文。通道网桥基于NDP代答流表生成NDP代答,基于访问通道向核心设备上的Pod IPv6(总)地址段的直连路由发送NDP代答。
本申请实施例提供一种分布式内网服务数据获取方法,可以使用将内部服务分布到每个计算节点的方式,避免用户访问内部服务时流量路径太长,实现流量不经过网络节点,提高访问内部服务的效率,保证服务的可用性。单台计算节点可直接通过通道访问内部服务,如果单台计算节点宕机,不影响其他计算节点访问服务。本方法通过在虚拟网络设备和开放虚拟交换机上设计的一套流表处理访问内部服务的流水线,从而实现虚拟机在计算节点直接可访问内部服务,而不需要经过内核协议栈,保障访问内部服务的性能。同时,使用开放虚拟机交换机的流表,增加安全机制和流控限速机制,隐藏真实服务的IP和端口。在流水线中实现流量限速和安全访问机制,并且通道支持在IPv6协议下,虚拟机以及虚拟机中容器访问目标服务。本方法在OpenStack平台的云网络环境下,实现租户虚拟机就近、快速、高效、安全、高可用地访问云服务商的特定服务(例如云服务商云内的DNS服务、RPM源服务、对象存储服务、时间服务器等)。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对一种分布式内网服务数据获取方法进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。可选的,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图12为本申请实施例提供的一种分布式内网服务数据获取装置的结构示意图。如图12所示,一种分布式内网服务数据获取装置40用于提高虚拟机访问内部服务的效率。Table例如用于执行图3所示的一种分布式内网服务数据获取方法。该数据获取装置40包括:传输单元401和处理单元402;
传输单元401,用于通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥;
处理单元402,用于在通道网桥对访问数据包进行处理,得到目标处理结果,目标处理结果用于指示访问数据包对应的目标地址和访问数据包在核心设备对应的MAC地址,访问数据包用于目标虚拟机访问目标服务;
处理单元402,还用于根据目标处理结果,在通道网桥确定访问数据包对应的访问通道;
传输单元401,还用于基于访问通道将访问数据包发送至核心设备;
传输单元401,还用于通过通道网桥接收核心设备基于访问通道返回的响应数据包,并将响应数据包发送到集成网桥;
传输单元401,还用于通过集成网桥将响应数据包发送到目标虚拟机。
在一种可能的实现方式中,传输单元401,还用于通过集成网桥接收目标虚拟机发送的访问数据包;处理单元402,还用于在确定访问数据包合法的情况下,判断访问数据包对应的访问地址是否为预设地址;处理单元402,还用于在确定访问数据包对应的访问地址为预设地址的情况下,为访问数据包标记目标地址;传输单元401,还用于将访问数据包发送至通道网桥,目标地址用于指示目标虚拟机。
在一种可能的实现方式中,传输单元401,还用于通过通道网桥接收核心设备基于访问通道发送的地址解析协议ARP请求;处理单元402,还用于根据ARP请求确定访问通道对应的通道标识,通道标识用于指示ARP请求对应的访问通道;传输单元401,还用于通过通道网桥基于通道标识指示的访问通道向核心设备发送ARP应答,ARP应答包括访问数据包对应的目标地址。
在一种可能的实现方式中,数据获取装置还包括:处理单元402,还用于在通道网桥对访问数据包对应的源地址进行设置,确定访问数据包对应的目标地址,访问数据包对应的源地址为目标虚拟机的地址,访问数据包对应的目标地址用于核心设备将响应数据包发送到目标虚拟机;处理单元402,还用于在通道网桥对访问数据包对应的目的MAC进行设置,确定访问数据包在核心设备对应的MAC地址,核心设备对应的MAC地址用于将访问数据包发送至核心设备。
在一种可能的实现方式中,处理单元402,还用于在通过通道网桥确定响应数据包合法的情况下,判断响应数据包对应的源地址是否为预设地址;处理单元402,还用于在确定响应数据包对应的源地址为预设地址的情况下,判断响应数据包对应的目的地址是否为目标地址;处理单元402,还用于在确定响应数据包对应的目的地址为目标地址的情况下,将响应数据包对应的目的地址修改为访问数据包对应的源地址。
在一种可能的实现方式中,处理单元402,还用于将访问数据包对应的目的端口号修改为目标服务对应的真实端口号;处理单元402,还用于将响应数据包对应的源端口号修改为目标服务对应的虚拟端口号。
在采用硬件的形式实现上述集成的模块的功能的情况下,本申请实施例提供了上述实施例中所涉及的电子设备的另外一种可能的结构示意图。如图13所示,一种电子设备60,用于提高虚拟机访问内部服务的效率,例如用于执行图3所示的一种分布式内网服务数据获取方法。该电子设备60包括处理器601,存储器602以及总线603。处理器601与存储器602之间可以通过总线603连接。
处理器601是通信装置的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器601可以是一个通用中央处理单元(central processing unit,CPU),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
作为一种实施例,处理器601可以包括一个或多个CPU,例如图13中所示的CPU 0和CPU 1。
存储器602可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
作为一种可能的实现方式,存储器602可以独立于处理器601存在,存储器602可以通过总线603与处理器601相连接,用于存储指令或者程序代码。处理器601调用并执行存储器602中存储的指令或程序代码时,能够实现本申请实施例提供的一种分布式内网服务数据获取方法。
另一种可能的实现方式中,存储器602也可以和处理器601集成在一起。
总线603,可以是工业标准体系结构(industry standard architecture,ISA)总线、***设备互连(peripheral component interconnect,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图13示出的结构并不构成对该电子设备60的限定。除图13所示部件之外,该电子设备60可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
作为一个示例,结合图12,电子设备中的传输单元401和处理单元402实现的功能与图13中的处理器601的功能相同。
可选的,如图13所示,本申请实施例提供的电子设备60还可以包括通信接口604。
通信接口604,用于与其他设备通过通信网络连接。该通信网络可以是以太网,无线接入网,无线局域网(wireless local area networks,WLAN)等。通信接口604可以包括用于接收数据的接收单元,以及用于发送数据的发送单元。
在一种设计中,本申请实施例提供的电子设备中,通信接口还可以集成在处理器中。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明。在实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机执行该指令时,该计算机执行上述方法实施例所示的方法流程中的各个步骤。
本申请的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行上述方法实施例中的一种分布式内网服务数据获取方法。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘。随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦式可编程只读存储器(erasable programmable read only memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,CD-ROM)、光存储器件、磁存储器件、或者上述的人以合适的组合、或者本领域数值的任何其他形式的计算机可读存储介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(application specific integrated circuit,ASIC)中。
在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
由于本申请的实施例中的电子设备、计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本申请实施例在此不再赘述。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。

Claims (14)

1.一种分布式内网服务数据获取方法,其特征在于,所述方法包括:
通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥,并在所述通道网桥对所述访问数据包进行处理,得到目标处理结果,所述目标处理结果用于指示所述访问数据包对应的目标地址和所述访问数据包在核心设备对应的MAC地址,所述访问数据包用于所述目标虚拟机访问目标服务;
根据所述目标处理结果,在所述通道网桥确定所述访问数据包对应的访问通道,并基于所述访问通道将所述访问数据包发送至所述核心设备;
通过所述通道网桥接收所述核心设备基于所述访问通道返回的响应数据包,并将所述响应数据包发送到所述集成网桥;
通过所述集成网桥将所述响应数据包发送到所述目标虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥,包括:
通过所述集成网桥接收所述目标虚拟机发送的所述访问数据包,并在确定所述访问数据包合法的情况下,判断所述访问数据包对应的访问地址是否为预设地址;
在确定所述访问数据包对应的访问地址为所述预设地址的情况下,为所述访问数据包标记目标地址,并将所述访问数据包发送至所述通道网桥,所述目标地址用于指示所述目标虚拟机。
3.根据权利要求1所述的方法,其特征在于,所述通过所述通道网桥接收所述核心设备基于所述访问通道返回的响应数据包之前,所述方法还包括:
通过所述通道网桥接收所述核心设备基于所述访问通道发送的地址解析协议ARP请求,并根据所述ARP请求确定所述访问通道对应的通道标识,所述通道标识用于指示所述ARP请求对应的访问通道;
通过所述通道网桥基于所述通道标识指示的访问通道向所述核心设备发送ARP应答,所述ARP应答包括所述访问数据包对应的目标地址。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述在所述通道网桥对所述访问数据包进行处理,包括:
在所述通道网桥对所述访问数据包对应的源地址进行设置,确定所述访问数据包对应的目标地址,所述访问数据包对应的源地址为所述目标虚拟机的地址,所述访问数据包对应的所述目标地址用于所述核心设备将所述响应数据包发送到所述目标虚拟机;
在所述通道网桥对所述访问数据包对应的目的MAC进行设置,确定所述访问数据包在所述核心设备对应的MAC地址,所述核心设备对应的MAC地址用于将所述访问数据包发送至所述核心设备。
5.根据权利要求4所述的方法,其特征在于,所述将所述响应数据包发送到所述集成网桥之前,所述方法还包括:
在通过所述通道网桥确定所述响应数据包合法的情况下,判断所述响应数据包对应的源地址是否为预设地址;
在确定所述响应数据包对应的源地址为所述预设地址的情况下,判断所述响应数据包对应的目的地址是否为所述目标地址;
在确定所述响应数据包对应的目的地址为所述目标地址的情况下,将所述响应数据包对应的目的地址修改为所述访问数据包对应的源地址。
6.根据权利要求5所述的方法,其特征在于,所述在所述通道网桥对所述访问数据包进行处理,还包括:
将所述访问数据包对应的目的端口号修改为所述目标服务对应的真实端口号;
所述在确定所述响应数据包对应的目的地址为所述目标地址的情况下,将所述响应数据包对应的目的地址修改为所述访问数据包对应的源地址之前,所述方法还包括:
将所述响应数据包对应的源端口号修改为所述目标服务对应的虚拟端口号。
7.一种分布式内网服务数据获取装置,其特征在于,所述数据获取装置包括:传输单元和处理单元;
所述传输单元,用于通过集成网桥将目标虚拟机对应的访问数据包导入至通道网桥;
所述处理单元,用于在所述通道网桥对所述访问数据包进行处理,得到目标处理结果,所述目标处理结果用于指示所述访问数据包对应的目标地址和所述访问数据包在核心设备对应的MAC地址,所述访问数据包用于所述目标虚拟机访问目标服务;
所述处理单元,还用于根据所述目标处理结果,在所述通道网桥确定所述访问数据包对应的访问通道;
所述传输单元,还用于基于所述访问通道将所述访问数据包发送至所述核心设备;
所述传输单元,还用于通过所述通道网桥接收所述核心设备基于所述访问通道返回的响应数据包,并将所述响应数据包发送到所述集成网桥;
所述传输单元,还用于通过所述集成网桥将所述响应数据包发送到所述目标虚拟机。
8.根据权利要求7所述的数据获取装置,其特征在于,所述传输单元,还用于通过所述集成网桥接收所述目标虚拟机发送的所述访问数据包;
所述处理单元,还用于在确定所述访问数据包合法的情况下,判断所述访问数据包对应的访问地址是否为预设地址;
所述处理单元,还用于在确定所述访问数据包对应的访问地址为所述预设地址的情况下,为所述访问数据包标记目标地址;
所述传输单元,还用于将所述访问数据包发送至所述通道网桥,所述目标地址用于指示所述目标虚拟机。
9.根据权利要求7所述的数据获取装置,其特征在于,所述传输单元,还用于通过所述通道网桥接收所述核心设备基于所述访问通道发送的地址解析协议ARP请求;
所述处理单元,还用于根据所述ARP请求确定所述访问通道对应的通道标识,所述通道标识用于指示所述ARP请求对应的访问通道;
所述传输单元,还用于通过所述通道网桥基于所述通道标识指示的访问通道向所述核心设备发送ARP应答,所述ARP应答包括所述访问数据包对应的目标地址。
10.根据权利要求7至9中任一项所述的数据获取装置,其特征在于,所述处理单元,还用于在所述通道网桥对所述访问数据包对应的源地址进行设置,确定所述访问数据包对应的目标地址,所述访问数据包对应的源地址为所述目标虚拟机的地址,所述访问数据包对应的所述目标地址用于所述核心设备将所述响应数据包发送到所述目标虚拟机;
所述处理单元,还用于在所述通道网桥对所述访问数据包对应的目的MAC进行设置,确定所述访问数据包在所述核心设备对应的MAC地址,所述核心设备对应的MAC地址用于将所述访问数据包发送至所述核心设备。
11.根据权利要求10所述的数据获取装置,其特征在于,所述处理单元,还用于在通过所述通道网桥确定所述响应数据包合法的情况下,判断所述响应数据包对应的源地址是否为预设地址;
所述处理单元,还用于在确定所述响应数据包对应的源地址为所述预设地址的情况下,判断所述响应数据包对应的目的地址是否为所述目标地址;
所述处理单元,还用于在确定所述响应数据包对应的目的地址为所述目标地址的情况下,将所述响应数据包对应的目的地址修改为所述访问数据包对应的源地址。
12.根据权利要求11所述的数据获取装置,其特征在于,所述处理单元,还用于将所述访问数据包对应的目的端口号修改为所述目标服务对应的真实端口号;
所述处理单元,还用于将所述响应数据包对应的源端口号修改为所述目标服务对应的虚拟端口号。
13.一种电子设备,其特征在于,包括:处理器以及存储器;其中,所述存储器用于存储一个或多个程序,所述一个或多个程序包括计算机执行指令,当所述电子设备运行时,处理器执行所述存储器存储的所述计算机执行指令,以使所述电子设备执行权利要求1-6中任一项所述的一种分布式内网服务数据获取方法。
14.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当被计算机执行时使所述计算机执行如权利要求1-6中任一项所述的一种分布式内网服务数据获取方法。
CN202211434128.XA 2022-11-16 2022-11-16 分布式内网服务数据获取方法、装置、设备及存储介质 Active CN115834291B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211434128.XA CN115834291B (zh) 2022-11-16 2022-11-16 分布式内网服务数据获取方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211434128.XA CN115834291B (zh) 2022-11-16 2022-11-16 分布式内网服务数据获取方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115834291A CN115834291A (zh) 2023-03-21
CN115834291B true CN115834291B (zh) 2024-04-09

Family

ID=85528456

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211434128.XA Active CN115834291B (zh) 2022-11-16 2022-11-16 分布式内网服务数据获取方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115834291B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116346715B (zh) * 2023-03-29 2024-07-09 中国联合网络通信集团有限公司 数据发送方法、流表安全组***、电子设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104468746A (zh) * 2014-11-23 2015-03-25 国云科技股份有限公司 一种适用于云平台的分布式虚拟网络实现方法
CN106953788A (zh) * 2017-02-16 2017-07-14 北京西普阳光教育科技股份有限公司 一种虚拟网络控制器及控制方法
CN108111384A (zh) * 2017-12-26 2018-06-01 北京科来数据分析有限公司 一种基于隧道协议的OpenStack流量采集方法
CN108471383A (zh) * 2018-02-08 2018-08-31 华为技术有限公司 报文转发方法、装置和***
CN111327720A (zh) * 2020-02-21 2020-06-23 北京百度网讯科技有限公司 一种网络地址转换方法、装置、网关设备及存储介质
CN112235175A (zh) * 2020-09-01 2021-01-15 深圳市共进电子股份有限公司 一种网桥设备的访问方法、访问装置及网桥设备
CN113300917A (zh) * 2021-07-27 2021-08-24 苏州浪潮智能科技有限公司 Open Stack租户网络的流量监控方法、装置
CN114338546A (zh) * 2021-12-24 2022-04-12 中国联合网络通信集团有限公司 虚拟机限速方法、装置、电子设备及可读存储介质
WO2022146585A1 (en) * 2020-12-30 2022-07-07 Oracle International Corporation Layer-2 networking using access control lists in a virtualized cloud environment
CN114978808A (zh) * 2022-05-13 2022-08-30 曙光信息产业股份有限公司 一种数据转发方法、装置、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10855531B2 (en) * 2018-08-30 2020-12-01 Juniper Networks, Inc. Multiple networks for virtual execution elements

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104468746A (zh) * 2014-11-23 2015-03-25 国云科技股份有限公司 一种适用于云平台的分布式虚拟网络实现方法
CN106953788A (zh) * 2017-02-16 2017-07-14 北京西普阳光教育科技股份有限公司 一种虚拟网络控制器及控制方法
CN108111384A (zh) * 2017-12-26 2018-06-01 北京科来数据分析有限公司 一种基于隧道协议的OpenStack流量采集方法
CN108471383A (zh) * 2018-02-08 2018-08-31 华为技术有限公司 报文转发方法、装置和***
CN111327720A (zh) * 2020-02-21 2020-06-23 北京百度网讯科技有限公司 一种网络地址转换方法、装置、网关设备及存储介质
CN112235175A (zh) * 2020-09-01 2021-01-15 深圳市共进电子股份有限公司 一种网桥设备的访问方法、访问装置及网桥设备
WO2022146585A1 (en) * 2020-12-30 2022-07-07 Oracle International Corporation Layer-2 networking using access control lists in a virtualized cloud environment
CN113300917A (zh) * 2021-07-27 2021-08-24 苏州浪潮智能科技有限公司 Open Stack租户网络的流量监控方法、装置
CN114338546A (zh) * 2021-12-24 2022-04-12 中国联合网络通信集团有限公司 虚拟机限速方法、装置、电子设备及可读存储介质
CN114978808A (zh) * 2022-05-13 2022-08-30 曙光信息产业股份有限公司 一种数据转发方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Performance of Network Virtualization in cloud computing infrastructures: The OpenStack case";Franco Callegati;《2014 IEEE 3rd International Conference on Cloud Networking (CloudNet)》;20141201;全文 *
"Quantum中多租户隔离与网络服务扩展研究";常立伟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140115;全文 *

Also Published As

Publication number Publication date
CN115834291A (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
CN111885075B (zh) 容器通信方法、装置、网络设备及存储介质
US10237230B2 (en) Method and system for inspecting network traffic between end points of a zone
RU2544766C2 (ru) Способ, устройство и система маршрутизации данных между сегментами сетей
Dorlan An introduction to computer networks
US9755959B2 (en) Dynamic service path creation
US8259571B1 (en) Handling overlapping IP addresses in multi-tenant architecture
KR102054338B1 (ko) 개별 관리들을 이용하는 vlan 태깅된 패킷들의 가상 포워딩 인스턴스들의 원단 주소들로의 라우팅
US8725898B1 (en) Scalable port address translations
CN112671628B (zh) 业务服务提供方法及***
CN107046506B (zh) 一种报文处理方法、流分类器和业务功能实例
US20050111455A1 (en) VLAN server
CN114301868B (zh) 快速生成虚拟容器浮动ip的方法及网络直通的方法和装置
CN112671938B (zh) 业务服务提供方法及***、远端加速网关
CN107809386B (zh) Ip地址转换方法、路由设备和通信***
WO2020135381A1 (zh) 一种处理报文的方法、设备及***
WO2021077995A1 (zh) 网络切片共享上联口的方法、装置及存储介质
CN115834291B (zh) 分布式内网服务数据获取方法、装置、设备及存储介质
Ranjbar et al. Domain isolation in a multi-tenant software-defined network
CN112565053B (zh) 识别私网用户的方法、装置、服务***及存储介质
EP4024771A1 (en) Network measurement system and method, device and storage medium
CN113726653A (zh) 报文处理方法及装置
CN116488958A (zh) 网关处理方法、虚拟接入网关、虚拟业务网关及相关设备
CN116264518A (zh) 基于云专线的云服务互访方法、***、网络节点和介质
CN111885068B (zh) 一种旁路部署的流量分发方法及其***
JP2019153965A (ja) Ipネットワーク接続システム、ipネットワーク接続装置、ipネットワーク接続方法、及びプログラム

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