CN113302884B - 公共云环境中的服务插入 - Google Patents
公共云环境中的服务插入 Download PDFInfo
- Publication number
- CN113302884B CN113302884B CN201980089341.1A CN201980089341A CN113302884B CN 113302884 B CN113302884 B CN 113302884B CN 201980089341 A CN201980089341 A CN 201980089341A CN 113302884 B CN113302884 B CN 113302884B
- Authority
- CN
- China
- Prior art keywords
- packet
- service
- decapsulated packet
- decapsulated
- computing instance
- 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
Links
- 238000003780 insertion Methods 0.000 title claims abstract description 85
- 230000037431 insertion Effects 0.000 title claims abstract description 85
- 238000000034 method Methods 0.000 claims abstract description 50
- 230000004044 response Effects 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims abstract description 22
- 239000000523 sample Substances 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 14
- 238000005538 encapsulation Methods 0.000 claims description 12
- RJKFOVLPORLFTN-LEKSSAKUSA-N Progesterone Chemical compound C1CC2=CC(=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H](C(=O)C)[C@@]1(C)CC2 RJKFOVLPORLFTN-LEKSSAKUSA-N 0.000 claims 9
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000013459 approach Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000000737 periodic effect Effects 0.000 description 4
- 230000005641 tunneling Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000012706 support-vector machine Methods 0.000 description 3
- 101150053844 APP1 gene Proteins 0.000 description 2
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 2
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 2
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 2
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 1
- 101710081949 Xaa-Pro aminopeptidase 3 Proteins 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/354—Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了一种网络设备在包括第一虚拟网络和第二虚拟网络的公共云环境中执行服务插入的示例方法。在一个示例方法中,响应于从位于第一虚拟网络中的第一虚拟化计算实例接收到第一封装分组,网络设备可以通过执行解封装以从第一封装分组中去除来生成解封装分组。该方法还可以包括:识别由服务插入规则指定的服务路径,并将解封装分组发送至服务路径,以使服务路径根据一个或更多个服务处理解封装分组。该方法还可以包括:响应于网络设备接收到由服务路径处理的解封装分组,向目的地地址发送该解封装分组,或者生成第二封装分组并向目的地地址发送该第二封装分组。
Description
M·希拉和R·杰恩
相关申请的交叉引用
本申请要求于2019年1月18日提交的标题为“公共云环境中的服务插入(SERVICEINSERTION IN PUBLIC CLOUD ENVIRONMENTS)”的美国非临时申请No.16/251,083的权益。
本申请(代理人案卷号E371)在主题上与美国专利申请No.16/251,080(代理人案卷号E613)相关,其通过引用并入本文。
背景技术
除非本文另有说明,否则本节中描述的方法不能通过包含在本节中而被承认是现有技术。
虚拟化允许硬件资源的抽象化和池化以支持软件定义的数据中心(SDDC)中的虚拟机。例如,通过服务器虚拟化,运行不同操作系统的虚拟化计算实例(诸如虚拟机(VM))可以由同一物理机(例如,称为“主机”)支持。每个VM通常都配备有虚拟资源以运行客户操作系统和应用程序。虚拟资源可以包括中央处理单元(CPU)资源、内存资源、存储资源、网络资源等。在实际应用中,可能会出现各种与网络相关的问题,从而对主机和虚拟机的性能产生不利影响。
在实践中,用户(例如,组织)可以使用在用户的所有权和控制之下的私有云环境中的“本地部署(on-premise)”数据中心基础设施来运行各种应用程序。可选地或附加地,用户可以使用在公共云提供商的所有权和控制下的基础设施“在云中”运行应用程序。在后一种情况下,为在公共云环境中运行的应用程序提供各种服务(例如防火墙)可能具有挑战性。
附图说明
图1是示出可以执行服务插入的示例公共云环境的示意图;
图2是示出图1中公共云环境的物理实现视图的示意图;
图3是网络设备在公共云环境中执行服务插入的示例过程的流程图;
图4是公共云环境中服务插入的示例性详细过程的流程图;
图5是示出根据图4的示例的服务插入规则配置的第一示例的示意图;
图6是示出根据图4中的示例的公共云环境中东西向流量的示例服务插入的示意图;
图7是示出根据图4中的示例的公共云环境中南北向流量的示例服务插入的示意图;
图8A是示出公共云环境中针对第一高可用性(HA)对的故障处理的第一示例的示意图;
图8B是示出公共云环境中针对第二HA对的故障处理的第二示例的示意图;以及
图9是示出公共云环境中的故障处理的第三示例的示意图。
具体实施方式
在下面的具体实施方式中,参考了形成其一部分的附图。在附图中,除非上下文另有说明,否则相似的符号通常标识相似的组件。在具体实施方式、附图和权利要求中描述的说明性实施例并不意味着是限制性的。在不脱离本文呈现的主题的精神或范围的情况下,可以利用其他实施例,并且可以做出其他改变。将容易理解的是,如本文一般描述的和附图中所示的,本公开的方面可以以多种不同的配置进行布置、替换、组合和设计,所有这些在本文中都被明确地预期。
现在将使用图1更详细地解释与在公共云环境中配置和提供服务有关的挑战,图1是示出可以在其中执行服务插入的示例公共云环境100的示意图。应当理解,取决于期望的实现方式,公共云环境100可以包括除图1中所示的组件之外的附加和/或替代组件。
在图1的示例中,公共云环境100包括彼此逻辑隔离的多个虚拟网络101-103。例如,VM1 110可以部署在第一虚拟网络101中以运行应用程序APP1 112,并且VM2 120可以部署在第三虚拟网络103中以使用另一个实体(即,云提供商)的基础设施“在云中”运行APP2122。在实践中,云提供商通常是向多个用户或租户提供基于云的平台的实体。这样,租户可以利用公共云环境100提供的可扩展性和灵活性来扩展他们各自的本地部署的数据中心的物理能力。
贯穿本公开,公共云环境中的术语“虚拟网络”通常可以指与公共云环境中的至少一个其他虚拟网络在逻辑上隔离的软件实现的网络。例如,虚拟网络101-103可以是由Amazon Web (AWS)提供的Amazon Virtual Private Clouds(VPC)。Amazon VPC和Amazon AWS是Amazon技术公司的注册商标。使用图1中的AWS示例,虚拟网络101-103也分别标记为“VPC1”101、“VPC2”102和“VPC3”103。在实践中,可以使用其他类型的虚拟网络,例如来自Microsoft />的Azure Virtual Networks(VNet);来自Google CloudPlatformTM的VPC;来自IBM CloudTM的VPC;以及它们的组合等。
将使用图2更详细地解释VM 110-120,图2是示出图1中示例公共云环境100的物理实现视图200的示意图。根据期望的实现,物理实现视图200可以包括不同于图2所示的额外和/或替代组件。在图2的示例中,VM 110-140可以由主机210A-B(也称为“终端主机”、“计算设备”、“主机计算机”、“主机设备”、“物理服务器”、“服务器系统”、“物理机”等)支持。例如,VM3 130和VM4 140可以部署在第三虚拟网络103中以在云中运行各自的应用程序“APP3”132和“APP4”142。
主机210A-B可以各自包括维持底层硬件212A/212B和分配给VM 110-140的虚拟资源之间的映射的虚拟化软件(例如,管理程序214A/214B)。主机210A-B可以经由由各种中间网络设备形成的物理网络互连,诸如物理网络设备(例如,物理交换机、物理路由器等)和/或逻辑网络设备(例如,逻辑交换机、逻辑路由器等)。硬件212A/212B包括合适的物理组件,诸如处理器220A/220B;内存222A/222B;物理网络接口控制器或NIC 224A/224B;以及可经由存储控制器226A/226B等访问的存储磁盘228A/228B。
虚拟资源被分配给每个VM以支持客户操作系统(OS)和应用程序(见112/122/132/142)。可以在每个VM 110/120/130/140上配置代理114/124/134/144以执行任何合适的处理,以支持分组处理(例如,封装和解封装)等。对应于硬件212A/212B,虚拟资源可以包括虚拟CPU、虚拟内存、虚拟磁盘、虚拟网络接口控制器(VNIC)等。可以使用虚拟机监视器(VMM)241-244来模拟硬件资源,虚拟机监视器(VMM)241-244可以被视为相应VM 110-140的一部分(或可选地与其分离)。例如在图2中,VNIC 251-254是由相应的VMM 241-244模拟的虚拟网络适配器。
尽管本公开的示例涉及VM,但是应当理解,在主机上运行的“虚拟机”仅仅是“虚拟化计算实例”或“工作负载”的一个示例。虚拟化计算实例可以表示可寻址数据计算节点或隔离的用户空间实例。实际上,可以使用任何合适的技术来提供隔离的用户空间实例,而不仅仅是硬件虚拟化。其他虚拟化计算实例可包括容器(例如,在VM内运行的或在主机操作系统的顶部上运行的,在无需管理程序或单独的操作系统或实现为操作系统级虚拟化)、虚拟专用服务器、客户端计算机等。此类容器技术可从Docker公司等获得。VM也可以是完整的计算环境,包含物理计算系统的硬件和软件组件的虚拟等效物。术语“管理程序”通常可以指支持多个虚拟化计算实例的执行的软件层或组件,包括支持命名空间容器(如Docker等)的客户VM中的系统级软件。
管理程序214A/214B进一步实现虚拟交换机215A/215B以处理从相应VM 110-140的出去分组和至相应VM 110-140的进入分组。术语“分组”通常可以指可以一起从源传输到目的地的一组位,例如消息、段、数据报等。术语“流量”通常可以指分组的流。术语“第2层”通常可以指媒体访问控制(MAC)层;“第3层”指网络或互联网协议(IP)层;以及“第4层”指开放式系统互连(OSI)模型中的传输层(例如,使用传输控制协议(TCP)或用户数据报协议(UDP)),但是本文描述的概念可以与其他网络模型一起使用。
网络管理器270、云服务管理器280和网络控制器290是促进对部署在公共云环境100中的各种实体的管理的示例网络管理实体。示例网络控制器是驻留在中央控制平面上的VMware (可从VMware公司获得)的NSX控制器组件。网络管理器270(例如,NSX管理器)和云服务管理器280可以是驻留在管理平面上的实体。云服务管理器280可以为最终用户提供接口以在公共云环境100中配置他们的公共云库存(例如,VM110-140)。管理实体270/280/290可以使用一个或更多个物理机、一个或更多个虚拟机、其组合等来实现。
再次参考图1,服务路径104可以被“插入”在源端点和目的地端点(例如,VM)之间以在公共云环境100中提供各种服务。特别地,每个服务路径104可以包括至少一个(即N≥1)服务虚拟化计算实例(也称为“服务端点”、“服务VM”(SVM)或“虚拟网络功能”(VNF))。例如,SVM1 150可以沿着VM1 110和VM2 120之间的数据路径“插入”,以出于安全目的提供防火墙服务。这样,VM1 110和VM2 120之间的分组流可以经由SVM1 150被引导或转发,SVM1150根据任何合适的防火墙规则决定是允许还是丢弃分组。尽管为了简单起见在图1中示出了一个服务VM,但是应当理解,服务路径104可以包括多个SVM(形成服务链),诸如提供防火墙服务的SVM1 150和提供网络地址转换(NAT)服务等的另一个SVM。在实践中,服务链可以表示一组有序的服务功能的实例化。
通常,存在与公共云环境100中的服务插入相关联的各种挑战。例如,与现场部署的基础设施相比,用户通常对支持VM 110-140和SVM1 150的底层管理程序和硬件没有任何直接控制。一种常规方法是将SVM1 150部署在与VM 110/120相同的VPC中,并修改底层路由表中的默认路由,以将分组转发到SVM1 150。然而,这对SVM1 150的部署施加了限制,出于性能和可扩展性的原因,有些用户可能会觉得不想要。
服务插入
根据本公开的示例,可以使用部署在与SVM1 150相同的虚拟网络102中的网络设备160以改进的方式执行服务插入。在图1的示例中,形式为云网关(参见“CGW1”)的示例网络设备160被部署在公共云环境100中。从网络设备160和SVM1 150的角度来看,网络设备160能够以更高的吞吐量与SVM1 150本地通信(例如,发送和接收没有隧道和封装的解封装分组),因为它们位于相同的虚拟网络102中。
实际上,公共云环境100中的每个虚拟网络101/102/103可以配置有无类别域间路由(CIDR)块,诸如用于VPC1 101的第一CIDR块=11.0.0.0/16,用于VPC2 102的第二CIDR块=10.0.0.0/16,用于VPC3 103的第三CIDR块=12.0.0.0/16,等等。根据所需的实现方式,每个CIDR块可以进一步划分为子网。如本文所使用的,“网络设备”可以使用公共云环境100中的一个或更多个虚拟机(VM)和/或物理机(也称为“裸机”)来实现,并且能够执行网关、交换机、路由器、网桥、其任何组合等的功能。
根据本公开的示例,可以在SVM1 150处实现更高的吞吐量。例如,由于不需要在CGW1 160和SVM1 150之间建立任何隧道(例如,使用互联网协议安全(IPSec)),可以消除资源密集的IPSec相关操作(例如,加密和解密)以提高吞吐量性能。可以为公共云环境100中的东西向流量(见图1和图6)和/或南北向流量(见图7)实现根据本公开的示例的服务插入。
如本文所使用的,术语“服务路径”通常可以指源和目的地之间的路径,通过该路径引导分组以向分组提供服务。服务路径可以包括被配置为提供“服务”的至少一个“服务虚拟化计算实例”。术语“服务”可以是任何合适的联网或非联网服务,诸如防火墙、负载平衡、NAT、入侵检测、深度分组检测(DPI)、流量整形、流量优化、分组报头丰富或修改、分组标记、内容过滤等。应当理解,与服务相关联的分组处理操作可能会或可能不会修改分组的内容(即报头和/或有效载荷)。术语“端点”通常可以指双向进程间通信流的始发节点(“源端点”)或终止节点(“目的地端点”)。
更详细地,图3是网络设备160在公共云环境100中执行服务插入的示例过程300的流程图。示例过程300可以包括由一个或更多个框(诸如310到360)示出的一个或更多个操作、功能或动作。根据期望的实现,各种框可以组合成更少的框、分成附加块框和/或消除框。在下文中,将使用VM1 110作为示例“第一虚拟化计算实例”或“第一端点”来讨论各种示例,VM2 120作为示例“第二虚拟化计算实例”或“第二端点”,CGW1 160作为示例“网络设备”,以及SVM1 150作为服务路径104上的示例“服务虚拟化计算实例”。尽管术语“第一”和“第二”用于描述各种元素,但这些元素不应受这些术语的限制。这些术语用于区分一个元素与另一个元素。例如,第一元素可被称为第二元素,反之亦然。
在图3中的310和320处,响应于从VM1 110接收到第一封装分组(参见图1中的170),CGW1 160通过从第一封装分组中去除第一外部报头来执行解封装以生成解封装分组(参见图1中的172)。例如在图1中,标记为“O1”的第一外部报头可以从位于第一虚拟网络101中的源VM1 110(例如,IP地址=IP-VM1)寻址到位于第二虚拟网络102中的目的地CGW1160(例如,IP地址=IP-CGW)。
在图3中的330处,基于解封装分组172的一个或更多个特征(例如,目的地地址),CGW1 160识别由服务插入规则(参见161)指定的服务路径104,并将解封装分组172发送至服务路径104。在此,术语“服务插入规则”或“服务插入策略”通常可以指指定与分组的至少一个特征相关联的服务路径的规则(例如,表条目),使得分组可以被转发到服务路径进行处理。
例如在图1中,框330可以涉及匹配与由服务插入规则161指定的目的地CIDR块(例如,12.0.0.0/16)相关联的特征(例如,目的地地址=IP-VM2)。CIDR3=12.0.0.0/16代表为VM2 120所在的虚拟网络103配置的CIDR块。服务路径决策可基于的分组的其他特征可包括其他报头值,诸如源地址、端口号或与由网络设备维护、编译或检索的分组相关联的元数据。服务插入规则161进一步指定识别服务路径104或更具体地位于服务路径104上的SVM1150的对应(目标=SVM1)。
在图3中的340处,CGW1 160可以将解封装分组172发送至服务路径104以使得服务路径104根据一个或更多个服务来处理解封装分组172。SVM1 150可以是服务路径104上的唯一SVM(如为简单起见,如图1所示),或服务路径104上的服务链中的第一SVM。由于SVM1150和CGW1 160两者都位于与第二CIDR块(CIDR2)=10.0.0.0/16相关联的第二虚拟网络102中,因此没有必要在它们之间建立任何隧道(例如,IPSec)以及在将解封装分组172发送至SVM1 150之前对其执行封装。这提高了SVM1 150的效率和吞吐量。
如将使用图4-6讨论的,指定(目的地CIDR=12.0.0.0/16,目标=CGW1)的服务插入规则151可以在SVM1 150处配置以使得SVM1 150将任何经处理的解封装分组发送回CGW1160。取决于期望的实现,服务插入规则151/161可以是在与子网接口(例如,图5中的511-512)相关联的路由表(例如,AWS/Azure路由表)上配置或编程的路由。实际上,具有(目的地=0.0.0.0/0)的更通用的服务插入规则可以被配置为促进双向、东西向和南北向流量的服务插入。
在图3中的350和360处,响应于CGW1 160接收到由服务路径104处理的解封装分组(参见图1中的174),CGW1 160向目的地地址发送解封装分组。可替代地,框360可涉及生成并向目的地地址发送第二封装分组。在图1的示例中,通过用从CGW1 160寻址到位于第三虚拟网络103的目的地VM2 120的第二外部报头(标记为“O2”)封装解封装分组(见174)来生成第二封装分组(见176)。
取决于期望的实现,服务路径104可以执行分组修改(即,解封装分组172不同于174),或不执行分组修改(即,172与174相同)。例如,实现防火墙服务的SVM1 150通常不修改解封装分组174的报头和有效载荷。相反,实现NAT服务的SVM1 150将修改解封装分组174中的地址信息,例如通过将私有IP地址转换为公共IP地址等。正如将使用图4-6进一步讨论的,CGW1 160可以存储与解封装分组172/174相关联的状态信息,以促进从VM2 120到VM1110的响应分组的服务插入。实际上,目的地地址可以位于外部网络中(将使用图7讨论)。
配置
图4是用于在公共云环境100中进行服务插入的示例详细过程400的流程图。示例过程400可以包括在405至490处示出的一个或更多个操作、功能或动作。各种操作、功能或动作可以组合成更少的框,分成额外的框,和/或根据所需的实现方式消除。图4的示例将使用图5进行解释,图5是根据图4的示例说明服务插入规则配置500的第一示例的示意图。
图4和图5中的示例可以由SVM 150-152、CGW 160-162和VM110-120(例如,使用各自的代理114、124)实现。应当理解,服务插入也可以针对任何附加和/或替代的VM实现,例如VM3 130和VM4 140(见图2)。使用AWS作为示例公共云部署,第一虚拟网络101可以表示与第一CIDR块(“CIDR1”)=11.0.0.0/16相关联的第一VPC(“VPC1”)。第二虚拟网络102可以表示与第二CIDR块(“CIDR2”)=10.0.0.0/16相关联的第二VPC(“VPC2”)。第三虚拟网络103可以表示与第三CIDR块(“CIDR3”)=12.0.0.0/16相关联的第三VPC(“VPC3”)。虚拟网络101-103在逻辑上彼此隔离。
(a)高可用性(HA)对
在图4中的405处,CGW1 160和CGW2 162被部署在VPC2 102中以执行VM之间的服务插入,诸如VPC1 101中的VM1 110和VPC3 103中的VM2 120。在图5的示例中,CGW1 160和CGW2 162可以被配置为高可用性(HA)对。例如,出于容错目的,CGW1 160被分配角色=主要(即,活动),而CGW2 162被分配角色=辅助(即,备用)。使用活动-备用配置,CGW1 160通常用作活动网关,而CGW2 162用作备用网关。在活动网关处发生故障的情况下,备用网关启动切换或故障转移过程以接管为活动网关来处理VM 110-120之间的服务插入。
在图4中的410,SVM1 150和SVM2 152被部署在VPC2 102中以提供任何合适的服务(例如,防火墙)。SVM1 150和SVM2 152可以被配置为HA对。例如,SVM1 150被分配角色=主要(即,活动),而SVM2 152被分配角色=次要(即,备用)。使用活动-备用配置,SVM1 150通常作为活动SVM操作,而SVM2 152作为备用SVM操作。类似地,如果活动SVM处出现故障,则备用SVM可以接管为活动SVM。
使用活动-备用配置,以下组合中的任何一个可以在特定实例处是活动的:(CGW1160,SVM1 150),(CGW1 160,SVM2 152),(CGW2 162,SVM1 150)和(CGW2 162,SVM2 152)。为了实现活动-备用配置,HA对中的每个成员都被配置为检测其同伴的活动或故障。例如,可以使用任何合适的故障检测或连续性检查协议,诸如边界网关协议(BGP)等,在HA对的成员之间建立监控会话。
例如,使用监控会话,CGW1 160和CGW2 162可以通过控制消息来监控彼此的状态(即,活动与否)。类似地,可以在SVM1 150和SVM2 152之间建立另一会话。另外或替代地,每个HA对的成员也可以通过交换心跳消息来检测活动性。应当理解,本公开的示例可以针对活动-活动配置实现,在这种情况下,HA对的所有成员同时处于活动状态。
(b)服务插入规则
在图4中的415和420处,图5中的服务插入规则501-504分别针对各自的CGW1 160、SVM1 150、CGW2 162和SVM2 152进行配置。实际上,可以基于来自网络管理实体的控制信息(例如,指令)执行框405-420处的配置。服务插入规则501-504表示一组规则(称为路线或路由表条目),其用于确定如何在VPC2 102内路由流量。应该理解,路由表521-524可以包括为简单起见未示出的其他路线。
参考CGW1 160,第一服务插入规则501(参见路由表521)被配置用于子网“s1”接口511,以将分组引导到活动SVM1 150。第一规则501指定(目的地=0.0.0.0/0,目标=SVM1),以促进发往任何目的地(包括与VPC3 103关联的CIDR3=12.0.0.0/16中的目的地地址)的分组的服务插入。在SVM1 150,为子网“s2”接口512配置第二服务插入规则502(参见路由表522)”。第二规则502指定(目的地=0.0.0.0/0,目标=CGW1)将(处理后的)分组转发回CGW1160。与图1中的示例(见151、161)相比,图5中的服务插入规则501-502更通用并且不限于特定目的地(例如,12.0.0.0/16)。
类似地,在CGW2 162处,第三规则503(参见路由表523)被配置用于子网“s3”接口513,以将分组引导到活动SVM1 150。在SVM2 152处,第四规则504(参见路由表524)被配置用于子网“s4”接口514,以将(处理后的)分组转发回活动CGW1 160。实际上,服务插入规则501-504可以是在相应路由表521-524(例如,由公共云提供商支持的Azure或AWS路由表)上编程的路线。
图4中的框415可以涉及CGW 160/162使用任何合适的方法识别活动SVM。例如,使用第3层方法,CGW 160/162可以与各自的SVM1 150和SVM2 152建立对等会话,诸如使用边界网关协议等。这样,CGW 160/162可以通过路由广告学习路线以相应地更新它们的服务插入规则。在另一个示例中,CGW 160/162可以使用线中凸点(bump-in-the-wire)方法识别活动SVM。例如,可以在CGW1 160处配置两个附加接口以从SVM2 152转发和接收。在这种情况下,CGW1 160可以向SVM1 150和SVM2发送虚BFD流量。根据是从SVM1 150还是从SVM2 152接收到响应,CGW1 160可以识别活动SVM。类似的操作可由CGW2 162以及SVM 150-152执行。
针对东西向流量的服务插入
图6是示出根据图4中的示例的用于公共云环境100中的东西向流量的示例服务插入600的示意图。再次参考图4,在425和430,响应于检测具有源自应用程序(APP1)112并以VM2 120为目的地的数据的出去分组,VM1 110生成封装分组并将其发送至活动CGW。
在图6的示例中,出去分组609(标记为“P1”)包括从与VPC1 101中的VM1 110相关联的源=IP-VM1寻址到与VPC3 103中的VM2 120相关联的目的地=IP-VM2的内部报头。IP-VM1属于CIDR1=11.0.0.0/16,IP-VM2属于CIDR3=12.0.0.0/16。响应于检测到分组P1609,代理114可以通过用外部报头(“O1”)封装分组P1 609来生成封装分组610。外部报头从IP-VM1寻址到与活动CGW关联的IP-CGW,例如CGW1 160。可以在CGW 160/162和VM 110/120之间使用任何合适的隧道协议,例如通用网络虚拟化封装(GENEVE)等等。
在图4中的435和440处,响应于从VMl 110接收到封装分组610,CGW1 160执行解封装以去除外部报头。在图4中的436处,CGW1 160还可以存储与分组流相关联的状态信息,以处理来自活动SVM1 150的处理后的分组(将在下面进一步解释)。可以存储任何合适的状态信息,诸如五元组信息(源IP地址=IP-VM1、目的地IP地址=IP-VM2、源端口号、目的地端口号、协议)、分组序列号等。状态信息可用于确保特定的服务插入规则不会被CGW1 160应用两次(即,一次是在从VM1 110接收到分组时,而另一次是在处理后从SVM1 150接收到分组时)
此外,在445和450处,CGW1 160识别服务路径104上的SVM1 150并将解封装分组(参见620)转发到SVM1 150以进行分组处理。框445可涉及CGW1 160匹配目的地地址=IP-VM2(或其他分组特征)与服务插入规则501,其指定(目的地=0.0.0.0/0,目标=SVM1)。如使用框415所讨论的,解封装分组620被转发到被分配有活动角色的SVM1 150。在SVM1 150处发生故障的情况下,解封装分组620将改为被转发到SVM2 152。
在图4中的455和460处,响应于接收到解封装分组620,SVM1 150执行任何必要的分组处理。使用防火墙服务作为示例,SVM1 150可以基于防火墙规则确定是允许还是丢弃解封装分组620。在465,在执行分组处理(并且解封装分组620不被丢弃)之后,SVM1 150根据在路由表522中指定(目的地=0.0.0.0/0,目标=CGW1)的服务插入规则602将处理后的分组630转发到CGW1 160。
在图4中的470和475处,响应于从SVM1 150接收到处理后的分组630,CGW1 160生成封装分组640并将其发送至VPC3 103中的目的地VM2 120。封装分组640包括处理后的分组630和第二外部报头(O2),其从源IP-CGW寻址到与VM2 120相关联的目的地IP-VM2。
在图4中的480、485和490处,响应于接收到具有外部报头(O2)的封装分组640,VM2120(例如,使用代理124)执行解封装以去除外部报头,并将解封装分组645转发到应用程序(APP2)122,从而由CGW1 160和SVM1 150完成具有服务插入操作的端到端分组转发过程。
应当理解,与常规方法不同,CGW1 160和SVM1 150可以在VPC2 102中本地通信(即,没有任何隧道和封装)。从CGW1 160的角度来看,CGW1 160以解封装形式向/从SVM1150转发/接收分组。从SVM1 150的角度来看,SVM1 150向/从CGW1 160转发/接收解封装形式的解封装分组。由于SVM1 150不必执行封装和解封装操作,因此可以提高服务插入吞吐量。此外,由于在CGW1 160和SVM1 150之间不使用IPSec隧道,因此没有必要执行可能是资源密集型的加密和解密操作。
应当理解,可以针对从VM2 120到VMl 110的反向流量执行图4中的示例过程400。参见图6中的对应分组650-685。在这种情况下,源VM2 120可以执行框425-430,以检测来自APP2 122的响应分组650(“P2”),并且生成带有外部报头(“O3”)的封装响应分组655并将其发送至CGW1 160。CGW1 160可以根据框435-450和470-475执行服务插入。SVM1 150可以根据框455-465执行分组处理。参见解封装分组660-670。在目的地VM1 110,响应于接收到具有外部报头(“O4”)的封装分组680,可以执行框480-490以生成解封装分组685并将其发送至APP1 112。使用图4解释的各种细节适用于返回流量,为了简洁,此处不再赘述。
针对南北向流量的服务插入
图7是示出根据图4中的示例的在公共云环境100中用于南北向流量的示例服务插入700的示意图。在下文中,考虑针对VPCl 101中的VMl 110和位于外部网络705(即,公共云环境100的外部)中的目的地(参见外部服务器“X”706)之间的分组流的服务插入101。实际上,CGW1 160可以经由各种中间网络设备(例如,路由器、交换机)连接到外部网络705。
使用活动-备用配置,SVM1 150和CGW1 160各自被分配角色=活动,并且SVM2 152和CGW2 162(为简单起见在图7中未示出)被分配角色=备用。为了促进南北向流量的服务插入,服务插入规则501-502可以根据图4中的框415-420在各自的CGW1 160和SVM1 150处配置。参考图7中的路由表521,为与CGW1 160相关联的子网“s1”接口511配置服务插入规则501”。参考图7中的路由表522,为与SVM1 150相关联的子网“s2”接口512配置服务插入规则502。
服务插入规则501-502是促进所有流量的服务插入的通用规则,包括到外部网络705的南北向流量。类似于图5和图6中的示例,服务插入规则501-502可以是在各自的路由表521-522(例如,由公共云提供商支持的Azure或AWS路由表)上编程的路线。根据所需的实现,可以配置更具体的规则,例如用于将流量转发到外部网络705(例如,125.0.0.0/16)的规则和用于将流量从外部网络705返回到VPC1 101(例如,11.0.0.0/16)的另一规则。
(a)到外部网络的出去分组
还参考图4,源VMl 110可以执行框425-430以检测来自APPl 112的出去分组710(“P3”),并且生成具有外部报头(“O5”)的封装分组720并将其发送到CGW1 160。外部报头从与VM1 110相关联的源IP-VM1寻址到与CGW1 160相关联的目的地IP-CGW。基于为子网“s1”接口511配置的服务插入规则501,CGW1 160可以执行框435-450以执行解封装并发送解封装分组720。
在图7的示例中,SVM1 150可以被配置为对去往和来自外部网络705的分组执行NAT。在这种情况下,SVM1 150可以根据框455-465对解封装分组720执行NAT,例如通过将与VM1 110相关联的私有IP地址(例如,IP-VM1)转换为公共IP地址(例如,IP-Y)。SVM1 150然后基于服务插入规则502将所得的(即,处理后的)解封装分组740(“P4”)转发到CGW1 160,用于随后传输到外部网络705中的外部服务器706。
(b)来自外部网络的进入分组
响应于从外部服务器706接收到进入分组750(“P5”),CGW1 160可以根据服务插入规则501将进入分组750引导到SVM1 150。SVM1 150可以对进入分组750执行NAT,例如通过将与VM1 110相关联的公共IP地址(例如,IP-Y)转换为其私有IP地址(例如,IP-VM1)。SVM1150然后基于服务插入规则502将处理后的分组750(“P6”)转发到CGW1 160,用于随后传输到VM1 110。特别地,CGW1可以执行封装以用外部报头(“O6”)封装处理后的分组750,该外部报头(“O6”)从源IP-CGW寻址到目的地IP-VM1。
与使用图1讨论的常规方法不同,服务可以在端点之间本地插入而不使用任何IPSec隧道和CGW1 160和SVM1 150之间的封装。根据本公开的示例,没有必要对支持公共云环境100中的CGW1 160和SVM1 150的底层管理程序进行任何访问,以实现图6中的东西向流量和图7中的南北向流量的服务插入。
HA对的故障处理
(a)控制平面路由交换方法
图8A是示出公共云环境100中的第一HA对的故障处理的第一示例800的示意图。如使用图4和图5所讨论的,CGW1 160和CGW2 162被配置为VPC2 102中的HA对。出于容错目的,CGW1 160被分配角色=活动,而CGW2 162被分配角色=备用。在CGW1 160(见810)发生故障的情况下,CGW2 162可以发起切换或故障转移过程以接管为活动网关。
在图8A的示例中,CGW2 162从角色=备用转换到活动(参见820)。使用控制平面路由交换协议(例如,BGP),CGW2 162可以向SVM1 150和SVM2 152发送控制平面广告以将其自己广告为活动网关。在830,活动SVM1 150可以将为子网“s2”接口512配置的服务插入规则更新为(目的地=0.0.0.0/0,目标=CGW2)。类似地,在840,备用SVM2 152可以将为子网“s4”接口514配置的服务插入规则更新为(目的地=0.0.0.0/0,目标=CGW2)。
图8B是示出针对公共云环境100中的第二HA对的故障处理的第二示例801的示意图。如使用图4和图5所讨论的,SVM1 150和SVM2 152被配置为VPC2 102中的HA对。出于容错目的,SVM1 150被分配角色=活动,SVM2 152被分配角色=备用。在CGW1 160(参见850)发生故障的情况下,SVM2 152可以启动切换或故障转移过程以接管为活动SVM。
在图8B的示例中,SVM2 152从角色=备用转变为活动(参见860)。使用控制平面路由交换协议(例如,BGP),SVM2 152可以向CGW1 160和CGW2 162发送控制平面广告以将其自己广告为活动SVM。在880,CGW2 162(即,在CGW1 160的故障810之后是活动的)可以将为子网“s3”接口513配置的服务插入规则更新为(目的地=0.0.0.0/0,目标=SVM2)。在870,备用CGW1 160可以将为子网“s1”接口511配置的服务插入规则更新为(目的地=0.0.0.0/0,目标=SVM2)。可以对目的地=0.0.0.0/0(图8B中未示出)的一般规则执行类似的更新。
(b)基于数据平面探测(data-plane probe)的方法
实际上,可以为CGW 160/162和SVM 150/152配置任何合适数量的子网接口。在图5的示例中,配置了四个示例子网511-514。图9示出了具有8个子网接口的示例,其是根据图4中的示例说明故障处理的第三示例900的示意图。
参考活动CGW1 160,路由表521存储为子网“s1”接口511配置的(目的地=0.0.0.0/0,目标=SVM1),以将分组引导到SVM1 150。路由表925存储为子网“s5”接口915配置的(目的地=0.0.0.0./0,目标=SVM2),以将分组引导到SVM2 152。参见相应的规则901、905。
参考备用CGW2 162,为子网“s3”接口513配置的路由表523(目的地=0.0.0.0/0,目标=SVM1),以将分组引导到SVM1 150。路由表927存储为子网“s7”接口917配置的(目的地=0.0.0.0/0,目标=SVM2),以将分组引导到SVM2 152。参见相应的规则903、907。
参考活动SVM1 150,路由表522存储为子网“s2”接口512配置的(目的地=0.0.0.0/0,目标=CGW1),以将分组引导到CGW1 160。路由表926存储为子网“s6”接口916配置的(目的地=0.0.0.0/0,目标=CGW2),以将分组引导到CGW2 162。参见相应的规则902、906。
参考备用SVM2 152,为子网“s4”接口514配置的路由表524(目的地=0.0.0.0/0,目标=CGW1),以将分组引导至CGW1 160。路由表928存储为子网“s8”接口918配置的(目的地=0.0.0.0/0,目标=CGW2),以将分组引导到CGW2 162。参见相应的规则904、908。
在图9的示例中,CGW1 160和CGW2 162可以使用基于数据平面探测的方法来检测SVM1 150或SVM2 152是否是活动的。例如,CGW1 160可以在子网接口“s1”511和“s5”915两者上发送以它自己为目的地的周期性数据平面探测。备用SVM(例如,152)将丢弃所有探测。活动SVM(例如,150)会将探测路由回CGW1 160。这样,如果数据平面探测经由“s1”511返回,则CGW1 160可以识别SVM1 150是活动的。否则,SVM2 152是活动的(即,数据平面探测经由“s5”915返回)。CGW2 162可以通过在“s3”513和“s7”917上发送周期性的数据平面探测来使用相同的方法。
类似地,SVM1 150和SVM2 152可以使用基于数据平面探测的方法来检测CGW1 160和CGW2 162是否是活动的。例如,SVM1 150可以在子网接口“s2”512和“s6”916两者上发送以它自己为目的地的周期性数据平面探测。备用CGW(例如,162)将丢弃所有探测。活动的CGW(例如,160)会将探测路由回SVM1 150。这样,如果数据平面探测经由“s2”512返回,则SVM1 150可以识别CGW1 160是活动的。否则,CGW2 162是活动的(即,数据平面探测经由“s6”916返回)。SVM2 152可以通过在“s4”514和“s8”918上发送周期性探测来使用相同的方法。
容器实现
尽管使用VM 110-120进行解释,但是应当理解,公共云环境100可以包括其他虚拟工作负载,例如容器等。如本文所用,术语“容器”(也称为“容器实例”)通常用于描述封装了所有依赖项(例如,二进制文件、库等)的应用程序。在图1至图9的示例中,容器技术可用于在各个VM 110-120内运行各种容器。容器是“无操作系统(OS-less)”的,这意味着它们不包括任何可能达到10千兆字节(GB)的操作系统。这使得容器更加轻量、便携、高效并且适合交付到隔离的操作系统环境中。在VM内部运行容器(称为“容器在虚拟机上”方法)不仅利用了容器技术的优势,还利用了虚拟化技术的优势。容器可以作为各个VM内的独立进程执行。
计算机系统
上述示例可以通过硬件(包括硬件逻辑电路)、软件或固件或其组合来实现。上述示例可以由任何合适的计算设备、计算机系统等来实现。计算机系统可以包括可以经由通信总线相互通信的处理器、存储器单元和物理网卡等。计算机系统可以包括其上存储有指令或程序代码的非暂时性计算机可读介质,指令或程序代码在由处理器执行时,使处理器执行本文参考图1至图9描述的过程。例如,根据本公开的示例,指令或程序代码在由计算机系统的处理器执行时可以使处理器实现“网络设备”,以执行服务插入。
以上介绍的技术可以在专用硬连线电路中、在与可编程电路相结合的软件和/或固件中、或其组合中实现。专用硬连线电路可以是例如一个或更多个专用集成电路(ASIC)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)等形式。术语“处理器”应广义地解释为包括处理单元、ASIC、逻辑单元或可编程门阵列等。
前面的具体实施方式已经经由使用框图、流程图和/或示例阐述了设备和/或过程的各种实施例。就此类框图、流程图和/或示例包含一个或更多个功能和/或操作而言,本领域技术人员将理解,此类框图、流程图或示例中的每个功能和/或操作都可以通过各种硬件、软件、固件或其任何组合单独和/或共同地实现。
本领域技术人员将认识到,本文公开的实施例的一些方面,整体或部分,可以等效地在集成电路中实现为在一台或更多台计算机上运行的一个或更多个计算机程序(例如,作为在一个或更多个计算系统上运行的一个或更多个程序)、在一个或更多个处理器上运行的一个或更多个程序(例如,在一个或更多个微处理器上运行的一个或更多个程序)、固件或者实际上是它们的任何组合,以及根据本公开,设计电路和/或为软件和/或固件编写代码将完全在本领域技术人员的技能范围内。
软件和/或为了实现本文介绍的技术,可以存储在非暂时性计算机可读存储介质上并且可以由一个或更多个通用或专用可编程微处理器执行。“计算机可读存储介质”,如本文所使用的术语,包括以机器(例如,计算机、网络设备、个人数字助理(PDA)、移动设备、制造工具、具有一个或更多个处理器集的任何设备等)可访问的形式提供(即,存储和/或传输)信息的任何机制。计算机可读存储介质可以包括可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光存储介质、闪存设备等)。
附图只是示例的说明,其中附图中所示的单元或过程并不一定是实现本公开所必需的。本领域技术人员可以理解,示例中的设备中的单元可以布置在所描述的示例中的设备中,也可以位于与示例不同的一个或更多个设备中。上述示例中的单元可以组合为一个模块,也可以进一步划分为多个子单元。
Claims (21)
1.一种网络设备在包括第一虚拟网络和第二虚拟网络的公共云环境中执行服务插入的方法,其中所述方法包括:
响应于从位于所述第一虚拟网络中的第一虚拟化计算实例接收到第一封装分组,
通过执行解封装以从所述第一封装分组中去除从所述第一虚拟化计算实例寻址到所述网络设备的第一外部报头,来生成解封装分组;
基于所述解封装分组的一个或更多个特征,识别由服务插入规则指定的服务路径,其中所述服务路径和所述网络设备两者均位于所述第二虚拟网络中;
将所述解封装分组发送至所述服务路径,以使所述服务路径根据一个或更多个服务对所述解封装分组进行处理;以及
响应于所述网络设备接收到由所述服务路径处理的所述解封装分组,
向所述解封装分组的目的地地址,发送所述解封装分组,或生成并发送包括第二外部报头和所述解封装分组的第二封装分组。
2.如权利要求1所述的方法,其中识别所述服务路径包括:
将所述解封装分组中的所述目的地地址与由所述服务插入规则指定的第一无类别域间路由(CIDR)块匹配,其中所述第一虚拟网络与所述第一CIDR块相关联,所述第二虚拟网络与第二CIDR块相关联。
3.如权利要求1所述的方法,其中将所述解封装分组发送至所述服务路径包括:
基于所述服务插入规则,将所述解封装分组发送至位于所述第二虚拟网络中的所述服务路径上的第一服务虚拟化计算实例。
4.如权利要求3所述的方法,其中将所述解封装分组发送至所述服务路径包括:
基于来自所述第一服务虚拟化计算实例的控制平面广告或数据平面探测,识别所述第一服务虚拟化计算实例被分配有活动角色,其中所述第一服务虚拟化计算实例和第二服务虚拟化计算实例被配置为高可用性(HA)对。
5.如权利要求1所述的方法,其中向所述目的地地址发送所述解封装分组包括:
向与位于外部网络中的目的地相关联的所述目的地地址发送所述解封装分组,其中所述网络设备将所述第一虚拟化计算实例连接到所述外部网络。
6.如权利要求1所述的方法,其中生成所述第二封装分组包括:
通过用第二外部报头封装所述解封装分组来生成所述第二封装分组,其中所述第二外部报头从所述网络设备寻址到位于所述第一虚拟网络中的第二虚拟化计算实例。
7.如权利要求1所述的方法,其中所述方法还包括:
在接收所述第一封装分组之前,在与子网接口相关联的路由表中配置所述服务插入规则。
8.一种非暂时性计算机可读存储介质,其包括一组指令,所述指令响应于由网络设备的处理器的执行,使所述处理器在包括第一虚拟网络和第二虚拟网络的公共云环境中执行服务插入的方法,其中所述方法包括:
响应于从位于所述第一虚拟网络中的第一虚拟化计算实例接收到第一封装分组,
通过执行解封装以从所述第一封装分组中去除从所述第一虚拟化计算实例寻址到所述网络设备的第一外部报头,来生成解封装分组;
基于所述解封装分组的一个或更多个特征,识别由服务插入规则指定的服务路径,其中所述服务路径和所述网络设备两者均位于所述第二虚拟网络中;
将所述解封装分组发送至所述服务路径,以使所述服务路径根据一个或更多个服务对所述解封装分组进行处理;以及
响应于所述网络设备接收到由所述服务路径处理的所述解封装分组,
向所述解封装分组的目的地地址,发送所述解封装分组,或生成并发送包括第二外部报头和所述解封装分组的第二封装分组。
9.如权利要求8所述的非暂时性计算机可读存储介质,其中识别所述服务路径包括:
将所述解封装分组中的所述目的地地址与由所述服务插入规则指定的第一无类别域间路由(CIDR)块匹配,其中所述第一虚拟网络与所述第一CIDR块相关联,所述第二虚拟网络与第二CIDR块相关联。
10.如权利要求8所述的非暂时性计算机可读存储介质,其中将所述解封装分组发送至所述服务路径包括:
基于所述服务插入规则,将所述解封装分组发送至位于所述第二虚拟网络中的所述服务路径上的第一服务虚拟化计算实例。
11.如权利要求10所述的非暂时性计算机可读存储介质,其中将所述解封装分组发送至所述服务路径包括:
基于来自所述第一服务虚拟化计算实例的控制平面广告或数据平面探测,识别所述第一服务虚拟化计算实例被分配有活动角色,其中所述第一服务虚拟化计算实例和第二服务虚拟化计算实例被配置为高可用性(HA)对。
12.如权利要求8所述的非暂时性计算机可读存储介质,其中向所述目的地地址发送所述解封装分组包括:
向与位于外部网络中的目的地相关联的所述目的地地址发送所述解封装分组,其中所述网络设备将所述第一虚拟化计算实例连接到所述外部网络。
13.如权利要求8所述的非暂时性计算机可读存储介质,其中生成所述第二封装分组包括:
通过用第二外部报头封装所述解封装分组来生成所述第二封装分组,其中所述第二外部报头从所述网络设备寻址到位于所述第一虚拟网络中的第二虚拟化计算实例。
14.如权利要求8所述的非暂时性计算机可读存储介质,其中所述方法还包括:
在接收所述第一封装分组之前,在与子网接口相关联的路由表中配置所述服务插入规则。
15.一种被配置为在包括第一虚拟网络和第二虚拟网络的公共云环境中执行服务插入的计算机系统,其中所述计算机系统包括:
处理器;以及
非暂时性计算机可读介质,其上存储有指令,所述指令在由所述处理器执行时,使所述处理器执行以下操作:
响应于从位于所述第一虚拟网络中的第一虚拟化计算实例接收到第一封装分组,
通过执行解封装以从所述第一封装分组中去除从所述第一虚拟化计算实例寻址到所述计算机系统的第一外部报头,来生成解封装分组;
基于所述解封装分组的一个或更多个特征,识别由服务插入规则指定的服务路径,其中所述服务路径和所述计算机系统两者均位于所述第二虚拟网络中;
将所述解封装分组发送至所述服务路径,以使所述服务路径根据一个或更多个服务对所述解封装分组进行处理;以及
响应于所述计算机系统接收到由所述服务路径处理的所述解封装分组,向所述解封装分组的目的地地址,发送所述解封装分组,或生成并发送包括第二外部报头和所述解封装分组的第二封装分组。
16.如权利要求15所述的计算机系统,其中用于识别所述服务路径的所述指令使所述处理器:
将所述解封装分组中的所述目的地地址与由所述服务插入规则指定的第一无类别域间路由(CIDR)块匹配,其中所述第一虚拟网络与所述第一CIDR块相关联,所述第二虚拟网络与第二CIDR块相关联。
17.如权利要求15所述的计算机系统,其中用于将所述解封装分组发送至所述服务路径的指令使所述处理器:
基于所述服务插入规则,将所述解封装分组发送至位于所述第二虚拟网络中的所述服务路径上的第一服务虚拟化计算实例。
18.如权利要求17所述的计算机系统,其中用于将所述解封装分组发送至所述服务路径的所述指令使所述处理器:
基于来自所述第一服务虚拟化计算实例的控制平面广告或数据平面探测,识别所述第一服务虚拟化计算实例被分配有活动角色,其中所述第一服务虚拟化计算实例和第二服务虚拟化计算实例被配置为高可用性(HA)对。
19.如权利要求15所述的计算机系统,其中用于将所述解封装分组发送至所述目的地地址的所述指令使所述处理器:
向与位于外部网络中的目的地相关联的所述目的地地址发送所述解封装分组,其中所述计算机系统将所述第一虚拟化计算实例连接到所述外部网络。
20.如权利要求15所述的计算机系统,其中用于生成所述第二封装分组的所述指令使所述处理器:
通过用第二外部报头封装所述解封装分组来生成所述第二封装分组,其中所述第二外部报头从所述计算机系统寻址到位于所述第一虚拟网络中的第二虚拟化计算实例。
21.如权利要求15所述的计算机系统,其中所述指令还使所述处理器:
在接收所述第一封装分组之前,在与子网接口相关联的路由表中配置所述服务插入规则。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/251,083 US11627080B2 (en) | 2019-01-18 | 2019-01-18 | Service insertion in public cloud environments |
US16/251,083 | 2019-01-18 | ||
PCT/US2019/036812 WO2020149875A1 (en) | 2019-01-18 | 2019-06-12 | Service insertion in public cloud environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113302884A CN113302884A (zh) | 2021-08-24 |
CN113302884B true CN113302884B (zh) | 2023-06-16 |
Family
ID=67211845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980089341.1A Active CN113302884B (zh) | 2019-01-18 | 2019-06-12 | 公共云环境中的服务插入 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11627080B2 (zh) |
EP (1) | EP3903456A1 (zh) |
CN (1) | CN113302884B (zh) |
WO (1) | WO2020149875A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10892989B2 (en) | 2019-01-18 | 2021-01-12 | Vmware, Inc. | Tunnel-based service insertion in public cloud environments |
US11296975B2 (en) | 2019-06-25 | 2022-04-05 | Vmware, Inc. | Systems and methods for implementing multi-part virtual network functions |
US11032162B2 (en) | 2019-07-18 | 2021-06-08 | Vmware, Inc. | Mothod, non-transitory computer-readable storage medium, and computer system for endpoint to perform east-west service insertion in public cloud environments |
US11778025B1 (en) * | 2020-03-25 | 2023-10-03 | Amazon Technologies, Inc. | Cross-region directory service |
US11456987B1 (en) | 2021-05-07 | 2022-09-27 | State Farm Mutual Automobile Insurance Company | Systems and methods for automatic internet protocol address management |
CN114301737B (zh) * | 2021-12-29 | 2023-10-24 | 迈普通信技术股份有限公司 | 网络配置方法、装置、网络设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102948132A (zh) * | 2010-06-22 | 2013-02-27 | 微软公司 | 分布式虚拟网络网关 |
CN104521195A (zh) * | 2012-08-15 | 2015-04-15 | 华为技术有限公司 | 在通信网络中创建软件定义有序业务模式的方法和系统 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100254385A1 (en) * | 2009-04-07 | 2010-10-07 | Cisco Technology, Inc. | Service Insertion Architecture (SIA) in a Virtual Private Network (VPN) Aware Network |
US9112710B2 (en) * | 2010-10-05 | 2015-08-18 | Cisco Technology, Inc. | System and method for providing smart grid communications and management |
WO2012090996A1 (ja) * | 2010-12-28 | 2012-07-05 | 日本電気株式会社 | 情報システム、制御装置、仮想ネットワークの提供方法およびプログラム |
CN102821028B (zh) | 2011-06-08 | 2016-03-30 | 上海贝尔股份有限公司 | 支持虚拟机在多协议标签网络中迁移的方法和相应的设备 |
US8560663B2 (en) * | 2011-09-30 | 2013-10-15 | Telefonaktiebolaget L M Ericsson (Publ) | Using MPLS for virtual private cloud network isolation in openflow-enabled cloud computing |
US9143563B2 (en) * | 2011-11-11 | 2015-09-22 | Rockwell Automation Technologies, Inc. | Integrated and scalable architecture for accessing and delivering data |
US8830834B2 (en) * | 2011-12-21 | 2014-09-09 | Cisco Technology, Inc. | Overlay-based packet steering |
US20130254762A1 (en) | 2012-03-21 | 2013-09-26 | Verizon Patent And Licensing Inc. | Providing redundant virtual machines in a cloud computing environment |
US9313048B2 (en) | 2012-04-04 | 2016-04-12 | Cisco Technology, Inc. | Location aware virtual service provisioning in a hybrid cloud environment |
US9898317B2 (en) * | 2012-06-06 | 2018-02-20 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
US9130872B2 (en) | 2013-03-15 | 2015-09-08 | Cisco Technology, Inc. | Workload based service chain insertion in a network environment |
CN103217953B (zh) | 2013-03-21 | 2016-04-06 | 中国水利水电科学研究院 | 混凝土坝温控防裂智能监控系统和方法 |
US9749231B2 (en) * | 2013-07-02 | 2017-08-29 | Arista Networks, Inc. | Method and system for overlay routing with VXLAN on bare metal servers |
JP6409772B2 (ja) * | 2013-07-11 | 2018-10-24 | 日本電気株式会社 | 通信システム、サービングゲートウェイ、その通信方法および基地局 |
US10148459B2 (en) | 2014-04-29 | 2018-12-04 | Hewlett Packard Enterprise Development Lp | Network service insertion |
US9602308B2 (en) | 2014-06-23 | 2017-03-21 | International Business Machines Corporation | Servicing packets in a virtual network and a software-defined network (SDN) |
US9787499B2 (en) | 2014-09-19 | 2017-10-10 | Amazon Technologies, Inc. | Private alias endpoints for isolated virtual networks |
US9548919B2 (en) * | 2014-10-24 | 2017-01-17 | Cisco Technology, Inc. | Transparent network service header path proxies |
US9531850B2 (en) * | 2014-12-04 | 2016-12-27 | Cisco Technology, Inc. | Inter-domain service function chaining |
US10021196B1 (en) | 2015-06-22 | 2018-07-10 | Amazon Technologies, Inc. | Private service endpoints in isolated virtual networks |
CN105591873B (zh) | 2015-10-27 | 2019-03-15 | 新华三技术有限公司 | 一种虚拟机隔离方法和装置 |
US10681131B2 (en) * | 2016-08-29 | 2020-06-09 | Vmware, Inc. | Source network address translation detection and dynamic tunnel creation |
CN107948086A (zh) | 2016-10-12 | 2018-04-20 | 北京金山云网络技术有限公司 | 一种数据包发送方法、装置及混合云网络系统 |
US10798063B2 (en) | 2016-10-21 | 2020-10-06 | Nebbiolo Technologies, Inc. | Enterprise grade security for integrating multiple domains with a public cloud |
US10148458B2 (en) * | 2016-11-11 | 2018-12-04 | Futurewei Technologies, Inc. | Method to support multi-protocol for virtualization |
US10305973B2 (en) * | 2017-01-09 | 2019-05-28 | International Business Machines Corporation | Distributed load-balancing for software defined networks |
US10652320B2 (en) * | 2017-02-21 | 2020-05-12 | Microsoft Technology Licensing, Llc | Load balancing in distributed computing systems |
US10560345B2 (en) | 2017-02-21 | 2020-02-11 | Dell Products L.P. | Consistent placement between private and public cloud deployments of application services |
US10333822B1 (en) * | 2017-05-23 | 2019-06-25 | Cisco Technology, Inc. | Techniques for implementing loose hop service function chains price information |
US10530656B2 (en) * | 2017-10-19 | 2020-01-07 | Nicira, Inc. | Traffic replication in software-defined networking (SDN) environments |
US10536563B2 (en) * | 2018-02-06 | 2020-01-14 | Nicira, Inc. | Packet handling based on virtual network configuration information in software-defined networking (SDN) environments |
US11301160B2 (en) * | 2018-06-20 | 2022-04-12 | Genesys Telecommunications Laboratories, Inc. | System and method for a replication protocol in a real-time statistical engine |
US11379497B2 (en) * | 2018-06-21 | 2022-07-05 | At&T Intellectual Property I, L.P. | Data model database |
US11095558B2 (en) * | 2018-12-28 | 2021-08-17 | Alibaba Group Holding Limited | ASIC for routing a packet |
US10892989B2 (en) | 2019-01-18 | 2021-01-12 | Vmware, Inc. | Tunnel-based service insertion in public cloud environments |
US11032162B2 (en) | 2019-07-18 | 2021-06-08 | Vmware, Inc. | Mothod, non-transitory computer-readable storage medium, and computer system for endpoint to perform east-west service insertion in public cloud environments |
-
2019
- 2019-01-18 US US16/251,083 patent/US11627080B2/en active Active
- 2019-06-12 WO PCT/US2019/036812 patent/WO2020149875A1/en unknown
- 2019-06-12 EP EP19737318.6A patent/EP3903456A1/en active Pending
- 2019-06-12 CN CN201980089341.1A patent/CN113302884B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102948132A (zh) * | 2010-06-22 | 2013-02-27 | 微软公司 | 分布式虚拟网络网关 |
CN104521195A (zh) * | 2012-08-15 | 2015-04-15 | 华为技术有限公司 | 在通信网络中创建软件定义有序业务模式的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2020149875A1 (en) | 2020-07-23 |
US20200236047A1 (en) | 2020-07-23 |
CN113302884A (zh) | 2021-08-24 |
US11627080B2 (en) | 2023-04-11 |
EP3903456A1 (en) | 2021-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11570104B2 (en) | Tunnel-based service insertion in public cloud environments | |
CN112470436B (zh) | 用于提供多云连通性的系统、方法、以及计算机可读介质 | |
CN113302884B (zh) | 公共云环境中的服务插入 | |
US10645201B2 (en) | Packet handling during service virtualized computing instance migration | |
US10171362B1 (en) | System and method for minimizing disruption from failed service nodes | |
US11522763B2 (en) | Agent-based network scanning in software-defined networking (SDN) environments | |
US11595303B2 (en) | Packet handling in software-defined net working (SDN) environments | |
US11743349B2 (en) | Service request handling with protocol translation | |
US10511514B1 (en) | Node-specific probes in a native load balancer | |
US10091112B1 (en) | Highly-scalable virtual IP addresses in a load balancing switch | |
US11470071B2 (en) | Authentication for logical overlay network traffic | |
CN111865806B (zh) | 基于前缀的胖流 | |
US10171361B1 (en) | Service-specific probes in a native load balancer | |
US11032162B2 (en) | Mothod, non-transitory computer-readable storage medium, and computer system for endpoint to perform east-west service insertion in public cloud environments | |
US10110668B1 (en) | System and method for monitoring service nodes | |
US11516125B2 (en) | Handling packets travelling towards logical service routers (SRs) for active-active stateful service insertion | |
US11190508B2 (en) | Location-aware service request handling | |
US11533386B2 (en) | Virtual tunnel endpoint (VTEP) learning based on transport protocol information | |
US20240073140A1 (en) | Facilitating elasticity of a network device | |
US20240031290A1 (en) | Centralized service insertion in an active-active logical service router (sr) cluster | |
US20240020147A1 (en) | Load balancing with service-tier awareness | |
CN118176708A (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 | ||
CP03 | Change of name, title or address |
Address after: California, USA Patentee after: Weirui LLC Country or region after: U.S.A. Address before: California, USA Patentee before: VMWARE, Inc. Country or region before: U.S.A. |
|
CP03 | Change of name, title or address |