Detecting failure of layer 2 service using broadcast messages

Information

  • Patent Grant
  • 11805036
  • Patent Number
    11,805,036
  • Date Filed
    Sunday, June 13, 2021
    3 years ago
  • Date Issued
    Tuesday, October 31, 2023
    a year ago
Abstract
Some embodiments provide a method for detecting a failure of a layer 2 (L2) bump-in-the-wire service at a device. In some embodiments, the device sends heartbeat signals to a second device connected to L2 service nodes in order to detect failure of the L2 service (e.g., a failure of all the service nodes). In some embodiments, the heartbeat signals are unidirectional heartbeat signals (e.g., a unidirectional bidirectional-forwarding-detection (BFD) session) sent from each device to the other. The heartbeat signals, in some embodiments, use a broadcast MAC address in order to reach the current active L2 service node in the case of a failover (i.e., an active service node failing and a standby service node becoming the new active service node). The unidirectional heartbeat signals are also used, in some embodiments, to decrease the time between a failover and data messages being forwarded to the new active service node.
Description
BACKGROUND

In a software defined network, a set of gateway devices (e.g., Edge Nodes) connecting the internal virtualized network and an external network may have a layer 2 bump in the wire service (i.e., a service that does not change the layer 2 addresses of a processed data message) inserted in the processing pipeline. Failure of the layer 2 service is difficult to detect in some instances. When a backup layer 2 service node is provided and a primary layer 2 service node fails, the gateway device must begin sending the data messages to the backup layer 2 service node. A method for learning of the failure and quickly redirecting data messages to the backup layer 2 service node is necessary.


BRIEF SUMMARY

Some embodiments provide a method for providing a layer 2 (L2) bump-in-the-wire service at a gateway device (e.g., a layer 3 (L3) gateway device) at the edge of a logical network. The method, in some embodiments, establishes a connection from a first interface of the gateway device to a service node that provides the L2 service. The method also establishes a connection from a second interface of the gateway device to the L2 service node. The method then sends data messages received by the gateway device that require the L2 service to the service node using the first interface. In some embodiments, north-to-south traffic (i.e., from the external network to the logical network) is sent to the service node using the first interface while the south-to-north traffic is sent to the service node using the second interface.


Some embodiments provide a method for applying different policies at the service node for different tenants of a datacenter. Data messages received for a particular tenant that require the L2 service are encapsulated or marked as belonging to the tenant before being sent to the service node. Based on the encapsulation or marking, the service node provides the service according to policies defined for the tenant.


The first and second interfaces of the gateway devices have different internet protocol (IP) addresses and media access control (MAC) addresses in some embodiments. The IP addresses, in some embodiments, are not used to communicate with devices of external networks and can have internal IP addresses used within the logical network. The next hop MAC address for a data message requiring the L2 service sent from the first interface will be the MAC address of the second interface and will arrive at the second interface with the destination MAC address unchanged by the service node. In some embodiments, interfaces for connecting to the L2 service are disabled on standby gateway devices of the logical network and are enabled on only an active gateway device.


Connections to the service node, in some embodiments, are made through layer 2 switches. In some embodiments, each interface connects to a different switch connected to the service node. The service node, in some embodiments, is a cluster of service nodes in an active-standby configuration that each connect to the same pair of switches. In some embodiments of an active-standby configuration, an active service node provides the L2 service while the standby service nodes drop all data messages that they receive. Failover between the active and standby service nodes is handled by the L2 service nodes with no involvement of the L3 gateway device in some embodiments.


The gateway device, in some embodiments, sends heartbeat signals between the two interfaces connected to the L2 service nodes in order to detect failure of the L2 service (e.g., a failure of all the service nodes). In some embodiments, the heartbeat signals are unidirectional heartbeat signals (e.g., a unidirectional bidirectional-forwarding-detection (BFD) session) sent from each interface to the other. The heartbeat signals, in some embodiments, use the IP address of the destination interface as the destination IP address, but use a broadcast MAC address in order to reach the current active L2 service node in the case of a failover (i.e., an active service node failing and a standby service node becoming the new active service node).


Additional embodiments utilize the unidirectional broadcast heartbeat signals to decrease the time between a failover and data messages being forwarded to the new active service node as well as detect a failure of the service node cluster. In embodiments with an L2 bump-in-the-wire service between any two interfaces (e.g., between interfaces of two devices, or between two interfaces of a same device) an architecture using different L2 switches between each interface and the service node cluster is used in conjunction with the unidirectional broadcast heartbeat signals to reduce the time to redirect data messages to the new active service node.


In some embodiments, the switches connecting the interfaces to the service node cluster associate MAC addresses with particular ports of the switch based on incoming data messages. For example, a data message received at the switch on a first port with a source MAC address “MAC1” (e.g., a 48-bit MAC address of the first interface) will cause the switch to associate the first port with the MAC address MAC1 and future data messages with destination address MAC1 will be sent out of the switch from the first port. By sending the heartbeat data messages to the other interface with shorter time intervals between heartbeats than a timeout of a MAC address association (i.e., the time interval before an association between a MAC address and a port is removed) the ports of the switches attached to the active service node can be associated with the correct MAC addresses for the two interfaces more quickly. As a standby node becomes an active node, the broadcast heartbeat data messages will be received and processed by the newly-active service node and the switches will associate the ports connected to the newly-active service node with the appropriate MAC addresses of the two interfaces.


The preceding Summary is intended to serve as a brief introduction to some embodiments of the invention. It is not meant to be an introduction or overview of all inventive subject matter disclosed in this document. The Detailed Description that follows and the Drawings that are referred to in the Detailed Description will further describe the embodiments described in the Summary as well as other embodiments. Accordingly, to understand all the embodiments described by this document, a full review of the Summary, Detailed Description, and the Drawings is needed. Moreover, the claimed subject matters are not to be limited by the illustrative details in the Summary, Detailed Description, and the Drawings, but rather are to be defined by the appended claims, because the claimed subject matters can be embodied in other specific forms without departing from the spirit of the subject matters.





BRIEF DESCRIPTION OF THE DRAWINGS

The novel features of the invention are set forth in the appended claims. However, for purposes of explanation, several embodiments of the invention are set forth in the following figures.



FIG. 1 conceptually illustrates a system in which some on the embodiments of the invention are performed.



FIG. 2 conceptually illustrates a process to establish two connections from a device to a layer 2 bump-in-the-wire service node for the service node to provide a service to data messages.



FIG. 3 conceptually illustrates an embodiment in which an L2 service is provided between two devices by a cluster of service nodes.



FIG. 4 conceptually illustrates a process for detecting failure using the heartbeat signals.



FIG. 5 conceptually illustrates a process performed by a service node in some embodiments.



FIG. 6 conceptually illustrates a process performed by the switches, in some embodiments, to facilitate failover without the device, or devices, that send data messages to the service node cluster being aware of a service node cluster failover operation.



FIGS. 7A-B conceptually illustrate the flow of data messages in a single device embodiment for learning MAC addresses.



FIG. 8 conceptually illustrates the processing of a data message requiring a service provided by the service node cluster after the switches have learned MAC address/interface associations from the data messages depicted in FIGS. 7A-B or in other ways, such as by using an address resolution protocol (ARP) operation.



FIGS. 9A-B conceptually illustrate the path of a data message after a failover, before and after a subsequent heartbeat message is sent from an interface of a device.



FIGS. 10A-B conceptually illustrate an embodiment in which the heartbeat data messages are used to detect failure of a service node cluster as discussed in relation to FIG. 4.



FIG. 11 illustrates an embodiment including gateway devices in an active-standby configuration at a border between two networks.



FIG. 12 conceptually illustrates an electronic system with which some embodiments of the invention are implemented.





DETAILED DESCRIPTION

In the following description, numerous details are set forth for the purpose of explanation. However, one of ordinary skill in the art will realize that the invention may be practiced without the use of these specific details. In other instances, well-known structures and devices are shown in block diagram form in order not to obscure the description of the invention with unnecessary detail.


Some embodiments provide a method for providing a layer 2 (L2) bump-in-the-wire service at a gateway device (e.g., a layer 3 (L3) gateway device) at the edge of a logical network. The method, in some embodiments, establishes a connection from a first interface of the gateway device to a service node that provides the L2 service. The method also establishes a connection from a second interface of the gateway device to the L2 service node. The method then sends data messages received by the gateway device that require the L2 service to the service node using the first interface. In some embodiments, north-to-south traffic (i.e., from the external network to the logical network) is sent to the service node using the first interface while the south-to-north traffic is sent to the service node using the second interface.


As used in this document, the term data packet, packet, data message, or message refers to a collection of bits in a particular format sent across a network. It should be understood that the term data packet, packet, data message, or message may be used herein to refer to various formatted collections of bits that may be sent across a network, such as Ethernet frames, IP packets, TCP segments, UDP datagrams, etc. While the examples below refer to data packets, packets, data messages, or messages, it should be understood that the invention should not be limited to any specific format or type of data message. Also, as used in this document, references to L2, L3, L4, and L7 layers (or layer 2, layer 3, layer 4, 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 OSI (Open System Interconnection) layer model, respectively.



FIG. 1 conceptually illustrates a system in which some on the embodiments of the invention are performed. FIG. 1 depicts a gateway device 101 that serves as the gateway between a network 110 (e.g., an untrusted network) and a set of tenant networks 120 (e.g., a set of trusted networks that are logical networks in some embodiments). In some embodiments, the gateway device implements a tier 0 (T0) logical router that is shared by multiple tenant networks, each of which connect to the TO logical router through a unique interface (e.g. logical interface) using a tenant (or tier 1 (T1)) logical router. The gateway device 101 also includes a set of interfaces 130 used to connect to a service node 102 that provides a layer 2 (L2) bump-in-the-wire service (e.g., a firewall, load balancing, network address translation (NAT), or virtual private network (VPN) service) through switches 103.


In some embodiments, gateway device 101 allows for per-tenant policies to be applied by the service node 102 by appending a context (e.g., encapsulation or other marking) to a data message sent to service node 102 with a tenant identifier (e.g., a virtual local area network (VLAN) tag that is associated with a particular tenant's policies). In FIG. 1, service node 102 is shown with a set of three logical interfaces, labeled 1-3 (corresponding to tenants 1-3), each connected to one interface of the two switches 103 (e.g., using VLAN trunking). The logical interfaces, in some embodiments, correspond to a single physical interface of the service node 102. Service node 102, in some embodiments, represents a cluster of service nodes that provide the L2 service. In some embodiments utilizing a cluster of service nodes, the service nodes are configured in an active-standby configuration with one service node performing the L2 service with the additional service nodes in the cluster acting as standby service nodes in case the active service node fails.



FIG. 1 also depicts a datapath for data messages requiring the L2 service (depicted as the dotted line between two interfaces of gateway device 101). The datapath ignores the datapath outside of the gateway device, as the data message may be received from, and destined for, any of the networks 110 or 120A-C. Gateway device 101 is depicted as a gateway device, but one of ordinary skill in the art would understand that the device, in some embodiments, is at a different point in the network that requires an L2 bump-in-the-wire service.


Gateway device 101, in some embodiments, is a host computing machine that executes an edge node program. In some embodiments, the edge node program includes at least one managed forwarding element (e.g. a managed routing element, managed switching element, or both), that implements a set of logical forwarding elements of a set of logical networks for a set of tenants. Further details relating to implementing logical networks using gateway devices (e.g., edge nodes) are found in U.S. Pat. No. 9,787,605 which is hereby incorporated by reference. Further details of the elements of FIG. 1 are described below in the discussion of FIG. 2.



FIG. 2 conceptually illustrates a process 200 to establish two connections from a device (e.g., gateway device 101) to a layer 2 (L2) bump-in-the-wire service node for the service node to provide a service to data messages. In some embodiments, process 200 is performed by the device (e.g., gateway device 101). Process 200 begins by establishing (at 210) a connection to the L2 service node from a first interface 130 of the device. The first interface has a first internet protocol (IP) address which, in some embodiments, is a private IP address that is not used by external networks. In some embodiments, the connection from the first interface is made through a first layer 2 switch (e.g., switch 103A). A layer 2 switch, in some embodiments, learns associations between ports (e.g., interface 130) of the switch and media access control (MAC) addresses of the devices connected to each port from a source MAC address field in the header of the data messages received at the port. In some embodiments, the first switch is a logical switch that is implemented by a physical switch (e.g. a virtual switch or a hardware switch).


The process continues by establishing (at 220) a second connection to the L2 service node from a second interface of the device. The second interface has a second, internet protocol (IP) address different from the first interface which, in some embodiments, is a private IP address that is not used by external networks. In some embodiments, the connection from the second interface is made through a second layer 2 switch. The second layer 2 switch also learns MAC address/port pairings from received data messages in some embodiments. The second switch, in some embodiments, is a logical switch that is implemented by any of a virtual switch or a hardware switch.


Once connections are established from the device, the process receives (at 230) a data message from another device (e.g., a physical router, or a T1 logical router for a specific tenant). The data message, in some embodiments, is a data message exchanged between an external network and a tenant logical network for which the device serves as a gateway device. In some embodiments, the data message is a data message exchanged between an external network and a device in a datacenter for which the device acts as a gateway device. The data message, in some embodiments, is directed from a device in a tenant logical network to another device in a same datacenter or network for which the device acts as a gateway device (e.g., in a same tenant's logical network or a different tenant's logical network). The datacenter, in some embodiments, implements a set of logical networks for a set of tenants. In some embodiments, the data message is received on a third interface of the device. The third interface, in some embodiments, has an IP address that is advertised to external networks by the device.


After receiving the data message, the process determines (at 240) whether the data message requires the L2 bump-in-the-wire service. In some embodiments, the determination is based on a value in a set of header fields of the received data message. The value that the determination is based on may be any combination of a source or destination IP or MAC address, a protocol, and a port number. In some embodiments, a set of header fields are associated specifically with the L2 service (e.g., a network address translation (NAT) service or load balancing (LB) service may be addressable by a particular set of IP addresses, or may be associated with an IP subnet for which they provide the service). The determination, in some embodiments, is made using a routing entry (e.g., a policy-based routing entry) that indicates a certain IP address or range of IP addresses should be forwarded to the MAC of the second interface from the first interface. The range of IP addresses, in some embodiments, is associated with a network for which the L2 service is required. In some embodiments, the policy-based routing entry identifies values in a combination of fields used to determine that a received data message should be forwarded to the MAC of the second interface from the first interface. The fields that may be used to specify data messages that should be forwarded to the MAC of the second interface from the first interface, in some embodiments, include a source IP address, destination IP address, source MAC address, destination MAC address, source port, destination port, and protocol.


The determination (at 240) whether the data message requires the L2 bump-in-the-wire service, in some embodiments, also takes into account the logical network from which the data message was received. In some embodiments, each tenant logical network implements a tier 1 logical router that connects to a tier 0 logical router executing on a gateway device through a different logical interface. For data messages received on a particular logical interface, some embodiments, apply logical-interface-specific (e.g., tenant-specific) policies to determine (at 240) whether the data message requires the service. The tenant, in some embodiments, defines at least two “zones” that include different devices or interfaces and requires sets of services (e.g., services provided by a service node) for data messages between each pair of zones.


If the process determines (at 240) that the data message does not require the L2 service, the process (at 250) processes the data message and forwards it towards its destination and the process ends. In some embodiments, the data message processing is logical processing performed by a software forwarding element implementing a logical forwarding element or elements (e.g., a logical router, a logical switch, or both).


If the process determines (at 240) that the data message does require the L2 service, the process forwards (at 260) the data message out one of the interfaces connected to the L2 service node to be received at the other interface connected to the L2 service node. In some embodiments, north-south traffic coming from an external network into a logical network for which the device is a gateway device is sent to the service node from the first interface to be received at the second interface while south-north traffic from a logical network to the external network is sent to the service node from the second interface to be received by the first interface.


In some embodiments, forwarding (at 260) the data message includes an encapsulation or other marking operation to identify a particular tenant. For example, referring to FIG. 1, a data message received from logical interface ‘1’ of gateway device 101 that requires the service provided by service node 102, is encapsulated so that it will be received at logical interface ‘1’ of service node 102. Based on the encapsulation, service node 102 applies policies specific to tenant 1. Data messages sent between interfaces use the MAC addresses associated with the destination interface of the device which remains unchanged by the processing performed by the L2 service node.


After forwarding (at 260) the data message out of one interface connected to the L2 service node, the process receives (at 270) the data message at the other interface. In some embodiments, the received data message includes an encapsulation or marking associated with a specific tenant. The process then processes (at 250) the received data message and forwards the data message towards its destination. In some embodiments, multiple L2 bump-in-the-wire services are independently provided in a similar fashion.



FIG. 3 conceptually illustrates an embodiment in which an L2 service is provided between two devices 301 by a service node in a cluster of service nodes 305. Device 301A is depicted as including router 310 and switch 303A which, in some embodiments, are software executing on device 301A. Router 310 and switch 303A, in some embodiments, implement logical forwarding elements. In some embodiments, device 301A is a gateway device connecting an internal network to an external network. The internal network is a physical network implementing a logical network in some embodiments, with device 301A implementing the logical forwarding elements using router 310 and switch 303A.


Connections to the service nodes 302, in the depicted embodiment, are made through layer 2 switches 303. The different devices 301 connect to the cluster of service nodes 302 through different switches 303. The service nodes 302 are depicted as a cluster of service nodes 305 in an active-standby configuration that each connect to the same pair of switches. In some embodiments of an active-standby configuration, an active service node provides the L2 service while the standby service nodes drop all data messages that they receive. Failover between the active and standby service nodes is handled by the L2 service nodes with no involvement of devices 301 in some embodiments.


Devices 301, in some embodiments, send heartbeat signals between the two interfaces connected to the L2 service nodes in order to detect failure of the L2 service (e.g., a failure of all the service nodes). In some embodiments, the heartbeat signals are unidirectional heartbeat signals (e.g., a unidirectional bidirectional-forwarding-detection (BFD) session) sent from each interface to the other. The heartbeat signals, in some embodiments, use the IP address of the destination interface as the destination IP address, but use a broadcast MAC address in order to reach the current active L2 service node in the case of a failover (i.e., an active service node failing and a standby service node becoming the new active service node).



FIG. 4 conceptually illustrates a process 400 for detecting failure using the heartbeat signals. Process 400, in some embodiments, is executed by at least one device 301 and, in some embodiments, is executed by each device 301. Process 400 begins (at 410) by establishing a unidirectional session between the interface (e.g., 330A) that connects to the cluster of service nodes and the interface (e.g. 330B) of the device attached to the other switch connected to the cluster of service nodes.


The process subsequently sends (at 420) a heartbeat data message to the second device. In some embodiments, device 301A directs the data message to the IP address of the interface of the second device (e.g., 330B) using a broadcast MAC address. The heartbeat data message has a source MAC address of the interface of the first device that is learned by the switches connected to the service nodes and associated by the switches with the interfaces on which the heartbeat data message is received by the switch.


The process receives (at 430) a heartbeat data message from the second device. In some embodiments, the heartbeat messages are sent and received at intervals that are shorter than a timeout of a learned MAC address/interface pairing in the switches (e.g., 303). In some embodiments, the received message is sent from the second device directed to the IP address of the first interface using a broadcast MAC address.


At 440, the process determines that the service nodes (e.g., 302) have failed. In some embodiments, the determination is made based on a time elapsed since a last heartbeat message was received. The time elapsed to determine failure of the service nodes (e.g., 302), in some embodiments, is based on the time between heartbeat signals, e.g., 5 heartbeat signals, or on a failover time for the service nodes in a service node cluster.


Upon determining (at 440) that a service node cluster has failed, the process performs (at 450) a default operation for subsequent packets until the service is restored. In some embodiments, the default operation is forwarding all data messages to their destination without sending them to be provided the L2 service. In other embodiments, the default operation is dropping all data messages that require the L2 service until the L2 service is restored. In some embodiments, the device continues to send heartbeat data messages and determines that the service has been restored when a heartbeat is received from the other device or interface.


Additional embodiments utilize the unidirectional broadcast heartbeat signals to decrease the time between a failover and data messages being forwarded to the new active service node as well as detect a failure of the service node cluster. In embodiments with an L2 bump-in-the-wire service between any two interfaces (e.g., between interfaces of two devices, or between two interfaces of a same device) an architecture using different L2 switches between each interface and the service node cluster is used in conjunction with the unidirectional broadcast heartbeat signals to reduce the time to redirect data messages to the new active service node. FIGS. 5 and 6 conceptually illustrate processes performed by a service node and a switch, respectively, in some such embodiments.



FIG. 5 conceptually illustrates a process 500 performed by a service node in some embodiments. Process 500 begins by receiving (at 510) data messages sent from one of two interfaces in communication with each other through the service node cluster including the service node performing 500. When the service node is a standby service node, the data messages are heartbeat data messages that are addressed to an IP address associated with either one of the two interfaces of the device or devices in communication with the service node and a broadcast MAC address. In some embodiments, the heartbeat data messages are received from one of two interfaces connected to the service node cluster through a pair of switches as in FIG. 3. When the service node is an active service node, the data messages include data messages requiring the service provided by the service node cluster. In some embodiments, a data message is received with a context (e.g., an encapsulation or other marking) that is understood by the service node to identify a particular set of policies to apply to the data message. The context, in some embodiments, identifies a set of policies that are for a specific tenant.


The process then processes (at 520) the data messages at the service node. When the service node is designated as a standby service node, processing a data message, in some embodiments, comprises dropping the data message. Dropping data messages at the standby service node avoids redundant processing and, in embodiments providing a stateful service, misprocessing based on a lack of current state information. When the service node is designated, or acting, as an active service node, processing a heartbeat data message includes forwarding the data message to the destination interface without alteration.


Processing the data message at an active node, in some embodiments, includes applying tenant-specific policies to the data message. The tenant-specific policies are identified based on a context appended to the data message by the device (e.g., a gateway device) that directs the data message to the service node. Processing a data message requiring the service at an active service node includes providing the service and forwarding the data message to the destination IP address without altering the source and destination MAC addresses of the received data message.


A service node performing process 500, in some embodiments, acts as a standby service node at some times and, if an active service node fails, acts (or is designated) as the active service node at other times. The failover process between service nodes, in some embodiments, is independent of the devices sending the heartbeat data messages. In some embodiments, the service node cluster has a control or management computer or cluster that determines and designates the active service node. The control/management computer, in some embodiments, maintains its own failure detection protocol (e.g., BFD) to detect the health of the service nodes in a service node cluster and initiate a failover process.



FIG. 6 conceptually illustrates a process 600 performed by the switches, in some embodiments, to facilitate failover without the device, or devices, that send data messages to the service node cluster being aware of a service node cluster failover operation. The process begins by receiving (at 610) a data message from one of the interfaces of a device sending data messages to the service node cluster through the switch. The data message, in some embodiments, is a heartbeat data message sent from one interface to another through the switches and service node cluster. In some embodiments, the heartbeat data message uses a broadcast MAC address (i.e., FF:FF:FF:FF:FF:FF) as a destination MAC address. The heartbeat data message also includes a MAC address of the interface from which the data message was sent as a source MAC address.


The process then learns (at 620) a pairing between a port (e.g. interface) at which the data message was received and a MAC address used as a source MAC address of the received data message. The learning, in some embodiments, is accomplished through a table or other data structure that stores associations between MAC addresses and ports of the switch. The learned association is used to process subsequent data messages addressed to the MAC address by forwarding the subsequent data message to the destination from the associated port.


The process then forwards (at 630) the received heartbeat data message out all the ports other than the port on which it was received. The broadcast heartbeat data message is then received at the service nodes of the service node cluster as described in relation to operation 510 of FIG. 5 for a particular service node. As described above in relation to FIG. 5, only the active service node forwards the received heartbeat data message to the second interface through the second switch. The second switch receives the forwarded data message and associates the port connected to the active service node with the source MAC address of the heartbeat data message (i.e., the MAC address of the first interface) and forwards the heartbeat data message out all ports except for the port at which it was received as will be described in relation to operations 640 and 650 for the first switch performing process 600.


The process then receives (at 640) a heartbeat data message from the second interface through an active service node. The heartbeat data message is received from the active service node, but not the standby service nodes as only the active service node allows data messages to be forwarded towards the destination. The heartbeat data message, in some embodiments, is received by the first switch after a second switch receives the data message from the second interface. In some embodiments, the second interface sends the heartbeat data message using the second interface's MAC address as a source MAC address and a broadcast MAC address as the destination address. Based on the broadcast MAC address, the second switch floods the data message to all the service nodes as described for the first switch in operation 630.


The process then learns (at 650) a pairing between a port at which the data message was received and a MAC address used as a source MAC address of the received data message (i.e., the MAC address of the second interface). The port that is associated with the second interface's MAC address is the port connected to the active service node, because only the active service node forwards the data message to the first switch. The learned address/port pairing is stored, in some embodiments, in the same table or other data structure that stores the association between the MAC address of the first interface and the port at which the first heartbeat data message was received. The learned association is used to process subsequent data messages addressed to the MAC address of the second interface by forwarding the subsequent data message to the destination from the associated port. The switch has now learned the ports associated with the MAC addresses of the first and second interfaces and can use those learned associations to process subsequent data messages.


The process receives (at 660) a data message that requires the service provided by the service node cluster. The data message is received at the port of the switch that connects to the first interface, in some embodiments. The data message, in some embodiments, has a destination address that is the MAC address of the second interface.


The process then forwards (at 670) the data message that requires the service to the active service node. The process does not need to perform an address resolution protocol (ARP) operation to identify the port because the MAC address/port pairing was previously learned as part of learning operation 650. Additionally, if an active service node fails, the heartbeat data messages sent subsequent to the service node failover process will be forwarded by the new active service node and the MAC address/port pairings for the first and second interface MAC addresses will be remapped to the ports connected to the new active service node. One of ordinary skill in the art will understand that operations relating to heartbeat data messages are independent of operations related to data message processing for data messages received from a network connected to the device and may be omitted in some embodiments.



FIGS. 7A-B conceptually illustrates the flow of data messages in a single device embodiment 700 for learning MAC addresses. As for device 101 in FIG. 1, Device 701 serves as a gateway device between networks 710 and 720. Data message ‘1’ represents a heartbeat data message sent from an interface 730A to an interface 730C (e.g., a port) of a switch 703A. Data message ‘1’ is a heartbeat data message that has (1) a source IP address (Src IP) that is the IP address of interface 730A, (2) a source MAC address (Src MAC) that is the MAC address of interface 730A (e.g., MAC 1), (3) a destination IP address (Dst IP) that is the IP address of interface 730B, and (4) a destination MAC address that is a broadcast MAC address (e.g., FF:FF:FF:FF:FF:FF). As described above, switch 703A receives data message ‘1’ at interface 730C and learns an association between MAC 1 and interface 730C, and forwards the data message as data messages ‘2’ to all other interfaces 730D-F of the switch. Data message ‘2’ is received by service nodes 702A-C and is forwarded to interface 730G of switch 703B only by the active service node 702A as data message ‘3’ because standby service nodes 702B-C drop data messages received based on their designation as standby service nodes. Data messages ‘2’ and ‘3’ maintain the same source and destination addresses as data message ‘1’ in some embodiments.


Switch 703B learns an association between MAC 1 and interface 730G as discussed above in relation to FIG. 6. Data message ‘3’ is then forwarded to all other interfaces of switch 703B (i.e., interfaces 730H-J) as data message ‘4.’ Device 701 receives the heartbeat data message and determines that the service cluster has not failed. Standby service nodes 702B-C drop the data message. At this stage, an association between the MAC address of interface 730A and interfaces 730C and 730G is learned by switches 703A and 703B respectively.


A similar heartbeat data message sent from the interface 730B causes an association between a MAC address of interface 730B (e.g., MAC 2) with interfaces 730J and 730C to be learned by switches 703B and 703A respectively. Data message ‘5’ represents a heartbeat data message sent from an interface 730B to an interface 730J (e.g., a port) of a switch 703B. Data message ‘5’ is a heartbeat data message that has (1) a Src IP that is the IP address of interface 730B, (2) a Src MAC that is the MAC address of interface 730B (e.g., MAC 2), (3) a Dst IP that is the IP address of interface 730A, and (4) a destination MAC address that is a broadcast MAC address (e.g., FF:FF:FF:FF:FF:FF). As described above, switch 703B receives data message ‘5’ at interface 730J and learns an association between MAC 2 and interface 730J and forwards the data message as data messages ‘6’ to all other interfaces 730G-I of the switch. Data message ‘6’ is received by service nodes 702A-C and is forwarded to interface 730D of switch 703A only by the active service node 702A as data message ‘7’ because standby service nodes 702B-C drop data messages received based on their designation as standby service nodes. Data messages ‘6’ and ‘7’ maintain the same source and destination addresses as data message ‘5’ in some embodiments.


Switch 703A learns an association between MAC 2 and interface 730D as discussed above in relation to FIG. 6. Data message ‘7’ is then forwarded to all other interfaces of switch 703A (i.e., interfaces 730C, E, and F) as data message ‘8.’ Device 701 receives the heartbeat data message and determines that the service cluster has not failed. Standby service nodes 702B-C drop the data message. At this stage, an association between the MAC address of interface 730B and interfaces 730D and 730J is learned by switches 703A and 703B respectively.



FIG. 8 conceptually illustrates the processing of a data message requiring a service provided by the service node cluster 705 after the switches have learned MAC address/interface associations from the data messages depicted in FIG. 7 or in other ways, such as by using an address resolution protocol (ARP) operation. Data message ‘9’ represents a data message requiring the service provided by service node cluster 705. Data message ‘9’ has (1) a Src IP that is the IP address of interface 730A, (2) a Src MAC that is the MAC address of interface 730A (e.g., MAC 1), (3) a Dst IP that is the IP address of interface 730B, and (4) a destination MAC address that is a MAC address of interface 730B (e.g., MAC 2). Data message ‘9’ is sent from interface 730A to interface 730C of switch 703A.


Upon receiving the data message, switch 703A consults the table or other data structure storing the MAC/interface associations to determine that MAC 2 (i.e., the destination MAC address) is associated with interface 730D and sends, as data message ‘10,’ the data message to service node 702A using interface 730D. Service node 702A processes the data message, including providing the service provided by the service node cluster 705 and sends the processed data message as data message ‘11’ to interface 730G of switch 703B. Upon receiving data message ‘11,’ switch 703B consults the table or other data structure storing the MAC/interface associations to determine that MAC 2 (i.e., the destination MAC address) is associated with interface 730J and sends, as data message ‘12,’ the data message to interface 730B using interface 730J. Return data messages are handled similarly.



FIGS. 9A-B conceptually illustrate the path of a data message after a failover, before and after a subsequent heartbeat message is sent from an interface 730 of device 701. FIG. 9A illustrates the failure of service node 702A and service node 702B being designated as the new active service node. After the failure of service node 702A, data message ‘13’ is sent from interface 730A with the same Src IP, Src MAC, Dst IP, and Dst MAC as data message ‘9.’ Switch 703A sends data message ‘14’ to service node 702A based on the association previously learned between MAC 2 and interface 730D, however, service node 702A has failed and the data message is lost. In a setup without the heartbeat data messages described in FIGS. 7A-B, the data messages in both directions would continue to be dropped (i.e., black-holed) until a timeout of the learned MAC address/interface associations, at which point a new learning operation (e.g. an ARP operation) would be performed indicating that the MAC address should be associated with the interface connected to the new active service node.


If, however, heartbeat data message ‘15’ is sent from interface 730B (using the same combination of Src IP, Src MAC, Dst IP, and Dst MAC as data message ‘5’), switch 703B once again floods the data message as data messages ‘16’ as described in relation to data message ‘6’ and the new active service node 702B receives and forwards the data message to switch 703A (not depicted). This causes switch 703A to update its MAC address/interface table or other data structure to indicate an association between MAC 2 and interface 730E connected to service node 702B. Using this updated association allows subsequently received data message requiring the service provided by service node cluster 705 to follow a path illustrated by data messages ‘17’-‘20’ without any change in the set of Src IP, Src MAC, Dst IP, and Dst MAC at the device 701 for data messages going in the same direction. Heartbeat data messages are sent at time intervals that are shorter than a timeout interval for learned MAC address/interface associations so that in the case of service node failover, the service is restored based on the shorter heartbeat data message interval rather than the longer timeout interval for learned MAC address/interface associations.



FIGS. 10A-B conceptually illustrates an embodiment in which the heartbeat data messages are used to detect failure of a service node cluster as discussed in relation to FIG. 4. FIG. 10A illustrates the same elements as in FIG. 3, however in FIG. 10A two of the three service nodes 302 have failed (i.e., 302A and 302C). A first heartbeat data message, data message ‘1,’ is sent from interface 330A to interface 330B. Data message ‘1’ traverses switch 303A, service node 302B and switch 303B before arriving at interface 330B. a heartbeat data message, data message ‘2,’ is sent from interface 330B to interface 330A traversing switch 303B, service node 302B and switch 303A before being received by device 301A at interface 330A. As described in relation to FIG. 7, data messages ‘3’ and ‘4’ represent the rest of the datapath for heartbeat data messages. These heartbeat data messages are used to determine that the service node cluster 305 is still functioning (e.g., still providing the service).



FIG. 10B illustrates a heartbeat data message being unable to reach a destination interface after the failure of all the service nodes 302 in service node cluster 305. Data messages ‘5’ and ‘6’ represent heartbeat data messages that are sent by interface 330A and 330B respectively. Data messages ‘5’ and ‘6’ arrive at switches 303A and 303B respectively, are forwarded to all the service nodes 302A-C, as data messages ‘7’ and ‘8’ respectively, based on the broadcast destination MAC address, but are not forwarded towards the other interface because the service nodes have failed. In some embodiments, the failure of the service nodes is based on a connection failure between the switches and the service node or between the interface of the devices 301 and a switch 303. One of ordinary skill in the art would understand that the same service node cluster failure detection would function in the same way between two interfaces of a single device. In embodiments in which the two interfaces belong to a same device, failure detection may also be based on the fact that data messages the device sends out one interface are not received at the other interface which may enable faster failure detection than a system that is not aware of when heartbeat data messages are sent by the other device.


As discussed above in relation to FIG. 4, after a certain time interval (e.g., representing a certain number of missed heartbeat data messages) during which a heartbeat data message has not been received, devices 301 determine that the service node cluster 305 has failed and perform a default operation for data messages requiring the service provided by the service node cluster 305. In some embodiments, the default operation is to forward the data messages without providing the service (e.g., a fail-open condition) while in other embodiments, the default operation is to drop the data messages requiring the service (e.g., a fail-closed condition) until the service is restored. A fail-open condition may be more appropriate for services such as load balancing where security is not an issue while fail-closed may be more appropriate for a firewall operation relating to security and a network address translation (NAT) service which generally requires state information that is maintained by the service node providing the service.



FIG. 11 illustrates an embodiment including gateway device 701A and gateway device 701B that each act at a border between network 710 (e.g., an external network) and network 720 (e.g., an internal/logical network). The elements of FIG. 11 act as the similarly numbered elements of FIG. 7 with the additional designation of one of the devices 701 as the active gateway device (e.g., gateway device 701A). The active gateway device 701A, in some embodiments receives all data messages exchanged between the networks 710 and 720. In some embodiments, the gateway devices also execute centralized aspects of a logical router for a logical network implemented in network 720. In some embodiments using a centralized logical router in the gateway devices, only one gateway device provides the centralized logical router services.



FIG. 12 conceptually illustrates an electronic system 1200 with which some embodiments of the invention are implemented. The electronic system 1200 can be used to execute any of the control, virtualization, or operating system applications described above. The electronic system 1200 may be a computer (e.g., a desktop computer, personal computer, tablet computer, server computer, mainframe, a blade computer etc.), phone, PDA, or any other sort of electronic device. Such an electronic system includes various types of computer readable media and interfaces for various other types of computer readable media. Electronic system 1200 includes a bus 1205, processing unit(s) 1210, a system memory 1225, a read-only memory (ROM) 1230, a permanent storage device 1235, input devices 1240, and output devices 1245.


The bus 1205 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 1200. For instance, the bus 1205 communicatively connects the processing unit(s) 1210 with the read-only memory 1230, the system memory 1225, and the permanent storage device 1235.


From these various memory units, the processing unit(s) 1210 retrieve instructions to execute and data to process in order to execute the processes of the invention. The processing unit(s) may be a single processor or a multi-core processor in different embodiments.


The read-only-memory 1230 stores static data and instructions that are needed by the processing unit(s) 1210 and other modules of the electronic system. The permanent storage device 1235, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the electronic system 1200 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 1235.


Other embodiments use a removable storage device (such as a floppy disk, flash drive, etc.) as the permanent storage device. Like the permanent storage device 1235, the system memory 1225 is a read-and-write memory device. However, unlike storage device 1235, the system memory is a volatile read-and-write memory, such as random access memory. The system memory stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention's processes are stored in the system memory 1225, the permanent storage device 1235, and/or the read-only memory 1230. From these various memory units, the processing unit(s) 1210 retrieve instructions to execute and data to process in order to execute the processes of some embodiments.


The bus 1205 also connects to the input and output devices 1240 and 1245. The input devices enable the user to communicate information and select commands to the electronic system. The input devices 1240 include alphanumeric keyboards and pointing devices (also called “cursor control devices”). The output devices 1245 display images generated by the electronic system. The output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some embodiments include devices such as a touchscreen that function as both input and output devices.


Finally, as shown in FIG. 12, bus 1205 also couples electronic system 1200 to a network 1265 through a network adapter (not shown). In this manner, the computer can be a 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 components of electronic system 1200 may be used in conjunction with the invention.


Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (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 discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.


While the above discussion primarily refers to microprocessor or multi-core processors that execute 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 that are stored on the circuit itself.


As used in this specification, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification, the terms “computer readable medium,” “computer readable media,” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.


This specification refers throughout to computational and network environments that include virtual machines (VMs). However, virtual machines are merely one example of data compute nodes (DCNs) or data compute end nodes, also referred to as addressable nodes. DCNs may include non-virtualized physical hosts, virtual machines, containers that run on top of a host operating system without the need for a hypervisor or separate operating system, and hypervisor kernel network interface modules.


VMs, in some embodiments, operate with their own guest operating systems on a host machine using resources of the host machine virtualized by virtualization software (e.g., a hypervisor, virtual machine monitor, etc.). The tenant (i.e., the owner of the VM) can choose which applications to operate on top of the guest operating system. Some containers, on the other hand, are constructs that run on top of a host operating system without the need for a hypervisor or separate guest operating system. In some embodiments, the host operating system uses name spaces to isolate the containers from each other and therefore provides operating-system level segregation of the different groups of applications that operate within different containers. This segregation is akin to the VM segregation that is offered in hypervisor-virtualized environments that virtualize system hardware, and thus can be viewed as a form of virtualization that isolates different groups of applications that operate in different containers. Such containers are more lightweight than VMs.


Hypervisor kernel network interface modules, in some embodiments, is a non-VM DCN that includes a network stack with a hypervisor kernel network interface and receive/transmit threads. One example of a hypervisor kernel network interface module is the vmknic module that is part of the ESXi™ hypervisor of VMware, Inc.


It should be understood that while the specification refers to VMs, the examples given could be any type of DCNs, including physical hosts, VMs, non-VM containers, and hypervisor kernel network interface modules. In fact, the example networks could include combinations of different types of DCNs in some embodiments.


While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. In addition, a number of the figures (including FIGS. 2 and 4-6) conceptually illustrate processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, the process could be implemented using several sub-processes, or as part of a larger macro process. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.

Claims
  • 1. A method to perform a service at a gateway of a network, the method comprising: at the gateway: receiving a data message that requires a particular service provided by a service node that connects to the gateway through first and second interfaces of the gateway;sending the data message to the service node from the first interface of the gateway; andreceiving the data message from the service node through the second interface after the service node performs the particular service on the data message.
  • 2. The method of claim 1, wherein the particular service does not change layer 2 (L2) addresses associated with the data message, and sending the data message comprises sending the data message using the media access control (MAC) address of the second interface.
  • 3. The method of claim 2, wherein the first interface has a media access control (MAC) address and internet protocol (IP) address that is different from the MAC and IP addresses of the second interface.
  • 4. The method of claim 2, wherein the service node sends the data message to the second interface using a destination MAC address that is the MAC address of the second interface.
  • 5. The method of claim 1, wherein gateway connects to the service node through first and second switches with the first interface associated with the first switch and the second interface associated with the second switch.
  • 6. The method of claim 1, wherein the gateway is a gateway deployed at a boundary of a logical network and an external network, the logical network defined over a shared physical network.
  • 7. The method of claim 1, wherein the service node is a first service node that is one of a plurality of service nodes configured as a cluster of service nodes to provide the particular service.
  • 8. The method of claim 7, wherein the cluster of service nodes is configured in an active-standby configuration in which the first service node is an active service node.
  • 9. The method of claim 8, wherein standby service nodes drop received data messages.
  • 10. The method of claim 1, wherein the service node comprises one of a virtual machine, an appliance, a data compute node, a container, and a server.
  • 11. A non-transitory machine readable medium storing a program for execution by a set of processing units to implement a gateway of a network, the program comprising sets of instructions for: receiving a data message that requires a particular service provided by a service node that connects to the gateway through first and second interfaces of the gateway;sending the data message to the service node from the first interface of the gateway; andreceiving the data message from the service node through the second interface after the service node performs the particular service on the data message.
  • 12. The non-transitory machine readable medium of claim 11, wherein the particular service does not change layer 2 (L2) addresses associated with the data message, and sending the data message comprises sending the data message using the media access control (MAC) address of the second interface.
  • 13. The non-transitory machine readable medium of claim 12, wherein the first interface has a media access control (MAC) address and internet protocol (IP) address that is different from the MAC and IP addresses of the second interface.
  • 14. The non-transitory machine readable medium of claim 12, wherein the service node sends the data message to the second interface using a destination MAC address that is the MAC address of the second interface.
  • 15. The non-transitory machine readable medium of claim 11, wherein gateway connects to the service node through first and second switches with the first interface associated with the first switch and the second interface associated with the second switch.
  • 16. The non-transitory machine readable medium of claim 11, wherein the gateway is a gateway deployed at a boundary of a logical network and an external network, the logical network defined over a shared physical network.
  • 17. The non-transitory machine readable medium of claim 11, wherein the service node is a first service node that is one of a plurality of service nodes configured as a cluster of service nodes to provide the particular service.
  • 18. The non-transitory machine readable medium of claim 17, wherein the cluster of service nodes is configured in an active-standby configuration in which the first service node is an active service node.
  • 19. The non-transitory machine readable medium of claim 18, wherein standby service nodes drop received data messages.
  • 20. The non-transitory machine readable medium of claim 11, wherein the service node comprises one of a virtual machine, an appliance, a data compute node, a container, and a server.
CLAIM OF BENEFIT TO PRIOR APPLICATIONS

This application is a continuation application of U.S. patent application Ser. No. 16/945,868, filed Aug. 1, 2020, now published as U.S. Patent Publication 2020/0366584. U.S. patent application Ser. No. 16/945,868 is a continuation application of U.S. patent application Ser. No. 15/937,621, filed Mar. 27, 2018, now issued as U.S. Pat. No. 10,805,192. U.S. patent application Ser. No. 16/945,868, now published as U.S. Patent Publication 2020/0366584, and U.S. patent application Ser. No. 15/937,621, now issued as U.S. Pat. No. 10,805,192 are incorporated herein by reference.

US Referenced Citations (845)
Number Name Date Kind
6006264 Colby et al. Dec 1999 A
6104700 Haddock et al. Aug 2000 A
6154448 Petersen et al. Nov 2000 A
6772211 Lu et al. Aug 2004 B2
6779030 Dugan et al. Aug 2004 B1
6826694 Dutta et al. Nov 2004 B1
6880089 Bommareddy et al. Apr 2005 B1
6985956 Luke et al. Jan 2006 B2
7013389 Srivastava et al. Mar 2006 B1
7209977 Acharya et al. Apr 2007 B2
7239639 Cox et al. Jul 2007 B2
7379465 Aysan et al. May 2008 B2
7406540 Acharya et al. Jul 2008 B2
7447775 Zhu et al. Nov 2008 B1
7480737 Chauffour et al. Jan 2009 B2
7487250 Siegel Feb 2009 B2
7499463 Droux et al. Mar 2009 B1
7649890 Mizutani et al. Jan 2010 B2
7698458 Liu et al. Apr 2010 B1
7818452 Matthews et al. Oct 2010 B2
7898959 Arad Mar 2011 B1
7921174 Denise Apr 2011 B1
7948986 Ghosh et al. May 2011 B1
8078903 Parthasarathy et al. Dec 2011 B1
8094575 Vadlakonda et al. Jan 2012 B1
8175863 Ostermeyer et al. May 2012 B1
8190767 Maufer et al. May 2012 B1
8201219 Jones Jun 2012 B2
8223634 Tanaka et al. Jul 2012 B2
8224885 Doucette et al. Jul 2012 B1
8230493 Davidson et al. Jul 2012 B2
3266261 Akagi Sep 2012 A1
8339959 Moisand et al. Dec 2012 B1
8451735 Li May 2013 B2
8484348 Subramanian et al. Jul 2013 B2
8488577 Macpherson Jul 2013 B1
3521879 Pena et al. Aug 2013 A1
8615009 Ramamoorthi et al. Dec 2013 B1
8707383 Bade et al. Apr 2014 B2
8738702 Belanger et al. May 2014 B1
8743885 Khan et al. Jun 2014 B2
8804720 Rainovic et al. Aug 2014 B1
8804746 Wu et al. Aug 2014 B2
8811412 Shippy Aug 2014 B2
8830834 Sharma et al. Sep 2014 B2
8832683 Heim Sep 2014 B2
8849746 Candea et al. Sep 2014 B2
8856518 Sridharan et al. Oct 2014 B2
8862883 Cherukuri et al. Oct 2014 B2
8868711 Skjolsvold et al. Oct 2014 B2
8873399 Bothos et al. Oct 2014 B2
8874789 Zhu Oct 2014 B1
8892706 Dalal Nov 2014 B1
8913611 Koponen et al. Dec 2014 B2
8914406 Haugsnes et al. Dec 2014 B1
8966024 Koponen et al. Feb 2015 B2
8966029 Zhang et al. Feb 2015 B2
8971345 McCanne et al. Mar 2015 B1
8989192 Oo et al. Mar 2015 B2
8996610 Sureshchandra et al. Mar 2015 B1
9009289 Jacob Apr 2015 B1
9015823 Koponen et al. Apr 2015 B2
9094464 Scharber et al. Jul 2015 B1
9104497 Mortazavi Aug 2015 B2
9148367 Kandaswamy et al. Sep 2015 B2
9172603 Padmanabhan et al. Oct 2015 B2
9178709 Higashida et al. Nov 2015 B2
9191293 Iovene et al. Nov 2015 B2
9195491 Zhang et al. Nov 2015 B2
9203748 Jiang et al. Dec 2015 B2
9225638 Jain et al. Dec 2015 B2
9225659 McCanne et al. Dec 2015 B2
9232342 Seed et al. Jan 2016 B2
9237098 Patel et al. Jan 2016 B2
9256467 Singh et al. Feb 2016 B1
9258742 Pianigiani et al. Feb 2016 B1
9264313 Manuguri et al. Feb 2016 B1
9277412 Freda et al. Mar 2016 B2
9344337 Kumar et al. May 2016 B2
9363183 Kumar et al. Jun 2016 B2
9397946 Yadav Jul 2016 B1
9407540 Kumar et al. Aug 2016 B2
9407599 Koponen et al. Aug 2016 B2
9419897 Cherian et al. Aug 2016 B2
9442752 Roth et al. Sep 2016 B1
9467382 Kumar et al. Oct 2016 B2
9479358 Klosowski et al. Oct 2016 B2
9503530 Niedzielski Nov 2016 B1
9531590 Jain et al. Dec 2016 B2
9577845 Thakkar et al. Feb 2017 B2
9602380 Strassner Mar 2017 B2
9608896 Kumar et al. Mar 2017 B2
9660905 Dunbar et al. May 2017 B2
9686192 Sengupta et al. Jun 2017 B2
9686200 Pettit et al. Jun 2017 B2
9705702 Foo et al. Jul 2017 B2
9705775 Zhang et al. Jul 2017 B2
9749229 Previdi et al. Aug 2017 B2
9755898 Jain et al. Sep 2017 B2
9755971 Wang et al. Sep 2017 B2
9774537 Jain et al. Sep 2017 B2
9787559 Schroeder Oct 2017 B1
9787605 Zhang et al. Oct 2017 B2
9804797 Ng et al. Oct 2017 B1
9825810 Jain et al. Nov 2017 B2
9860079 Cohn et al. Jan 2018 B2
9900410 Dalal Feb 2018 B2
9935827 Jain et al. Apr 2018 B2
9979641 Jain et al. May 2018 B2
9985896 Koponen et al. May 2018 B2
9996380 Singh et al. Jun 2018 B2
10013276 Fahs et al. Jul 2018 B2
10042722 Chigurupati et al. Aug 2018 B1
10075470 Vaidya et al. Sep 2018 B2
10079779 Zhang et al. Sep 2018 B2
10084703 Kumar et al. Sep 2018 B2
10089127 Padmanabhan et al. Oct 2018 B2
10091276 Bloomquist et al. Oct 2018 B2
10104169 Moniz et al. Oct 2018 B1
10129077 Jain et al. Nov 2018 B2
10129180 Zhang et al. Nov 2018 B2
10135636 Jiang et al. Nov 2018 B2
10135737 Jain et al. Nov 2018 B2
10158573 Lee et al. Dec 2018 B1
10187306 Nainar et al. Jan 2019 B2
10200493 Bendapudi et al. Feb 2019 B2
10212071 Kancherla et al. Feb 2019 B2
10225137 Jain et al. Mar 2019 B2
10237379 Kumar et al. Mar 2019 B2
10250501 Ni Apr 2019 B2
10257095 Jain et al. Apr 2019 B2
10284390 Kumar et al. May 2019 B2
10305822 Tao et al. May 2019 B2
10320679 Jain et al. Jun 2019 B2
10333822 Jeuk et al. Jun 2019 B1
10341233 Jain et al. Jul 2019 B2
10341427 Jalan et al. Jul 2019 B2
10375155 Cai et al. Aug 2019 B1
10390285 Zhou Aug 2019 B2
10397275 Jain et al. Aug 2019 B2
10445509 Thota et al. Oct 2019 B2
10484334 Lee et al. Nov 2019 B1
10514941 Zhang et al. Dec 2019 B2
10516568 Jain et al. Dec 2019 B2
10547508 Kanakarajan Jan 2020 B1
10547692 Salgueiro et al. Jan 2020 B2
10554484 Chanda et al. Feb 2020 B2
10594743 Hong et al. Mar 2020 B2
10609091 Hong et al. Mar 2020 B2
10609122 Argenti et al. Mar 2020 B1
10623309 Gampel et al. Apr 2020 B1
10637750 Bollineni et al. Apr 2020 B1
10645060 Ao et al. May 2020 B2
10645201 Mishra et al. May 2020 B2
10659252 Boutros et al. May 2020 B2
10693782 Jain et al. Jun 2020 B2
10700891 Hao et al. Jun 2020 B2
10708229 Sevinc et al. Jul 2020 B2
10728174 Boutros et al. Jul 2020 B2
10735311 Li Aug 2020 B2
10742544 Roeland et al. Aug 2020 B2
10757077 Rajahalme et al. Aug 2020 B2
10797910 Boutros et al. Oct 2020 B2
10797966 Boutros et al. Oct 2020 B2
10802858 Gunda Oct 2020 B2
10805181 Boutros et al. Oct 2020 B2
10805192 Boutros et al. Oct 2020 B2
10812378 Nainar et al. Oct 2020 B2
10826835 Ruckstuhl et al. Nov 2020 B2
10834004 Yigit et al. Nov 2020 B2
10853111 Gupta et al. Dec 2020 B1
10929171 Gokhale et al. Feb 2021 B2
10931793 Kumar et al. Feb 2021 B2
10938668 Zulak et al. Mar 2021 B1
10938716 Chin et al. Mar 2021 B1
10944673 Naveen et al. Mar 2021 B2
10949244 Naveen et al. Mar 2021 B2
10997177 Towes et al. May 2021 B1
11003482 Rolando et al. May 2021 B2
11012351 Feng et al. May 2021 B2
11012420 Sevinc et al. May 2021 B2
11026047 Greenberger et al. Jun 2021 B2
11036538 Ecuyer et al. Jun 2021 B2
11038782 Boutros et al. Jun 2021 B2
11042397 Mishra et al. Jun 2021 B2
11055273 Meduri et al. Jul 2021 B1
11074097 Naveen et al. Jul 2021 B2
11075839 Zhuang et al. Jul 2021 B2
11075842 Jain et al. Jul 2021 B2
11086654 Rolando et al. Aug 2021 B2
11119804 Gokhale et al. Sep 2021 B2
11140218 Tidemann et al. Oct 2021 B2
11153190 Mahajan et al. Oct 2021 B1
11153406 Sawant et al. Oct 2021 B2
11157304 Watt, Jr. et al. Oct 2021 B2
11184397 Annadata et al. Nov 2021 B2
11194610 Mundaragi et al. Dec 2021 B2
11212356 Rolando et al. Dec 2021 B2
11223494 Mishra et al. Jan 2022 B2
11249784 Chalvadi et al. Feb 2022 B2
11265187 Boutros et al. Mar 2022 B2
11277331 Rolando et al. Mar 2022 B2
11283717 Tidemann et al. Mar 2022 B2
11288088 Rolando et al. Mar 2022 B2
11294703 Rolando et al. Apr 2022 B2
11296930 Jain et al. Apr 2022 B2
11301281 Rolando et al. Apr 2022 B2
11316900 Schottland et al. Apr 2022 B1
11321113 Feng et al. May 2022 B2
11354148 Rolando et al. Jun 2022 B2
11360796 Mishra et al. Jun 2022 B2
11368387 Rolando et al. Jun 2022 B2
11397604 Mundaragi et al. Jul 2022 B2
11398983 Wijnands et al. Jul 2022 B2
11405431 Hong et al. Aug 2022 B2
11411863 Zhang et al. Aug 2022 B2
11438257 Rolando et al. Sep 2022 B2
11438267 Jain et al. Sep 2022 B2
11467861 Kavathia et al. Oct 2022 B2
11496606 Jain et al. Nov 2022 B2
11528213 Venkatasubbaiah et al. Dec 2022 B2
11528219 Rolando et al. Dec 2022 B2
11595250 Naveen et al. Feb 2023 B2
11604666 Feng et al. Mar 2023 B2
11609781 Mishra et al. Mar 2023 B2
11611625 Jain et al. Mar 2023 B2
11659061 Sawant et al. May 2023 B2
20020010783 Primak et al. Jan 2002 A1
20020078370 Tahan Jun 2002 A1
20020097724 Halme et al. Jul 2002 A1
20020194350 Lu et al. Dec 2002 A1
20030065711 Acharya et al. Apr 2003 A1
20030093481 Mitchell et al. May 2003 A1
20030097429 Wu et al. May 2003 A1
20030105812 Flowers et al. Jun 2003 A1
20030188026 Denton et al. Oct 2003 A1
20030236813 Abjanic Dec 2003 A1
20040066769 Ahmavaara et al. Apr 2004 A1
20040210670 Anerousis et al. Oct 2004 A1
20040215703 Song et al. Oct 2004 A1
20040249776 Horvitz et al. Dec 2004 A1
20050021713 Dugan et al. Jan 2005 A1
20050089327 Ovadia et al. Apr 2005 A1
20050091396 Nilakantan et al. Apr 2005 A1
20050114429 Caccavale May 2005 A1
20050114648 Akundi et al. May 2005 A1
20050132030 Hopen et al. Jun 2005 A1
20050198200 Subramanian et al. Sep 2005 A1
20050249199 Albert et al. Nov 2005 A1
20060069776 Shim et al. Mar 2006 A1
20060112297 Davidson May 2006 A1
20060130133 Andreev et al. Jun 2006 A1
20060155862 Kathi et al. Jul 2006 A1
20060195896 Fulp et al. Aug 2006 A1
20060233155 Srivastava Oct 2006 A1
20070061492 Riel Mar 2007 A1
20070121615 Weill et al. May 2007 A1
20070153782 Fletcher et al. Jul 2007 A1
20070214282 Sen Sep 2007 A1
20070248091 Khalid et al. Oct 2007 A1
20070260750 Feied et al. Nov 2007 A1
20070288615 Keohane et al. Dec 2007 A1
20070291773 Khan et al. Dec 2007 A1
20080005293 Bhargava et al. Jan 2008 A1
20080031263 Ervin et al. Feb 2008 A1
20080046400 Shi et al. Feb 2008 A1
20080049614 Briscoe et al. Feb 2008 A1
20080049619 Twiss Feb 2008 A1
20080049786 Ram et al. Feb 2008 A1
20080072305 Casado et al. Mar 2008 A1
20080084819 Parizhsky et al. Apr 2008 A1
20080095153 Fukunaga et al. Apr 2008 A1
20080104608 Tyser et al. May 2008 A1
20080195755 Lu et al. Aug 2008 A1
20080225714 Denis Sep 2008 A1
20080239991 Applegate et al. Oct 2008 A1
20080247396 Hazard Oct 2008 A1
20080276085 Davidson et al. Nov 2008 A1
20080279196 Friskney et al. Nov 2008 A1
20090003349 Havemann et al. Jan 2009 A1
20090003364 Fendick et al. Jan 2009 A1
20090003375 Havemann et al. Jan 2009 A1
20090019135 Eswaran et al. Jan 2009 A1
20090037713 Khalid et al. Feb 2009 A1
20090063706 Goldman et al. Mar 2009 A1
20090129271 Ramankutty et al. May 2009 A1
20090172666 Yahalom et al. Jul 2009 A1
20090190506 Belling et al. Jul 2009 A1
20090199268 Ahmavaara et al. Aug 2009 A1
20090235325 Dimitrakos et al. Sep 2009 A1
20090238084 Nadeau et al. Sep 2009 A1
20090249472 Itvin et al. Oct 2009 A1
20090265467 Peles et al. Oct 2009 A1
20090271586 Shaath Oct 2009 A1
20090299791 Blake et al. Dec 2009 A1
20090300210 Ferris Dec 2009 A1
20090303880 Maltz et al. Dec 2009 A1
20090307334 Maltz et al. Dec 2009 A1
20090327464 Archer et al. Dec 2009 A1
20100031360 Seshadri et al. Feb 2010 A1
20100036903 Ahmad et al. Feb 2010 A1
20100100616 Bryson et al. Apr 2010 A1
20100131638 Kondamuru May 2010 A1
20100165985 Sharma et al. Jul 2010 A1
20100223364 Wei Sep 2010 A1
20100223621 Joshi et al. Sep 2010 A1
20100235915 Memon et al. Sep 2010 A1
20100254385 Sharma et al. Oct 2010 A1
20100257278 Gunturu Oct 2010 A1
20100265824 Chao et al. Oct 2010 A1
20100281482 Pike et al. Nov 2010 A1
20100332595 Fullagar et al. Dec 2010 A1
20110010578 Dominguez et al. Jan 2011 A1
20110016348 Pace et al. Jan 2011 A1
20110022695 Dalal et al. Jan 2011 A1
20110022812 Van Der Linden et al. Jan 2011 A1
20110035494 Pandey et al. Feb 2011 A1
20110040893 Karaoguz et al. Feb 2011 A1
20110055845 Nandagopal et al. Mar 2011 A1
20110058563 Saraph et al. Mar 2011 A1
20110090912 Shippy Apr 2011 A1
20110164504 Bothos et al. Jul 2011 A1
20110194563 Shen et al. Aug 2011 A1
20110211463 Matityahu et al. Sep 2011 A1
20110225293 Rathod Sep 2011 A1
20110235508 Goel et al. Sep 2011 A1
20110261811 Battestilli et al. Oct 2011 A1
20110268118 Schlansker et al. Nov 2011 A1
20110271007 Wang et al. Nov 2011 A1
20110276695 Maldaner Nov 2011 A1
20110283013 Grosser et al. Nov 2011 A1
20110295991 Aida Dec 2011 A1
20110317708 Clark Dec 2011 A1
20120005265 Ushioda et al. Jan 2012 A1
20120011281 Hamada et al. Jan 2012 A1
20120014386 Xiong et al. Jan 2012 A1
20120023231 Ueno Jan 2012 A1
20120054266 Kazerani et al. Mar 2012 A1
20120089664 Igelka Apr 2012 A1
20120110577 Chen et al. May 2012 A1
20120137004 Smith May 2012 A1
20120140719 Hui et al. Jun 2012 A1
20120144014 Natham et al. Jun 2012 A1
20120147894 Mulligan et al. Jun 2012 A1
20120155266 Patel et al. Jun 2012 A1
20120176932 Wu et al. Jul 2012 A1
20120185588 Error Jul 2012 A1
20120195196 Ghai et al. Aug 2012 A1
20120207174 Shieh Aug 2012 A1
20120213074 Goldfarb et al. Aug 2012 A1
20120230187 Tremblay et al. Sep 2012 A1
20120239804 Liu et al. Sep 2012 A1
20120246637 Kreeger et al. Sep 2012 A1
20120266252 Spiers et al. Oct 2012 A1
20120281540 Khan et al. Nov 2012 A1
20120287789 Aybay et al. Nov 2012 A1
20120303784 Zisapel et al. Nov 2012 A1
20120303809 Patel et al. Nov 2012 A1
20120311568 Jansen Dec 2012 A1
20120317260 Husain et al. Dec 2012 A1
20120317570 Dalcher et al. Dec 2012 A1
20120331188 Riordan et al. Dec 2012 A1
20130003735 Chao et al. Jan 2013 A1
20130021942 Bacthu et al. Jan 2013 A1
20130031544 Sridharan et al. Jan 2013 A1
20130039218 Narasimhan et al. Feb 2013 A1
20130044636 Koponen et al. Feb 2013 A1
20130058346 Sridharan et al. Mar 2013 A1
20130073743 Ramasamy et al. Mar 2013 A1
20130100851 Bacthu et al. Apr 2013 A1
20130125120 Zhang et al. May 2013 A1
20130136126 Wang et al. May 2013 A1
20130142048 Gross, IV et al. Jun 2013 A1
20130148505 Koponen et al. Jun 2013 A1
20130151661 Koponen et al. Jun 2013 A1
20130159487 Patel et al. Jun 2013 A1
20130160024 Shtilman et al. Jun 2013 A1
20130163594 Sharma et al. Jun 2013 A1
20130166703 Hammer et al. Jun 2013 A1
20130170501 Egi et al. Jul 2013 A1
20130201989 Hu et al. Aug 2013 A1
20130227097 Yasuda et al. Aug 2013 A1
20130227550 Weinstein et al. Aug 2013 A1
20130287026 Davie Oct 2013 A1
20130287036 Banavalikar et al. Oct 2013 A1
20130291088 Shieh et al. Oct 2013 A1
20130297798 Arisoylu et al. Nov 2013 A1
20130301472 Allan Nov 2013 A1
20130311637 Kamath et al. Nov 2013 A1
20130318219 Kancherla Nov 2013 A1
20130322446 Biswas et al. Dec 2013 A1
20130332983 Koorevaar et al. Dec 2013 A1
20130336319 Liu et al. Dec 2013 A1
20130343174 Guichard et al. Dec 2013 A1
20130343378 Veteikis et al. Dec 2013 A1
20140003232 Guichard et al. Jan 2014 A1
20140003422 Mogul et al. Jan 2014 A1
20140010085 Kavunder et al. Jan 2014 A1
20140029447 Schrum, Jr. Jan 2014 A1
20140046997 Dain et al. Feb 2014 A1
20140046998 Dain et al. Feb 2014 A1
20140050223 Foo et al. Feb 2014 A1
20140052844 Nayak et al. Feb 2014 A1
20140059204 Nguyen et al. Feb 2014 A1
20140059544 Koganty et al. Feb 2014 A1
20140068602 Gember et al. Mar 2014 A1
20140092738 Grandhi et al. Apr 2014 A1
20140092906 Kandaswamy et al. Apr 2014 A1
20140092914 Kondapalli Apr 2014 A1
20140096183 Jain et al. Apr 2014 A1
20140101226 Khandekar et al. Apr 2014 A1
20140101656 Zhu et al. Apr 2014 A1
20140108665 Arora et al. Apr 2014 A1
20140115578 Cooper et al. Apr 2014 A1
20140129715 Mortazavi May 2014 A1
20140149696 Frenkel et al. May 2014 A1
20140164477 Springer et al. Jun 2014 A1
20140169168 Jalan et al. Jun 2014 A1
20140169375 Khan et al. Jun 2014 A1
20140195666 Dumitriu et al. Jul 2014 A1
20140207968 Kumar et al. Jul 2014 A1
20140254374 Janakiraman et al. Sep 2014 A1
20140254591 Mahadevan et al. Sep 2014 A1
20140269487 Kalkunte Sep 2014 A1
20140269717 Thubert et al. Sep 2014 A1
20140269724 Mehler et al. Sep 2014 A1
20140280896 Papakostas et al. Sep 2014 A1
20140281029 Danforth Sep 2014 A1
20140282526 Basavaiah et al. Sep 2014 A1
20140301388 Jagadish et al. Oct 2014 A1
20140304231 Kamath et al. Oct 2014 A1
20140307744 Dunbar et al. Oct 2014 A1
20140310391 Sorenson et al. Oct 2014 A1
20140310418 Sorenson et al. Oct 2014 A1
20140317677 Vaidya et al. Oct 2014 A1
20140321459 Kumar et al. Oct 2014 A1
20140330983 Zisapel et al. Nov 2014 A1
20140334485 Jain et al. Nov 2014 A1
20140334488 Guichard et al. Nov 2014 A1
20140341029 Allan et al. Nov 2014 A1
20140351452 Bosch et al. Nov 2014 A1
20140362682 Guichard et al. Dec 2014 A1
20140362705 Pan Dec 2014 A1
20140369204 Anand et al. Dec 2014 A1
20140372567 Ganesh et al. Dec 2014 A1
20140372616 Arisoylu et al. Dec 2014 A1
20140372702 Subramanyam et al. Dec 2014 A1
20150003453 Sengupta et al. Jan 2015 A1
20150003455 Haddad et al. Jan 2015 A1
20150009995 Gross, IV et al. Jan 2015 A1
20150016279 Zhang et al. Jan 2015 A1
20150023354 Li et al. Jan 2015 A1
20150026345 Ravinoothala et al. Jan 2015 A1
20150026362 Guichard et al. Jan 2015 A1
20150030024 Venkataswami et al. Jan 2015 A1
20150052262 Chanda et al. Feb 2015 A1
20150052522 Chanda et al. Feb 2015 A1
20150063102 Mestery et al. Mar 2015 A1
20150063364 Thakkar et al. Mar 2015 A1
20150071285 Kumar et al. Mar 2015 A1
20150071301 Dalal Mar 2015 A1
20150073967 Katsuyama et al. Mar 2015 A1
20150078384 Jackson et al. Mar 2015 A1
20150092551 Moisand et al. Apr 2015 A1
20150092564 Aldrin Apr 2015 A1
20150103645 Shen et al. Apr 2015 A1
20150103679 Tessmer et al. Apr 2015 A1
20150103827 Quinn et al. Apr 2015 A1
20150106802 Ivanov et al. Apr 2015 A1
20150109901 Tan et al. Apr 2015 A1
20150124608 Agarwal et al. May 2015 A1
20150124622 Kovvali et al. May 2015 A1
20150124815 Beliveau et al. May 2015 A1
20150124840 Bergeron May 2015 A1
20150138973 Kumar et al. May 2015 A1
20150139041 Bosch et al. May 2015 A1
20150146539 Mehta et al. May 2015 A1
20150156035 Foo et al. Jun 2015 A1
20150188770 Naiksatam et al. Jul 2015 A1
20150195197 Yong et al. Jul 2015 A1
20150213087 Sikri Jul 2015 A1
20150215819 Bosch et al. Jul 2015 A1
20150222640 Kumar et al. Aug 2015 A1
20150236948 Dunbar et al. Aug 2015 A1
20150237013 Bansal et al. Aug 2015 A1
20150242197 Alfonso et al. Aug 2015 A1
20150244617 Nakil et al. Aug 2015 A1
20150263901 Kumar et al. Sep 2015 A1
20150263946 Tubaltsev et al. Sep 2015 A1
20150271102 Antich Sep 2015 A1
20150280959 Vincent Oct 2015 A1
20150281089 Marchetti Oct 2015 A1
20150281098 Pettit et al. Oct 2015 A1
20150281125 Koponen et al. Oct 2015 A1
20150281179 Raman et al. Oct 2015 A1
20150281180 Raman et al. Oct 2015 A1
20150288671 Chan et al. Oct 2015 A1
20150288679 Ben-Nun et al. Oct 2015 A1
20150295831 Kumar et al. Oct 2015 A1
20150319078 Lee et al. Nov 2015 A1
20150319096 Yip et al. Nov 2015 A1
20150358235 Zhang et al. Dec 2015 A1
20150358294 Kancharla et al. Dec 2015 A1
20150365322 Shatzkamer et al. Dec 2015 A1
20150370586 Cooper et al. Dec 2015 A1
20150370596 Fahs et al. Dec 2015 A1
20150372840 Benny et al. Dec 2015 A1
20150372911 Yabusaki et al. Dec 2015 A1
20150379277 Thota et al. Dec 2015 A1
20150381493 Bansal et al. Dec 2015 A1
20150381494 Cherian et al. Dec 2015 A1
20150381495 Cherian et al. Dec 2015 A1
20160006654 Fernando et al. Jan 2016 A1
20160028640 Zhang et al. Jan 2016 A1
20160043901 Sankar et al. Feb 2016 A1
20160043952 Zhang et al. Feb 2016 A1
20160057050 Ostrom et al. Feb 2016 A1
20160057687 Horn et al. Feb 2016 A1
20160065503 Yohe et al. Mar 2016 A1
20160080253 Wang et al. Mar 2016 A1
20160087888 Jain et al. Mar 2016 A1
20160094384 Jain et al. Mar 2016 A1
20160094389 Jain et al. Mar 2016 A1
20160094451 Jain et al. Mar 2016 A1
20160094452 Jain et al. Mar 2016 A1
20160094453 Jain et al. Mar 2016 A1
20160094454 Jain et al. Mar 2016 A1
20160094455 Jain et al. Mar 2016 A1
20160094456 Jain et al. Mar 2016 A1
20160094457 Jain et al. Mar 2016 A1
20160094631 Jain et al. Mar 2016 A1
20160094632 Jain et al. Mar 2016 A1
20160094633 Jain et al. Mar 2016 A1
20160094642 Jain et al. Mar 2016 A1
20160094643 Jain et al. Mar 2016 A1
20160094661 Jain et al. Mar 2016 A1
20160099948 Ott et al. Apr 2016 A1
20160105333 Englet et al. Apr 2016 A1
20160119226 Guichard et al. Apr 2016 A1
20160127306 Wang et al. May 2016 A1
20160127564 Sharma et al. May 2016 A1
20160134528 Lin et al. May 2016 A1
20160149784 Zhang et al. May 2016 A1
20160149816 Roach et al. May 2016 A1
20160149828 Vijayan et al. May 2016 A1
20160162320 Singh et al. Jun 2016 A1
20160164776 Biancaniello Jun 2016 A1
20160164787 Roach et al. Jun 2016 A1
20160164826 Riedel et al. Jun 2016 A1
20160173373 Guichard et al. Jun 2016 A1
20160182684 Connor et al. Jun 2016 A1
20160197831 Foy et al. Jul 2016 A1
20160197839 Li et al. Jul 2016 A1
20160203817 Formhals et al. Jul 2016 A1
20160205015 Halligan et al. Jul 2016 A1
20160212048 Kaempfer et al. Jul 2016 A1
20160212237 Nishijima Jul 2016 A1
20160218918 Chu et al. Jul 2016 A1
20160226700 Zhang et al. Aug 2016 A1
20160226754 Zhang et al. Aug 2016 A1
20160226762 Zhang Aug 2016 A1
20160232019 Shah et al. Aug 2016 A1
20160248685 Pignataro et al. Aug 2016 A1
20160277210 Lin et al. Sep 2016 A1
20160277294 Akiyoshi Sep 2016 A1
20160294612 Ravinoothala et al. Oct 2016 A1
20160294933 Hong et al. Oct 2016 A1
20160294935 Hong et al. Oct 2016 A1
20160308758 Li et al. Oct 2016 A1
20160308961 Rao Oct 2016 A1
20160337189 Liebhart et al. Nov 2016 A1
20160337249 Zhang et al. Nov 2016 A1
20160337317 Hwang et al. Nov 2016 A1
20160344565 Batz et al. Nov 2016 A1
20160344621 Roeland et al. Nov 2016 A1
20160344803 Batz et al. Nov 2016 A1
20160352866 Gupta et al. Dec 2016 A1
20160366046 Anantharam et al. Dec 2016 A1
20160373364 Yokota Dec 2016 A1
20160378537 Zou Dec 2016 A1
20160380812 Chanda et al. Dec 2016 A1
20170005882 Tao et al. Jan 2017 A1
20170005920 Previdi et al. Jan 2017 A1
20170005923 Babakian Jan 2017 A1
20170005988 Bansal et al. Jan 2017 A1
20170019303 Swamy et al. Jan 2017 A1
20170019329 Kozat et al. Jan 2017 A1
20170019331 Yong Jan 2017 A1
20170019335 Schultz et al. Jan 2017 A1
20170019341 Huang et al. Jan 2017 A1
20170026417 Ermagan et al. Jan 2017 A1
20170033939 Bragg et al. Feb 2017 A1
20170063683 Li et al. Mar 2017 A1
20170063928 Jain et al. Mar 2017 A1
20170064048 Pettit et al. Mar 2017 A1
20170064749 Jain et al. Mar 2017 A1
20170078176 Akshmikantha et al. Mar 2017 A1
20170078961 Rabii et al. Mar 2017 A1
20170093698 Farmanbar Mar 2017 A1
20170093758 Chanda Mar 2017 A1
20170099194 Wei Apr 2017 A1
20170126497 Dubey et al. May 2017 A1
20170126522 McCann et al. May 2017 A1
20170126726 Han May 2017 A1
20170134538 Mahkonen et al. May 2017 A1
20170142012 Thakkar et al. May 2017 A1
20170147399 Cropper et al. May 2017 A1
20170149582 Cohn et al. May 2017 A1
20170149675 Yang May 2017 A1
20170149680 Liu et al. May 2017 A1
20170163531 Kumar et al. Jun 2017 A1
20170163724 Puri et al. Jun 2017 A1
20170170990 Gaddehosur et al. Jun 2017 A1
20170171159 Kumar et al. Jun 2017 A1
20170180240 Kern et al. Jun 2017 A1
20170195255 Pham et al. Jul 2017 A1
20170208000 Bosch et al. Jul 2017 A1
20170208011 Bosch et al. Jul 2017 A1
20170208532 Zhou Jul 2017 A1
20170214627 Zhang et al. Jul 2017 A1
20170220306 Price et al. Aug 2017 A1
20170230333 Glazemakers et al. Aug 2017 A1
20170230467 Salgueiro et al. Aug 2017 A1
20170237656 Gage Aug 2017 A1
20170250869 Voellmy Aug 2017 A1
20170250902 Rasanen et al. Aug 2017 A1
20170250917 Ruckstuhl et al. Aug 2017 A1
20170251065 Furr et al. Aug 2017 A1
20170257432 Fu et al. Sep 2017 A1
20170264677 Li Sep 2017 A1
20170273099 Zhang et al. Sep 2017 A1
20170279938 You et al. Sep 2017 A1
20170295021 Gutiérrez et al. Oct 2017 A1
20170295033 Cherian et al. Oct 2017 A1
20170295100 Hira et al. Oct 2017 A1
20170310588 Zuo Oct 2017 A1
20170310611 Kumar et al. Oct 2017 A1
20170317887 Dwaraki et al. Nov 2017 A1
20170317926 Penno et al. Nov 2017 A1
20170317936 Swaminathan et al. Nov 2017 A1
20170317954 Masurekar et al. Nov 2017 A1
20170317969 Masurekar et al. Nov 2017 A1
20170318081 Hopen et al. Nov 2017 A1
20170318097 Drew et al. Nov 2017 A1
20170324651 Penno et al. Nov 2017 A1
20170324654 Previdi et al. Nov 2017 A1
20170331672 Fedyk et al. Nov 2017 A1
20170339110 Ni Nov 2017 A1
20170339600 Roeland et al. Nov 2017 A1
20170346764 Tan et al. Nov 2017 A1
20170353387 Kwak et al. Dec 2017 A1
20170359252 Kumar et al. Dec 2017 A1
20170364287 Antony et al. Dec 2017 A1
20170364794 Mahkonen et al. Dec 2017 A1
20170366605 Chang et al. Dec 2017 A1
20170373990 Jeuk et al. Dec 2017 A1
20180004954 Tiguori et al. Jan 2018 A1
20180006935 Mutnuru et al. Jan 2018 A1
20180026911 Anholt et al. Jan 2018 A1
20180027101 Kumar et al. Jan 2018 A1
20180041425 Zhang Feb 2018 A1
20180041470 Schultz et al. Feb 2018 A1
20180041524 Reddy et al. Feb 2018 A1
20180063000 Wu et al. Mar 2018 A1
20180063018 Bosch et al. Mar 2018 A1
20180063087 Hira et al. Mar 2018 A1
20180091420 Drake et al. Mar 2018 A1
20180102919 Tao et al. Apr 2018 A1
20180102965 Hari et al. Apr 2018 A1
20180115471 Curcio et al. Apr 2018 A1
20180123950 Garg et al. May 2018 A1
20180124061 Raman et al. May 2018 A1
20180139098 Sunavala et al. May 2018 A1
20180145899 Rao May 2018 A1
20180159733 Poon et al. Jun 2018 A1
20180159801 Rajan et al. Jun 2018 A1
20180159943 Poon et al. Jun 2018 A1
20180176177 Bichot et al. Jun 2018 A1
20180176294 Vacaro et al. Jun 2018 A1
20180183764 Gunda Jun 2018 A1
20180184281 Tamagawa et al. Jun 2018 A1
20180191600 Hecker et al. Jul 2018 A1
20180198692 Ansari et al. Jul 2018 A1
20180198705 Wang et al. Jul 2018 A1
20180198791 Desai et al. Jul 2018 A1
20180203736 Vyas et al. Jul 2018 A1
20180205637 Li Jul 2018 A1
20180213040 Pak et al. Jul 2018 A1
20180219762 Wang et al. Aug 2018 A1
20180227216 Hughes Aug 2018 A1
20180234360 Narayana et al. Aug 2018 A1
20180247082 Durham et al. Aug 2018 A1
20180248713 Zanier et al. Aug 2018 A1
20180248755 Hecker et al. Aug 2018 A1
20180248790 Tan et al. Aug 2018 A1
20180248986 Dalal Aug 2018 A1
20180262427 Jain et al. Sep 2018 A1
20180262434 Koponen et al. Sep 2018 A1
20180278530 Connor et al. Sep 2018 A1
20180288129 Joshi et al. Oct 2018 A1
20180295036 Krishnamurthy et al. Oct 2018 A1
20180295053 Leung et al. Oct 2018 A1
20180302242 Hao et al. Oct 2018 A1
20180309632 Kompella et al. Oct 2018 A1
20180337849 Sharma et al. Nov 2018 A1
20180349212 Liu et al. Dec 2018 A1
20180351874 Abhigyan et al. Dec 2018 A1
20180375684 Filsfils et al. Dec 2018 A1
20190007382 Nirwal et al. Jan 2019 A1
20190020580 Boutros et al. Jan 2019 A1
20190020600 Zhang et al. Jan 2019 A1
20190020684 Qian et al. Jan 2019 A1
20190028347 Johnston et al. Jan 2019 A1
20190028384 Penno et al. Jan 2019 A1
20190028577 D?Souza et al. Jan 2019 A1
20190036819 Kancherla et al. Jan 2019 A1
20190068500 Hira Feb 2019 A1
20190089679 Kahalon et al. Mar 2019 A1
20190097838 Sahoo et al. Mar 2019 A1
20190102280 Caldato et al. Apr 2019 A1
20190108049 Singh et al. Apr 2019 A1
20190116063 Bottorff et al. Apr 2019 A1
20190121961 Coleman et al. Apr 2019 A1
20190124096 Ahuja et al. Apr 2019 A1
20190132220 Boutros et al. May 2019 A1
20190132221 Boutros et al. May 2019 A1
20190140863 Nainar et al. May 2019 A1
20190140947 Zhuang et al. May 2019 A1
20190140950 Zhuang et al. May 2019 A1
20190149512 Sevinc et al. May 2019 A1
20190149516 Rajahalme et al. May 2019 A1
20190149518 Sevinc et al. May 2019 A1
20190166045 Peng et al. May 2019 A1
20190173778 Faseela et al. Jun 2019 A1
20190173850 Jain et al. Jun 2019 A1
20190173851 Jain et al. Jun 2019 A1
20190222538 Yang et al. Jul 2019 A1
20190229937 Nagarajan et al. Jul 2019 A1
20190230126 Kumar et al. Jul 2019 A1
20190238363 Boutros et al. Aug 2019 A1
20190238364 Boutros et al. Aug 2019 A1
20190268384 Hu et al. Aug 2019 A1
20190286475 Mani Sep 2019 A1
20190288915 Denyer et al. Sep 2019 A1
20190288946 Gupta et al. Sep 2019 A1
20190288947 Jain et al. Sep 2019 A1
20190306036 Boutros et al. Oct 2019 A1
20190306086 Boutros et al. Oct 2019 A1
20190342175 Wan et al. Nov 2019 A1
20190377604 Cybulski Dec 2019 A1
20190379578 Mishra et al. Dec 2019 A1
20190379579 Mishra et al. Dec 2019 A1
20200007388 Johnston et al. Jan 2020 A1
20200036629 Roeland et al. Jan 2020 A1
20200059761 Li et al. Feb 2020 A1
20200067828 Liu et al. Feb 2020 A1
20200073739 Rungta et al. Mar 2020 A1
20200076684 Naveen et al. Mar 2020 A1
20200076734 Naveen et al. Mar 2020 A1
20200084141 Bengough et al. Mar 2020 A1
20200084147 Gandhi et al. Mar 2020 A1
20200136960 Jeuk et al. Apr 2020 A1
20200145331 Bhandari et al. May 2020 A1
20200162318 Patil et al. May 2020 A1
20200162352 Jorgenson et al. May 2020 A1
20200183724 Shevade et al. Jun 2020 A1
20200195711 Abhigyan et al. Jun 2020 A1
20200204492 Sarva et al. Jun 2020 A1
20200213366 Hong et al. Jul 2020 A1
20200220805 Dhanabalan Jul 2020 A1
20200272493 Lecuyer et al. Aug 2020 A1
20200272494 Gokhale et al. Aug 2020 A1
20200272495 Rolando et al. Aug 2020 A1
20200272496 Mundaragi et al. Aug 2020 A1
20200272497 Kavathia et al. Aug 2020 A1
20200272498 Mishra et al. Aug 2020 A1
20200272499 Feng et al. Aug 2020 A1
20200272500 Feng et al. Aug 2020 A1
20200272501 Chalvadi et al. Aug 2020 A1
20200274757 Rolando et al. Aug 2020 A1
20200274769 Naveen et al. Aug 2020 A1
20200274778 Ecuyer et al. Aug 2020 A1
20200274779 Rolando et al. Aug 2020 A1
20200274795 Rolando et al. Aug 2020 A1
20200274801 Feng et al. Aug 2020 A1
20200274808 Mundaragi et al. Aug 2020 A1
20200274809 Rolando et al. Aug 2020 A1
20200274810 Gokhale et al. Aug 2020 A1
20200274826 Mishra et al. Aug 2020 A1
20200274944 Naveen et al. Aug 2020 A1
20200274945 Rolando et al. Aug 2020 A1
20200287962 Mishra et al. Sep 2020 A1
20200322271 Jain et al. Oct 2020 A1
20200344088 Selvaraj et al. Oct 2020 A1
20200358696 Hu et al. Nov 2020 A1
20200364074 Gunda et al. Nov 2020 A1
20200366526 Boutros et al. Nov 2020 A1
20200366584 Boutros et al. Nov 2020 A1
20200382412 Chandrappa et al. Dec 2020 A1
20200382420 Suryanarayana et al. Dec 2020 A1
20200389401 Enguehard et al. Dec 2020 A1
20210004245 Kamath et al. Jan 2021 A1
20210011812 Mitkar et al. Jan 2021 A1
20210011816 Mitkar et al. Jan 2021 A1
20210029088 Mayya et al. Jan 2021 A1
20210044502 Boutros et al. Feb 2021 A1
20210067439 Kommula et al. Mar 2021 A1
20210073736 Alawi et al. Mar 2021 A1
20210117217 Croteau et al. Apr 2021 A1
20210120080 Mishra et al. Apr 2021 A1
20210135992 Tidemann et al. May 2021 A1
20210136140 Tidemann et al. May 2021 A1
20210136141 Tidemann et al. May 2021 A1
20210136147 Giassa et al. May 2021 A1
20210218587 Mishra et al. Jul 2021 A1
20210227041 Sawant et al. Jul 2021 A1
20210227042 Sawant et al. Jul 2021 A1
20210240734 Shah et al. Aug 2021 A1
20210266295 Stroz Aug 2021 A1
20210271565 Bhavanarushi et al. Sep 2021 A1
20210311758 Cao et al. Oct 2021 A1
20210311772 Mishra et al. Oct 2021 A1
20210314248 Rolando et al. Oct 2021 A1
20210314252 Rolando et al. Oct 2021 A1
20210314253 Rolando et al. Oct 2021 A1
20210314268 Rolando et al. Oct 2021 A1
20210314277 Rolando et al. Oct 2021 A1
20210314310 Cao et al. Oct 2021 A1
20210314415 Rolando et al. Oct 2021 A1
20210314423 Rolando et al. Oct 2021 A1
20210328913 Nainar et al. Oct 2021 A1
20210349767 Asayag et al. Nov 2021 A1
20210359945 Jain et al. Nov 2021 A1
20210377160 Faseela Dec 2021 A1
20220019698 Durham et al. Jan 2022 A1
20220030058 Tidemann et al. Jan 2022 A1
20220038310 Boutros et al. Feb 2022 A1
20220060467 Montgomery et al. Feb 2022 A1
20220078037 Mishra et al. Mar 2022 A1
20220188140 Jain et al. Jun 2022 A1
20220191304 Jain et al. Jun 2022 A1
20220417150 Jain et al. Dec 2022 A1
20230052818 Jain et al. Feb 2023 A1
20230168917 Kavathia et al. Jun 2023 A1
20230179474 Naveen et al. Jun 2023 A1
Foreign Referenced Citations (44)
Number Date Country
3034809 Mar 2018 CA
1689369 Oct 2005 CN
101594358 Dec 2009 CN
101729412 Jun 2010 CN
103516807 Jan 2014 CN
103795805 May 2014 CN
104471899 Mar 2015 CN
104521195 Apr 2015 CN
105706420 Jun 2016 CN
106134137 Nov 2016 CN
107005584 Aug 2017 CN
107078950 Aug 2017 CN
107113208 Aug 2017 CN
107204941 Sep 2017 CN
107210959 Sep 2017 CN
107852368 Mar 2018 CN
109213573 Jan 2019 CN
110521169 Nov 2019 CN
107105061 Sep 2020 CN
112181632 Jan 2021 CN
2426956 Mar 2012 EP
2466985 Jun 2012 EP
3210345 Aug 2017 EP
3300319 Mar 2018 EP
2005311863 Nov 2005 JP
2015519822 Jul 2015 JP
9918534 Apr 1999 WO
2008095010 Aug 2008 WO
2014069978 May 2014 WO
2014182529 Nov 2014 WO
2014207725 Dec 2014 WO
2016053373 Apr 2016 WO
2016054272 Apr 2016 WO
2019084066 May 2019 WO
2019147316 Aug 2019 WO
2019157955 Aug 2019 WO
2019168532 Sep 2019 WO
2019226327 Nov 2019 WO
2020046686 Mar 2020 WO
2020171937 Aug 2020 WO
2021041440 Mar 2021 WO
2021086462 May 2021 WO
2021206789 Oct 2021 WO
2022132308 Jun 2022 WO
Non-Patent Literature Citations (41)
Entry
Author Unknown, “Research on Multi-tenancy Network Technology for Datacenter Network,” May 2015, 64 pages, Beijing Jiaotong University.
Non-Published Commonly Owned U.S. Appl. No. 17/976,783, filed Oct. 29, 2022, 86 pages, Nicira, Inc.
Author Unknown, “Datagram,” Jun. 22, 2012, 2 pages, retrieved from https://web.archive.org/web/20120622031055/https://en.wikipedia.org/wiki/datagram.
Author Unknown, “AppLogic Features,” Jul. 2007, 2 pages. 3TERA, Inc.
Author Unknown, “Enabling Service Chaining on Cisco Nexus 1000V Series,” Month Unknown, 2012, 25 pages, Cisco.
Casado, Martin, et al., “Virtualizing the Network Forwarding Plane,” Dec. 2010, 6 pages.
Dixon, Colin, et al., “An End to the Middle,” Proceedings of the 12th Conference on Hot Topics in Operating Systems, May 2009, 5 pages, USENIX Association, Berkeley, CA, USA.
Dumitriu, Dan Mihai, et al., (U.S. Appl. No. 61/514,990), filed Aug. 4, 2011, 31 pages.
Greenberg, Albert, et al., “VL2: A Scalable and Flexible Data Center Network,” SIGCOMM '09, Aug. 17-21, 2009, 12 pages, ACM, Barcelona, Spain.
Guichard, J., et al., “Network Service Chaining Problem Statement,” Network Working Group, Jun. 13, 2013, 14 pages, Cisco Systems, Inc.
Halpern, J., et al., “Service Function Chaining (SFC) Architecture,” draft-ietf-sfc-architecture-02, Sep. 20, 2014, 26 pages, IETF.
Joseph, Dilip Anthony, et al., “A Policy-aware Switching Layer for Data Centers,” Jun. 24, 2008, 26 pages, Electrical Engineering and Computer Sciences, University of California, Berkeley, CA, USA.
Karakus, Murat, et al., “Quality of Service (QOS) in Software Defined Networking (Sdn): A Survey,” Journal of Network and Computer Applications, Dec. 9, 2016, 19 pages, vol. 80, Elsevier, Ltd.
Kumar, S., et al., “Service Function Chaining Use Cases in Data Centers,” draft-ietf-sfc-dc-use-cases-01, Jul. 21, 2014, 23 pages, IETF.
Lin, Po-Ching, et al., “Balanced Service Chaining in Software-Defined Networks with Network Function Virtualization,” Computer: Research Feature, Nov. 2016, 9 pages, vol. 49, No. 11, IEEE.
Liu, W., et al., “Service Function Chaining (SFC) Use Cases,” draft-liu-sfc-use-cases-02, Feb. 13, 2014, 17 pages, IETF.
Non-Published Commonly Owned U.S. Appl. No. 16/741,544, filed Jan. 13, 2020, 31 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/843,913, filed Apr. 9, 2020, 119 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/843,919, filed Apr. 9, 2020, 123 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/904,377, filed Jun. 17, 2020, 120 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/904,390, filed Jun. 17, 2020, 121 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/904,399, filed Jun. 17, 2020, 121 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/904,430, filed Jun. 17, 2020, 120 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/904,437, filed Jun. 17, 2020, 121 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/904,442, filed Jun. 17, 2020, 121 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 16/904,446, filed Jun. 17, 2020, 121 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 17/122,153, filed Dec. 15, 2020, 34 pages, VMware, Inc.
Non-Published Commonly Owned U.S. Appl. No. 17/122,192, filed Dec. 15, 2020, 33 pages, VMware, Inc.
Salsano, Stefano, et al., “Generalized Virtual Networking: An Enabler for Service Centric Networking and Network Function Virtualization,” 2014 16th International Telecommunications Network Strategy and Planning Symposium, Sep. 17-19, 2014, 7 pages, IEEE, Funchal, Portugal.
Sekar, Vyas, et al., “Design and Implementation of a Consolidated Middlebox Architecture,” 9th USENIX Symposium on Networked Systems Design and Implementation, Apr. 25-27, 2012, 14 pages, USENIX, San Jose, CA, USA.
Sherry, Justine, et al., “Making Middleboxes Someone Else's Problem: Network Processing as a Cloud Service,” In Proc. of SIGCOMM '12, Aug. 13-17, 2012, 12 pages, Helsinki, Finland.
Siasi, N., et al., “Container-Based Service Function Chain Mapping,” 2019 SoutheastCon, Apr. 11-14, 2019, 6 pages, IEEE, Huntsville, AL, USA.
Halpern, J., et al., “Service Function Chaining (SFC) Architecture,” RFC 7665, Oct. 2015, 32 pages, IETF Trust.
Non-Published Commonly Owned U.S. Appl. No. 17/385,809, filed Jul. 26, 2021, 74 pages, Nicira, Inc.
Xiong, Gang, et al., “A Mechanism for Configurable Network Service Chaining and Its Implementation,” KSII Transactions on Internet and Information Systems, Aug. 2016, 27 pages, vol. 10, No. 8, KSII.
Author Unknown, “MPLS,” Mar. 3, 2008, 47 pages.
Cianfrani, Antonio, et al., “Translating Traffic Engineering Outcome into Segment Routing Paths: the Encoding Problem,” 2016 IEEE Conference on Computer Communications Workshops (Infocom Wkshps): GI 2016: 9th IEEE Global Internet Symposium, Apr. 10-14, 2016, 6 pages, IEEE, San Francisco, CA, USA.
Li, Qing-Gu, “Network Virtualization of Data Center Security,” Information Security and Technology, Oct. 2012, 3 pages.
Non-Published Commonly Owned U.S. Appl. No. 18/211,580, filed Jun. 19, 2023, 88 pages, Nicira, Inc.
Boucadair, M., “Service Function Chaining (SFC) Control Plane Components & Requirements,” draft-ietf-sfc-control-plane-05, May 11, 2016, 53 pages, IETF.
Fernando, R., et al., “Service Chaining using Virtual Networks with BGP VPNs,” draft-ietf-bess-service-chaining-02, Oct. 31, 2016, 81 pages, IETF.
Related Publications (1)
Number Date Country
20210306240 A1 Sep 2021 US
Continuations (2)
Number Date Country
Parent 16945868 Aug 2020 US
Child 17346255 US
Parent 15937621 Mar 2018 US
Child 16945868 US