Source: https://patents.google.com/patent/DE102015108145A1/en
Timestamp: 2020-01-24 02:02:48
Document Index: 326014232

Matched Legal Cases: ['art 200', 'art 148', 'art 148', 'art 148', 'art 148', 'arts 150']

DE102015108145A1 - Local service chaining with virtual machines and virtualized containers in software-defined networking - Google Patents
Local service chaining with virtual machines and virtualized containers in software-defined networking
DE102015108145A1
DE102015108145A1 DE102015108145.8A DE102015108145A DE102015108145A1 DE 102015108145 A1 DE102015108145 A1 DE 102015108145A1 DE 102015108145 A DE102015108145 A DE 102015108145A DE 102015108145 A1 DE102015108145 A1 DE 102015108145A1
DE102015108145.8A
2014-06-23 Priority to US14/311,818 priority
2015-05-22 Application filed by Intel Corp filed Critical Intel Corp
2015-12-24 Publication of DE102015108145A1 publication Critical patent/DE102015108145A1/en
Method, software, and apparatus for implementing local service chaining (LSC) with virtual machines (VMs) or virtualized containers in software-defined networking (SDN). In one aspect, a method is implemented on a computing platform having multiple VMs or containers each including a virtual network interface controller (vNIC) that is communicatively coupled to a virtual coupler in an SDN. LSCs are implemented through multiple virtual network devices that are hosted by the multiple VMs or containers. Each LSC comprises a sequence (chain) of services performed by virtual network devices defined for the LSC. In conjunction with the performance of the chain of services, packet data is passed between VMs or containers using a throughput mechanism under which packet data is written directly to receive buffers (Rx buffers) on the vNICs in a manner bypassing the virtual coupler. LSC indications (eg, by LSC tags) and flow tables are used to inform each virtual network device and / or its host VM or host container of the next vNIC Rx buffer or Rx port, in FIG the packet data should be written.
Access to computer networks has become a ubiquitous part of today's computer usage. Whether accessing a local area network (LAN) in a corporate environment to access shared network resources, or accessing the Internet via the LAN or other access point, it appears that users are always logged on to at least one service, to which accessed via a computer network. Moreover, the rapid expansion of cloud-based services has led to even more use of computer networks and it is predicted that these services will become more widespread.
Networking is facilitated by various types of equipment, including routers, couplers, bridges, gateways, and access points. A large network infrastructure typically involves the use of telecommunication class network elements, including couplers and routers that are used by companies such as telecom companies. Cisco Systems, Juniper Networks, Alcatel Lucent, IBM and Hewlett-Packard. Such telecommunications couplers are very sophisticated, operating at very high bandwidths and providing advanced routing functionality as well as supporting various quality of service (QoS) levels. Private networks, such. For example, local area networks (LANs) are most commonly used by business and home users. It is also common for many business networks to use hardware and / or software firewalls and the like.
In recent years, the virtualization of computer systems has seen rapid growth, especially in server devices and data centers. Under a conventional method, a server operates a single instance of an operating system directly on physical hardware resources, such as a computer. CPU, RAM, storage devices (e.g., hard disk), network controllers, I / O ports, etc. A virtualized method using virtual machines (VMs) uses the physical hardware resources to obtain corresponding instances of virtual resources so that multiple VMs can run on the server's physical hardware resources, with each virtual machine having its own CPU allocation, memory allocation, storage devices, network controllers, I / O ports, and so on. Multiple instances of the same or different operating systems then run on the multiple VMs. In addition, using a virtual machine manager ("VMM") or "hypervisors" allows the virtual resources to be allocated dynamically while the server is running, allowing VM instances to be added, shut down, or misappropriated without requiring the server is switched off. This provides greater flexibility for server utilization and better utilization of server processing resources, especially for multi-core processors and / or multi-processor servers.
Another virtualization approach uses containerized OS virtualization that uses virtualized "containers" without the use of a VMM or hypervisor. Instead of harboring separate instances of operating systems on respective VMs, the containerized OS virtualization splits a single OS core across multiple containers with separate instances of system and software libraries for each container. As with VMs, virtual resources are also assigned to each container.
The use of Software Defined Networking (SDN) and Network Function Virtualization (NFV) has also seen rapid growth in the last few years. Under SDN, the system that makes decisions about where traffic is being sent (the control plane), for the underlying system, forwards traffic to the selected destination (the data planes), is decoupled. SDN concepts can be used to facilitate network virtualization, allowing service providers to manage different aspects of their network services through software applications and APIs (application programming interfaces). Under NFV, network service providers can gain flexibility in network configuration by virtualizing network features such as software applications, providing significant benefits, including bandwidth optimization, cost savings, and faster time to market for new services.
"Service chaining" is often used in the context of SDN to describe a flow of packets traversing a network that is processed by a series of network service elements that are implemented on different physical compute nodes. As used herein, the term "local service chaining" (LSC) is used to describe a flow of packets traversing a network that resides within a compute node that is being processed by a series of network service elements residing in VMs or virtualized containers be implemented. Under the conventional approach, the LSC uses the use of a virtual coupler (VS) or equivalent mechanism to convey packets between VMs. This switching mechanism requires computational resources and adversely affects the throughput capacity of the Systems off. This problem is exacerbated when a large amount of traffic is being processed by LSCs because the processing of each packet may involve multiple data transfers over one or more VSs.
The foregoing aspects and many of the attendant advantages of this invention will be more readily appreciated as the same becomes better understood by reference to the following detailed description, taken in conjunction with the accompanying drawings, wherein like reference numerals refer to like parts throughout the several views, if not otherwise stated:
1 FIG. 10 is a schematic diagram illustrating a virtual machine architecture for a computing platform configured to perform packet processing operations through the use of LSCs; FIG.
1a is a schematic diagram showing an enhanced version of the computing platform of 1 in which packet data is transferred directly from a network interface to a receive buffer (Rx buffer) in a virtual network interface controller (vNIC);
1b Fig. 10 is a schematic diagram illustrating an architecture for a computing platform with virtualized containers configured to perform packet processing operations through the use of LSCs;
2 Figure 10 is a flow chart illustrating operations and logic performed by software running on the computing platform to facilitate the implementation of LSCs.
3 is a schematic diagram showing further details of Rx FIFO queues in the architecture shared memory area of 1 represents;
4 FIG. 13 is a diagram illustrating a first set of exemplary data that is included in the architecture flow charts of FIG 1 for implementing LSC operations using LSC IDs;
4a FIG. 12 is a diagram illustrating a second set of exemplary data that is used in the architecture flow charts of FIG 1 for implementing LSC operations using flow IDs;
4b FIG. 13 is a diagram illustrating a third set of exemplary data contained in the flow tables of the architecture of FIG 1 for implementing a predefined LSC for all packets received at a predefined network port;
5 FIG. 12 is a schematic diagram of a first exemplary host platform hardware and host platform software architecture with virtual machines over which aspects of the embodiments disclosed herein may be implemented; and
6 FIG. 12 is a schematic diagram of a second exemplary host platform hardware and host platform software architecture having containers that implement container-based virtualization through which aspects of the embodiments disclosed herein may be implemented.
Embodiments of methods, software, and apparatus for implementing local service chaining with virtual machines or virtualized containers in software-defined networking are described herein. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the embodiments disclosed and illustrated herein. One skilled in the art will recognize, however, that the invention may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials or operations are not shown or described in detail to avoid obscuring the aspects of the invention.
For the sake of clarity, individual components in the figures may also be referred to herein by their designations in the figures rather than by a particular reference numeral. In addition, reference numerals that refer to a particular type of component (as opposed to a particular component) may be shown with a reference followed by "(type)", which means "typical." Of course, the configuration of these components is typical of similar components which may exist, but which are not shown in the drawing figures for simplicity or clarity, or otherwise similar components not denoted by separate reference numerals. On the other hand, "(type)" is not to be construed as meaning the component, element, etc., it is typically used for its disclosed function, implementation, purpose, and so on.
As used herein, the terms "virtual device", "virtual network device", "network device" or simply "device" can be used interchangeably. In addition, for the purpose hereof, including the claims, any software-based device in terms of software-defined networking or configured to implement network function virtualization may be more generally referred to as a "virtual device" with the understanding that virtual network devices may be any Network device or a virtualized entity that is configured to implement a network function virtualization and / or software-defined networking operations. Thus, the terms virtual device in the following description include all NFV devices as well.
In accordance with aspects of the embodiments described herein, packet throughput is speeded up by creating a "throughput" mechanism that allows packets to be transmitted between virtual network devices and similar SDN components without the use of virtual couplers. This is facilitated, in part, through the use of "Local Service Daisy Chaining" (LSC), which is used herein to describe a flow of packets traversing a network that resides within a compute node under which the packets pass through a series of network service elements (such as virtual network devices) that are deployed in multiple virtual machines or virtual machines.
As an example and without limitation shows 1 an architecture 100 for a compute node (eg, a computing platform such as a server) configured to perform packet processing operations through the use of LSC. Architecture 100 includes a computing platform 102 working with a network interface 104 which may be integrated on the computing platform (eg, as a network interface controller (NIC)) or otherwise operatively coupled to the computing platform (eg, as a PCIe (peripheral component interconnect express card) Expansion slot is installed). The computing platform 102 includes a host operating system (OS) 106 that in the OS store 107 configured to host multiple applications residing in an application storage space 108 run over the host OS 106 are shown. This includes a virtual coupler 109 and a hypervisor 110 that is configured to use N virtual machines 112 as represented by the virtual machines labeled VM 1, VM 2, and VM N. The software components further include an SDN controller 114 ,
The network interface 104 includes M network ports 116 denoted by Port1, Port2 ... PortM, where M may be the same as or different from N. Every network port 116 includes a receive buffer (Rx buffer) 118 and a send buffer (Tx buffer) 120 , As used in the figures herein, the Rx and Tx buffers and Rx and Tx queues shown may also represent co-located Rx and Tx ports; to reduce clutter, the Rx and Tx ports are not shown separately, but those skilled in the art will recognize that each Rx and Tx port includes one or more Rx and Tx buffers and / or queues.
In general, a network interface may include relatively small Rx and Tx buffers implemented in the Rx and Tx ports, and then larger Rx and Tx buffers residing in the input / output memory (IO memory) the network interface that is shared across multiple Rx and Tx ports. In the illustrated example, at least a portion of the IO memory is a memory mapped IO (MMIO). 122 by a NIC driver 124 in the OS memory 107 of the host OS 106 is configured. The MMIO 122 is configured to provide direct memory access (DMA) data transfers between memory buffers in the MMIO 122 and buffering in system memory on the computing platform 102 to support, as described in more detail below.
The virtual coupler 108 is a software-based entity configured to perform SDN switching operations within the computing platform 102 perform. In the example shown, the virtual coupler comprises 108 a virtual Rx and Tx port for each physical Rx and Tx port on the network interface 104 (for example, for each port1 port M) and a virtual Rx and Tx port for each of the virtual machines VM 1-VM N. The virtual ports on the network interface side are virtual Rx ports 126 and virtual Tx ports 127 while the virtual ports on the VM side are represented as virtual Rx ports 128 and virtual Tx ports 129 are shown. As further shown, part of each of the virtual Rx and Tx ports 126 . 127 . 128 and 129 as a shared memory area 134 of the system memory address space is overlapped (also referred to as shared memory space). There are also pairs of virtual Rx and Tx ports 130 and 132 further illustrated as extending into a respective virtual NIC (vNIC) as shown by vNIC1, vNIC2, and vNICN, wherein the vNICs are associated with respective virtual machines VM 1, VM 2, and VM N.
Each of the virtual machines VM 1, VM 2 and VM N is with a virtual device 136 and three applications 138 with indications identifying the corresponding VM on which the virtual device and applications are running. For example, for the VM 1, the virtual device is labeled "Device 1" and the applications are " Application 1A "," Application 1B "and" Application 1C ". In general, any virtual device 136 over one or more applications 138 The inclusion of three applications is for illustrative purposes only. During the operation of the computing platform 102 is each of the virtual devices 136 configured to perform one or more packet processing services. Moreover, the packet processing services are implemented in a concatenated manner as defined by the corresponding LSC for the packet flow associated with each packet.
The concept of chained packet processing services using local service chaining is further in 1 about operations and data transfers further presented in connection with the processing of a package 140 with further reference to a schedule 200 who in 2 is shown. The package 140 is represented as an IP (Internet Protocol) packet, and this exemplary use of an IP packet means that the packet uses IP addressing, which is used in part to determine where the packet is going 140 forwarded in the network and where it is internally through the computing platform 102 is processed. As in a block 202 of the schedule 200 As shown, the process starts with that package 140 from the network at Port1 of the network interface 104 Will be received. In general, packet data is transmitted over the connections of a network as bitstreams of data. For an Ethernet network, for example, packet data is transmitted as stream from Ethernet frames. At Port 1, physical layer (PHY) operations are performed to extract Ethernet packets that encapsulate the packet data passing through the virtual devices 136 to be processed. The extracted Ethernet packets are in the Rx buffer 118 buffered at Port1.
Next will be in a block 204 Extracted IP packets from the Ethernet packets. Optionally, layer 4 or higher layer packets may be extracted as appropriate. In general, the operations of the block 204 through either the network interface 104 , through OS software-based networking components that act as network stacks 142 or a combination of the two using a shared processing scheme. For example, some recent NICs support layer 3 (IP) packet processing operations and may also support TCP packet processing operations (transaction control protocol packet processing operations). Another layer 4 and higher packet processing usually becomes via software components in the network stack 142 although it may also be implemented by a NIC or similar network interface.
In a block 206 a flow classification of the packet is performed. This usually involves examining corresponding headers in a header or in headers to identify a flow of packets to which a received packet belongs (if any). As described in more detail below, in some embodiments, packet flow information may be explicitly defined in a packet header field. The packet flow classification can also be performed using data in multiple fields, such as: By the use of well known N-tuple packet classification techniques.
In general, the packet header inspection may be performed using one or more of the following schemes. In one embodiment, packets from Rx buffers are in the port 116 into an Rx buffer 144 in the OS memory 107 DMA operation (e.g., using a DMA write operation). For example, in one embodiment, memory spaces are allocated in the NIC port Rx buffers for first-in-first-out (FIFO) queues that use circular FIFO pointers, and the FIFO head pointer points to the packet that into the Rx buffer 144 undergoes a DMA operation. Further details of how FIFO queues operate, according to one embodiment, are disclosed in FIG 3 and are described below. As an alternative, only the packet header will be in the Rx buffer 144 subjected to a DMA operation. As still another option, the packet header data is read "in place" without copying either the packet data or the header into the Rx buffer 144 , In this case, for a small number of packets, the packet header data becomes a buffer that is the network stack 142 or a flow classifier 146 is assigned in the OS 106 read. For flow classification, through the network interface 104 is performed, the packet header data may also be read in place; however, in this case, the buffer is in memory at the network interface 104 arranged, typically by the MMIO 122 is separate (not shown).
The result of the flow classification returns a flow identifier (flow ID) for the packet. In one embodiment, the flow ID is added to a packet header field for packets received without an explicit flow ID, or alternatively a flow ID tag is appended (e.g., prefixed) or the packet is wrapped in a "wrapper". encapsulated, which includes a field for the flow id.
As in 1 In the illustrated embodiment, the packet classification by the flow classifier is shown 146 carried out. Optionally, the flow classification in the network interface 104 about a similar flow classifier 146a be performed. In one embodiment, a shared classification scheme is implemented among existing flows (eg, previously classified flows) in the network interface 104 through the flow classifier 146a while packets that do not belong to an existing flow become the flow classifier 146 be forwarded for packet classification according to a new packet flow. Information for the new packet flow then becomes the flow classifier 146a delivered. In another embodiment, the list of classified flows is a flow classifier 146a is maintained less than a complete list by the flow classifier 146 is similar to a memory cache where flows belonging to younger packets are in the flow classifier 146a be maintained at the NIC and rivers replaced for fewer new packages.
As in the block 206 further illustrated, the flow ID is looked up in a flow table 148 used as part of the virtual coupler 109 is shown. In one embodiment, the flow table includes a column of flow IDs and a column of vNIC Rx port IDs such that, in consideration of an input flow ID, the lookup returns a corresponding vNIC Rx port ID. The river table 148 may also include an LSC ID that may be used for an LSC tag or field in the packet envelope or otherwise associated with the packet. Optionally, an LSC tag may be added by a first virtual device in a local service chain.
In addition to the river table 148 in the virtual coupler 109 can implement anything or a section of the flow table in the host OS 106 or in the network interface 104 (none of which are in 1 shown). In embodiments, all or a portion of a flow table in the network interface 104 In general, the flow table entries are used by the software in the host OS 106 determined and filled through an interface by the NIC driver 124 provided.
Once the vNIC Rx port ID is identified, the packet data is written to a corresponding Rx buffer address. In the in 1 As shown, this Rx port is labeled V1 Rx (the Rx port for vNIC1 of virtual machine VM 1). In one embodiment, the packet data is from an Rx buffer in the OS memory 107 (not shown) using a memory write operation under which data is copied from the OS memory Rx buffer to the corresponding Rx buffer address. In another embodiment, the packet data is retrieved from the Rx buffer of Port1 in the MMIO 122 written directly into the vNIC Rx buffer using DMA write. For example, for packets whose heads are being examined at the location, direct DMA writing may be performed.
In one embodiment, the vNIC Rx buffers are implemented as FIFO queues with circular FIFO pointers. Details of an embodiment using this configuration are shown in FIG 3 shown. Like towards the bottom of 3 each vNIC Rx port is included 130 an associated vNIC Rx FIFO queue 300 , Each vNIC Rx FIFO queue 300 includes an address space divided into multiple FIFO "slots"; There are 256 slots per FIFO queue in the illustrated embodiment, but this is only illustrative of an example, as the number of FIFO slots may vary. The size used for each FIFO slot may also vary. In one embodiment, the size of each FIFO slot is the same as the size of a cache line used for the application memory space 108 is used. Each vNIC Rx FIFO queue 300 further comprises a circular FIFO head pointer and a circular FIFO tail pointer. The circular FIFO header points to the FIFO slot currently at the logical "top" of the FIFO queue, while the tail pointer points to a FIFO slot corresponding to the current logical "bottom" of the FIFO queue. The operations of FIFO queues using header and tail pointers are well known in the art, so further details of these operations are not provided herein.
In one embodiment, each vNIC is implemented via a set of one or more software modules. Under an object-oriented design, each Rx FIFO queue can be implemented as an instance of a corresponding class (e.g., Rx_FIFO_queue). As is well known, classes provide methods for implementing functions that handle class objects (e.g., data) and interfaces for routing data to and receiving data from other software components (e.g., other classes).
In one embodiment, a DMA write request is sent to the Rx_FIFO_queue (class) instance for the vNIC1 Rx FIFO queue. In response to receiving the DMA write request, a method in the Rx_FIFO_queue instance identifies the memory address of the FIFO slot currently being pointed to by the And returns the address to the DMA write requester (e.g., an embedded software module on the network interface 104 ). A DMA functional unit or the like (not shown) then writes the packet data from its location in the MMIO 122 in the memory address for the FIFO slot. For instances in which the packet data spans multiple FIFO slots, multiple DMA writes may be performed in sequence. For illustrative purposes, the packet data is shown written to the bottom of the representation of the vNIC Rx ports; however, those skilled in the art will recognize that the location in the Rx FIFO queue of the slot into which the packet data is written is the logical "bottom" of the FIFO buffer pointed to by the FIFO tail pointer.
Next is in a block 207 a flow ID tag or LSC tag attached to the packet data. As in 3 In one embodiment, the data written to a first FIFO slot (from one or more slots into which the packet data is written) includes a tag 302 which precedes the packet data, which is a packet header 304 and packet payload data 306 include. In one embodiment, the tag becomes 302 used to store it in the LCS tag (eg LSC ID value). Optionally, the license plate 302 used to store a flow id. As is well known, the size of an IP packet (or other types of packets) may vary while the length of a packet protocol header is generally the same (note that some protocols define packet headers with optional fields that, when used , change the head length). Given the variable-length packet size, the packet data for a given packet may be written into one or more FIFO slots.
As shown by the loop passing through start and end loop blocks 208 and 218 is limited, multiple operations are performed for each virtual device in a local service chain associated with a given packet flow (or alternatively, as explicitly identified by an LSC ID in an LSC tag, packet header or wrapper). Each LSC includes several services performed by virtual network devices that are concatenated together in a sequence in a manner similar to a set of pipelined services. Example services may include NAT services (network address translation services), firewall services, packet processing services, WAN optimization, virtual private network gateway, video transcoding, content distribution network services, and so on. For explanatory purposes shows 1 a chained sequence from device 1 to device 2 ... to device N. However, this is only exemplary, as the LSC can traverse any combination of devices. Moreover, the LSC does not have to traverse devices in an increasing order (eg, an LSC could be device 3 to device 2 to device 5 ...). It is also possible for multiple devices to be implemented to perform the same service or set of services. Alternatively, a given device may be configured to perform different services for different packet flows.
With return to the processing loop in the flowchart 200 be in a block 210 the packet processing operations for the flow and / or the LSC for the current virtual device are performed in the LSC chain. In one embodiment, the packet processing operations are performed on a given packet in the vNIC Rx FIFO queue pointed to by the FIFO header. Some virtual devices read the packet data and perform processing using that data (eg, forward the packet data to a consumer application) while other virtual devices can modify the packet data (eg, modify one or more fields in a packet header ). In cases where the packet data is modified, the packet data may either be modified in place or packet data may be copied to a buffer on the VM that is used for the virtual device (in 1 not shown) and then modified.
With continuation at a block 212 At the completion of the operations performed by a given virtual device, a determination is made as to where the packet data is to be forwarded so that it can be accessed either by a next virtual device in the LSC, or if the current one virtual device is the last virtual device in the LSC to which Tx network port the packet is to be forwarded. In one embodiment, this is done using the LSC tag value as a lookup in a local flow table 150 carried out. Optionally, the local flow table may include flow IDs rather than or in addition to LSC tag values. In general, local river tables 150 in a similar way to the flow chart 148 be configured; however, rather than pointing to the vNIC Rx port (or Rx FIFO queue) for the VM hosting the first virtual device in the LSC, the local flow table points to the vNIC Rx port (or the Rx -FIFO queue) for the VM hosting the next virtual device in the LSC. It is also noted that the river table 148 May contain information related to non-LSC flows (or otherwise, such information may be maintained in a separate table corresponding to the virtual coupler 109 is accessible).
Under the conventional approach, VMs are allocated separate storage spaces and data is transferred between these separate storage spaces through the use of virtual couplers. This involves first copying the data to a vNIC-Tx port, forwarding the data to a Rx port of the virtual coupler (via memory writes), determining the vNIC-Rx port through the virtual coupler into which the data is written to copy or write the data to the Tx port of the virtual coupler connected to that vNIC Rx port and then write the data to the vNIC Rx port. In practice, each of these writes will be placed in a buffer such as For example, a FIFO queue takes place and the mediation processes involve a significant amount of overhead. Moreover, if multiple packet flows are switched simultaneously, there is a potential for congestion at one or more of the ports of the virtual coupler.
To better understand the conventional operation of the virtual coupler, consider a packet processing sequence that includes operations performed by a series of virtual network devices A, B, C, and D, each of which performs one or more operations on the packets that it receives, performs. These operations are concatenated so that a sequence of operations a, b, c and d are performed by respective virtual network devices A, B, C and D and each of the virtual network devices is accommodated by a separate VM AD connected to a virtual coupler S connected is. Under the existing method, the packet flow would be handled as follows: VM A to S to VM B to S to VM C to S to VM D. Each transmission to and from the virtual coupler S requires the use of separate receive and transmit buffers / queues implemented for separate ports of the virtual coupler to which virtual machines VM A , VM B , VM C, and VM D are respectively connected.
In accordance with one aspect of the embodiments herein, a "passthrough" mechanism is implemented, under which data is sent directly from a first vNIC Rx buffer (e.g., vNIC-Rx FIFO queue) or a VM that has a virtual memory Device hosts a current service in an LSC, into the vNIC Rx buffer (e.g., vNIC Rx FIFO queue) of the VM hosting the virtual device that is to perform the next service in the LSC , to be written. This is partly due to the use of the shared memory area 134 facilitates: since the vNIC Rx FIFO queues reside in a shared memory space accessible to all VMs, any VM can write to the vNIC Rx F1FO queue of any other VM in a manner that uses the virtual memory Coupler bypasses. This provides a significant reduction in memory transfers as well as eliminates corresponding latencies suffered during virtual switch operations.
Like a decision block 214 For example, if the next buffer is a vNIC Rx FIFO queue, the schedule logic goes to a block 216 in which packet data is written directly into the identified vNIC Rx FIFO queue, thus the virtual coupler 134 is bypassed. As before and as shown, the packet data is written to the bottom of the vNIC Rx port representation. Also, as before, this can be done by writing the data into an address of the slot in the Rx FIFO queue currently pointed by the FIFO tail pointer.
If the flow ID lookup is in the block 212 Identifying the next buffer as a network Tx port, the flowchart logic goes to a block 220 in which a DMA write of the packet data from the current vNIC Rx FIFO slot (s) (or local buffer if assigned to the current virtual device) into the network Tx buffer stored in the Address space of MMIO 122 is arranged takes place. In the in 1 As shown, this is a direct transfer of packet data from the Rx-FIFO queue of vNICN to Port X's Tx buffer at the network interface 104 shown. Alternatively, instead of direct DMA data transmission, the packet data may be transmitted through the virtual coupler 109 to get redirected. In one embodiment, the packet data is copied directly from the vNICN Rx FIFO queue (or a buffer at the VM N) to the network Tx buffer at the virtual coupler (instead of being forwarded via the vNICN Tx port).
As in the lower rake corner of 1 shown, will be a package 152 from PortM's Tx port to the network. In general, the heads of the packages can 140 and 152 while the packet payload data can remain the same. For example, one or more fields in the packet header for a given packet may be changed during the LSC processing operations performed by the virtual devices. In some cases, the packet payload data may also change as a result of services performed by an LSC.
The previous processing of the package 140 FIG. 10 illustrates a technique for processing packets on a per-flow basis. In one embodiment, the SDN controller is 114 configured to manage the flow id and / or LSC data provided by the flow table 148 and local flow tables 150 be used. Packets for a given packet flow may be serviced using a LSC with a concatenated sequence of services performed by respective virtual machines, as discussed above. In one embodiment, an entry point (eg, an ingress Rx port, Rx buffer, or an Rx FIFO queue) for a flow ID or LSC ID in a flow table is used to determine the next entry point for the service chain (for example, look up the next Rx port, Rx buffer, or Rx FIFO queue). Thus, the flow tables may generally comprise two or more columns, one containing the flow ID or LSC ID and the other containing the next entry point. In another embodiment, a flow ID is used to forward a packet received from the network to a first virtual device, which then makes a mapping from the flow ID to the LSC ID and an LSC tag to the packet attaches for further processing.
LSCs that are used in a flow-wise implementation can be accessed either by the SDN controller 114 preconfigured or determined when a flow occurs for the first time. For example, according to the OpenFlow protocol, packet flows and corresponding LSCs can be determined during runtime operations. The particular sequence chain for the LSC may be dictated by the logic in the SDN controller, the logic in another component, such as the one shown in FIG. For example, a central SDN controller (e.g., coordinator) or the like, or a combination of SDN controller components and related components may be determined.
4 provides a set of example table data for flow tables 148 , Table 1, Table 2 and Table N. The flow chart 148 includes a flow ID column containing flow IDs, an ingress port column containing ingress port IDs, and an LSC ID column containing LSC IDs. Each of Table 1, Table 2, and Table N includes an LSC ID column, a next port column, and a service column. In one embodiment, the tabular data becomes for each of the tables 148 , Table 1, Table 2 and Table N, by the SDN control unit 114 managed. In general, the table data may be filled during initialization of the computing platform and / or during runtime operations.
In one embodiment, the tabular data is implemented as follows. In conjunction with the flow classification, a flow ID is determined for the packet. This will serve as a lookup for the river table 148 used. From the flow ID, the entry port of the VM hosting the first virtual device in the service chain can be determined. The LSC-ID can also be determined. As an option, the flow chart 148 do not include an LSC ID column, and mapping from the Flow ID to the LSC ID is performed by the first virtual device in each LSC.
As shown, the entry port does not have to be the same for every flow. Depending on the services that are to be performed, an LSC may skip one or more virtual devices. The services performed by a given virtual device may also vary depending on the LSC ID. The use of "A", "B", and "C" in the service columns corresponds to services performed by the virtual machine to which each flow table 150 equivalent. Inclusion of the service column is optional because, under some implementation, a given virtual device performs the same services on all LSCs (or flows) for which it provides a service. In addition, the outlet port on the AC adapter / NIC may also differ depending on the particular LSC.
4a represents an alternative flowchart schema, rather the flow-IDs for flow tables 150 used as LSC IDs. The mapping of the flow ID to the LSC is done internally by the SDN control unit 114 so that flow IDs can be used instead of LSC IDs. The rest of the processing logic remains the same.
In addition to stream-wise local service chaining, a computing platform may be preconfigured to perform the same set of services (and thus to implement the same LSC) for all packets received from a network interface or all packets received at a predetermined port of the network interface. 4b shows exemplary tabular data in a flow chart 148a , Flow Table 1, Flow Table 2, and Flow Table N to implement a single, predetermined LSC. As shown, the entry port for all flows is vNIC1-Rx. Meanwhile, the next port for each virtual device is the vNIC Rx port for the next virtual device in the LSC. For purposes of explanation, flow chart data for implementing a predetermined LSC is shown. In practice, other techniques could be used, such. B. configuring software variables and / or software instructions to implement the predetermined LSC. For example, the software could be downloaded into each of the virtual machines to implement the LSC without using flow tables. Similarly, a network adapter or NIC could be configured to forward all packets to the entry vNIC Rx port for the LSC (eg via DMA write).
1 a Represents the processing of a package 140 using a predetermined LSC. As shown, the package will 140 from the Rx port of Port1 to the Rx port of vNIC1 of a DMA operation, bypassing any operations previously performed by the host OS 106 and the virtual coupler 109 is bypassed. In another embodiment, packets may be sent from the network interface to the Rx buffer 144 and then to the Rx port of vNIC1 undergo a DMA operation.
According to another method, LSCs are implemented using metadata added to the packet header. Under this technique, an entity (eg, a coordinator or the like) on an external platform can determine the elements of the whole service chain, then as soon as the service chain reaches the platform with the LSC, the software working on that platform uses that metadata to perform the To determine packet flow. In this way, an LSC could work with a larger service chain deployed across virtual machines that operate on multiple platforms.
In general, in a network function virtualization system in which a VM arrangement is performed by a coordinator, it may be advantageous for a coordinator to instantiate VMs that host the virtual appliances of a service chain into a single physical platform, such that the inherent advantages of the implementation can be exploited by local service chains according to the embodiments here. For example, since the same services are pipelined for each packet for a given flow, the potential problem of FIFO overflow (no space in a FIFO queue to add more packet data) can be eliminated by the use of appropriately sized FIFO queues become. This method also eliminates any latencies that can occur as a result of congestion in a virtual coupler; such latencies reduce the processing power of the whole service chain because latency for a single packet results in processing latency for all subsequent packets.
It is noted that although FIFO queues are illustrated in the drawings and described herein, it is possible to use other types of queues, as known in the art. However, for concatenated operations, FIFO queues provide inherent benefits through their simplicity and lack of overhead. Furthermore, although a single FIFO queue is shown for each vNIC Rx port, one or more FIFO queues may be used. Separate FIFO queues may be used, for example, for respective flows and / or LSCs.
Computer platforms may also be configured to support both LSC flows and non-LSC flows. For example, during flow classification, a packet may be identified as belonging to a flow that is not associated with an LSC. Thus, the packet could be processed using conventional packet flow processing techniques.
In addition to using flow charts 150 For example, other techniques may be used to allow each VM to determine what actions should be taken for each packet it receives associated with an LSC. For example, in one embodiment, an LSC module in the ingress VM identifies the packets with a suitable LSC tag used by each subsequent VM that receives the packet to determine which services, if any, are being performed on the packet and to determine the next VM to which the packet should be forwarded.
5 shows an example host platform configuration 500 with a platform hardware 502 and various software-based components. The platform hardware 502 includes a central processing unit (CPU) 504 working with a storage interface 506 and an input / output interface (I / O interface) 508 over a connection 510 is coupled. In some embodiments, all or part of the foregoing components may be integrated in a system on a chip (SoC). The storage interface 506 is configured to access the system memory 512 to facilitate, which is usually separate from the SoC.
The I / O interface 508 represents various I / O interfaces through the platform hardware 502 to be provided. In general, the I / O interface 508 may be implemented as a discrete component (such as an ICH (I / O Controller Node) or the like) or it may be implemented on a SoC. Moreover, the I / O interface 508 also be implemented as an I / O hierarchy, such as A Peripheral Component Connection Express I / O Hierarchy (PCIe ™ I / O Hierarchy). The I / O interface 508 further facilitates communication between different I / O resources and devices and other platform components. These include a non-volatile storage device such as a storage device. A disk drive 514 that communicates with the I / O interface 508 via a disk control unit 516 is coupled, a firmware store 518 , a NIC 520 and several others I / O devices shared as other hardware 522 are shown.
In general, the CPU can 504 a single core processor or a multi-core processor include such. B. by M cores 505 shown. The multiple cores are used to create different software components 424 such as B. modules and applications stored in one or more non-volatile memory devices, such as by the disk drive 514 shown. More general is the disk drive 514 various types of nonvolatile memory devices, including both magnetic and optical memory devices, as well as semiconductor memory devices such as memory devices. As semiconductor drives (SSDs) or a flash memory. Optionally, all or part of the software components 524 stored on one or more storage devices (not shown) to which via a network 526 is accessed.
During startup or runtime operations will be different software components 524 and firmware components 528 in the system memory 512 loaded (as shown by the FW space) and on cores 505 as processes comprising execution process strings or the like. Depending on the particular processor or SoC architecture, a given "physical" core may be implemented as one or more logical cores, with processes assigned to the different logical cores. For example, under the Intel® Hyperthreading ™ architecture, each physical core is implemented as two logical cores.
Under a typical system boot for the platform hardware 502 will the firmware 528 in the system memory 512 loaded and configured, followed by booting a host OS 530 , Subsequently, a hypervisor 532 which generally can include an application running on the host OS 530 is running, started. The hypervisor 532 can then be used to start various virtual machines VM 1-N , each of which is configured to have different sections (ie address spaces) of the system memory 512 to use. Each virtual machine VM 1-N can in turn be used to run a respective operating system 534 To host 1-N .
During runtime operations, the hypervisor allows 532 the reconfiguration of various system resources such as B. the system memory 512 , the kernels 505 and the disk drive (s) 514 , In general, the virtual machines create abstractions (in combination with the hypervisor 532 ) between their hosted operating system and the underlying platform hardware 502 , which allows the hardware resources among the VM 1-N to be shared. From the point of view of each host operating system, this operating system "owns" the entire platform and is unaware of the existence of other operating systems running on virtual machines. In reality, each operating system only has access to the resources and / or resource parts provided to it by the hypervisor 532 be assigned to.
As in 5 As further shown, each operating system includes a core space and a user space, both as memory spaces in system memory 512 be implemented. The core space is protected and is used to operate core operating system components, including a networking stack. Meanwhile, the operating room of an operating system is used to operate user applications as represented by devices 1, 2, and N and applications 1A-C, 2A-C, and NA-C.
In general, devices 1, 2, and N represent different SDN or NFV devices that reside on virtual machines on the platform hardware 502 be able to walk. For the sake of simplicity, each VM 1-N is represented as hosting a similar set of software applications; however, this is for illustrative purposes only, as the VMs may host similar applications or accommodate different applications for a given platform. Likewise, each VM 1-N may house a single virtual network device (as shown), may house multiple virtual network devices, or may accommodate any virtual network devices.
As discussed above, in addition to virtualizing the computer platform using VMs, containerized OS virtualization using virtualized containers may be implemented. Examples of embodiments that use container-based virtualization are described in U.S. Patent Nos. 4,917,259, 5,729,759, 4,259,866, and 4,348,237 1b architecture shown 100b and the platform configuration 600 in 6 shown.
The in the platform configuration 600 The hardware configuration used is the same as the platform configuration 500 , as shown. The differences in the platform configurations occur in the software. The software in the platform configuration 600 includes a host OS 602 , an OS virtualization layer 604 and several containers 606 , Optionally, the containers may also be called virtual functional units, virtual machines, or other terms, depending on the vendor providing the vault-based virtualization software or the author describing how the vault-based OS virtualization works.
Each container includes a set of software libraries and applications logically divided into system components and application and / or user components. The system components include system libraries and system software modules. As illustrated, each container comprises a crosslink stack system module or the like. The virtual devices run in the application / user room. In general, the virtual devices may be configured to be unclear as to whether they are working on a VM or a container, or otherwise, there may be slight differences between virtual devices that are configured to run on VMs to those housed by containers.
As in architecture 100b from 1b As shown, the architecture components are substantially similar to those in the architectures 100 and 100a The main differences lie in the fact that the hypervisor passes through the OS virtualization layer 604 is replaced and the VMs by container 606 are replaced. As with the VMs, each container includes a similar set of software components, including a vNIC, one or more virtual devices 136 and corresponding applications 138 as well as a river table 150 ,
In addition to using IP packets and Ethernet packets, virtualization overlays can be used, such as: VXLAN (Virtual Extension Local Area Network), NVGRE (Network Virtualization Using General Routing) that use an inner and an outer IP address. To implement the local service chaining using VXLAN or NVGRE, the presence of overlays would only contribute to the processing of IP as described in the above embodiments. Other techniques for processing packets using VXLAN and NVGRE are known to those of skill in the art, so further details for implementing embodiments using VXLAN or NVGRE are not described herein.
Other aspects of the subject matter described herein are set forth in the following numbered sections:
A method implemented on a computing platform running multiple virtual machines (VMs) or virtualized containers (containers), each VM or each container comprising a virtual network interface controller (vNIC) connected to a virtual coupler in a software cluster. defined network (SDN), the method comprising: implementing a local service chain (LSC) over a plurality of virtual network devices hosted by the plurality of VMs or containers, each virtual network device configured to provide one or more services for perform each of a plurality of packets to be processed by the LSC; and transmitting packet data corresponding to the plurality of packets between VMs or containers without using the virtual coupler.
2. The method of clause 1, wherein the packet data from a first VM or a first container having a first vNIC to a first VM or a first receive buffer (Rx buffer) hosting a current virtual power supply in the LSC second container with a second vNIC with a second Rx buffer harboring a next virtual network device in the LSC are transferred by writing packet data directly into the second Rx buffer.
3. The method of Section 2, wherein the packet data is copied from the first Rx buffer into the second Rx buffer.
4. The method of clause 3, wherein at least a portion of the first and second Rx buffers are configured as respective first-in, first-out queues (FIFO queues) and packet data for a given packet of one or more slots in a first FIFO queue into one or more slots in the second FIFO queue.
5. The method of any of the preceding sections, further comprising: implementing a plurality of LSCs, each LSC comprising a unique sequence of services to be performed on packets being processed using that LSC; and implementing a mechanism for each of the plurality of LSCs to facilitate the transmission of packet data for packets associated with that LSC, wherein for each LSC the packet data is transferred between VMs or containers that connect the virtual network devices for that LSC in a concatenated manner that does not cross the virtual coupler.
6. The method of clause 5, wherein the mechanism comprises a respective local flow table for each VM or each container, wherein the local flow table for a given VM or container is a vNIC (vNIC Rx port) and / or an Rx Buffer for a VM or a container that hosts a next virtual network device in the LSC identifies.
7. The method of clause 6, further comprising configuring the local flow table for each VM or each container using an SDN controller.
8. The method of any one of the preceding sections, further comprising: allocating respective application storage spaces for each of the plurality of VMs or containers, wherein an application running in an application storage space of a VM or a container does not affect the application storage space of another VM or another container; and allocating a shared memory space used for receive buffers used by virtual network interface controllers (vNICs) for each of the VMs or each of the containers, each VM or each container being allowed to read from and into the shared memory space to write.
9. The method of any of the preceding sections, wherein the computing platform comprises a network interface comprising at least one network port communicatively coupled to the computing platform, the method further comprising: receiving a packet at a network port of the network interface; Determining a flow to which the packet belongs and / or an LSC to be used to service the packet; and forwarding the packet from the network interface to a receive buffer of a vNIC for a VM or a container that is used to host a first virtual network device that is defined for the LSC.
10. The method of clause 9, wherein the packet is obtained by copying packet data for the packet from a receive buffer in a memory mapped input / output address space (MMIO address space) of the network interface to the receive buffer of the vNIC using direct memory access (DMA) data transmission ) is forwarded.
11. The method of any of the preceding sections, wherein the computing platform comprises a network interface having at least one network port communicatively coupled to the computing platform, the method further comprising: for each packet received from a network at a predefined network port network port buffers packet data for the packet in a receive buffer in a memory mapped input / output address space (MMIO address space) of the network interface; and copying the packet data for the packet from the receive buffer into a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC using direct memory access (DMA) data transfer -Data).
12. The method of any of the preceding sections, wherein the computing platform comprises a network interface having at least one network port communicatively coupled to the computing platform, further comprising using the same LSC for all packets received at a predefined network port.
13. The method of any of the preceding sections, further comprising: determining that a virtual device is the last virtual device in an LSC used for a given packet; Determining an output port on a physical network adapter from which the packet is to be forwarded; and forwarding packet data from a buffer at a VM or a container hosting the last virtual device to a buffer associated with the output port of the physical network adapter in a manner bypassing the virtual coupler.
14. The method of clause 13, wherein the computing platform comprises a network interface having at least one network port communicatively coupled to the computing platform, the method further comprising: for each packet received from a network at a predefined network port network port, Buffering packet data for the packet in a receive buffer in a memory mapped input / output address space (MMIO address space) of the network interface; and copying the packet data for the packet from the receive buffer into a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC using direct memory access (DMA) data transfer -Data).
15. A non-transitory machine-readable medium having stored thereon a plurality of instructions configured to run on a processor of a computing platform upon which to run multiple VMs or containers, the execution of the plurality of instructions causing the computing platform to perform the method performs according to one of the preceding sections.
16. A computing platform with a means for implementing the method according to any of sections 1-14.
A non-transitory machine-readable medium having stored thereon a plurality of instructions configured to run on a processor of a computing platform on which multiple virtual machines (VMs) or virtualized containers (containers) are operated with at least a portion of the VMs or containers comprising a virtual network interface controller (vNIC) communicatively coupled to a virtual coupler in a software defined network (SDN) and hosting a virtual network device, the execution of the multiple commands causing that the computing platform: implements a local service chain (LSC) over a plurality of the virtual network devices, each virtual network device configured to perform one or more services for each of a plurality of packets to be processed by the LSC; and packet data corresponding to the plurality of packets between VMs or containers by writing packet data from a buffer accessible to a first VM or a first container hosting a first virtual network device configured to update a current service in the LSC to a receive buffer (Rx buffer) of a vNIC of a second VM or a second container hosting a second virtual network device configured to perform a next service in the LSC.
18. The non-volatile machine-readable medium of clause 17, wherein the Rx buffer of the vNIC of the second VM or the second container comprises a second Rx buffer, and wherein the packet data is from a first Rx buffer of a vNIC for the first VM or the first container copied to the second Rx buffer.
19. The non-transitory machine-readable medium of claim 17 or 18, wherein executing the plurality of instructions further causes the computing platform to: at least a portion of the first and second Rx buffers as respective first and second first-in, first-out queues (Figs. FIFO queues) configured; and copy packet data for a given packet of one or more slots in a first FIFO queue into one or more slots in the second FIFO queue.
20. The non-transitory machine-readable medium of any one of sections 17-19, wherein executing the plurality of instructions further causes the computing platform to: implement multiple LSCs, each LSC comprising a unique sequence of services to be performed on packets using this LSC will be processed; and configures a local flow table for each VM or container that hosts a virtual network device, wherein the local flow table for a given VM or container includes an entry for each of the LSCs that comprise a service provided by a virtual network device to be performed, hosted by that VM or container, and the entry for each LSC identifies a vNIC Receive Port (vNIC-Rx Port) and / or Rx Buffer for a VM or a container that / which hosts a next virtual power supply in the LSC.
21. The non-transitory machine-readable medium of clause 20, wherein the plurality of instructions further comprises instructions for implementing an SDN controller that, when executed, configures the local flowchart for each VM or each container.
22. A non-transitory machine-readable medium according to any one of sections 17-21, wherein the execution of the plurality of instructions further causes the computing platform to share a shared memory space used for receive buffers used by vNICs for each of the VMs or containers. assigning each VM or each container is allowed to read from and write to the shared memory space.
23. The non-transitory machine-readable medium of clause 22, wherein executing the plurality of instructions further causes the computing platform to allocate respective application storage spaces for each of the plurality of VMs or containers, wherein an application running in an application storage space of a VM or a container does not rely on the Application storage space of another VM or another container.
24. The non-transitory machine-readable medium of any one of sections 17-23, wherein the computing platform includes a network interface having at least one network port communicatively coupled to the computing platform, and wherein the execution of the plurality of instructions further causes the computing platform to: flow which owns a packet received at the network interface and / or an LSC to be used to service the packet; and forwards the packet from the network interface to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device that is defined for the LSC.
25. A non-volatile machine readable medium according to clause 24, wherein the packet is obtained by copying packet data for the packet from a receive buffer in a memory mapped input / output address space (MMIO address space) of the network interface to the receive buffer of the vNIC using direct memory access data transfer (DMA Data transfer) is forwarded.
26. A non-transitory machine-readable medium according to any one of sections 17-25, wherein the computing platform comprises a network interface having at least one network port connected to the computing platform communicatively coupled, and comprising a memory, and wherein the execution of the plurality of instructions further causes the computing platform: to configure at least a portion of the memory at the network interface as a memory mapped input / output address space (MMIO address space); and the network interface configured to buffer packet data for each of a plurality of packets received from a network at a predefined network port network port in a receive buffer in the MMIO address space; and packet data for each packet from the receive buffer to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC using direct memory access (DMA) data transmission ) to copy.
27. A non-transitory machine-readable medium according to any one of sections 17-26, wherein executing the plurality of instructions further causes the computing platform: to determine a flow to which a packet belongs; determines an LSC to be used to service packets belonging to the flow; and adding information to the package identifying the LSC to be used to service the package.
28. A computing platform, comprising: a processor having multiple processor cores; a system memory operatively coupled to the processor; a network interface controller (NIC) having at least one network port and a memory operatively coupled to the processor; and a memory device having multiple instructions stored thereon, including instructions configured to execute over one or more processor cores to cause the device to initiate a plurality of virtual machines (VMs) or virtualized containers (containers) each VM or container comprises a virtual network interface controller (vNIC), at least a portion of the VMs or containers hosting a virtual network device; configuring a software defined network (SDN) on the platform with a virtual coupler having virtual network ports coupled to respective vNICs and at least one network port on the NIC; implementing a local service chain (LSC) across a plurality of the virtual network devices, each virtual network device configured to perform one or more services for each of a plurality of packets to be processed by the LSC; and packet data corresponding to the plurality of packets between VMs or containers by writing packet data from a buffer accessible to a first VM or a first container hosting a first virtual network device configured to update a current service in the LSC to a receive buffer (Rx buffer) of a vNIC of a second VM or a second container hosting a second virtual network device configured to perform a next service in the LSC.
29. The computing platform of clause 28, wherein executing the plurality of instructions further causes the computing platform to: implement multiple LSCs, each LSC comprising a unique sequence of services to be performed on packets processed using that LSC; and configures a local flow table for each VM or container that hosts a virtual network device, wherein the local flow table for a given VM or container includes an entry for each of the LSCs that comprise a service provided by a virtual network device which is hosted by that VM or container, and the entry identifies for each one LSC a vNIC receive port (vNIC Rx port) and / or Rx buffer for a VM or a container that is next virtual power supply in the LSC.
The computing platform of clause 28 or 29, wherein executing the plurality of instructions further causes the computing platform to allocate a shared memory space used for receive buffers used by vNICs for each of the VMs or containers, each VM or each Container is allowed to read from and write to the shared memory space.
31. The computing platform of any of sections 28-30, wherein the execution of the plurality of instructions further causes the computing platform: a flow associated with a packet received at the NIC and / or an LSC to be used intended to serve the package; and forward the packet from the NIC to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC.
32. The computing platform of any of sections 28-31, wherein executing the plurality of instructions further causes the computing platform: to configure at least a portion of the memory at the NIC as a memory mapped input / output address space (MMIO address space); and the NIC is configured to buffer packet data for each of a plurality of packets received from a network at a predefined network port network port in a receive buffer in the MMIO address space; and packet data for each packet from the receive buffer to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC using direct memory access (DMA) data transmission ) to copy.
33. A computing platform, comprising: a network interface controller (NIC) having at least one network port and memory, and means for instantiating a plurality of virtual machines (VMs) or virtualized containers (containers), each VM or each container having a virtual network interface controller ( vNIC), at least part of the VMs or containers hosting a virtual network device; Configuring a software defined network (SDN) at the platform with a virtual coupler having virtual network ports coupled to respective vNICs and at least one network port at the NIC; Implementing a local service chain (LSC) over a plurality of the virtual network devices, each virtual network device configured to perform one or more services for each of a plurality of packets to be processed by the LSC; and transmitting packet data corresponding to the plurality of packets between VMs or containers by writing packet data from a buffer accessible to a first VM or container hosting a first virtual network device configured to provide a current service in the LSC, to a receive buffer (Rx buffer) of a vNIC of a second VM or a second container hosting a second virtual network device configured to perform a next service in the LSC.
34. The computing platform of clause 33, further comprising means for: implementing a plurality of LSCs, each LSC comprising a unique sequence of services to be performed on packets processed using that LSC; and configuring a local flow table for each VM or container hosting a virtual network device, wherein the local flow table for a given VM or a given container comprises an entry for each of the LSCs comprising a service provided by a virtual network device which is hosted by that VM or container, and the entry identifies for each one LSC a vNIC receive port (vNIC Rx port) and / or Rx buffer for a VM or a container that is next virtual power supply in the LSC.
35. The computing platform of claim 33 or 34, further comprising means for allocating a shared memory space used for receive buffers used by vNICs for each of the VMs or the containers, each VM or each container being enabled to read and write to the shared memory space.
36. A computing platform according to any of sections 33-35, further comprising means for: determining a flow associated with a packet received at the NIC and / or an LSC to be used to service the packet; and forwarding the packet from the NIC to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC.
37. A computing platform according to any of sections 33-36, further comprising means for: configuring at least a portion of the memory at the NIC as a memory mapped input / output address space (MMIO address space); and configuring the NIC to buffer packet data for each of a plurality of packets received from a network at a predefined network port network port in a receive buffer in the MMIO address space; and packet data for each packet from the receive buffer to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC using direct memory access (DMA) data transmission ) to copy.
Although some embodiments have been described with respect to specific implementations, other implementations are possible according to some embodiments. In addition, the arrangement and / or order of elements or other features illustrated in the drawings and / or described herein need not be arranged in the specific manner illustrated and described. Many other arrangements are possible according to some embodiments.
In each system shown in a figure, the elements may each be given the same reference number or a different one in some cases Reference numerals to indicate that the elements shown could be different and / or similar. However, an element may be flexible enough to have various implementations and to work with some or all of the systems shown or described herein. The various elements shown in the figures may be the same or different. Which is called the first element and which second element is called is arbitrary.
In the description and in the claims, the terms "coupled" and "connected" may be used along with their derivatives. Of course, these terms are not meant as synonyms for each other. In particular embodiments, "connected" may be used to indicate that two or more elements are in direct physical or electrical contact with each other. "Coupled" may mean that two or more elements are in direct physical or electrical contact. However, "coupled" may also mean that two or more elements are not in direct contact with each other but still interact or work together.
One embodiment is an implementation or example of the inventions. The reference in the specification to "one embodiment", "a single embodiment", "some embodiments" or "other embodiments" means that a particular feature, structure, or characteristic described in connection with the embodiments, is included in at least some embodiments, but not necessarily in all embodiments of the inventions. The various phenomena "one embodiment," "a single embodiment," or "some embodiments" are not necessarily all referring to the same embodiments.
Not all components, features, structures, characteristics, etc. described and illustrated herein must be included in a particular embodiment or specific embodiments. For example, if the patent specification states that a component, feature, structure, or property may "should," "may," "or," may include, for example, that particular component, feature, structure or specificity Property not included. When the patent specification or claim refers to "an" element, it does not mean that only one element is present. If the patent specification or claims refer to "an additional" element, this does not exclude having more than one of the additional elements present.
Italic letters such as "M" and "N" in the foregoing detailed description are used to represent an integer, and the use of a particular letter is not limited to specific embodiments. Moreover, the same letter can be used to represent separate integers, or different letters can be used. In addition, the use of a specific letter in the detailed description may or may not correspond to the letter used in a claim relating to the same subject matter in the detailed description.
As discussed above, various aspects of the embodiments herein may be facilitated by appropriate software and / or firmware components and applications, such as hardware, software, and software. Software running on a server or device processor, or software and / or firmware executed by an embedded processor or the like. Thus, the embodiments of this invention can be used as or to support a software program, software modules, firmware, and / or distributed software based on some form of processing kernel (such as the CPU of a computer, one or more cores of a multi-core processor). a virtual machine running on a processor or core or otherwise implemented or executed on or within a computer readable or machine readable nonvolatile storage medium. A computer readable or machine readable nonvolatile storage medium includes any mechanism for storing or transmitting information in a form readable by a machine (eg, a computer). For example, a computer readable or machine readable nonvolatile storage medium includes any mechanism that provides (ie, stores and / or transmits) information in a form accessible to a computer or computing machine (eg, a computing device, an electronic system, etc.), such as B. recordable / non-recordable media (e.g., read-only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.). The content may be directly executable ("object" or "executable" form), source code, or difference code ("delta" or "patch" code). A computer readable or machine readable nonvolatile storage medium may also include a memory or database from which content may be downloaded. The computer readable or machine readable nonvolatile storage medium may also include a device or product that stores content at a time of sale or delivery. Thus, delivering a stored content or content-providing device for downloading over a communications medium may be understood as providing a manufacturing genre comprising a computer-readable or machine-readable nonvolatile storage medium having such content as described herein.
Various components, referred to above as processes, servers, or tools, described herein may be a means for performing the described functions. The operations and functions performed by various components described herein may be implemented by software running on a processing element, embedded hardware or the like, or any combination of hardware and software. Such components may be implemented as software modules, hardware modules, specialized hardware (eg, application specific hardware, ASICs, DSPs, etc.), embedded controllers, hardwired circuitry, hardware logic, and so on. The software content (eg, data, instructions, configuration information, etc.) may be provided about an article of manufacture having a computer readable or machine readable nonvolatile storage medium that provides content that represents instructions that may be executed. The content may cause a computer to perform various functions / operations described herein.
The above description of illustrative embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Although specific embodiments of and examples for the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize.
These modifications can be made to the invention in light of the foregoing detailed description. The terms used in the following claims should not be construed as limiting the invention to the specific embodiments disclosed in the specification and the drawings. Rather, the scope of the invention should be determined entirely by the following claims, which should be construed in accordance with established principles of claim interpretation.
A method implemented on a computing platform running multiple virtual machines (VMs) or virtualized containers (containers), each VM or container comprising a virtual network interface controller (vNIC) connected to a virtual coupler in a software defined network (SDN), the method comprising: Implementing a local service chain (LSC) over a plurality of virtual network devices hosted by the plurality of VMs or containers, each virtual network device configured to perform one or more services for each of a plurality of packets to be processed by the LSC; and Transferring packet data contained in the multiple packets between VMs or containers without using the virtual coupler.
The method of claim 1, wherein the packet data from a first VM or a first container having a first vNIC to a first receiving buffer (Rx buffer) accommodating a current virtual network device in the LSC to a second VM or a second container with a second vNIC with a second Rx buffer hosting a next virtual network device in the LSC, by writing packet data directly into the second Rx buffer.
The method of claim 2, wherein the packet data is copied from the first Rx buffer into the second Rx buffer.
The method of claim 3, wherein at least a portion of the first and second Rx buffers are configured as respective first-in, first-out queues (FIFO queues) and packet data for a given packet of one or more slots in a first one FIFO queue to be copied into one or more slots in the second FIFO queue.
The method of any one of the preceding claims, further comprising: Implementing a plurality of LSCs, each LSC comprising a unique sequence of services to be performed on packets being processed using that LSC; and Implementing a mechanism for each of the plurality of LSCs to facilitate transmission of packet data for packets associated with that LSC, wherein for each LSC the packet data is transferred between VMs or containers that host the virtual network devices for that LSC in a concatenated manner that does not cross the virtual coupler.
The method of claim 5, wherein the mechanism comprises a respective local flow table for each VM or each container, the local flow table for a given VM or a given container having a vNIC receive port (vNIC-Rx). Port) and / or an Rx buffer for a VM or a container hosting a next virtual network device in the LSC.
The method of claim 6, further comprising configuring the local flow table for each VM or each container using an SDN controller.
The method of any one of the preceding claims, further comprising: Allocating respective application storage spaces for each of the plurality of VMs or containers, wherein an application running in an application storage space of a VM or a container can not access the application storage space of another VM or container; and Allocating a shared memory space used for receive buffers used by vNICs for each of the VMs or each of the containers, allowing each VM or each container to read from and write to the shared memory space.
The method of claim 1, wherein the computing platform comprises a network interface comprising at least one network port communicatively coupled to the computing platform, the method further comprising: Receiving a packet at a network port of the network interface; Determining a flow to which the packet belongs and / or an LSC to be used to service the packet; and Forwarding the packet from the network interface to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC.
The method of claim 9, wherein the packet is forwarded by copying packet data for the packet from a receive buffer in a memory mapped input / output address space (MMIO address space) of the network interface to the receive buffer of the vNIC using direct memory access (DMA) data transmission becomes.
The method of claim 1, wherein the computing platform comprises a network interface having at least one network port communicatively coupled to the computing platform, the method further comprising: for each packet received by a network at a predefined network interface network port, Buffering packet data for the packet in a receive buffer in a memory mapped input / output address space (MMIO address space) of the network interface; and Copying packet data for the packet from the receive buffer into a receive buffer of a vNIC for a VM or a container used to host a first virtual power supply defined for the LSC using direct memory access (DMA) data transfer. data transmission).
A non-transitory machine-readable medium having stored thereon a plurality of instructions configured to run on a processor of a computing platform upon which to run multiple virtual machines (VMs) or virtualized containers (containers), wherein at least a portion of the VMs or Container comprises a virtual network interface controller (vNIC) communicatively coupled to a virtual coupler in a software defined network (SDN) and hosting a virtual network device, the execution of the plurality of instructions causing the computing platform to: implementing a local service chain (LSC) across a plurality of the virtual network devices, each virtual network device configured to perform one or more services for each of a plurality of packets to be processed by the LSC; and Packet data contained in the plurality of packets is passed between VMs or containers by writing packet data from a buffer accessible to a first VM or container hosting a first virtual network device configured to receive a current one Service in the LSC, to a receive buffer (Rx buffer) of a vNIC of a second VM or a second container hosting a second virtual network device configured to perform a next service in the LSC.
The non-transitory machine-readable medium of claim 12, wherein the Rx buffer of the vNIC of the second VM or the second container comprises a second Rx buffer, and wherein the packet data from a first Rx buffer of a vNIC for the first VM or the first container in the copy the second Rx buffer.
The non-transitory machine-readable medium of claim 12 or 13, wherein executing the plurality of instructions further causes the computing platform to: separate at least a portion of the first and second Rx buffers as respective first and second first-in, first-out (FIFO) queues. Queues) configured; and packet data for a given packet of one or more slots in a first FIFO Queue copied to one or more slots in the second FIFO queue.
The non-transitory machine-readable medium of any one of claims 12-14, wherein the execution of the plurality of instructions further causes the computing platform to: implementing multiple LSCs, each LSC comprising a unique sequence of services to be performed on packets being processed using that LSC; and configures a local flow table for each VM or container hosting a virtual network device, wherein the local flow table for a given VM or container includes an entry for each of the LSCs that comprise a service performed by a virtual network device and the entry for each LSC identifies a vNIC receive port (vNIC Rx port) and / or an Rx buffer for a VM or container that is being hosted by that VM or container hosts a next virtual power supply in the LSC.
The non-transitory machine-readable medium of any one of claims 12-15, wherein executing the plurality of instructions further causes the computing platform to allocate a shared memory space used for receive buffers used by vNICs for each of the VMs or containers, whereby each VM or each container is allowed to read from and write to the shared memory space.
The non-transitory machine-readable medium of any one of claims 12-16, wherein the computing platform comprises a network interface having at least one network port communicatively coupled to the computing platform, and wherein the execution of the plurality of instructions further causes the computing platform to: a flow associated with a packet received at the network interface and / or an LSC to be used to service the packet; and forwards the packet from the network interface to a receive buffer of a vNIC for a VM or container used to host a first virtual network device defined for the LSC.
The non-transitory machine-readable medium of claim 17, wherein the packet is obtained by copying packet data for the packet from a receive buffer in a memory mapped input / output address space (MMIO address space) of the network interface to the receive buffer of the vNIC using direct memory access (DMA) data transmission ) is forwarded.
The non-transitory machine-readable medium of any one of claims 12-18, wherein the computing platform comprises a network interface having at least one network port communicatively coupled to the computing platform and memory, and wherein the execution of the plurality of instructions further causes the computing platform to: configures at least a portion of the memory at the network interface as a memory mapped input / output address space (MMIO address space); and the network interface is configured to Packet data for each of a plurality of packets received from a network at a predefined network port network port in a receive buffer in the MMIO address space; and Packet data for each packet from the receive buffer to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC using direct memory access (DMA) data transfer. to copy.
The non-transitory machine-readable medium of any of claims 12-19, wherein executing the plurality of instructions further causes the computing platform to: determines a flow to which a packet belongs; determines an LSC to be used to service packets belonging to the flow; and Add information to the package identifying the LSC to be used to service the package.
A computer platform comprising: a processor having multiple processor cores; a system memory operatively coupled to the processor; a network interface controller (NIC) having at least one network port and a memory operatively coupled to the processor; and a storage device having multiple instructions stored thereon, including instructions configured to execute over one or more of the processor cores to cause the device to instantiate multiple virtual machines (VMs) or virtualized containers (containers), wherein each VM or container comprises a virtual network interface controller (vNIC), at least a portion of the VMs or containers hosting a virtual network device; configuring a software defined network (SDN) on the platform with a virtual coupler having virtual network ports coupled to respective vNICs and at least one network port on the NIC; implementing a local service chain (LSC) over a plurality of the virtual network devices, each virtual network device configured to perform one or more services for each of a plurality of packets to be processed by the LSC; and packet data contained in the plurality of packets between VMs or containers by writing packet data from a buffer accessible to a first VM or a first container hosting a first virtual network device configured to current service in the LSC, to a receiving buffer (Rx buffer) of a vNIC of a second VM or a second container hosting a second virtual network device configured to perform a next service in the LSC.
The computing platform of claim 21, wherein executing the plurality of instructions further causes the computing platform to: implementing multiple LSCs, each LSC comprising a unique sequence of services to be performed on packets being processed using that LSC; and configures a local flow table for each VM or container hosting a virtual network device, wherein the local flow table for a given VM or container includes an entry for each of the LSCs that comprise a service performed by a virtual network device The entry for each LSC identifies a vNIC receive port (vNIC Rx port) and / or Rx buffer for a VM or container that is next virtual Power supply unit in the LSC accommodated.
The computing platform of claim 21 or 22, wherein executing the plurality of instructions further causes the computing platform to allocate a shared memory space used for receive buffers used by vNICs for each of the VMs or each of the containers, each VM or each Container is allowed to read from and write to the shared memory space.
The computing platform of any one of claims 21-23, wherein the execution of the plurality of instructions further causes the computing platform to: a flow to which a packet received at the NIC belongs, and / or an LSC to be used to service the packet; and forward the packet from the NIC to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC.
The computing platform of any one of claims 21-24, wherein executing the plurality of instructions further causes the computing platform to: configures at least a portion of the memory at the NIC as a memory mapped input / output address space (MMIO address space); and configured the NIC to Packet data for each of a plurality of packets received from a network at a predefined network port network port in a receive buffer in the MMIO address space; and Packet data for each packet from the receive buffer to a receive buffer of a vNIC for a VM or a container used to host a first virtual network device defined for the LSC using direct memory access (DMA) data transfer. to copy.
DE102015108145.8A 2014-06-23 2015-05-22 Local service chaining with virtual machines and virtualized containers in software-defined networking Pending DE102015108145A1 (en)
DE102015108145A1 true DE102015108145A1 (en) 2015-12-24
DE102015108145.8A Pending DE102015108145A1 (en) 2014-06-23 2015-05-22 Local service chaining with virtual machines and virtualized containers in software-defined networking
JP2017538357A (en) * 2014-12-04 2017-12-21 ノキア ソリューションズ アンド ネットワークス マネージメント インターナショナル ゲゼルシャフト ミット ベシュレンクテル ハフツング Virtualized resource steering