Implementing slice-based operations in data plane circuits

JP7639100B2Active Publication Date: 2025-03-04VMWARE INC
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
JP2023193038
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-09-12
Filing Date
2023-11-13
Publication Date
2025-03-04
Estimated Expiration
2040-07-26

Smart Images

  • Figure 0007639100000001
    Figure 0007639100000001
  • Figure 0007639100000002
    Figure 0007639100000002
  • Figure 0007639100000003
    Figure 0007639100000003
Patent Text Reader

Abstract

To perform network slice-based operation on a data message at a hardware forwarding element (HFE) in a network.SOLUTION: When a data message flow 125 or 130 is received, a method has an HFE 105 identify a network slice associated with the received data message flow. This network slice is associated with a set of operation to be performed on the data message by several network elements, including one or more machines executing on one or more computers in the network. Once the network slice is identified, the method has the HFE process the data message flow on the basis of a rule that applies to data messages associated with the identified slice.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] [Background technology]

[0002]

[0001] In recent years, software-defined data centers (SDDCs) and software tools for defining and controlling computer and network services in SDDCs have become popular. Some of these tools define logical network resources (e.g., logical switches, logical routers, logical middlebox elements, etc.) that span multiple physical structures (e.g., multiple host computers). However, many of these tools often ignore the majority of the SDDC, which are the underlay network elements of these data centers. Examples of these network elements include hardware switches (e.g., top-of-rack switches, spine switches, etc.), hardware routers, hardware middlebox appliances, etc. Summary of the Invention

[0003] Some embodiments of the present invention provide a novel method for performing a network slice-based operation on a data message at a hardware forwarding element (HFE) in a network. For a received data message flow, the method causes the HFE to identify a network slice associated with the received data message flow. The network slice in some embodiments is associated with a set of operations to be performed on the data message by a number of network elements, including one or more machines running on one or more computers in the network. In some embodiments, the network is a telecommunications network, and the operation is part of a service operation chain that the network performs on a data message from its device (e.g., a mobile device in the network). Once the network slice is identified, the method processes the data message flow at the HFE based on rules that are applied to the data message associated with the identified slice.

[0004] In some embodiments, the HFE includes a data plane (DP) circuit (e.g., an application specific integrated circuit, ASIC) that receives data messages and forwards the data messages within the network. In some of these embodiments, the DP circuit identifies a network slice for a flow by identifying a slice identifier associated with the network slice. The DP circuit of these embodiments then processes the data message flow by (1) identifying a rule stored in the DP circuit using the slice identifier and (2) performing an operation on the data message associated with the identified rule. The HFE in some embodiments also includes a control plane circuit (e.g., a microprocessor and associated programs) for providing configuration data to the DP circuit to configure the rules for processing the data messages.

[0005]

[0004] In some embodiments, the DP circuit identifies a rule associated with the received data message flow by matching a slice identifier that the DP circuit identifies for the data message flow with a slice identifier that is part of the rule identifier of the rule. The identified rule in some embodiments is a forwarding rule that specifies a forwarding action for forwarding the data message flow to a particular port of the HFE. In some embodiments, the slice-based forwarding rule is a next-hop forwarding rule that identifies next hops of different paths to the same destination in the network. In other embodiments, the slice-based forwarding rule is a next-hop forwarding rule that identifies different next hops of different paths to different destinations in the network. For example, in some embodiments, different slice-based forwarding rules select different ports connected to different data centers to process data message flows associated with different slice identifiers. In some embodiments, the slice-based forwarding rule can identify a logical forwarding action of a logical forwarding element defined to span multiple physical forwarding elements.

[0006]

[0005] In some embodiments, the identified rule is a middlebox service rule associated with a middlebox service operation to perform on the data message flow. For example, in some embodiments, the identified rule is a firewall rule that determines whether to drop or allow the data messages of a flow based on the flow's associated slice identifier. In other embodiments, the identified rule is a load balancing rule that specifies a load balancing operation to perform on the data message flow based on its associated slice identifier. This load balancing operation in some embodiments distributes the data message load among several different destinations or different paths in the network based on the slice identifiers associated with those data message flows.

[0007]

[0006] As discussed above, some embodiments identify, for a network slice, a set of operations to perform on data message flows associated with the network slice. These operations in some embodiments include operations performed by devices in the network. In some embodiments, these devices include machines executing on a host computer to perform at least one or more operations associated with the network slice. In some embodiments, these machines include virtual machines (VMs) and / or containers. Also, in some embodiments, the operations performed by these machines are virtual network functions (VNFs) realized by the telecommunications network. These VNFs are part of a service chain performed by the infrastructure of the telecommunications network on data message flows traversing the network. In some embodiments, different network slices correspond to different types of traffic traversing the telecommunications network.

[0008]

[0007] The HFE uses different techniques in different embodiments to identify a network slice for a received data message flow. In some embodiments, the HFE forwards the data messages of the flow to an external device separate from the HFE. This external device analyzes the received data messages, identifies a slice identifier for the associated flow, and configures the HFE (e.g., the HFE DP circuit via an API (Application Programming Interface) call to the HFE's CP circuit) with a match record that is used to match subsequent data messages of the flow to the slice ID of the flow. In some embodiments, this external device forwards the received data messages to their next hop destination before the HFE is configured with the match record. The external device is a standalone device in some embodiments, and in other embodiments, is a host computer running a machine to analyze data messages received from the HFE to ascertain the associated slice identifier.

[0009] In other embodiments, the DP circuit of the HFE forwards the received data message flow to the CP circuit of the HFE, which then identifies a slice identifier in the received data message and returns the slice identifier along with the data message to the DP circuit for processing. In some embodiments, the slice identifier is provided as part of configuration data that configures a match record in the HFE (e.g., via its CP circuit to the HFE DP circuit) that the CP circuit uses to match subsequent data messages of the flow with the slice ID of the flow.

[0010] In some embodiments, the CP circuit executes a resource sharing program on which a machine executing the program identifies a slice identifier of a received data message. In some embodiments, the program is a virtualization program (e.g., a hypervisor) or a Linux operating system, and the machine is a virtual machine or container. In some embodiments, the resource sharing program of the CP circuit is a hypervisor that includes a context engine that associates data message attributes with slice identifiers. The context engine uses a set of attributes of a received data message flow to identify a slice identifier for the received flow.

[0011] In some embodiments, a context engine executing on the CP circuit receives records matching data message attributes with slice identifiers from a context engine of a hypervisor executing on a host computer. In other embodiments, the context engine of the CP circuit receives records matching slice identifiers and data message attributes from a set of one or more servers acting as a set of network managers or controllers. In yet other embodiments, the context engine receives records associating a set of attributes of a data message flow (e.g., its 5 or 7 tuple identifier) ​​with a slice identifier from a virtual machine (VM) executing on top of the hypervisor.

[0012] In some embodiments, the hypervisor running on the CP circuitry of the HFE is the same as or similar to the hypervisor running on the host computer in the network. These similar or identical hypervisors provide a common platform on which the manager and / or controller in the network can manage both the HFE, the host computer, and the software forwarding elements running on the host computer. Specifically, in these embodiments, the manager and / or controller manages and / or controls the CP circuitry of the HFE just as they manage and / or control the host computers and the software forwarding elements running on these host computers. In some embodiments, the hypervisor running on the CP circuitry of the HFE uses the same NIC (Network Interface Controller) data model abstraction for the data plane circuitry of the HFE as the host computer hypervisor. For the hypervisor running on the CP circuitry of the HFE, these embodiments use a conversion plug-in to convert the hypervisor communication with the data plane circuitry from a NIC data model format to a DP circuit model format.

[0013]

[0012] The above summary is intended to serve as a brief introduction of some embodiments of the present invention. It is not meant to be an introduction or overview of all inventive subject matter disclosed herein. The following detailed description and the drawings referenced in the detailed description further describe the embodiments described in the summary as well as other embodiments. Therefore, a complete review of the summary, detailed description, drawings, and claims is necessary to understand all embodiments described by this document. Furthermore, the claimed subject matter should not be limited by the illustrative details in the summary, detailed description, and drawings. [Brief description of the drawings]

[0014]

[0013] The novel features of the invention are set forth in the appended claims, however, for purposes of illustration, certain embodiments of the invention are set forth in the following drawings. [Figure 1]

[0014] Figure 1 shows an example of a Software-Defined Data Center (SDDC) that includes several network elements that perform different operation chains on different data message flows associated with different slice identifiers corresponding to different network slices. [Diagram 2]

[0015] FIG. 2 illustrates an example of a hardware forwarding element (HFE) of some embodiments. [Diagram 3]

[0016] FIG. 3 shows an example of a data plane (DP) circuit that forwards data messages to the same destination along different paths based on slice-based rules. [Figure 4]

[0017] FIG. 4 illustrates two HFEs according to some embodiments that define the start of different segments of a data center network. [Diagram 5]

[0018] FIG. 5 shows an example of a DP circuit that forwards data messages along different paths to different destinations based on slice-based rules. [Figure 6]

[0019] Figure 6 shows an example where a DP circuit routes two different data message flows associated with two different slice IDs to two different sets of machines in two different data centers. [Figure 7]

[0020] FIG. 7 illustrates a load balancer having a DP circuit that performs load balancing operations to distribute different data message flows to different destination nodes in different clusters based on slice IDs associated with the data message flows. [Figure 8]

[0021] FIG. 8 illustrates a firewall appliance having a DP circuit that performs firewall operations to determine whether to allow, drop, or redirect different data message flows based on the slice ID associated with the data message flows. [Figure 9]

[0022] FIG. 9 illustrates a technique for an HFE to offload slice identifiers for an initial set of data messages in a new flow to an external device. [Figure 10]

[0023] FIG. 10 presents a process that conceptually illustrates the operation of the DP circuit of FIG. 9 in some embodiments. [Figure 11]

[0024] Figure 11 illustrates an alternative approach for the HFE to identify a slice ID associated with a newly received data message flow. [Figure 12]

[0025] FIG. 12 illustrates an example of a hypervisor and context engine running on a control plane (CP) circuit to facilitate slice identification. [Figure 13]

[0026] FIG. 13 illustrates that in some embodiments, the CP circuitry of the HFE executes one or more machines that perform one or more service operations of a service chain for data messages processed by the DP circuitry of the HFE. [Figure 14]

[0027] FIG. 14 shows a CP circuit and a host computer running a similar hypervisor. [Figure 15]

[0028] FIG. 15 illustrates that in some embodiments, a hypervisor running on the CP circuitry of an HFE uses the same or similar data model abstractions as a hypervisor running on a host computer. [Figure 16]

[0029] FIG. 16 shows an example of using a slice-based HFE to perform software-defined wide access network (SD-WAN) operations. [Figure 17]

[0029] Figure 17 shows an example of using a slice-based HFE to perform SD-WAN (Software-Defined Wide Access Network) operations. [Figure 18]

[0030] FIG. 18 shows several example HFEs that implement ingress flow control for a host computer. [Figure 19]

[0031] FIG. 19 illustrates the process used by a server set to configure the HFE to implement ingress flow control for the host computer of FIG. [Figure 20]

[0032] FIG. 20 conceptually illustrates a computer system upon which some embodiments of the present invention may be implemented. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0015]

[0034] In the following detailed description of the invention, numerous details, examples, and embodiments of the invention are described and explained. However, it will be apparent and clear to one skilled in the art that the invention is not limited to the described embodiments, and that the invention may be practiced without some of the specific details and examples described.

[0016]

[0035] Some embodiments of the present invention provide a novel method for performing a network slice-based action based on a data message flow at a hardware forwarding element (HFE) in a network. For a data message flow received by the HFE, the method includes the HFE (1) identifying a network slice associated with the received data message flow, and then (2) performing an action on the received data message flow based on the identified network slice.

[0017]

[0036] In some embodiments, the identified network slice is associated with a set of operations that need to be performed on the data message flows received by the set of network elements. In some embodiments, the network slice refers to a set of operations that perform on the data messages associated with the network slice, and in other embodiments, the network slice refers to the network elements that perform the set of operations on the data messages associated with the network slice. In addition to the HFE, the set of network elements typically includes other elements that perform one or more operations on the data messages based on the association of the data message flows with the network slices. The set of network elements, in some embodiments, includes one or more machines that execute on one or more computers in the network.

[0018]

[0037] The HFE in some embodiments identifies a network slice associated with the received data message flow by identifying a slice identifier associated with the received data message flow. As described further below, the HFE identifies a slice identifier (ID) of the received data message flow differently in different embodiments, for example, by using a program executed by the HFE or by using other devices and / or programs.

[0019]

[0038] After obtaining the slice ID of a received data message, the HFE in some embodiments processes the data message flow by (1) identifying one of its rules using the slice identifier and (2) performing an action on the data message flow associated with the identified rule. In some embodiments, the HFE stores several rules that have a slice ID as part of their rule identifier. In these embodiments, the HFE matches the data message of a flow to a rule by matching the message's associated slice identifier with the slice identifier in the rule's identifier.

[0020]

[0039] In some embodiments, one or more service chains can be defined for each network slice, with each service chain identifying one or more ordered sequences of operations (e.g., compute operations, forwarding operations, and / or service operations, etc.) to perform on data message flows associated with the chain's network slice. In some embodiments, a network slice is a group of resources (e.g., compute resources, forwarding resources, service resources, etc.) in a network (e.g., a network of one or more data centers). In some embodiments, a group of one or more data message flows can be associated with a network slice such that the data message flows are processed by the group of resources of the network slice.

[0021]

[0040] For example, in some embodiments, the network is a telecommunications network (e.g., a 5G telecommunications network) in which the network may define multiple network slices. Examples of such slices for a 5G telecommunications network include a mobile broadband slice for processing broadband data, an Internet of Things (IoT) slice for processing IoT data, a telemetry slice for processing telemetry data, a voice over IP (VOIP) slice for Voice over IP data, a video conferencing slice for processing video conferencing data, a device navigation slice for processing navigation data, etc.

[0022]

[0041] As used herein, a data message refers to a collection of bits in a particular format that is transmitted over a network. Those skilled in the art will recognize that the term "data message" may be used herein to refer to various formatted collections of bits that may be transmitted over a network, such as an Ethernet frame, an IP packet, a TCP segment, a UDP datagram, etc. Also, as used herein, references to the L2, L3, L4, and L7 layers (or layer 2, layer 3, layer 4, and layer 7) are references to the second data link layer, the third network layer, the fourth transport layer, and the seventh application layer of the Open System Interconnection (OSI) layer model.

[0023]

[0042] 1 illustrates an example of a Software-Defined Data Center (SDDC) 100 that includes several network elements that perform different operation chains on different data message flows associated with different slice identifiers that correspond to different network slices. The network elements in this example include an HFE 105 and two sets of machines 110 and 112 running on two sets of host computers 115 and 117. The SDDC 100 in this example also includes a set of one or more servers 120 for managing and controlling the HFE 105 and the host computers 115 and 117.

[0024]

[0043] In this example, the HFE 105 receives two different data message flows 125 and 130 associated with two different network slices. The data message flows in this example do not include a slice ID (e.g., an encapsulation header) that identifies the corresponding network slice. Thus, the HFE 105 identifies the slice ID for each data message flow 125 or 130. Different techniques that the HFE 105 uses in different embodiments to identify the slice identifiers of the data message flows are described below.

[0025]

[0044] After identifying a slice ID for a particular data message flow, the HFE 105 (1) uses the identified slice ID to select a rule for forwarding the data message flow, and (2) forwards the data messages of the flow to a set of machines 110 or 112 based on the selected rule. For example, in some embodiments, the HFE 105 stores a number of next-hop forwarding rules. Each of these rules specifies a next hop for data messages of a flow that matches the rule. Each rule also has a rule identifier that includes a slice identifier. In some embodiments, the rule identifier of a forwarding rule can also include other data message attributes (e.g., other header fields).

[0026]

[0045] The HFE 105 matches the data message to a forwarding rule by matching the identified slice ID of the flow to the rule identifier of one or more forwarding rules. This matching in some embodiments also uses one or more header values ​​of the data message's flow (e.g., one or more attributes in the flow's 5 or 7 tuple identifier). After matching the data message to a forwarding rule, the HFE 105 then forwards the data message to one of the two sets of machines 110 or 112 using the next hop destination specified by the matching forwarding rule. In this example, data messages that are part of flow 125 are sent to machine set 110 and data messages that are part of flow 130 are sent to machine set 112.

[0027]

[0046] In the example of FIG. 1, two sets of machines 110 or 112 execute two different chains of operations associated with two different network slices. As shown in the figure, in each chain, some machines can execute on the same host computer and other machines can execute on other host computers. Also, in this example, different chains have different numbers of operations. However, one skilled in the art will understand that in some embodiments, different alternative chains can have the same number of operations or even the same operations executed by different sets of computational resources (e.g., computers, virtual machines, containers, etc.) and network resources (e.g., switches, routers, middlebox equipment, etc.).

[0028]

[0047] The machines in some embodiments include virtual machines (VMs) and / or containers. Also, in some embodiments, the operations performed by the machines are virtual network functions (VNFs) that are implemented by a telecommunications network. A VNF is part of a service chain that is performed by the infrastructure of a telecommunications network on data messages traversing the network. In some embodiments, different network slices correspond to different types of traffic traversing the telecommunications network.

[0029]

[0048] Server set 120 deploys and configures each of machine sets 110 or 112 to process data messages for a particular network slice associated with a particular slice ID. For example, in one embodiment, machine set 110 is deployed and configured to process data messages associated with slice ID A, while machine set 112 is deployed and configured to process data messages associated with slice ID B.

[0030]

[0049] Also, in some embodiments, one or more machines in sets 110 and 112 perform their operations by (1) identifying a slice ID associated with a data message flow and (2) selecting an operation to perform on the data messages of the flow based on the identified slice ID. However, in other embodiments, machines 110 and 112 do not select an operation to perform on the data messages they process based on the slice ID of their message flows. Instead, in these embodiments, these machines are simply deployed and configured to process data messages associated with a particular slice ID.

[0031]

[0050] The HFE 105 is a top-of-rack (TOR) switch in some embodiments. In other embodiments, it is a gateway, e.g., a gateway at the north-south boundary of the network. In yet other embodiments, the HFE 105 is a middlebox device. Also, after identifying a slice ID for a data message flow, in some embodiments, the HFE 105 encapsulates the data messages of this flow with a header and inserts the slice ID into the encapsulation header of each data message so that subsequent network elements can use the slice ID in performing their operations.

[0032]

[0051] 2 illustrates an example of an HFE 105 of some embodiments. As illustrated, the HFE 105 includes a data plane (DP) circuit 205, a control plane (CP) circuit 210, a set of forwarding element (FE) ports 215, and a set of DP ports 220. The HFE 105 may be an edge forwarding element that connects to source and / or destination computers in the network, or a non-edge forwarding element that connects to other forwarding elements in the network. Through a wired or wireless connection, the HFE 105 receives data messages for processing from its FE ports 215 and transmits processed data messages from its FE ports 215. In this example, the HFE 105 is shown as receiving a data message from a source machine 222 and forwarding the data message to a first hop 224 along a first service chain.

[0033]

[0052] The DP circuit 205 processes data messages received by the HFE 105. The DP ports 220 receive data messages from and send data messages to the FE ports 215. The DP circuit 205 is an application specific integrated circuit (ASIC) that has a number of ingress message processing pipelines 225, a number of egress message processing pipelines 230, and a crossbar switch 235 that connects the ingress pipelines 225 to the egress pipelines 230. Each ingress or egress pipeline contains a number of message processing stages 240, and each stage can perform one or more operations on the data message.

[0034]

[0053] In some embodiments, the message processing stage 240 attempts to match a set of associated attributes (e.g., header values, slice IDs, etc.) of a data message against one or more rules that it stores. When a matching rule is found, the message processing stage 240 performs an operation (i.e., an action) associated with the matching rule. In some embodiments, the CP circuit 210 provides configuration data to the DP circuit 205 that configures the rules that the message processing stage 240 uses in processing data messages. The CP circuit 210 in some embodiments includes a memory that stores a control plane program and a processor (e.g., an x86 microprocessor) that executes the control plane program.

[0035]

[0054] To process a data message flow based on its associated network slice, the DP circuit 205 first identifies a slice ID associated with the flow that specifies that network slice, using one of several techniques described below. After identifying the slice ID of the flow, the DP circuit 205 of these embodiments processes the data message flow by (1) using the slice identifier to identify a rule stored in the DP circuit 205 and (2) performing an action on the data messages of the flow associated with the identified rule.

[0036]

[0055] As shown in FIG. 2, the message processing stage 240a in the ingress pipeline 225 includes a match action table 250 that stores a number of records 252, each having a match tuple 254 and an action tuple 256. In some embodiments, the records 252 are conceptual records where the match tuple and the action tuple are stored in different tables, but are related via an addressing scheme (e.g., an action tuple is stored in its action table in a position corresponding to the position in the match table where the corresponding match tuple is stored). Each record's match tuple (also called a rule) specifies a set of data message attributes (e.g., any of the seven data message tuple identifiers: source and destination IP, source and destination port, protocol, source and destination MAC address), while the record's action tuple specifies the action to perform on data messages that match the record's match tuple.

[0037]

[0056] The message processing stage 240 compares a set of attributes of a received data message with the match tuples of the records to determine whether the data message matches the record, and if so, performs the action specified by the action tuple of the record. The match tuple of each rule uniquely identifies the rule, and is therefore effectively an identifier for the rule. As shown, the match tuple 254 of a record 252 in the match action table 250 includes a slice ID. Additionally, the match tuple of the record 252 may include other attributes of the data message (e.g., source and destination IP, source and destination port, and any of its 5 tuple identifiers for the protocol).

[0038]

[0057] To forward a data message flow from a source machine 222 to a first hop along its service chain based on a slice ID associated with the flow, the message processing stage 240a in some embodiments compares the slice ID associated with the received data message of the flow with one or more match tuples 254 of one or more records 252 in a match-action table 250 to identify a record having a matching slice ID.

[0039]

[0058] After finding a matching record, the message processing stage 240a in some embodiments obtains an egress port ID from the action tuple of the matching record. This egress port ID identifies the DP egress port at which the received data message should exit the DP circuit. In this example, the identified DP egress port is associated with the first hop of the service chain of the network slice identified by the slice ID associated with the flow of the data message.

[0040]

[0059] The egress port identifier is then used by other message processing stages 240 and / or crossbar switch 235 to route the data message to an egress pipeline associated with the identified egress port. The egress pipeline then provides the data message to the identified egress port, which then provides the data message to its associated FE egress port which forwards the data message to the first-hop service node 224.

[0041]

[0060] In some embodiments, the slice-based forwarding rules of the DP circuitry 205 are next-hop forwarding rules that identify next hops of different paths to the same destination in the network. An example of this is shown in Figure 3. The figure shows that the DP circuitry 205 of the HFE 105 forwards two different data message flows 125 and 130 associated with two different slice IDs A and B to two different sets of machines 110 and 112 to perform two different sets of operations on the respective data message flows.

[0042]

[0061] After being processed by the respective machine set 110 or 112, each data message flow 125 or 130 is forwarded by a software forwarding element in the last host computer of the last machine in the machine set to the same destination node 305. In some embodiments, the destination node 305 is a different machine. In other embodiments, the destination node 305 is a middlebox appliance or a cluster of middlebox appliances (associated with the same virtual network address, such as the same virtual IP address) that perform the same middlebox service operations on both data message flows.

[0043]

[0062] In yet another embodiment, the destination node 305 is another hardware forwarding element associated with another segment of the data center network. In some of these embodiments, as shown in FIG 4, the HFEs 105 and 305 define the start of different segments of the data center network, in this example the three HFEs 105, 305 and 405 define two segments 402 and 404 of the network, the HFE 105 forwards data message flows along two paths 410 and 415 based on slice IDs associated with those flows, while the HFE 305 forwards data message flows along three paths 420, 425 and 430 based on slice IDs.

[0044]

[0063] In some embodiments, the slice-based forwarding rules of the DP circuit 205 are next-hop forwarding rules that identify the next hop of different paths to different destinations in the network. An example of this is shown in Figure 5. The figure shows the DP circuit 205 of the HFE 105 forwarding two different data message flows 125 and 130 associated with two different slice IDs A and B along two different paths 506 and 508 that terminate at two different destination end nodes (e.g., destination compute nodes) 512 and 514 in a data center.

[0045]

[0064] 6 illustrates an example in which the DP circuitry 205 of the HFE 105 forwards two different data message flows 125 and 130 associated with two different slice IDs A and B to two different sets of machines 110 and 112 in two different data centers 605 and 610. In some embodiments, data message flows for different types of slices are sent to different data centers for processing. For example, in some embodiments, the data message flow for mobile telemetry data (e.g., telemetry slices) is sent to one data center, the data message flow for device navigation data (i.e., navigation slices) is sent to another data center, and VOIP data (e.g., audio broadband slices) is sent to yet another data center.

[0046]

[0065] In some embodiments, the HFE that performs network slice-based operations based on data message flows is a middlebox appliance that performs these operations as part of the middlebox services it provides. For example, Figure 7 illustrates a load balancer 700 having a DP circuit 720 that performs load balancing operations to distribute different data message flows to different destination nodes in different clusters based on the slice ID associated with the data message flows. The figure illustrates two different clusters 715 and 717 of destination nodes 710 and 712, one with four destination nodes and the other with six destination nodes.

[0047]

[0066] In some embodiments, the load balancer 700 distributes data message load among several different destinations in the network based on load balancing criteria selected based on slice identifiers associated with these data message flows, as shown by load balancing rules 755. Specifically, as shown, the DP circuitry 720 of the load balancer 700 in some embodiments has a match action table 750 that includes several rules 755, each of which has a match tuple 760 that includes a slice ID and an action tuple 765 that includes a set of load balancing criteria (e.g., a set of weight values).

[0048]

[0067] After identifying the slice ID associated with the data message flow, the DP circuit 720 matches the slice ID of the flow against a match tuple 760 of one of the rules 755, and then uses the action tuple 765 of the matching rule to select a set of load balancing criteria for distributing the data message flow associated with the matching slice ID among several destination nodes 710 / 712 in the cluster 715 / 717. Instead of selecting among different destination nodes, the load balancing operation in other embodiments may, for example, distribute the data message load among several different paths to the same destination in the network based on load balancing criteria that are again selected based on the slice identifiers associated with these data message flows.

[0049]

[0068] 8 illustrates a firewall appliance 800 having a DP circuit 820 that performs firewall actions to determine whether to allow, drop, or redirect different data message flows based on a slice ID associated with the data message flows. Specifically, as illustrated, the DP circuit 820 of the firewall appliance 800 in some embodiments has a match action table 850 that includes several rules 855, each of which has (1) a match tuple 860 that includes a slice ID and (2) an action tuple 765 that specifies a firewall action, such as allow, drop, or redirect.

[0050]

[0069] After identifying the slice ID associated with the data message flow, the DP circuit 820 (1) matches the slice ID of the data message being processed against a match tuple 860 of one of the rules 855, (2) uses the action tuple 865 of the matching rule to identify a firewall action to perform on the data message, and (3) performs the identified firewall action on the data message. Other embodiments perform other slice-based middlebox service operations (such as destination network address translation).

[0051]

[0070] In middlebox embodiments (such as those described above with reference to Figures 7 and 8) or forwarding element embodiments (such as those described above with reference to Figures 1-6), the HFE uses one of several techniques to first identify a slice identifier associated with a data message flow and then uses the slice identifier to perform its middlebox or forwarding operations on the flow. Several such techniques are now described with reference to Figures 9-12.

[0052]

[0071] 9 illustrates a technique in which an HFE 900 offloads slice identification of an initial set 902 of data messages in a new flow 980 to an external device 905, and after identifying the slice IDs of the new data message flow, reconfigures the DP circuitry 920 of the HFE 900 to identify the slice IDs of a later set 904 of data messages received in this flow. Under this approach, the HFE 900 forwards the initial set 902 of one or more data messages received in the new data message flow to an external device 905 (which is separate from the HFE), which can analyze these data messages and identify the slice IDs associated with the data message flow.

[0053]

[0072] The device 905 is a stand-alone device in some embodiments. However, in the embodiment shown in FIG. 9, the device is a slice identification VM 950 running on a host computer that analyzes data messages received from the HFE 900 to ascertain an associated slice identifier. U.S. Patent Application No. 16 / 443,812 discloses a process that the device 905 uses in some embodiments to identify a slice ID associated with a data message flow. U.S. Patent Application No. 16 / 443,812 is incorporated herein by reference.

[0054]

[0073] After identifying the slice IDs of the initial set of data messages in the new flow, the device 905 identifies a forwarding rule based on the slice ID and then forwards these initial data messages to the next hop 960 that it identifies based on the forwarding rule. In some embodiments, the device 905 has the same slice-based forwarding rules as the HFE 900, which allows the device 905 to forward the initial data messages that the HFE 900 receives in the same manner as it forwards subsequent data messages in the same flow, once reconfigured. When the external device is a slice-identifying VM 950, the VM identifies the slice IDs of the new flow and the software forwarding element 952 of its hypervisor 954 processes the forwarding rules to perform a forwarding operation to forward the initial set of data messages to the next hop 960.

[0055]

[0074] Also, after identifying the slice IDs of the initial set of data messages in the new flow, the device 905 includes the slice ID and an identifier of the flow (e.g., a 5 or 7 tuple identifier) ​​in an API call to the HFE's CP circuit 925. This API call instructs the CP circuit 925 to create a match action record in the DP circuit 920 that has the flow ID as part of its match tuple and the slice ID as part of its action tuple. As shown, the CP circuit 925 then provides configuration data to the DP circuit 920 to configure it to store a record that associates the received slice ID with a set of attributes of the data message.

[0056]

[0075] Once the DP circuit 920 has stored this record, it can use this record to process subsequent data messages in the flow 980 and generate slice IDs for these subsequent data messages. This slice ID then enables the DP circuit 920 to match the subsequent data messages with a match-action record that has the slice ID and flow ID as part of its match tuple and has the DP egress port ID as part of its action tuple. Through this match-action record, the DP circuit 920 can identify the DP egress port ID for the subsequent data message, which is then sent from its associated FE egress port to the next hop 960 via the identified DP egress port.

[0057]

[0076] In the example shown in FIG. 9 , the HFE 900, DP circuit 920, and external device 905 perform only next-hop forwarding operations. In other embodiments, these components perform other operations. For example, in some embodiments, the DP circuit 920 performs slice-based middlebox operations. In some of these embodiments, the external device 905 also processes the same slice-based middlebox rules (e.g., firewall rules, etc.) as the DP circuit 920 such that the external device 905 can perform the same middlebox service operations on an initial set of data messages as the DP circuit 920 performs on subsequent sets of data messages in a flow.

[0058]

[0077] 10 illustrates a process 1000 that conceptually illustrates the operation of the DP circuitry 920 of the HFE 900 in some embodiments. As shown, the process 1000 begins (at 1005) when the DP circuitry 920 receives a data message to forward. At 1010, the process 1000 determines whether the flow identifier of the received data message (e.g., its 5 or 7 tuple identifier) ​​matches a slice ID that identifies a match record. If not, the data message is part of an initial set 902 of data messages that the DP circuitry 920 must forward to a slice ID-specified device 905.

[0059]

[0078] Thus, at 1015, the process identifies a DP output port associated with the slice ID specific device 905. Then, at 1020, the crossbar switch 235 of the DP circuitry 920 forwards the data message to an egress pipeline associated with the egress port identified at 1015. This egress pipeline then provides (at 1025) the data message to the identified DP egress port, which then transmits the message to the associated FE egress port for transmission along the network.

[0060]

[0079] A predetermined period of time after transmitting (at 1025) the data message (and possibly other data messages in the same flow) to the slice ID specific device 905, the device 905 instructs the CP circuit 925 to configure the DP circuit 920 with a match record that associates the tuples of the data message with the slice ID. In response, the CP circuit 925 configures the DP circuit 920 with this record, as conceptually illustrated by operation 1030 of FIG. 10. To indicate the partial dependency of this operation on the external device 905 and the CP circuit 925, and its occurrence at instances in time that depend on the device 905 and the circuit 925, FIG. 10 illustrates the flow from operation 1025 to operation 1030 using dashed arrows. At 1030, the DP circuit 920 stores a record that associates the flow identifier of the data message with the slice ID provided by the device 905 and the CP circuit 925.

[0061]

[0080] The DP circuit 920 matches (1010) the flow identifier of the received data message with the slice ID that identifies the match record, and the DP circuit 920 extracts (1035) the slice ID from the matching record. The extracted slice ID is then used (at 1040) to match the received data message with a next-hop forwarding rule stored in a match-action table that associates slice IDs with next-hop egress ports.

[0062]

[0081] After identifying (at 1040) the next hop record and egress port from this record, the crossbar switch 235 of the DP circuit 920 forwards (at 1045) the data message to the egress pipeline associated with the egress port identified at 1040. This egress pipeline then provides (at 1050) the data message to the identified DP egress port, which then transmits the message to the associated FE egress port for transmission along the network. After 1050, the process 1000 ends.

[0063]

[0082] In some embodiments, when an HFE and its CP / DP circuitry are used in another type of forwarding element or middlebox appliance, a process similar to process 1000 is used. Specifically, in these embodiments, the DP circuitry offloads slice identification and processing of an initial set of data messages in a new flow to an external device (e.g., a VM running on a host computer). After identifying the slice IDs of the new data message flow, the external device in these embodiments reconfigures the DP circuitry (through its associated CP circuitry of its HFE) so that the DP circuitry can identify the slice IDs of a later set of data messages it receives in this flow, such that the DP circuitry can perform slice ID-based forwarding or middlebox service operations on these later sets of data messages.

[0064]

[0083] FIG. 11 illustrates another approach for an HFE to identify slice IDs associated with a newly received data message flow. In this approach, the DP circuitry 1120 of the HFE forwards to the CP circuitry 1125 of the HFE for analysis of an initial set of one or more data messages of the new flow to identify slice IDs associated with the new data message flow. In some embodiments, the CP circuitry executes a machine (e.g., a container or VM) or other program that uses the techniques described in the above-incorporated U.S. patent application Ser. No. 16 / 443,812 to identify the slice IDs of a particular data message flow. After identifying the slice IDs of the new data message flow, the CP circuitry returns this slice identifier to the DP circuitry along with the data messages in the initial set for processing.

[0065]

[0084] In another embodiment, instead of providing the parsed data message to the DP circuit for forwarding, the CP circuit may forward the data message received from the DP circuit to a next hop destination (e.g., a forwarding element or one or more network interfaces of the CP circuit) until the DP circuit is configured to perform slice ID identification by the CP circuit. controller In some embodiments, the CP and DP circuits perform L2 and / or L3 forwarding operations.

[0066]

[0085] In some embodiments, the CP circuitry 1125 includes a processor 1150 (e.g., a multi-core processor) for executing programs and a memory 1175 for storing programs. The two programs in the memory are a resource sharing program and a slice identification machine that runs on top of the resource sharing program to identify slice identifiers for new data message flows. For example, as shown, the program in some embodiments is a virtualization program 1110 (e.g., a hypervisor) and the machine is a virtual machine 1115. As further shown, the program in other embodiments is a Linux operating system 1120 and the machine is a container 1125. In some embodiments, the VM 1115 or container 1125 uses the methodology disclosed in U.S. Patent Application No. 16 / 443,812 incorporated therein to identify the slice ID associated with the data message.

[0067]

[0086] In either the VM example or the container example, the CP circuit in some embodiments provides configuration data to the DP circuit 1120 that configures it to store a match-action record having (1) a match tuple that includes an identifier for the flow (e.g., a 5 or 7 tuple identifier) ​​and (2) an action tuple that includes an associated slice ID. After storing this record, the DP circuit 1120 uses it to generate a slice ID in the data plane for each received data message in the flow by matching the message's flow ID with the record's match tuple.

[0068]

[0087] This slice ID then allows the DP circuit 1120 to match the data message against a previously configured match-action record that has the slice ID and flow ID as part of its match tuple and the DP egress port ID as part of its action tuple. Through this match-action record, the DP circuit 1120 can identify the DP egress port ID for the subsequent data message, which is then sent through the identified DP egress port to its associated FE egress port, which is then forwarded to the next hop. If the DP circuit 1120 performs middlebox services, the slice ID matches a match-action rule that instructs the DP circuit to perform middlebox operations, similar to those described above with reference to Figures 7 and 8.

[0069]

[0088] Instead of having a machine (container or VM) running a CP program to identify slice IDs associated with data message flows, the CP circuit runs a hypervisor that includes a context engine that associates flow attributes with slice identifiers. Figure 12 shows an example of such a hypervisor 1205 and context engine 1210 running on the CP circuit 1225. In this example, after the hypervisor 1205 starts receiving data messages for a new flow or its attribute set from the DP circuit 1220, it provides the attribute set of the received data message or flow to the context engine 1210.

[0070]

[0089] The context engine 1210 uses the attribute set of the received data message to identify the slice ID of the newly received flow. In some embodiments, the context engine running on the CP circuit 1225 receives records with matching slice identifiers and data message attributes from the hypervisor context engine 1235 running on the host computers 1230. The context engine 1235 on these host computers 1230 collects context attributes for data message flows originating from VMs 1252 running on the host computers from guest introspection (GI) agents 1245 running on these VMs, and stores these context attributes in the data store 1250. Based on the collected context attributes and pre-configured rules, the host-side context engine 1235 in some embodiments generates a slice identifier for the data message flow. For example, the slice identifier is generated by mapping the traffic type included in the data message flow (detected by a GI agent running on the VM or a DPI agent running on its host) with a rule that associates the traffic type with a slice identifier.

[0071]

[0090] In some embodiments, the host context engine provides records of matching slice identifiers and data message attributes directly to the CP circuit context engine 1210 (e.g., via an overlay tunnel or RPC message), while in other embodiments, the host context engine provides this data indirectly via a set of one or more servers acting as a set of network managers or controllers. Several mechanisms for distributing context attributes (e.g., slice identifiers) among hypervisors running on devices are described in U.S. Patent Application Publication Nos. 2018 / 0159733 and 2018 / 0181423, which are incorporated herein by reference. While some of the devices described in U.S. Patent Application Publication Nos. 2018 / 0159733 and 2018 / 0181423 are computers, some embodiments use the mechanisms disclosed in U.S. Patent Application Publication Nos. 2018 / 0159733 and 2018 / 0181423 to distribute context attributes (e.g., slice identifiers) to hypervisors running on forwarding elements and middlebox devices.

[0072]

[0091] 13 illustrates that in some embodiments, the CP circuit 1325 of the HFE 1300 executes one or more machines that execute one or more service operations of a service chain for data messages processed by the DP circuit 1320 of the HFE. Specifically, it illustrates a CP circuit memory 1330 that stores resource sharing programs such as a hypervisor and an operating system (e.g., Linux OS) executed by the CP processor 1335. It also illustrates the CP circuit memory 1330 that stores programs for implementing a number of service machines 1340 (such as VMs or containers) that service chain operations for data messages forwarded by the DP circuit 1320 to the CP circuit 1325. In some embodiments, the service chain operations executed by the service machines 1340 include a slice ID specification operation.

[0073]

[0092] Combined or alternatively, in some embodiments, the service chain operations performed by the service machine 1340 include middlebox service operations, as well as compute and forwarding operations. As shown, in some embodiments, the resource sharer 1305 and the service machine 1340 are a hypervisor 1305a and a service VM (SVM) 1340a. As described further below, the hypervisor 1305a includes a software forwarding element 1360 (e.g., a software switch) for communicatively connecting the SVMs to each other and to one or more NICs of the CP circuit 1325 via its ports 1390.

[0074]

[0093] To implement such a service machine, the CP circuitry 1325 in some embodiments has a more powerful processor and more memory than are typically used in some hardware forwarding elements today. After performing one or more service operations on the data messages forwarded by the DP circuitry 1320, in some embodiments the CP circuitry 1325 returns those data messages to the DP circuitry 1320 for forwarding the data messages to their next destination in the network.

[0075]

[0094] In other embodiments, after performing one or more service operations on the data message forwarded by the DP circuit 1320, the CP circuit 1325 forwards the data message to a next destination in the network via the NIC, the CP circuit 1325, or the HFE 1300. Also, in some embodiments, the CP circuit 1325 configures the DP circuit 1320 with a slice ID that the CP circuit 1325 identifies for the data message flow. However, instead of providing the data message to be parsed for forwarding to the DP circuit 1320 in some of these embodiments, in these embodiments the CP circuit 1325 forwards the data message to its next hop destination until the DP circuit 1320 is configured by the CP circuit 1325 to perform the slice ID identification. In some embodiments, the CP circuit 1325 and the DP circuit 1320 perform L2 forwarding operations and / or L3 forwarding operations.

[0076]

[0095] The machine implemented by the CP circuit 1325 serves as a virtual data plane, while the DP circuit 1320 serves as a physical data plane. In other words, the HFE 1300 has two simultaneously executing data planes, a physical one implemented by the DP circuit 1320 and another virtual one implemented by the CP circuit 1325 implementing the service machine 1340. In some embodiments, the HFE 1300 uses its virtual data plane (implemented by its CP circuit 1325) to process data messages that cannot be processed in its physical DP circuit, e.g., to generate slice IDs for flows or to perform service operations within a service chain.

[0077]

[0096] In embodiments where the resource sharing program 1305 of the HFE CP circuitry 1325 is a hypervisor 1305a, one or more software forwarding elements execute on the hypervisor to implement the virtual data plane of the HFE. Examples of such software forwarding elements include software switches (e.g., an ESX switch running on an ESX hypervisor), software routers, etc. In some embodiments, the software forwarding elements process data messages that the CP circuitry 1325 receives from the DP circuitry 1320 to forward the data messages to an SVM 1340a executing on the hypervisor 1305a and / or identify the next hop in the network for the data messages.

[0078]

[0097] In conjunction with software forwarding elements on other HFEs and / or host computers, in some embodiments, a software forwarding element executing on the CP circuitry 1325 of an HFE 1300 implements one or more logical forwarding elements that span multiple HFEs and / or multiple host computers. Thus, in some embodiments, the software forwarding element of the CP circuitry of an HFE performs logical forwarding operations (e.g., lookup operations based on a logical network identifier).

[0079]

[0098] In some embodiments, the hypervisor running on the CP circuitry of the HFE is the same as or similar to the hypervisor running on the host computers in the network. Figure 14 shows one such example. In this example, the similar or identical hypervisor provides a common platform through which a common set of managers 1405 and controllers 1410 manage and control the HFE 1400, host computer 1450, and SFE 1455 running on host computer 1450.

[0080]

[0099] In some embodiments, manager 1405 and controller 1410 manage and control the CP circuitry 1425 of the HFE, just as manager 1405 and controller 1410 manage and / or control host computer 1450 and host SFE 1455. For example, via a common hypervisor platform, manager 1405 and controller 1410 in some embodiments define a logical forwarding element (e.g., a logical overlay forwarding element) that spans multiple software forwarding elements of the host computer and multiple DP circuits of the HFE.

[0081]

[0100] Also, through this common platform, the manager 1405 and controller 1410 configure the host SFE 1455 and HFE DP circuitry 1420 to perform slice-based operations based on the same slice identifiers. Examples of such slice-based operations include slice-based forwarding operations and / or slice-based middlebox operations. Through the common hypervisor platform, the manager 1405 and controller 1420 in some embodiments define a common set of network slices across hardware and software SDDC resources (including the host computers and middlebox instances running the HFEs and SFEs) using a common set of slice identifiers.

[0082]

[0101] The hardware and software resources in some embodiments use the common slice identifier to perform their operations (e.g., to select the rules they must process). The common slice identifier is also used by the manager 1405 and the controller 1410 to define different sets of dedicated computing and network resources within the SDDC for different network slices, as described above.

[0083]

[0102] In some embodiments, in addition to configuring the host SFE 1455 and HFE DP circuitry 1420 to perform slice-based operations, the manager 1405 and controller 1410 can also configure the SFE and HFE to also perform network operations based on a more general security group identifier. Examples of more general security groups include port groups, such as data center port groups, management port groups, virtual storage port groups, virtual machine mobility port groups, etc. The port group ID in some embodiments is a way of associating certain ports together in a data center to apply the same forwarding and / or service policies on the ports.

[0084]

[0103] In some embodiments, the manager 1405 and the controller 1410 interact with the HFE CP circuit 1425 to configure the HFE DP circuit 1420. Specifically, in some embodiments, the manager 1405 and the controller 1410 use the hypervisor 1430 to provide configuration and context data to the HFE CP circuit 1425 so that the CP circuit 1425 can configure the corresponding DP circuit 1420 to perform slice-based forwarding operations and / or slice-based middlebox operations.

[0085]

[0104] In some embodiments, the manager 1405 and the controller 1410 use the hypervisor 1430 to deploy and configure computing elements to run on the CP circuitry 1425 of the HFE 1400 and on the host computer 1450. In other embodiments, the computing manager 1405 and the computing controller 1410 do not deploy and configure computing elements to run on the CP circuitry of the HFE 1400.

[0086]

[0105] The separate clusters of manager 1405 and controller 1410 in Figure 14 provide separate management and control planes for managing and controlling hypervisor 1435 resources on the host computer 1450 and HFE 1400. In some embodiments, the manager 1405 defines the resources on the host computer 1450 and HFE 1400, while the controller 1410 configures these resources. However, other embodiments do not have separate management and control planes for managing / controlling these resources, but rather use only one cluster of servers to perform both management and control plane operations.

[0087]

[0106] 15 illustrates that in some embodiments, a hypervisor 1505 running on the HFE's CP circuitry 1525 uses a common data model abstraction 1555 as a hypervisor 1510 running on a host computer 1550. The hypervisors 1505 and 1510 use different translators 1515 and 1517 to translate their respective communications to the HFE DP circuitry 1520 and the host NIC 1525 into a data format that is understandable by the DP circuitry 1520 and the NIC 1527. These translators also translate communications from the DP circuitry 1520 and the NIC 1527 back to the hypervisors 1505 and 1510 into the common data model format 1555.

[0088]

[0107] In some embodiments, these translators are implemented as plug-ins, and in some embodiments, no translators are used for communication between the hypervisor 1510 and the host network interface card 1527; the common data model abstraction in these embodiments is the data model defined for the host network interface card. Such embodiments only use translators to translate data plane circuit hypervisor communications from the NIC data model format to the DP circuit model format, and perform the reverse translation.

[0089]

[0108] FIG. 16 illustrates an example of using a slice-based HFE as an edge device 1600 in a software-defined wide access network (SD-WAN). The edge HFE operates in a particular local area network (LAN) of an entity and connects multiple devices 1610 (e.g., computers, tablets, smartphones, etc.) at this location to the entity's WAN via multiple network links, such as an MPLS link 1602, a broadband Internet link 1604, and a 5G wireless link 1606. The WAN spans multiple networks 1620 (e.g., private telecommunications networks, the Internet, MPLS provider networks, etc.) and connects different locations (e.g., different data centers and branches) served by different LANs.

[0090]

[0109] For each data message flow it processes, the Edge HFE 1600 identifies a slice ID associated with the data message flow, selects a network link (e.g., link 1602, 1604, or 1606) for this slice ID (e.g., uses the slice ID to identify a link selection rule and then selects the link identified by this rule), and then routes the data message flow along the selected network link to its destination. In some embodiments, the data message flow has a header (e.g., an encapsulation header) that identifies its slice ID. In other embodiments, the Edge HFE is configured with rules that associate different flow IDs with slice IDs. In still other embodiments, the Edge HFE identifies the slice ID of the data message flow using an external device (such as the slice ID identification circuit 905 in FIG. 9) or a module / machine of its CP circuit (as shown in FIG. 11 or FIG. 12).

[0091]

[0110] Figure 17 shows another SD-WAN example. In this example, a slice-based HFE 1700 is used as a multi-tenant public cloud gateway to connect different LAN nodes of different tenants based on tenant slice ID. For each tenant, the public cloud gateway 1700 establishes the tenant's SD-WAN by connecting two or more LANs of the tenant (often in different physical locations). In this example, the public cloud gateway 1700 connects Tenant A's branch office 1702 and data center 1704, and Tenant B's branch office 1706 and data center 1708.

[0092]

[0111] For each data message flow that it processes, the gateway 1700 identifies a slice ID associated with the data message flow, selects a next-hop routing table associated with this slice ID, and routes the data message flow to its destination using the next-hop routing table. The gateway identifies the slice ID differently in different embodiments, for example, in some embodiments it extracts the slice ID from a header (e.g., an encapsulation header) of the data message flow, in other embodiments it uses a pre-configured table that associates flow IDs with slice IDs, or in yet other embodiments it uses an external device or module / machine of its CP circuitry.

[0093]

[0112] The HFE of some embodiments may be configured to enforce ingress flow control for the device by collecting statistics on egress traffic to the device, reporting the collected statistics to a set of servers, and receiving new egress limits to adjust the amount of flow forwarded by the HFE to the device. In some embodiments, the HFE drops data messages to remain below a threshold specified by the egress limits it receives, or delays transmission of data messages when such a threshold is reached.

[0094]

[0113] FIG. 18 illustrates one such technique in which several HFEs 1800 perform ingress flow control for a device 1805, which may be a host computer, a machine running on a host computer, a server, or any other type of device. In this example, each HFE generates statistics about the data message flows it sends to the device 1805. In some embodiments, the HFE may generate any number of different statistics, such as number of data messages, byte counts, etc. These statistics in some embodiments are flow specific, i.e., the HFE calculates a statistic for each of several different flows. The flows may be individual 5-tuple or 7-tuple flows, or may be an aggregate flow that includes several individual flows (e.g., an aggregate flow that encompasses all individual flows with the same source and destination IP addresses). In addition to or instead of being flow-based, in some embodiments, the HFE generates statistics for each slice ID to quantify the amount of traffic for a particular network slice that the device receives.

[0095]

[0114] The HFEs provide the generated statistics to a set of servers 1820 (e.g., a controller or manager), which then analyzes the statistics to determine whether the amount of traffic forwarded to the device 1805 exceeds a threshold. When this threshold is reached, the set of servers 1820 establishes new egress restrictions to the HFEs (e.g., all flows, specific flows, specific slice IDs, or specific combinations of flows and slice IDs, etc.). The HFEs then use these new egress restrictions to control the amount of data messages they send to the device 1805 (e.g., all flows, specific flows, specific slice IDs, or specific combinations of flows and slice IDs, etc.).

[0096]

[0115] As discussed above, in some embodiments, an HFE may drop data messages to remain below a threshold specified by the egress limit they receive, or may delay transmission of data messages when such a threshold is reached. Also, in some embodiments, the server set 1820 may distribute the same new egress limit to each HFE 1800, or different new egress limits to different HFEs 1800, to regulate data message flow to the host 1805.

[0097]

[0116] 19 illustrates a process 1900 that a server set 1820 performs in some embodiments to control ingress data message load for a particular slice ID to a device 1805. This process is used in some embodiments to ensure that a device 1805 does not process more than a certain amount of data messages for a particular slice. As shown, the process begins (at 1905) by allocating to the HFE 1800 an egress limit on the data message load (e.g., bytes per second, etc.) for a particular slice that the HFE can forward to the device 1805.

[0098]

[0117] In some embodiments, a process distributes these limits to the HFE CP circuit via API calls, which then configures the HFE DP circuit to observe these limits. As noted above, in some embodiments, the HFE drops data messages to remain below a threshold specified by the egress limits they receive, or delays sending data messages when such a threshold is reached. Also, in some embodiments, the server set 1820 can distribute the same egress limits to each HFE 1800, or different egress limits to different HFEs 1800.

[0099]

[0118] After a period of time, the server set collects (at 1910) statistics from the HFE regarding the data message load of the particular slice forwarded to the device 1805. The collected statistics in some embodiments are associated with a limit distributed by the server set. For example, if the limit is expressed in bytes per second, the collected statistics represent the average number of bytes per second that the HFE distributed to the device, or the total number of bytes distributed over a period of time for the particular slice.

[0100]

[0119] At 1915, the process consolidates the statistics collected from the HFEs for the particular slice. It then determines (at 1920) whether the consolidated statistics exceed a desired threshold amount (e.g., a desired total number of bytes per second). If not, the process returns to 1910 to wait for the next batch of reported statistics. On the other hand, if the consolidated statistics for the particular slice exceed the threshold amount, the process calculates (at 1925) a new egress limit for the data message flow for the particular slice that can be forwarded to the device.

[0101]

[0120] For example, if a device should not receive more than 100 Mbits / sec for a particular slice, the server set 1820 might initially distribute a limit of 50 Mbits / sec to each HFE, based on the assumption that the HFEs will not operate at more than 50% of this limit for the device 1805. However, collected statistics might show that over a period of time, three HFEs are sending 35 Mbits / sec, 45 Mbits / sec, and 50 Mbits / sec to the device, the sum of which exceeds the overall limit by 100 Mbits / sec. Thus, the server set might cut each HFE's individual limit to 33 Mbits / sec so that their aggregate does not exceed the overall limit.

[0102]

[0121] After calculating (at 1925) the new limits, the process distributes (at 1930) these new limits to the HFEs. Again, in some embodiments, the process distributes these limits via API calls to the HFE CP circuit, which then configures the HFE DP circuit to monitor these limits. As noted above, in some embodiments, the HFEs drop data messages to stay below a threshold specified by the new egress limits they receive, or delay sending data messages when such a threshold is reached. Also, in some embodiments, the server set 1820 can distribute the same new egress limits to each HFE 1800, or different new egress limits to different HFEs 1800. After 1930, the process returns to 1910 to wait for the next batch of reported statistics.

[0103]

[0122] Many of the features and applications described above are implemented as software processes defined as a set of instructions recorded on a computer-readable storage medium (also referred to as a computer-readable medium). When these instructions are executed by one or more processing units (e.g., one or more processors, processor cores, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer-readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. Computer-readable media does not include carrier waves and electrical signals passing over wireless or wired connections.

[0104]

[0123] In this specification, the term "software" is meant to include firmware residing in a read-only memory, or applications stored on a magnetic storage device, that can be loaded into memory for processing by a processor. Also, in some embodiments, multiple software inventions may be implemented as subparts of a larger program while remaining separate software inventions. In some embodiments, multiple software inventions may also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention as described herein is within the scope of the invention. In some embodiments, a software program, when installed to operate on one or more electronic systems, defines one or more specific machine implementations that execute and perform the operations of the software program.

[0105]

[0124] FIG. 20 conceptually illustrates a computer system 2000 on which some embodiments of the present invention may be implemented. The computer system 2000 may be used to implement any of the hosts, CP circuits, controllers, and managers described above. As such, it may be used to execute any of the processes described above. The computer system includes various types of non-transitory machine-readable media and interfaces for various other types of machine-readable media. The computer system 2000 includes a bus 2005, a processing unit 2010, a system memory 2025, a read-only memory 2030, a permanent storage device 2035, input devices 2040, and output devices 2045.

[0106]

[0125] The bus 2005 collectively represents all system, peripheral, and chipset buses that communicatively connect the various internal devices of the computer system 2000. For example, the bus 2005 communicatively connects the processing unit 2010 with the read-only memory 2030, the system memory 2025, and the permanent storage device 2035.

[0107]

[0126] From these various memory units, the processing unit 2010 retrieves instructions to execute and data to process in order to execute the processes of the present invention. The processing unit may be a single processor or a multi-core processor in various embodiments. The read-only memory 2030 stores static data and instructions required by the processing unit 2010 and other modules of the computer system. The permanent storage device 2035, on the other hand, is a readable and writable storage device. This device is a non-volatile memory unit that stores instructions and data even when the computer system 2000 is off. Some embodiments of the present invention use mass storage devices (such as magnetic or optical disks and their corresponding disk drives) as the permanent storage device 2035.

[0108]

[0127] In other embodiments, the permanent storage device is a removable storage device (e.g., floppy disk, flash drive, etc.). Like the permanent storage device 2035, the system memory 2025 is a read-write storage device. However, unlike the storage device 2035, the system memory is a volatile read / write memory, such as a random access memory. The system memory stores some of the instructions and data that the processor needs at run time. In some embodiments, the processes of the present invention are stored in the system memory 2025, the permanent storage device 2035, and / or the read-only memory 2030. From these various memory units, the processing unit 2010 retrieves instructions to execute and data to process in order to execute the processes of some embodiments.

[0109]

[0128] The bus 2005 also connects to input / output devices 2040 and 2045. The input devices enable a user to communicate information and select commands to the computer system. The input devices 2040 include alphanumeric keyboards and pointing devices (also called "cursor control devices"). The output devices 2045 display images generated by the computer system. Output devices include printers and display devices such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some embodiments include devices such as touch screens that function as both input and output devices.

[0110]

[0129] Finally, as shown in Figure 20, bus 2005 couples computer system 2000 to a network 2065 via a network adapter (not shown). In this manner, the computer may be part of a network of computers (such as a local area network ("LAN"), a wide area network ("WAN"), or an intranet) or a network of networks (such as the Internet). Any or all of the components of computer system 2000 may be used in conjunction with the present invention.

[0111]

[0130] Some embodiments include electronic components such as microprocessors, storage devices, and memories that store computer program instructions on machine-readable or computer-readable media (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact disks (CD-ROMs), recordable compact disks (CD-Rs), rewritable compact disks (CD-RWs), read-only digital versatile disks (e.g., DVD-ROMs, dual-layer DVD-ROMs), various recordable / rewritable DVDs (e.g., DVD-RAMs, DVD-RWs, DVD+RWs, etc.), flash memories (e.g., SD cards, mini SD cards, micro SD cards, etc.), magnetic and / or solid-state hard drives, read-only and recordable Blu-ray disks, ultra-density optical disks, any other optical or magnetic media, and floppy disks. The computer-readable media can store computer programs that are executable by at least one processing unit and include sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as produced by a compiler, and files containing higher level code that are executed by a computer, electrical component, or microprocessor using an interpreter.

[0112]

[0131] While the above discussion primarily refers to microprocessors or multi-core processors executing software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions stored on the circuit itself.

[0113]

[0132] As used herein, the terms "computer," "server," "processor," and "memory" all refer to electronic or other technological devices. These terms exclude people or groups of people. For purposes of this specification, the terms "display" or "displaying" mean displaying on an electronic device. As used herein, the terms "computer-readable medium," "computer-readable medium," and "machine-readable medium" are entirely restricted to tangible physical objects that store information in a form readable by a computer. These terms exclude any wireless signals, wired download signals, and any other temporary or transient signals.

[0114]

[0133] Although the invention has been described with reference to numerous specific details, those skilled in the art will appreciate that the invention may be embodied in other specific forms without departing from the spirit of the invention. Accordingly, those skilled in the art will appreciate that the invention should not be limited by the foregoing illustrative details, but rather should be defined by the appended claims.

Claims

1. 1. A method for enforcing service levels for ingress data message traffic to a computer in a data center including a plurality of hardware forwarding elements (HFEs), comprising: receiving from the HFE egress statistics regarding data messages forwarded to the computer; aggregating and analyzing the received statistics to determine whether the data message traffic has exceeded a first threshold level for ingress data message traffic to the computer; and distributing to the HFE a set of secondary threshold levels for reducing the data message traffic from the HFE to the computer when the first threshold is exceeded; The method of claim 1, wherein the HFE drops or delays data messages when data message traffic from the HFE to the computer reaches a secondary threshold level based on the distributed set of secondary threshold levels.

2. 2. The method of claim 1, wherein the set of secondary threshold levels includes identical second threshold levels distributed to all HFEs.

3. 2. The method of claim 1, wherein the set of secondary threshold levels includes at least two different second threshold levels distributed to at least two different HFEs.

4. 4. The method according to claim 1 , further comprising the steps of: The method further comprising, prior to receiving the egress statistics, distributing a previous set of primary threshold levels to the HFEs to define limits for data message traffic from each HFE to the computer.

5. The method of claim 4 , wherein the set of primary threshold levels includes identical primary threshold levels distributed to all HFEs.

6. The method of claim 4 , wherein the set of primary threshold levels includes at least two different primary threshold levels distributed to at least two different HFEs.

7. 7. The method of claim 1, wherein the data message traffic comprises data message traffic associated with a particular group identifier that identifies a group of two or more data message flows.

8. 7. The method of claim 1, wherein the data message traffic includes data message traffic associated with a particular slice identifier associated with a network slice in a network.

9. 10. The method of claim 8, wherein the computer executes a machine associated with the network slice.

10. A non-transitory machine-readable medium storing a program for execution by at least one processing unit, said program comprising a set of instructions for implementing the method of any one of claims 1 to 9.

11. 1. A hardware forwarding element (HFE) for operating within a network, comprising: an application specific integrated circuit implementing a data plane forwarding circuit including a plurality of message processing stages and a set of ports, the application specific integrated circuit being configured to perform a first set of data plane forwarding operations on a first set of data messages and forward said first set of data messages via said set of ports; A network interface controller (NIC); a microprocessor; and a memory storing a program for execution by the microprocessor to perform a second set of data plane forwarding operations on a second set of data messages forwarded via the NIC; both of the first and second sets of data plane forwarding operations comprise a next hop forwarding operation for the data message received by the HFE to identify a next hop network element in the network for the data message; A hardware forwarding element, wherein the data plane forwarding circuitry is a physical first data plane of the hardware forwarding element, and the program for execution by the microprocessor implements a virtual second data plane.

12. 12. The hardware forwarding element of claim 11, wherein the program receives a particular data message to be processed by the program from the data plane forwarding circuitry when the data plane forwarding circuitry cannot identify a next hop for a particular data message.

13. 13. The hardware forwarding element of claim 11 or 12, wherein the first and second sets of data plane forwarding operations include Layer 2 forwarding operations performed on data messages received by the hardware forwarding element.

14. 14. A hardware forwarding element as claimed in any one of claims 11 to 13, wherein the second set of data plane forwarding operations includes a set of one or more service operations for performing on a third set of data messages received by the data plane forwarding circuitry.

15. 15. The hardware forwarding element of claim 14, wherein the third set of data messages is associated with a network slice, and the set of service operations is part of a service chain of operations to be performed on data messages associated with the network slice.

16. 16. A hardware forwarding element as claimed in any one of claims 11 to 15, wherein the second set of data plane forwarding operations includes a slice ID determination operation for generating a slice identifier (ID) associated with each of a plurality of data message flows received by the data plane forwarding circuitry, and providing the slice IDs to the data plane forwarding circuitry to perform a slice-based forwarding operation based on the provided slice IDs.

17. 17. The hardware forwarding element of claim 11, wherein the program is a Linux operating system having at least one container defined to perform the second set of data plane forwarding operations.

18. 17. The hardware forwarding element of claim 11, wherein the program is a hypervisor comprising at least one module for performing at least a subset of the second set of data plane forwarding operations.

Citation Information

Patent Citations

  • Packet-switching apparatus and packet processing method

    JP2006238161A

  • Communication apparatus, communication system, communication control method, and communication control program

    JP2009232400A

  • Router, and method for controlling routing search

    JP2010109735A

  • Traffic management device, network system, and control method

    JP2015103979A

  • Relay device

    JP2019022118A