Patent Publication Number: US-10791066-B2

Title: Virtual network

Description:
BACKGROUND 
     An enterprise network may include a core network connected with a plurality of virtual local area networks (VLANs). The VLANs may for example be of the type defined by 802.1Q. Hosts, such as virtual machines, in a same VLAN may communicate with each other on layer-2. Hosts belonging to different VLANs may be capable of communicating with each other on layer-3, such as IP communication, instead of layer-2. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is an example of an infrastructure of a virtual network system. 
         FIG. 2  is a block diagram of an example of software defined network (SDN) controller. 
         FIG. 3  is an example flowchart of layer-2 packet processing method. 
         FIG. 4  is an example of a virtual network table. 
         FIG. 5  is another example flowchart of layer-2 packet processing method. 
         FIG. 6  is an example a flow table. 
         FIG. 7  is another example of a flow table. 
         FIG. 8  is an example showing the migration of virtual machine. 
         FIG. 9  is an example flowchart illustrating the flow entry updating process for virtual machine migration. 
         FIG. 10  is an example of an updated flow table. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  is an example of an infrastructure of a virtual network system. The layer-2 communication in a virtual network may be controlled by a SDN controller and a SDN switch. OpenFlow protocol is a currently popular SDN technology, and will be taken as the example hereinafter. However, it is to be noted that other protocols capable of achieving the SDN functions may also be adopted. In an example, the system includes an SDN controller  10  (“controller  10 ”) deployed on a first physical server  50 , and SDN switches  20   a ,  20   b  (“switches  20   a ,  20   b ”) respectively deployed on a second physical server  60   a  and a third physical servers  60   b . The system also includes virtual machines VM-A, VM-B, VM-C, and VM-D deployed on the second physical server  60   a , and the virtual machines VM-A′, VM-B′, VM-C′, and VM-D′ deployed on the third physical server  60   b . The switches  20   a ,  20   b  connect to an external physical switch  70  via uplink ports  90   a ,  90   b . At the same time, the switches  20   a ,  20   b  connect to each of the virtual machines via downlink ports, such as downlink port  100   a.    
     Referring to  FIGS. 2 and 3 , in an example, the controller  10  is implemented on a first physical server  50 . The first physical server  50  includes a processor  51 , a memory  52 , a non-volatile storage (e.g. NVRAM)  53  and a network interface  54  and these components may be connected via internal bus  55 . The SDN controller and the method described in this controller may be implemented by an instruction set, i.e., machine-readable instructions which are executed by the processor  51 . The machine readable instructions may include controller logic and may be stored in the non-volatile storage  53 . The processor  51  may fetch the machine readable instructions from the NVRAM  53  into the memory  52  and then execute the method.  FIG. 3  is an example flowchart of layer-2 packet forwarding method including the following blocks. 
     At block  301 , virtual network information including host information is received and saved in a virtual network table. 
     At block  302 , a forwarding request message including at least a header portion of a layer-2 packet is received from the SDN switch. 
     At block  303 , a determination is made regarding whether a source host and a destination host of the layer-2 packet are in the same virtual network according to the virtual network table. 
     Upon determining that the source host and the destination host of the layer-2 packet are not in the same virtual network, at block  304 , the controller  10  drops the layer-2 packet. 
     In an example, the hosts may be VM-A, VM-B, VM-C, and VM-D deployed on the second physical server  60   a , and also VM-A′, VM-B′, VM-C′, and VM-D′ deployed on the third physical server  60   b . An administrator may define a first virtual network “Rose” and a second virtual network “Tom”. Virtual machines VM-A, VM-B, VM-A′ and VM-B′ belong to the first virtual network, and virtual machines VM-C, VM-D, VM-C′, VM-D′ belong to the second virtual network. The host information of each virtual network may include ID and MAC address of the virtual machines. It can be understood that the virtual network information may be updated when there is a new virtual machine intending to join the virtual network. 
     When the VM-A sends the layer-2 packets, such as Ethernet packets, to VM-C, the first layer-2 packet is transmitted to the downlink port  100   a  of switch  20   a.    
     The switch  20   a  is a virtual switch deployed on the second server  60   a . The switch  20   a  searches its flow table and determines whether the first layer-2 packet matches any of flow entries in the flow table. If no matching flow entry is found, the switch  20   a  may send a forwarding request message to the controller  10 . In an example, the forwarding request message may be a packet-in message defined by OpenFlow protocol. The forwarding request message may include at least the header portion of the layer-2 packets sent by VM-A. 
     After receiving the forwarding request message, the controller  10  may determine whether the access event is allowable according to the header portion of the layer-2 packet. The determination is made in accordance with a source MAC address and a destination MAC address. Upon determining that the source MAC address and destination MAC address are not within the same virtual network, the controller  10  may drop the layer-2 packets. That is, VM-A and VM-C are not capable of communicating with each other on layer-2. It can be understood that VM-A is capable of performing a layer-3 communication with VM-C when a layer-3 route exists. 
     The above example contributes to the virtual network configuration for the reason that more than 4096 VLANs may be defined. More than 4096 VLANs may be defined because the virtual network table stores information indicating which hosts are in which VLAN. Thus packets sent from the hosts need not carry a VLAN tag as the VLAN of the host may be determined by the SDN controller based on host information in the virtual network table. While in many cases a VLAN tag is limited to 4096 VLANs, the virtual network table may be able to support more VLANs. Also, as the 12-bit VLAN ID need not be carried by the layer-2 packet, the overall transmission efficiency may be enhanced. 
     Though hosts in the same virtual network are capable of communicating with each other on layer-2, an exceptional rule for prohibiting such layer-2 communication may be configured. For instance, the layer-2 communication between VM-A and VM-B is prohibited although the two hosts are in the same virtual network “Rose”.  FIG. 4  is an example of a virtual network table. The virtual network information is described in JavaScript Object Notation (JSON) format. The term “virtual Network ID” relates to the ID of the virtual network, such as Rose. The term “Instance ID” relates to the ID of the virtual machine, such as VM-A. There are four virtual machines respectively indicated by VM-A, VM-B, VM-A′, and VM-B′. The MAC addresses of the virtual machines are described after “Instance ID.” For instance, the MAC addresses of the virtual machine with “Instance ID” equaling to VM-A is “00.00.00.00.00.01”. The virtual network information may further include the term “Policy-ID”, which indicates an access policy identifier relating to the virtual network. For example, “VLAN-Policy-test1” includes an access policy entry “VM-A deny VM-B” defining that layer-2 communication between the virtual machines VM-A and VM-B are prohibited. It can be understood that the access policy may be defined in accordance with real scenarios. 
       FIG. 5  is another example flowchart of layer-2 packet processing method. In an example, also referring to  FIG. 1 , the access from the virtual machine VM-A on Server  60   a  to VM-A′ on server  60   b  will be described hereinafter. 
     At block  501 , the virtual network information is received and saved in the virtual network table. The virtual network information may include the virtual machine information and the access policy defining the access between the virtual machines within the same virtual network. The virtual machine information may include ID and MAC address of the virtual machines. 
     Upon receiving a layer-2 packet sent from the virtual machine VM-A, at block  502 , the switch  20   a  searches its flow table and determines whether a corresponding flow entry is found. Upon determining that a flow entry is found, at block  508 , the layer-2 packet is forwarded by the switch  20   a  according to the found flow entry, and the process ends. Otherwise, a default entry is selected, and the process goes to block  503 . 
     At block  503 , the switch  20   a  sends a forwarding request message to the controller  10 . In an example, the forwarding request message contains at least the header portion of the packet. 
     After receiving the forwarding request message, at block  504 , the controller  10  may determine whether the source virtual machine and the destination virtual machine are in the same virtual network according to the virtual network table. If yes, the process goes to block  505 . Otherwise, at block  507 , the packet is dropped. 
     At block  505 , the controller  10  searches for the access policy relating to the virtual networks where the virtual machines VM-A and VM-A′ belong to. After identifying the corresponding access policy, at block  507 , the controller  10  may determine to drop the packet when the access policy prohibiting the access between the virtual machines VM-A and VM-A′. 
     If there is no access policy prohibiting the access between the virtual machines VM-A and VM-A′, at block  506 , the controller  10  may generate a first flow entry, and may distribute the first flow entry to the switches  20   a .  FIG. 6  is an example a flow table showing the first flow entry. Flow characteristics of the first flow entry may include a source MAC address (SMAC), a destination MAC address (DMAC). The first flow entry may also include an action, and an “Egress Port”. The SMAC is the MAC address of the source virtual machine (VM-A), which is “00.00.00.00.00.01” in this example. The DMAC is the MAC address of the destination virtual machine (VM-A′), which is “00.00.00.00.00.03” in this example. The egress port relates to the uplink port  90   a  connecting to the physical switch  70 . The action of the first flow entry is to forwarding the matched packets via the uplink port  90   a  of the switch  20   a.    
     In another example, at block  505 , a second flow entry relating to the access from the destination virtual machine (VM-A′) to the source virtual machine (VM-A) may be generated at the same time, and the second flow entry may be distributed to the switch  20   a . The second flow entry shown in  FIG. 6  is generated if there is an access policies allowing the layer-2 communication between the destination virtual machine (VM-A′) and the source virtual machine (VM-A). The flow characteristics of the second flow entry may include SMAC, DMAC. The second flow entry may also include an action, and an “Egress Port”. The SMAC is the MAC address of the destination virtual machine (VM-A′), which is “00.00.00.00.00.03” in this example. The DMAC is the MAC address of the source virtual machine (VM-A), which is “00.00.00.00.00.01” in this example. The egress port is the downlink port  100   a  of the switch  20   a . The action of the second flow entry action is to forwarding the matched packets via the downlink port  100   a  of the switch  20   a.    
     As mentioned in the above example, when the source virtual machine and the destination virtual machine of the packet are not in the same virtual network, the packet may be dropped. A virtual machine trying to initial layer-2 communication with another virtual machine in a different virtual network may relate to packets sent by an attacker. In another example, the controller may generate a third flow entry to prevent such packets continually sent to the controller. The third flow entry shown in  FIG. 7  may be generated when an access policy prohibiting the layer-2 communication between the source virtual machine (VM-A) and the destination virtual machine (VM-A′). The flow characteristics of the third flow entry are the same with that of the first flow entry. The difference resides in that the action defined in the third flow entry is to dropping the matched packets. 
     In an example, the switch may be a virtual switch supporting the forwarding mode of Virtual Ethernet Port Aggregator (VEPA). The switch  20   a  processes the packets according to the distributed flow entries. 
     The first flow entry generated at block  506  has explicitly defined the uplink port as the egress port of the packet. When the flow entry is distributed, the uplink port information is carried in a forwarding response message sent from the controller  10  to the switch  20   a . In an example, the forwarding response message is a packet-out message according to OpenFlow protocol. As such, the switch  20   a  deployed on the server  60   a  may forward the packets with the same flow characteristics according to the distributed flow entry. 
     The above example illustrates how switch  20   a  forwards the packets sent from the virtual machine VM-A to VM-A′. It can be understood that similar packet forwarding process can be performed by the switch  20   b . The difference may reside in the details of the found or generated entries. 
     In another example, a virtual machine migration may be initiated by an administrator. The migration is transparent to the hosts needing the services provided by the virtual machine.  FIG. 8  is an example showing the migration, in which VM-A migrates from the second physical server  60   a  to the third physical server  60   b .  FIG. 9  is an example flowchart illustrating the flow entry updating process for virtual machine migration. 
     At block  901 , for instance, a virtual machine migration event, such as a virtual machine migrating from server  60   a  to server  60   b , may be sensed by the switch  20   b.    
     In block  902 , the switch  20   b  sends a migration notification to the controller  10  upon sensing the migration. 
     After receiving the migration notification, at block  903 , the controller  10  updates the corresponding flow entries. 
     In an example, when the virtual machine VM-A migrates from Server  60   a  to Server  60   b , the services provided by the virtual machine VM-A remain. As the physical server on which the virtual machine VM-A is deployed and the connected switch have been changed, the flow entries relating to the access from the virtual machine VM-A to VM-B, VM-A′, and VM-B′ are also different. Thus, the layer-2 packets may not be forwarded according to the original flow entries. 
     For this reason, in response to the migration notification, the controller  10  may update the flow entries relating to the migrated virtual machine and other virtual machines located in the same virtual network. In addition, the updated flow entries may be further distributed to the currently connected switch, for instance, the switch  20   b . The example updated flow table is shown in  FIG. 10 . As shown, according to the updated flow entries, the layer-2 packet sent from VM-B to VM-A may be forward through the port  101   d . On the opposite direction, the layer-2 packet sent from VM-A to VM-B may be forward through the port  90   b . The layer-2 packet sent from VM-A′ to VM-A may be forward through the Egress port “ 101   d .” On the opposite direction, the layer-2 packet sent from VM-A to VM-A′ may be forward through the port  101   a.    
     The foregoing descriptions are only examples of the present disclosure and are not for use in limiting the protection scope thereof. Any modification, equivalent replacement and improvement made under the spirit and principle of the present disclosure should be included in the protection scope thereof.