Patent Publication Number: US-2016226715-A1

Title: Multi-virtualization scheme selection

Description:
BACKGROUND 
     Tenants within a computing network (e.g., cloud computing network, etc.) can support a variety of virtualization schemes to communicate data. Tenants can include different virtual scheme capabilities. For example, some tenants can be capable of supporting virtual local area network (VLAN), a virtualization scheme, while some tenants may not be capable of supporting VLAN. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates a diagram of an example of an environment for multi-virtualization scheme selection according to the present disclosure. 
         FIG. 2  illustrates a diagram of an example of a system for multi-virtualization scheme selection according to the present disclosure. 
         FIG. 3A  illustrates a diagram of an example of a system for multi-virtualization scheme selection according to the present disclosure. 
         FIG. 3B  illustrates a diagram of an example computing device according to the present disclosure. 
         FIG. 4  illustrates a flow diagram of an example method for multi-virtualization scheme selection according to the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     A network (e.g., cloud computing network, etc.) can include a number of nodes (e.g., compute nodes, servers, etc.) that each include capabilities for supporting particular virtualization schemes (e.g., virtual local area networks (VLANs), Netlord, network virtualization using generic routing encapsulation (NVGRE), virtual extensible local area network (VXLAN), etc.). Virtualization schemes can include methods of communicating data (e.g., data packets, etc.) within a network. The capabilities for supporting virtualization schemes can be different for each of the number of nodes and/or for each of the number of tenants (e.g., occupants of space within a node, occupants of space hosted by a node, etc.) hosted (e.g., utilizing node resources, etc.) by each of the number of nodes. For example, a first tenant hosted by a particular node can have different operable virtualization schemes (e.g., virtualization schemes that can be supported (e.g., utilized) for communication, etc.) compared to a second tenant hosted by the particular node. 
     Multi-virtualization scheme selection can be utilized to provide for the utilization of a plurality of virtualization schemes for communication within a network. That is, a particular virtualization scheme from the plurality of virtualization schemes can be selected during runtime for communication of data. Multi-virtualization scheme selection can include determining a number of virtualization schemes between nodes (e.g., a pair of nodes) within the network. Determining the number of virtualization schemes can include determining which of a plurality of virtualization schemes are supported by each of the nodes within the network. 
     As described herein, each of the number of nodes and/or tenants hosted by the number of nodes can support different virtualization schemes to communicate data to other nodes and/or tenants hosted by other nodes. In some embodiments, a portion of the number of virtualization schemes that are operable (e.g., functional, etc.) for a first node or tenant hosted by the first node can be different than a portion of the number of virtualization schemes that are operable for a second node or tenant hosted by the second node. 
     Determining the number of virtualization schemes between the nodes within the network includes determining a number of operable virtualization schemes between the nodes that can be utilized to communicate data packets. As described herein, the nodes can include compute nodes and/or a tenant VM&#39;s hosted by each of the compute nodes (e.g., computing device, server, etc.). 
     In addition, a number of properties of the communication between the nodes can be analyzed. For example, the number of properties can include a type of flow (e.g., speed of flow, etc.), a determined number of middleboxes (e.g., firewall, packet prevention system, etc.), and a size of communication packets (e.g., relatively large data size, relatively small data size, etc.). A virtualization scheme can be selected from the number of virtualization schemes based on the number of properties of the communication between the nodes. For example, a virtualization scheme for communication between the nodes can be made based on the properties of the communication to be sent. In this example, the virtualization scheme can be selected in real time operation and can dynamically change from communication to communication based on the properties of the communication to be sent. 
       FIG. 1  illustrates a diagram of an example of an environment  100  for multi-virtualization scheme selection according to the present disclosure. The environment  100  can include a system  104 , a data store  108 , server devices  102 - 1 ,  102 - 2 , . . . ,  102 -N, and/or client devices  110 - 1 , . . . ,  110 -N. The client devices  110 - 1 , . . . ,  110 -N can include a client device  114  that includes a user interface  112 . 
     The system  104 , as described herein, can represent a number of different combinations of hardware and software configured to select a virtualization scheme for the communication between nodes based on a number of properties of the communication. The system  104  can include the computing device  304  represented in  FIG. 3B . 
     The server devices  102 - 1 ,  102 - 2 , . . . ,  102 -N can be a computing device that can be configured to respond to network requests received from the client devices  110 - 1 ,  110 -N,  112 . The client devices  110 - 1 ,  110 -N,  112  can include browsers and/or other applications to communicate requests with the system  104 , data store  108 , and/or server devices  102 - 1 ,  102 - 2 , . . . ,  102 -N via a communication link  106  (e.g., network, local area network (LAN), internet, etc.). 
       FIG. 2  illustrates a diagram of an example of a system  216  for multi-virtualization scheme selection according to the present disclosure. The system  216  can include an external network  206  (e.g., network  106  as referenced in  FIG. 1 , internet, local area network (LAN), wide area network (WAN), etc.). The system  216  can also include a software defined network (SDN) controller  218 . The SDN controller  218  can include a number of tenant routers (e.g., Tenant  1  router  224 - 1 , Tenant  2  router  224 - 2 , etc.). The SDN controller  218  can be utilized to control and/or manage communication between a number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  within the system  216 . For example, the SDN controller  218  can select and implement a particular virtualization scheme for communication between the number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3 . The number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  can be a number of servers (e.g., computing devices, etc.). There are three compute nodes shown for example only. There can be a greater number or a fewer number of compute nodes within the system  216 . 
     The SDN controller  218  can include software, hardware, and/or logic to perform a number of functions as described herein. For example, the SDN controller  218  can be a system such as system  340  and/or a computing device such as computing device  304  as referenced in  FIG. 3 . That is, the SDN controller  218  can include hardware and/or a combination of hardware and programming to determine an optimal (e.g., efficient, fastest, most productive, user defined, etc.) and/or a desired virtualization scheme and select the optimal and/or desired virtualization scheme during run time for the communication between tenants, wherein the optimal virtualization scheme is based on the type of virtualization schemes that are operable for particular nodes and/or tenants and/or based on properties of the communication. 
     The SDN controller  218  can determine properties of the communication (e.g., data packets, etc.) to be sent from a first node and/or tenant to a second node and/or tenant. The properties of the communication can include, but are not limited to: packet size (e.g., bytes per packet, etc.), a number of virtualization schemes supported by the nodes (e.g., compute node  220 - 1  and compute node  220 - 2 , etc.), user defined settings (e.g., defining particular packets to be communicated via a particular virtualization scheme, etc.), location of each node of the nodes, location of a physical router (e.g., switch, real router, hardware router, etc.), and/or a number of middleboxes (e.g., firewall, etc.) within the path of the communication. The SDN controller  218  can analyze a number of the properties of the communication to be sent between the number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  and select a virtualization scheme for the communication between the nodes based on the number of properties. 
     The system  216  can represent a cloud computing network that includes the number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3 . Each of the compute nodes can be connected via a number of links  226 - 1 ,  226 - 2 ,  226 - 3 . The number of links can be a physical connection (e.g., Ethernet connection, etc.) between the number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  and between the compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  and the SDN controller  218 . The physical router  222  can also be coupled to the number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  via the number of physical connection  226 - 1 ,  226 - 2 ,  226 - 3 . Each of the compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  can include a number of tenants (e.g., virtual machines (VM), hosts, organization with a plurality of VM&#39;s, etc.). For example, compute node  220 - 1  can include a Tenant  1  and a Tenant  2 . Each tenant hosted by the number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  can have a number of VMs that are utilized by the tenant. For example, Tenant  1  can be a user account that can support a plurality of VMs. In this example, Tenant  1 &#39;s VM&#39;s can be located on compute node  220 - 1 , compute node  220 - 2  and compute node  220 - 3 . 
     The number of tenants (e.g., Tenant  1 , Tenant  2 , etc.) can have corresponding tenants hosted by each of the other compute nodes  220 - 1 ,  220 - 2 ,  220 - 3 . For example, Tenant  1  hosted by compute node  220 - 1  can have a corresponding Tenant  1  hosted by compute node  220 - 2 . As described herein, each of the compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  can support a variety of different virtualization schemes (e.g., type of virtual network communication, type of cloud network communication, etc.). For example, compute node  220 - 1  can have a fewer number of virtualization schemes that are operable compared to compute node  220 - 2 . In this example, communication between a pair of nodes that includes compute node  220 - 1  and compute node  220 - 2  would be limited to the operable virtualization schemes between compute node  220 - 1  and compute node  220 - 2 . 
     In addition, as described herein, each tenant hosted by each of the number of compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  can also be limited to particular operable virtualization schemes when communicating with a corresponding tenant. For example, Tenant  1  hosted by compute node  220 - 1  can be limited to a number of virtualization schemes when communicating to Tenant  1  hosted by compute node  220 - 1 . In this example, the virtualization scheme can include a Netlord virtualization scheme. 
     Current virtualization schemes have advantages and disadvantages that can be utilized by the SDN controller  218  to select a virtualization scheme that can promote the advantages of a particular virtualization scheme for a particular communication between nodes. That is, the SDN controller  218  can select an optimal virtualization scheme for communication between VM&#39;s from a particular tenant located hosted by nodes. For example, the SDN controller  218  can determine that data to be communicated from Tenant  1  hosted by compute node  220 - 1  to Tenant  1  hosted by compute node  220 - 2  should be communicated using a particular virtualization scheme (e.g., VLAN) via path  228 . In this example, the SDN controller  218  can determine that the data to be communicated will be optimized by utilizing VLAN based on the properties of the communication as described herein. In another example, the SDN controller  218  can determine that the data to be communicated from Tenant  2  hosted by compute node  220 - 1  to Tenant  2  hosted by compute node  220 - 2  should be communicated using a different virtualization scheme (e.g., Netlord) via path  230 . In this example, the SDN controller  218  can determine that the data to be communicated will be optimized by utilizing Netlord based on the properties of the communication as described herein. 
     As described herein, one of the number of properties utilized by the SDN controller  218  can include a location of each node of the node pair in relation to a physical router (e.g., physical router  222 , etc.). For example, the SDN controller  218  can utilize the location of compute node  220 - 2  and compute node  220 - 3  in reference to physical router  222 . In this example, it can be determined by the SDN controller  218  that compute node  220 - 2  is on a first side (e.g., left side of diagram) of the physical router  222  and that compute node  220 - 3  is on a second side (e.g., right side of diagram) of the physical router  222 . In this example, the SDN controller  218  can determine, based on the properties of the communication and/or the communication path, that the communication between Tenant  1  hosted by compute node  220 - 2  and Tenant  1  hosted by compute node  220 - 3  should be communicated by VXLAN via path  232  through the physical router  222 . In addition, the SDN controller  218  can determine, based on the properties of the communication and/or the communication path, that the communication between Tenant  2  hosted by compute node  220 - 2  and Tenant  2  hosted by compute node  220 - 3  should be communicated by NVGRE via path  234  through the physical router  222 . 
     As described herein, the SDN controller  218  can determine an optimal virtualization scheme to optimize the performance of communication between nodes and/or tenant VM&#39;s hosted by nodes. The optimal virtualization scheme can be an operable virtualization scheme with a greatest predicted speed (e.g., predicted speed of transfer of data packets from a first node to a second node, etc.) of communication from the number of operable virtualization schemes. The SDN controller  218  can dynamically (e.g., prior to each communication, determined upon request of communication and prior to sending the communication, etc.) determine a virtualization scheme for each communication within the system  216 . That is, the SDN controller  218  can optimize the virtualization scheme for each communication between each node based on the properties of the communication and/or the communication paths available. 
       FIG. 3A  illustrates a diagram of an example of a system  340  for multi-virtualization scheme selection according to the present disclosure. The system  340  can include a data store  308  (e.g., data store  108  as referenced in  FIG. 1 , etc.), a system  322 , and/or a number of engines  342 ,  346 ,  348 ,  350 . The system  322  can be in communication with the data store  308  via a communication link, and can include the number of engines (e.g., receiving engine  354 , determining engine  346 , analyzing engine  348 , selecting engine  350 , etc.). The system  322  can include additional or fewer engines than illustrated to perform the various functions described herein. The system can represent software and/or hardware of an SDN controller (e.g., SDN controller  218  as referenced in  FIG. 2 , etc.). 
     The number of engines can include a combination of hardware and programming that is configured to perform a number of functions described herein (e.g., select an operable virtualization scheme from the determined number of operable virtualization schemes based on the number of properties of the communication between nodes, etc.). The programming can include program instructions (e.g., software, firmware, etc.) stored in a memory resource (e.g., computer readable medium, machine readable medium, etc.) as well as hard-wired program (e.g., logic). 
     The receiving engine  354  can include hardware and/or a combination of hardware and programming to receive information relating to virtualization scheme capabilities for a plurality of nodes (e.g., compute nodes  220 - 1 ,  220 - 2 ,  220 - 3  as referenced in  FIG. 2 , etc.). In addition, the receiving engine  354  can receive user defined inputs relating to specifications that are desired by the user. For example, the user defined inputs can specify a virtualization scheme for particular types of data packets and/or communication between particular nodes. 
     The determining engine  346  can include hardware and/or a combination of hardware and programming to determine a number of operable virtualization schemes for a number of node pairs from the plurality of nodes based on the received information. The determining engine  346  can include hardware and/or a combination of hardware and programming to determine virtualization schemes between node pairs that can be utilized to communicate data packets between the node pairs. 
     The analyzing engine  348  can include hardware and/or a combination of hardware and programming to analyze communication and a number of communication paths between a pair of nodes from the plurality of nodes. As described herein, the communication between the pair of nodes can be analyzed to determine properties of the communication and the number of communication paths. 
     The selecting engine  350  can include hardware and/or a combination of hardware and programming to select an operable virtualization scheme from the determined number of operable virtualization schemes based on the number of properties of the communication and the number of communication paths between the pair of nodes. As described herein, the selecting engine  350  can select an operable virtualization scheme that is an optimized virtualization scheme for communicating the specific communication between the node pairs. That is, the selecting engine  350  can select a virtualization scheme that promotes advantages of particular virtualization schemes while avoiding negatives of other virtualization schemes. For example, when the data packets of the communication are relatively large, the selecting engine  350  can select a virtualization scheme that promotes a speed and accuracy of communicating relatively large data packets. 
       FIG. 3B  illustrates a diagram of an example computing device  304  according to the present disclosure. The computing device  304  can utilize software, hardware, firmware, and/or logic to perform a number of functions described herein. 
     The computing device  304  can be any combination of hardware and program instructions configured to share information. The hardware, for example can include a processing resource  352  and/or a memory resource  356  (e.g., computer-readable medium (CRM), machine readable medium (MRM), database, etc.) A processing resource  352 , as used herein, can include any number of processors capable of executing instructions stored by a memory resource  356 . Processing resource  352  may be integrated in a single device or distributed across multiple devices. The program instructions (e.g., computer-readable instructions (CRI)) can include instructions stored on the memory resource  356  and executable by the processing resource  352  to implement a desired function (e.g., select an operable virtualization scheme with a greatest predicted speed of communication from the number of operable virtualization schemes, etc.). 
     The memory resource  356  can be in communication with a processing resource  352 . A memory resource  356 , as used herein, can include any number of memory components capable of storing instructions that can be executed by processing resource  352 . Such memory resource  356  can be a non-transitory CRM or MRM. Memory resource  356  may be integrated in a single device or distributed across multiple devices. Further, memory resource  356  may be fully or partially integrated in the same device as processing resource  352  or it may be separate but accessible to that device and processing resource  352 . Thus, it is noted that the computing device  304  may be implemented on a participant device, on a server device, on a collection of server devices, and/or on a combination of the user device and the server device. 
     The memory resource  356  can be in communication with the processing resource  352  via a communication link (e.g., path)  354 . The communication link  354  can be local or remote to a machine (e.g., a computing device) associated with the processing resource  352 . Examples of a local communication link  354  can include an electronic bus internal to a machine (e.g., a computing device) where the memory resource  356  is one of volatile, non-volatile, fixed, and/or removable storage medium in communication with the processing resource  352  via the electronic bus. 
     A number of modules  358 ,  360 ,  362 ,  364  can include CRI that when executed by the processing resource  352  can perform a number of functions. The number of modules  358 ,  360 ,  362 ,  364  can be sub-modules of other modules. For example, the determining module  360  and the analyzing module  362  can be sub-modules and/or contained within the same computing device. In another example, the number of modules  358 ,  360 ,  362 ,  364  can comprise individual modules at separate and distinct locations (e.g., CRM, etc.). 
     Each of the number of modules  358 ,  360 ,  362 ,  364  can include instructions that when executed by the processing resource  352  can function as a corresponding engine as described herein. For example, the receiving module  358  can include instructions that when executed by the processing resource  352  can function as the receiving engine  344 . In another example, the determining module  360  can include instructions that when executed by the processing resource  352  can function as the determining engine  346 . 
       FIG. 4  illustrates a flow diagram of an example method  470  for multi-virtualization scheme selection according to the present disclosure. As described herein, multi-virtualization scheme selection can dynamically implement an optimal virtualization scheme for each communication between a plurality of nodes within a network. 
     At box  472 , the method  470  can include determining a number of virtualization schemes between a number of nodes. Determining the number of virtualization schemes between the number of nodes can include determining a plurality of virtualization schemes that can be utilized for communication by the number of nodes. In addition, determining the number of virtualization schemes can include determining a number of non-compatible virtualization schemes. Non-compatible virtualization schemes can be virtualization schemes that can be supported by a first node of the number of nodes and cannot be supported by a second node of the number of nodes. 
     At box  474 , the method  470  can include analyzing a number of properties of communication between the number of nodes. Analyzing the number of properties can include analyzing a type of flow (e.g., location of the number of nodes compared to a physical router, etc.), a determined number of middleboxes (e.g., firewall, etc.), and a size of communication packets. 
     At box  476 , the method  470  can include selecting a virtualization scheme for the communication between the number of nodes based on the number of properties of the communication. Selecting the virtualization scheme for the communication can include selecting a virtualization scheme from the determined number of virtualization schemes that has a highest rate of speed for communication between the number of nodes. 
     The method  470  can include receiving a number of user inputs that define an operable virtualization scheme to be selected based on the analyzed number of properties of communication. The user inputs can include specifications for communication particular data packets. For example, a user can input particular specifications when particular data packets are being communicated within a network. The particular data packets can include a particular type, a particular size, among other features of data packets. 
     As used herein, “a” or “a number of” something can refer to one or more such things. For example, “a number of virtualization schemes” can refer to one or more virtualization schemes. As used herein, “logic” is an alternative or additional processing resource to execute the actions and/or functions, etc., described herein, which includes hardware (e.g., various forms of transistor logic, application specific integrated circuits (ASICs), etc.), as opposed to computer executable instructions (e.g., software, firmware, etc.) stored in memory and executable by a processor. 
     The figures herein follow a numbering convention in which the first digit or digits correspond to the drawing figure number and the remaining digits identify an element or component in the drawing. Similar elements or components between different figures may be identified by the use of similar digits. For example,  108  may reference element “08” in  FIG. 1 , and a similar element may be referenced as  308  in  FIG. 3 . 
     The specification examples provide a description of the applications and use of the system and method of the present disclosure. Since many examples can be made without departing from the spirit and scope of the system and method of the present disclosure, this specification sets forth some of the many possible example configurations and implementations.