Abstract:
A method and a network device are provided to transmit network packets through a network security device. The method, performed by the network device, receives a request to send a network packet from a first computing device to a second computing device over a network that includes the network device and the network security device. The network packet includes a first network interface identifier for identifying the first computing device and a second network interface identifier for identifying the second computing device. The method identifies third and fourth network interface identifiers that cause the network packet to be transmitted through the network security device. The method transmits the network packet over the network through the network security device using the third and fourth network interface identifiers. The method transmits the network packet to the second computing device using the first and second network interface identifiers.

Description:
CLAIM OF BENEFIT TO PRIOR APPLICATIONS 
       [0001]    This application is a continuation of U.S. application Ser. No. 14/152,088 filed Jan. 10, 2014, which is a continuation of U.S. application Ser. No. 12/965,802, filed on Dec. 10, 2010, now issued U.S. Pat. No. 8,640,221, which claims the benefit of U.S. Provisional Application 61/285,953, filed on Dec. 11, 2009, the entire content of each of which is incorporated herein by reference. 
     
    
     BACKGROUND 
       [0002]    An intrusion prevention system (IPS) is a type of security device that protects against unwanted malicious network attacks and intrusions. Typically, an IPS monitors activity between networks and prevents the unwanted activity (e.g., by dropping packets) from occurring once the IPS detects it. A hardware IPS device may have a number of port pairs in which network traffic enters one port of a port pair and exits the other port of the port pair. That is, a port pair functions as an independent bridge between the devices that are connected to a port pair. These devices include routers, hubs, switches, and computers, among other like devices. 
         [0003]    While hardware IPS devices may be effective network security devices, they are generally expensive. IPS port pairs are a scarce resource due to the high price of the hardware IPS and the low number of port pairs available. Hence, it is desirable to maximize the use of each port pair. 
         [0004]    Similar to physical computer systems, virtual computer systems need protection against these unwanted behaviors. In particular, virtual computer systems need protection not only against intrusions that come from outside of the physical machine on which the virtual computer system is hosted, but also against intrusions that come from other virtual computer systems hosted on the same physical machine. Therefore, virtual computer systems may benefit from utilization of an IPS. In order to do so, network traffic to and from virtual computer systems need to pass through the IPS before reaching its destination. 
         [0005]    However, there are problems implementing network security with an IPS in an environment of virtual computer systems that prevent the network traffic to be passed through the IPS before reaching its destination. These problems cause the network traffic to bypass the IPS, leaving virtual computer systems and their hosts vulnerable to malicious attacks and intrusions. Therefore, there is a desire for a mechanism that allows network traffic to and from virtual computer systems to pass through a hardware IPS device. 
       BRIEF SUMMARY 
       [0006]    Some embodiments of the invention provide a method that transmits network packets through a network security device to monitor network traffic and/or system activities for malicious activity. Some embodiments are used in a network of virtual machines in which several virtual servers host virtual machines while other embodiments are used in a network that includes physical computing devices. Still, some embodiments are used in a network that includes both virtual machines and physical computing devices. 
         [0007]    In some embodiments, the computing devices in a network each include one or more unique network interface identifiers that identify the computing devices for sending and receiving network traffic among each other. Some of these embodiments use media access control (MAC) addresses as network interface identifiers. For example, the method of some embodiments receives a request to send a network packet from a first computing device to a second computing device over a network that includes the network security device. The network packet includes a MAC address for identifying the first computing device on the network (e.g., source MAC address) and a MAC address for identifying the second computing device on the network (e.g., destination MAC address). 
         [0008]    Some embodiments perform MAC network address translation (MAC-NAT) in order to route the network packet through the network security device. For example, a pair of MAC addresses is identified for the network packet and the network packet is translated so that the network packet is routed through the network security device. The MAC addresses are identified and the network packet&#39;s MAC addresses are translated using the identified MAC addresses in a manner that causes the network packet to be routed through the network security device when it is transmitted over the network. For instance, the pair of MAC addresses is identified so that, from the perspective of the network security device, a different network is “presented” on each side of the network security device, causing the network packet to be routed through the network security device. The network packet&#39;s original MAC addresses (e.g., source MAC and destination MAC addresses) are translated using the identified pair of MAC addresses. The translated network packet is transmitted over the network through the network security device. The network packet is then translated back to its original MAC addresses and transmitted over the network to the second computing. In some embodiments, the network packet avoids the network security device when it is transmitted over the network using its original MAC addresses. 
         [0009]    The preceding Summary is intended to serve as a brief introduction to some embodiments of the invention. It is not meant to be an introduction or overview of all inventive subject matter disclosed in this document. The Detailed Description that follows and the Drawings that are referred to in the Detailed Description will further describe the embodiments described in the Summary as well as other embodiments. Accordingly, to understand all the embodiments described by this document, a full review of the Summary, Detailed Description and the Drawings is needed. Moreover, the claimed subject matters are not to be limited by the illustrative details in the Summary, Detailed Description and the Drawing, but rather are to be defined by the appended claims, because the claimed subject matters can be embodied in other specific forms without departing from the spirit of the subject matters. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    The novel features of the invention are set forth in the appended claims. However, for purposes of explanation, several embodiments of the invention are set forth in the following figures. 
           [0011]      FIG. 1  illustrates an example system configuration of some embodiments. 
           [0012]      FIG. 2  illustrates an example flooding of the system configuration of  FIG. 1  according to some embodiments of the invention. 
           [0013]      FIG. 3  illustrates a switch not passing packets through an intrusion prevention system (IPS) device in the system configuration of  FIG. 1  according to some embodiments of the invention. 
           [0014]      FIG. 4  illustrates a dual switch system configuration of some embodiments. 
           [0015]      FIG. 5  illustrates a flow chart of an example packet flow of the system of  FIG. 4  according to some embodiments of the invention. 
           [0016]      FIG. 6  illustrates a flow chart of an example packet flow of the system of  FIG. 4  according to some embodiments of the invention. 
           [0017]      FIG. 7  illustrates a physical network system configuration of some embodiments. 
           [0018]      FIG. 8  illustrates a computer system with which some embodiments are implemented. 
       
    
    
     DETAILED DESCRIPTION 
       [0019]    In the following detailed description of the invention, numerous details, examples, and embodiments of the invention are set forth and described. However, it will be clear and apparent to one skilled in the art that the invention is not limited to the embodiments set forth and that the invention may be practiced without some of the specific details and examples discussed. 
         [0020]    Some embodiments of the invention provide a method that transmits network packets through a network security device to monitor network traffic and/or system activities for malicious activity. Some embodiments are used in a network of virtual machines in which several virtual servers host virtual machines while other embodiments are used in a network that includes physical computing devices. Still, some embodiments are used in a network that includes both virtual machines and physical computing devices. 
         [0021]    In some embodiments, the computing devices in a network each include one or more unique network interface identifiers that identify the computing devices for sending and receiving network traffic among each other. Some of these embodiments use media access control (MAC) addresses as network interface identifiers. For example, the method of some embodiments receives a request to send a network packet from a first computing device to a second computing device over a network that includes the network security device. The network packet includes a MAC address for identifying the first computing device on the network (e.g., source MAC address) and a MAC address for identifying the second computing device on the network (e.g., destination MAC address). 
         [0022]    Some embodiments perform MAC network address translation (MAC-NAT) in order to route the network packet through the network security device. For example, a pair of MAC addresses is identified for the network packet and the network packet is translated so that the network packet is routed through the network security device. The MAC addresses are identified and the network packet&#39;s MAC addresses are translated using the identified MAC addresses in a manner that causes the network packet to be routed through the network security device when it is transmitted over the network. For instance, the pair of MAC addresses is identified so that, from the perspective of the network security device, a different network is “presented” on each side of the network security device, causing the network packet to be routed through the network security device. The network packet&#39;s original MAC addresses (e.g., source MAC and destination MAC addresses) are translated using the identified pair of MAC addresses. The translated network packet is transmitted over the network through the network security device. The network packet is then translated back to its original MAC addresses and transmitted over the network to the second computing. In some embodiments, the network packet avoids the network security device when it is transmitted over the network using its original MAC addresses. 
         [0023]    Several more detailed embodiments of the invention are described in the sections below. Section I provides a conceptual description of an example system configuration of some embodiments. Next, Section II describes different methods for routing network packets through a network security device using media access control network address translation (MAC-NAT). Finally, Section III describes a computer system that implements some embodiments of the invention. 
       I. Intrusion Prevention System (IPS) 
       [0024]    In some embodiments, it is desirable to pass network traffic through a physical hardware intrusion prevention system (IPS) device. That is, it is desirable to pass packets coming to/from a computing device (e.g., a protected virtual machine (VM)) over the network through a hardware IPS device. If the hardware IPS device allows a network packet to pass, it sends the packet to their original destination. On the other hand, if the hardware IPS device does not allow a packet to pass, it drops the packet. 
         [0025]    The hardware IPS device of some embodiments is a layer  2  device that does not support any layer  3  tunneling protocols. In general, packets entering one side of the IPS is either allowed to pass through to the other side or not allowed to pass through (e.g., by dropping the packets). In some embodiments, a hardware IPS device includes several port pairs where each port pair functions as an independent bridge between the corresponding port pair. Port pairs may be a scarce resource because the hardware IPS device price to number of port pairs ratio is high. 
         [0026]    With the objective of maximizing the use of a hardware IPS device, several computing devices (e.g., VM servers) share the same port pair of the hardware IPS device in some embodiments. In addition, it may be desirable to minimize the extra configuration needed to support sharing the same port pair of the hardware IPS device. For example, it may be desirable to minimize the use of additional network interfaces on the computing devices (e.g., VM servers). 
         [0027]    A source of complication may exist in some embodiments where several security devices located on different computing devices (e.g., VM servers) share the same port pair on a hardware IPS device.  FIG. 1  illustrates a system configuration of some embodiments that includes several VM servers sharing the same port pair of a hardware IPS device. As shown, the system of  FIG. 1  includes IPS  101 , switch  102 , and VM servers  103 - 105 . VMware ESX servers are shown throughout this application as VM servers for exemplary purposes. However, other types of VM servers may be used as well. 
         [0028]    A problem of the system configuration shown in  FIG. 1  is flooding. When a switch receives a packet, if the switch has not learned the destination media access control (MAC) address, the switch floods the packets by sending the packet to all the devices connected to the switch.  FIG. 2  illustrates flooding in the system configuration of  FIG. 1 . Here, switch  202  has not learned the destination MAC address of a packet sent from VM server  203 . Thus, when switch  202  receives the packet from VM server  203 , switch  202  sends the packet to all the other devices connected to switch  202 , which are IPS  201 , VM server  204 , and VM server  205 . A problem with flooding is that it creates excessive load on all the VM servers and network connections that receive the network traffic. As the number of VM servers in a system configuration increases, the load on each individual VM server also increases. Thus, the system is not scalable. 
         [0029]    Another problem with the system configuration of  FIG. 1  is that a packet may not pass through the hardware IPS device. For example, if a switch learns that two MAC addresses are on the same side of the switch, the switch diverts packets sent from one of MAC addresses to the other MAC address without passing the packets through the hardware IPS device.  FIG. 3  illustrates the switch not passing packets through the IPS in the system configuration of  FIG. 1 . Here, switch  302  has learned the MAC addresses of VM server  303  and VM server  305 , which are located on the same side of switch  302 . Therefore, when VM server  303  sends a packet to VM server  305 , switch  302  passes the packet directly to VM server  305  without passing the packet through IPS  301 . 
         [0030]    Another problem exists when the switch determines that a packet has to go out through the same switch port in which it arrived. In that case the switch drops the packet. 
         [0031]    In some embodiments, a solution to the problems discussed above is to present to the IPS and/or switch the picture that the IPS and/or switch expect. That is, each machine is located on each side of the IPS and/or switch instead of being located on the same side of the IPS and/or switch. For example, an IPS and/or switch expect each machine to be located at a specific location relative to the IPS and/or switch (e.g., “north” or “south”). So in cases where all machines are physically located on the same “side” of the IPS and/or switch, a logical picture is presented to the IPS and/or switch such that each and every connection is between the machines that are physically located on the same “side” of the IPS and/or switch are on opposite sides of the IPS and/or switch. 
         [0032]    The solution can be accomplished by maintaining two shadows of a VM in order to place each VM on different sides of the hardware IPS device. That is, for each connection between VMs, the connection is presented to the hardware IPS device as a connection between shadows that are on opposite sides of the hardware IPS device. 
       II. MAC-NAT 
       [0033]    As discussed above, two shadows (e.g., a red shadow and a blue shadow) are maintained for each VM in some embodiments. For purposes of explanation, the two sides of the hardware IPS device and/or switch are called the red network and the blue network respectively. Accordingly, the red shadows are only seen on the red network and blue shadows are only seen from the blue network. 
         [0034]    In some embodiments, a system configuration includes two switches.  FIG. 4  illustrates a dual switch system configuration of some such embodiments. As shown,  FIG. 4  includes IPS  401 , red switch  402 , blue switch  403 , and VM servers  408  and  409 . VM server  408  includes virtual firewall (VF)  404 , includes virtual switch (VS)  411  and VS  412 , and hosts various VMs including VM  406 . Likewise, VM server  409  includes VF  405 , includes VS  413  and VS  414 , and hosts various VMs including VM  407  and VM  410 . In some embodiments, a virtual switch functions like the switches described above. In some embodiments, IPS  401  is a hardware IPS device as described above, and red switch  402  and blue switch  403  are switches that learn MAC addresses as described above. 
         [0035]    When a connection from one VM to another VM is detected (e.g., VM  406  to VM  407 ), some embodiments arbitrarily determine the connection to be presented between the two VMs (e.g., VM  406  (red) and VM  407  (blue)). For instance, for each packet transmitted through a connection from VM  406  to VM  407 , some of these embodiments determine that each packet is sent through the IPS from VM  406  (red) to VM  407  (blue). Similarly, for each packet transmitted through the connection from VM 407  to VM 406 , the packet is sent through the IPS from VM  407  (blue) to VM  406  (red). As another example, if there is a connection from VM  407  to VM  410 , some embodiments arbitrarily determine to present a connection from VM  407  (red) to VM  410  (blue). 
         [0036]    In some embodiments, a method of implementing the shadows is through MAC network address translation (NAT) or MAC-NAT. As discussed above, switches identify where to route network packets based on the MAC address included in the network packets. In order to create two shadows that look distinct to the switch, MAC addresses of network packets are changed (or translated). Thus, in addition to its original MAC address, each VM machine has two additional MAC addresses allocated for it, one corresponding to the red network and one corresponding to the blue network. A decision is made as to which MAC addresses in a packet are translated, and in which direction of the hardware IPS device the packet is sent. 
         [0037]    a. Double Pass-through 
         [0038]    The following is a description of an implementation of MAC-NAT in a dual switch system configuration of some embodiments. For purposes of explanation, the system configuration illustrated in  FIG. 4  is used as an example. In this embodiment, packets pass through a hardware IPS device twice. In addition, each VM server in this example has two dedicated interfaces with one for each side of the hardware IPS device. 
         [0039]    The VF of each VM server maintains two MAC addresses (one for the red network and one for the blue network) for each VM that it hosts. The MAC addresses are unique to the corresponding VF and are not shared and do not overlap with MAC addresses of VMs on other VM servers. When a packet from VM  406  to VM  407  needs to be sent through IPS  401 , VF  404  passes the packet through VF  404 ′s reject/accept security policy to make sure that it passes. Then, VF  404  decides if it flows from the red network to the blue network or vice versa. In some embodiments, the decision is made based on which VM made the request. For example, a packet going from client to server is sent from the red network to the blue network and a packet going from server to client is sent from the blue network to the red network. In some embodiments, the decision is based on an arbitrary canonical order of the protected VMs. For example, the decision may be made based on a unique ID used to identify a VM where the VM with the lower ID is assigned a MAC address on the red network and the other VM is assigned a MAC address on the blue network. 
         [0040]    Once a side is chosen, the VF changes (e.g., translates) the MAC addresses of the packet so that, for example, the source MAC address is one that belongs to the red network and the destination MAC address is one that belongs to blue network. Then, the packet is sent over the network to red switch  402 . 
         [0041]    When a VF of a VM server receives a packet from the blue (or the red) network, it will check to see if the destination MAC address is a MAC address that the VM owns and also a MAC address that belongs to the blue (or the red) network. If it is not, the VF drops the packet. Otherwise, the VF internally marks that it went through IPS  401 , translates the MAC addresses back to their original MAC addresses, and passes the packet through the security policy of the destination VM. In some embodiments, even if the security policy of the destination VM requires IPS  401  to check the packet, the packet does not have to be sent back through IPS  401  since it was already sent through IPS  401 . 
         [0042]    The following is a more detailed description of the packet flow of this embodiment. As an example, the packet flow of a packet sent from VM  406  on VM server  408  to VM  407  on VM server  409  is described. VF  404  processes the packet and discovers that the packet needs to be sent through IPS  401 . VF  404  translates the packet so that the source MAC address is one that belongs to VM server  408  for the red network and the destination MAC address is one that belongs to VM server  408  for the blue network. Then, the packet is sent over the network to red switch  402 . Red switch  402  learns about the source MAC address that belongs to VM server  408  for the red network, but since red switch  402  does not know anything about the destination MAC address that belongs to VM server  408  for the blue network, red switch  402  floods the packet. All the other VM servers connected to red switch  402  (i.e., VM server  409 ) receive the packet. Since the destination MAC address that belongs to VM server  408  for the blue network is not a MAC address belonging to the red network, VM server  409  drops the packet. 
         [0043]    As part of the flooding, the packet is also sent over the network through IPS  401  to blue switch  403 . Blue switch  403  learns about the source MAC address that belongs to VM server  408  for the red network and floods the packets to all the other VM servers (i.e., VM server  408  and VM server  409 ). VF  405  drops the packet because the destination MAC address that belongs to VM server  408  for the blue network does not belong to VM server  409 . VF  404  receives the packet. Since the destination MAC address belongs to VM server  408  for the blue network, VF  404  translates the packet back to the original MAC addresses and passes the packet to VM  407  through the regular network. 
         [0044]    The packet arrives at VF  405 . VF  405  translates the packet so that the source MAC address is one that belongs to VM server  409  for the red network and the destination MAC address is one that belongs to VM server  409  for the blue network. Then, the packet is sent over the network to red switch  402 . Flooding and learning happens as described above with red switch  402  and blue switch  403  and the packet comes back to VF  405 . Then, VF  405  passes the packet to VM  407 . 
         [0045]    Next, the packet flow of a packet sent in response to the above packet from VM  407  on VM server  409  to VM  406  on VM server  408  is described. VF  405  translates the packet so that the source MAC address is the MAC address belonging to VM  409  that was previously used for the blue network, above. The destination MAC address is the MAC address belonging to VM  409  that was previously used for the red network. Then, the packet is sent over the network to blue switch  403 . Blue switch  403  learns the source address. Since blue switch  403  already learned about the destination MAC address, blue switch  403  sends the packet over the network only to IPS  401 . IPS  401  passes the packet to red switch  402 . Like blue switch  403 , red switch  402  learns about the source MAC address and sends the packet only to VM server  409  since red switch already learned about the destination MAC address. VF  405  receives the packet, translates the packet back to the original MAC addresses, and sends the packet to VM  406  through the regular network. The packet arrives at VM server  408  where it is processed against similar security policies. 
         [0046]    When VM  406  sends another packet to VM  407 , the packet flow behaves like before but without the flooding since red switch  402  and blue switch  403  has already learned of the MAC addresses. 
         [0047]      FIG. 5  illustrates a flow chart of an example packet flow of the system of  FIG. 4  of some embodiments. In particular,  FIG. 5  shows a flow chart of the packet flow between VM  406  and VM  407  as described above. As shown, a packet is sent (at step  501 ) from VM  406  and is destined for VM  407 . Next, VF  404  chooses (at step  502 ) appropriate MAC addresses to perform MAC-NAT on the packet&#39;s source and destination MAC addresses so that the packet is send from VM  406  through the red network back to VM  406  through the blue network and thus through IPS  401 . The packet is sent (at step  503 ) over the network to red switch  402 . Since red switch  402  has not learned the MAC addresses of the packet, red switch  402  floods (at step  504 ) the packet. IPS  401  receives (at step  505 ) the flooded packet and passes it through IPS  401 . Next, the packet is sent (at step  506 ) over the network to blue switch  403 . Like red switch  402 , blue switch  403  has not learned the MAC addresses of the packet. Therefore, blue switch floods (at step  507 ) the packet. VF  404  receives (at step  508 ) the packet and sends it to VM  407  through the regular network. 
         [0048]    The packet is received (at step  509 ) at VF  405 . Based on the security policies of VF  405 , the packet is required to pass through IPS  401  again. Thus, VF  405  chooses (at step  510 ) appropriate MAC addresses to NAT the packet&#39;s MAC addresses to perform MAC-NAT on the packet&#39;s source and destination MAC addresses so that the packet is send from VM  407  through the red network back to VM  407  through the blue network and thus through IPS  401 . The packet is sent (at step  511 ) over the network to red switch  402 . Since red switch  402  has not learned the MAC addresses of the packet, red switch  402  floods (at step  512 ) the packet. IPS  401  receives (at step  513 ) the flooded packet and passes it through IPS  401 . Next, the packet is sent (at step  514 ) over the network to blue switch  403 . Blue switch  403  has not learned the MAC addresses of the packet so blue switch floods (at step  515 ) the packet. Finally, VF  405  receives (at step  516 ) the packet and sends it to VM  407 . 
         [0049]    The above discussion of the dual pass-through packet flow of a packet sent from VM  406  to VM  407  is merely an example of the behaviors of packets in the system of  FIG. 4 . Accordingly, packets sent from any VM to any other VM in the system of  FIG. 4  behaves the same or similar to the packet flow described above. 
         [0050]    In some embodiments of the embodiments described above, broadcasting and multicasting do not behave differently than one another. MAC addresses are allocated for broadcast and/or multicast. For instance, a single pair of red and blue MAC broadcast/multicast addresses is allocated for each VM server in some embodiments. Further, the appropriate MAC addresses are reconstructed based on the IP addresses. Note that each of these packets may pass through the hardware IPS device. Thus, a packet passes through the hardware IPS device for each participating VM. 
         [0051]    b. Single Pass-through 
         [0052]    The following is a description of another implementation of MAC-NAT in a dual switch system configuration of some embodiments. For purposes of explanation,  FIG. 4  is used as an example. In this embodiment, packets pass through the hardware IPS device once. However, it allows traffic flowing between protected VMs to be passed through the hardware IPS device. In addition, each VM server in this example has two dedicated network interfaces with one for each side of the hardware IPS device. 
         [0053]    In this embodiment, a VF controller or center (not shown) maintains two MAC addresses for each protected VM (one for the red network and one for the blue network). Therefore, each VM server knows all the MAC addresses of the other VM servers by virtue of the VF controller. 
         [0054]    When a packet from VM  406  to VM  407  needs to be sent through IPS  401 , VF  404  passes the packet through VF  404 ′s reject/accept security policy to make sure that it passes. Then, VF  404  decides if it flows from the red network to the blue network or vice versa. In some embodiments, the decision is made based on which VM made the request. For example, a packet going from client to server is sent from the red network to the blue network and a packet going from server to client is sent from the blue network to the red network. In some embodiments, the decision is based on an arbitrary canonical order of the protected VMs. For example, the decision may be made based on the ID of a VM where the VM with the lower ID is assigned a MAC address on the red network and the other VM is assigned a MAC address on the blue network. 
         [0055]    Once a side is chosen, the VF changes the MAC addresses of the packet so that the source MAC address is one that belongs to the red network and the destination MAC address is one that belongs to blue network. Then, the packet is sent over the network to red switch  402 . When a VF receives a packet from the blue (or the red) network, it will check to see if the destination MAC address is a MAC address that it owns and also a MAC address that belongs to the blue network. If it is not, the VF drops the packet. Otherwise, the VF internally marks that it went through IPS  401 , translates the MAC addresses back to their original forms, and passes the packet through the security policy of the destination VM. In some embodiments, even if the security policy of the destination VM requires IPS  401  to check the packet, the packet does not have to be sent back through IPS  401  since it was already sent through IPS  401 . 
         [0056]    The following is a more detailed description of the packet flow of this embodiment. As an example, the packet flow of a packet sent from VM  406  on VM server  408  to VM  407  on VM server  409  is described. VF  404  processes the packet and discovers that the packet needs to be sent through IPS  401 . VF  404  translates the packet so that the source MAC address is one that belongs to VM server  408  for the red network and the destination MAC address is one that belongs to VM server  409  for the blue network. Then, the packet is sent over the network to red switch  402 . Red switch  402  learns about the source MAC address that belongs to VM server  408  for the red network, but since red switch  402  does not know anything about the destination MAC address that belongs to VM server  409  for the blue network, red switch  402  floods the packet. All the other VM servers connected to red switch  402  (i.e., VM server  409 ) receive the packet. Since the destination MAC address that belongs to VM server  409  for the blue network is not a MAC address belonging to the red network, VM server  409  drops the packet. 
         [0057]    As part of the flooding, the packet is sent over the network through IPS  401  to blue switch  403 . Blue switch  403  learns about the source MAC address that belongs to VM server  408  for the red network and floods the packets to all the other VM servers (i.e., VM server  408  and VM server  409 ). VF  404  drops the packet because the destination MAC address that belongs to VM server  409  for the blue network does not belong to VM server  408 . VF  405  receives the packet because the destination MAC address belongs to VM server  409 . VF  405  translates the packet back to the original MAC addresses and passes the packet to VM  407 . 
         [0058]    Next, the packet flow of a packet sent in response to the above packet from VM  407  on VM server  409  to VM  406  on VM server  408  is described. VF  405  translates the packet so that the source MAC address is the MAC address belonging to VM server  409  that was previously used for the blue network. The destination MAC address is the MAC address belonging to VM server  408  that was previously used for the blue network. Then, the packet is sent over the network to blue switch  403 . Blue switch  403  learns the source MAC address. Since blue switch  403  already learned about the destination MAC address, blue switch  403  sends the packet only to IPS  401 . IPS  401  passes the packet to red switch  402 . Like blue switch  403 , red switch  402  learns about the source MAC address and sends the packet only to VM server  408  since red switch  402  already learned about the destination MAC address. VF  404  receives the packet, translates the packet back to the original MAC addresses, and sends it to VM  406 . 
         [0059]    When VM  406  sends another packet to VM  407 , the packet flow behaves like before but without the flooding since red switch  402  and blue switch  403  has already learned of the MAC addresses. 
         [0060]      FIG. 6  illustrates a flow chart of an example packet flow of the system of  FIG. 4  of some embodiments. In particular,  FIG. 6  shows a flow chart of the packet flow between VM  406  and VM  407  as described above. As shown, a packet is sent (at step  601 ) over the network from VM  406  and is destined to VM  407 . Next, VF  404  chooses (at step  602 ) appropriate MAC addresses to perform MAC-NAT on the packet&#39;s source and destination MAC addresses so that the packet is send from VM  406  through the red network to VM  407  through the blue network and thus through IPS  401 . The packet is sent (at step  603 ) over the network to red switch  402 . Since red switch  402  has not learned the MAC addresses of the packet, red switch  402  floods (at step  604 ) the packet. IPS  401  receives (at step  605 ) the flooded packet and passes it through IPS  401 . Next, the packet is sent (at step  606 ) over the network to blue switch  403 . Like red switch  402 , blue switch  403  has not learned the MAC addresses of the packet. Therefore, blue switch floods (at step  607 ) the packet. Finally, VF  405  receives (at step  608 ) the packet and sends it to VM  407 . 
         [0061]    The above discussion of the single pass-through packet flow of a packet sent from VM  406  to VM  407  is merely an example of the behaviors of packets in the system of  FIG. 4 . Accordingly, packets sent from any VM to any other VM in the system of  FIG. 4  behaves the same or similar to the packet flow described above. 
         [0062]    In some embodiments, broadcasting and multicasting packets so that they traverse through the hardware IPS device only once is difficult to accomplish. Therefore, the dual pass method described above may be used for broadcast and multicast. 
         [0063]    In some embodiments, two kinds of unprotected machines are external machines and unprotected VMs. For external machines, traffic passing between virtual and the physical world can still pass through a hardware IPS device. However, unprotected VMs may be a problem because the physical network cannot be relied on to pass the traffic through the hardware IPS device. Therefore, some embodiments use the dual pass-through method described above, but accurate and up to date information about the VMs is needed in order for the method to function correctly. 
         [0064]    c. Physical Environment 
         [0065]    The single pass-through and dual pass-through embodiments described above pertain to virtual environments with virtual switches and virtual machines. However, MAC-NAT can also be used in a physical environment. For example, MAC-NAT can be used in any environment that includes a flat layer  2  network and one or more cooperating security devices (e.g., a switch, bridge, etc.)  FIG. 7  illustrates a physical network system configuration of some embodiments where MAC-NAT may be used. 
         [0066]    As shown, the system configuration of  FIG. 7  includes physical switches  701 - 704 , central management device  705 , and physical machines  706 - 709 . In some embodiments, physical switches  701 - 704  function the same or similar to switches  402  and  403  of  FIG. 4  as described above. In some embodiments, switches  701 - 704  each includes a firewall that functions the same or similar to VFs  404  and  405  as described above. In some embodiments, physical machines  706 - 709  function the same or similar to VMs  406 ,  407 , and  410  of  FIG. 4  as described above. That is, physical machines  706 - 709  are protected machines. 
         [0067]    In some embodiments where the dual pass-through method described above is utilized, the firewall in each of physical switches  702 - 704  maintains its own database of MAC addresses that are allocated to the physical machines that are connected to it. The MAC addresses maintained by each firewall are unique and are not the same as the MAC addresses maintained by any other firewall. This allows each firewall to maintain two other MAC addresses for each physical machine connected to it (one for the red network and one for the blue network). 
         [0068]    In some embodiments where the single pass-through method described above is utilized, central management device  705  functions the same or similar to the VF controller (or center) described above. That is, central management device  705  maintains a global database of MAC addresses for the physical machines (e.g., physical machines  706 - 709 ) connected to all the switches (e.g., physical switches  702 - 704 ). This allows central management device  705  to maintain two other MAC addresses for each physical machine (one for the red network and one for the blue network). 
         [0069]    The various examples and embodiments described above illustrate system configurations that include only virtual machines or only physical computers. However, one of ordinary skill in the art will realize that these system configurations can include both virtual machines and physical computers as well as other types of virtual and non-virtual computing devices (e.g., smartphones, tablet devices, laptop computers, etc.) that are connected to the network. 
         [0070]    In addition, the sections above describe different techniques for routing network traffic through an IPS of a system configuration of some embodiments. However, one of ordinary skill will recognize that such techniques can be employed to route networking traffic over the network through any other network security device (e.g., an intrusion detection system (IDS) device, a firewall device, an anti-virus device) that would otherwise not pass through such network device. Moreover, while the network security devices described in the previous sections are hardware devices, the network security devices can be software devices in some embodiments. 
       III. Computer System 
       [0071]      FIG. 8  illustrates a computer system  800  with which some embodiments are implemented. Such a computer system includes various types of computer readable mediums and interfaces for various other types of computer readable mediums. Computer system  800  includes a bus  805 , a processor  810 , a system memory  815 , a read-only memory (ROM)  820 , a permanent storage device  825 , input devices  830 , and output devices  835 . The components of the computer system  800  are electronic devices that automatically perform operations based on digital and/or analog input signals. 
         [0072]    One of ordinary skill in the art will recognize that the computer system  800  may be embodied in other specific forms without deviating from the spirit of the invention. For instance, the computer system may be implemented using various specific devices either alone or in combination. For example, a cellular phone may include the input and output devices  830  and  835 , while a remote personal computer (“PC”) may include the other devices  805 - 825 , with the cellular phone connected to the PC through a cellular network that accesses the PC through its network connection  840 . 
         [0073]    The bus  805  collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the computer system  800 . For instance, the bus  805  communicatively connects the processor  810  with the read-only memory  820 , the system memory  815 , and the permanent storage device  825 . From these various memory units, the processor  810  retrieves instructions to execute and data to process in order to execute the processes of the invention. In some cases, the bus  805  may include wireless and/or optical communication pathways in addition to or in place of wired connections. For example, the input and/or output devices may be coupled to the system using a wireless local area network (W-LAN) connection, Bluetooth®, or some other wireless connection protocol or system. 
         [0074]    The read-only-memory (ROM)  820  stores static data and instructions that are needed by the processor  810  and other modules of the computer system. The permanent storage device  825 , on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the computer system  800  is off. Some embodiments use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device  825 . 
         [0075]    Other embodiments use a removable storage device (such as a floppy disk, flash drive, or CD-ROM) as the permanent storage device. Like the permanent storage device  825 , the system memory  815  is a read-and-write memory device. However, unlike storage device  825 , the system memory is a volatile read-and-write memory, such as a random access memory (RAM). The system memory stores some of the instructions and data that the processor needs at runtime. In some embodiments, the sets of instructions used to implement invention&#39;s processes are stored in the system memory  815 , the permanent storage device  825 , and/or the read-only memory  820 . 
         [0076]    The bus  805  also connects to the input and output devices  830  and  835 . The input devices enable the user to communicate information and select commands to the computer system. The input devices  830  include alphanumeric keyboards and pointing devices (also called “cursor control devices”). The input devices  830  also include audio input devices (e.g., microphones, MIDI musical instruments, etc.) and video input devices (e.g., video cameras, still cameras, optical scanning devices, etc.). The output devices  835  include printers, electronic display devices that display still or moving images, and electronic audio devices that play audio generated by the computer system. For instance, these display devices may display a graphical user interface (GUI). The display devices include devices such as cathode ray tubes (CRT), liquid crystal displays (LCD), plasma display panels (PDP), surface-conduction electron-emitter displays (SED), etc. The audio devices include a PC&#39;s sound card and speakers, a speaker on a cellular phone, a Bluetooth® earpiece, etc. Some or all of these output devices may be wirelessly or optically connected to the computer system  800 . 
         [0077]    Finally, as shown in  FIG. 8 , bus  805  also couples computer  800  to a network  840  through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or a network of networks, such as the Internet. For example, the computer  800  may be coupled to a web server (network  840 ) so that a web browser executing on the computer  800  can interact with the web server as a user interacts with a GUI that operates in the web browser. 
         [0078]    As mentioned above, the computer system  800  may include one or more of a variety of different computer-readable media (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable blu-ray discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processor and includes sets of instructions for performing various operations. 
         [0079]    For the purposes of this Specification, a computer is a machine and the terms display or displaying mean displaying on an electronic device. It should be recognized by one of ordinary skill in the art that any or all of the components of computer system  800  may be used in conjunction with the invention. Moreover, one of ordinary skill in the art will appreciate that any other system configuration may also be used in conjunction with the invention or components of the invention. 
         [0080]    While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms (i.e., different embodiments may implement or perform different operations) without departing from the spirit of the invention. In addition, several examples discuss accessing the system using a cellular phone or mobile device, but one of ordinary skill will recognize that a user could access the system using a PC, PDA, smartphone, BlackBerry®, or other device.