Patent Publication Number: US-9853891-B2

Title: System and method for facilitating communication

Description:
TECHNICAL FIELD 
     This disclosure relates generally to the field of communication and more specifically to a system and method for facilitating communication based on a routing protocol. 
     BACKGROUND 
     In order for a first host computer to communicate with a second host computer over a network using Internet Protocol (IP), the first host computer generally utilizes the second host IP address and Media Access Control (MAC) address. Traditional approaches for a first host computer to determine a second host computer&#39;s MAC address involve an Address Resolution Protocol (ARP) query that is responded to by a core switch or the second host computer. Furthermore, traditional approaches for a first host computer to determine a second host computer&#39;s MAC address may also involve an ARP query that is responded to by an access switch that “snoops” on host-to-host conversations. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present disclosure and its features and advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which: 
         FIG. 1A  illustrates a system that facilitates communication between host computers, according to an example embodiment; 
         FIG. 1B  illustrates an example embodiment of operations of the system of  FIG. 1A ; and 
         FIG. 2  illustrates a method for facilitating communications between host computers, according to an example embodiment. 
     
    
    
     DETAILED DESCRIPTION OF THE DRAWINGS 
     Embodiments of the present disclosure are best understood by referring to  FIGS. 1A through 2  of the drawings, like numerals being used for like and corresponding parts of the various drawings. 
       FIG. 1A  illustrates a system  10  that facilitates communication between host computers, according to an example embodiment. System  10  includes an access switch  22  that participates in a routing protocol. In doing so, the access switch  22  receives an Internet Protocol (IP)-Media Access Control (MAC) address pair for a first host computer from the routing protocol. The access switch  22  further populates an Address Resolution Protocol (ARP) table with the IP-MAC address pair. Therefore, when the access switch  22  receives an ARP query requesting the MAC address for the first host computer, the access switch  22  may transmit the MAC address stored in the ARP table in response to the ARP query. As such, the second host computer may communicate with the first host computer using the received MAC address. 
     An IP address represents a numerical label assigned to each device (such as a host computer) participating in a network that uses IP for communication. As an example, an IP address may include 192.168.0.55. A MAC address represents a unique identifier assigned to a network interface for communication on a physical network segment of a network. As an example, a MAC address may include 00:eb:24:b2:05:ac. An IP-MAC address pair represents a combination of a device&#39;s IP address and MAC address. A host computer may use the IP-MAC pair of another host computer in order to communicate with that computer. 
     A routing protocol represents a protocol that allows switches to share network topology information between themselves. Such topology information includes information for how to forward a packet to a particular location. Examples of a routing protocol include IGRP (Interior Gateway Routing Protocol), EIGRP (Enhanced Interior Gateway Routing Protocol), OSPF (Open Shortest Path First), RIP (Routing Information Protocol), and IS-IS (Intermediate System to Intermediate System). A routing protocol knows which IP address and/or MAC address is at which location (e.g., which location a host computer is currently at). In particular embodiments, when a routing protocol is run in system  10 , the routing protocol will discover the location and addresses of all host computers in system  10 . 
     In order for a first host computer to communicate with a second host computer, the first host computer generally utilizes the second host computer&#39;s IP address and MAC address. When the first host computer is connected to a different network than the second host computer (for example, when the first host computer is connected to a first virtual local area network (VLAN) and the second host computer is connected to a second VLAN) the first host computer traditionally determines the second host computer&#39;s MAC address by transmitting an ARP query requesting that MAC address. For example, the first host computer sends the ARP query to a core switch (which includes a gateway) that connects the two different networks together. If the core switch knows the second host computer&#39;s MAC address, the core switch will transmit a response that includes the second host computer&#39;s MAC address. On the other hand, if the core switch does not know the second host computer&#39;s MAC address, the core switch will forward the ARP query to the second host computer, which will then transmit a response that includes the second host computer&#39;s MAC address. Therefore, a response to a first host computer&#39;s ARP query (which includes the second host computer&#39;s MAC address) is traditionally transmitted by either a core switch or the second host computer. 
     Unfortunately, such a traditional approach can create problems when there are a large number of host computers, such as in a data center. For example, in a data center, there may be approximately one million host computers, ten thousand access switches connected directly to the host computers, and ten core switches connecting the access switches to each other. As such, in the traditional approach, ARP queries from the one million host computers must typically flow through the ten core switches, which can create a bottleneck. Particular attempts to solve this bottleneck problem have included utilizing a distributed hash table (DHT) or utilizing ARP tables at access switches (e.g., ARP proxies). Unfortunately, with regard to ARP proxies, the access switches typically populate the ARP table by “snooping” on host-to-host conversations. Such a method of populating the ARP table at an access switch, however, may be deficient. 
     In particular embodiments, system  10  of  FIG. 1A  may facilitate communications between host computers in a manner that may provide various advantages. For example, in order to populate an ARP table, an access switch may receive an IP-MAC address pair for a host computer from a routing protocol. As such, the access switch may not have to “snoop” on host-to-host conversations. As another example, when an ARP query is received from a host computer, the access switch may respond to the ARP query, using the IP-MAC address pair received from the routing protocol. As such, an ARP query may not need to be transmitted all the way to a core switch, thereby reducing the bottleneck effect and providing for a more evenly distributed address resolution. 
     System  10  includes host computers  14 , networks  18 , access switches  22 , and core switch  50 , according to the illustrated embodiment. Host computer  14  represents any components that may communicate (such as with another host computer  14 ) over one or more networks. Host computer  14  may include a network server, any remote server, a mainframe, a work station, a web server, a file server, a personal computer, a laptop, a wireless or cellular telephone, an electronic notebook, a personal digital assistant, or any other device operable to communicate over one or more networks. The functions of host computer  14  may be performed by any combination of one or more servers or other components at one or more locations. In the embodiment where the module is a server, the server may be a private server, and the server may be a virtual or physical server. The server may include one or more servers at the same or remote locations. Also host computer  14  may include any component that functions as a server. 
     System  10  includes two host computers (host computer  14   a  and host computer  14   b ) that may communicate with each other, according to the illustrated embodiment. Furthermore, host computer  14   a  may be located on a different network (e.g., network  18   a ) than host computer  14   b  (e.g., network  18   b ). As such, in order for host computer  14   a  to communicate with host computer  14   b , host computer  14   a  may need to transmit an ARP query requesting the MAC address of host computer  14   b.    
     Network  18  represents any network operable to facilitate communication between the components of system  10 , such as host computers  14 , access switches  22 , and core switch  50 . Network  18  may include any interconnecting system capable of transmitting audio, video, signals, data, messages, or any combination of the preceding. Network  18  may include all or a portion of a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a local, regional, or global communication or computer network, such as the Internet, a wireline or wireless network, an enterprise intranet, or any other communication link, including combinations thereof, operable to facilitate communication between the components. 
     System  10  includes two networks  18  (e.g., network  18   a  and network  18   b ), according to the illustrated embodiment. As is discussed above, network  18   a  is different from network  18   b . For example, if network  18   a  is a LAN, network  18   b  may be a different LAN (or a public or private data network, a MAN, or any other communication link that is different from that of network  18   a ). As another example, network  18   a  may use a different communication protocol than network  18   b . Because networks  18   a  and  18   b  are different, a core switch (such as core switch  50 ) may be used to connect network  18   a  and network  18   b . Furthermore, because networks  18   a  and  18   b  are different, host computer  18   a  may need to transmit an ARP query to access switch  22   a  and/or core switch  50 , in order to receive the MAC address of host computer  14   b.    
     Access switch  22  represents any components that switch packets received from host computers  14  in order to facilitate communication. Access switch  22  includes multiple ports  26 , a processor  30 , and a memory  34 . Ports  26  are each coupled to processor  30  and a component of system  10  (such as a host computer  14 , a core switch  50 , or any other component of system  10 ). In operation, a first port  26  (such as port  26   b ) receives a packet from a first component of system  10  (such as host computer  14   a ) and communicates the packet to processor  30  for switching to a second port  26  (such as port  26   e ), which communicates the packet to a second component of system  10  (such as core switch  50 ). Reference to a packet can include a packet, datagram, frame, or other unit of data, where appropriate. In particular embodiments, access switch  22  includes an Ethernet switch. In particular embodiments, access switch  22  can switch packets at or near wire speed. In particular embodiments, access switch  22  may connect network segments of networks  18  together. In particular embodiments, access switch  22  may be a software based access switch, such as a virtual machine switch. System  10  includes two access switches  22  (e.g., access switch  22   a  and access switch  22   b ), according to the illustrated embodiment. Access switch  22   a  is connected to host computer  14   a  and access switch  22   b  is connected to host computer  14   b . As such, access switch  22   a  may respond to an ARP query from host computer  14   a  and access switch  22   b  may respond to an ARP query from host computer  14   b.    
     Processor  30  communicatively couples ports  26  and memory  34 , and controls the operation and administration of access switch  22  by processing information received from ports  26  and memory  34 . Processor  30  includes any hardware and/or software that operates to control and process information. For example, processor  30  executes access switch management application  38  to control the operation of access switch  22 . As another example, processor  30  switches packets received from ports  26 . Processor  30  may be a programmable logic device, a microcontroller, a microprocessor, any processing device, or any combination of the preceding. 
     Memory  34  stores, either permanently or temporarily, data, operational software or any other information for processor  30 . Memory  34  includes any one or a combination of volatile or non-volatile local or remote devices suitable for storing information. For example, memory  34  may include random access memory (RAM), read only memory (ROM), magnetic storage devices, optical storage devices, or any other information storage device or a combination of these devices. In particular embodiments, memory  34  may be a tangible storage medium. While illustrated as including particular modules, memory  34  may include any information for use in the operation of access switch  22 . 
     Memory  34  includes access switch management application  38 , ARP table  42 , and routing protocol table  46 , according to the illustrated embodiment. Access switch management application  38  represents any suitable set of instructions, logic, or code embodied in a computer-readable storage medium and operable to facilitate the operation of access switch  22 . 
     ARP table  42  represents any information that maps an IP address to a MAC address. For example, as is discussed above, in order for host computer  14   a  to communicate with host computer  14   b , host computer  14   a  generally utilizes the IP address and the MAC address of host computer  14   b . In such an example, ARP table  42  maps the IP address of host computer  14   b  to the MAC address of host computer  14   b . Therefore, when access switch  22   a  receives an ARP query from host computer  14   a  requesting the MAC address of host computer  14   b , processor  30  of access switch  22   a  may utilize the mapping in ARP table  42  in order to determine the MAC address of host computer  14   b  and respond to the ARP query. As is discussed in further detail below, the IP-MAC address pair of host computer  14   b  may be populated in ARP table  42  from the routing protocol that access switch  22  participates in. 
     Routing protocol table  46  includes network topology information of the networks  18  of system  10 . For example, routing protocol table  46  includes all the information that is discovered when the routing protocol is run in system  10 . According to the illustrated embodiment, since the routing protocol of system  10  discovers the location and addresses of all host computers  14 , and further because the routing protocol carries the IP-MAC address pair for each of the host computers  14 , routing protocol table  46  includes a mapping of an IP address of a host computer (such as host computer  14   b ) to the MAC address of that host computer. In particular embodiments, routing protocol table  46  is populated from the routing protocol. 
     Although ARP table  42  and routing protocol table  46  have been discussed above as being stored in the same memory  34 , in particular embodiments, ARP table  42  and routing protocol table  46  may be stored in different memories  34 . For example, access switch  22   a  may include a control plane memory  34  that stores routing protocol table  46 , and a different memory  34  that stores ARP table  42 . 
     Core switch  50  represents any components that facilitate communications between host computers  14  by joining networks  18  together. Similar to access switch  22 , core switch  50  may include multiple ports, a processor, and a memory. Furthermore, core switch  50  may also include a gateway that may interface networks  18  together. For example, the gateway may interface network  18   a  to network  18   b , allowing host computer  14   a  to communicate with host computer  14   b  despite being located in different networks  18 . Although core switch  50  has been described as being similar to access switch  22 , core switch  50  may connect two access switches  22  together (e.g., such as by connecting access switch  22   a  to access switch  22   b ), while access switches  22  may be directly connected to the host computers  14  (e.g., access switch  22   a  is directly connected to host computer  14   a ). 
     Although  FIG. 1  has been illustrated as including two host computers  14 , two networks  18 , two access switches  22 , and one core switch  50 , in particular embodiments, system  10  may include any suitable number of host computers  14 , any suitable number of networks  18 , any suitable number of access switches  22 , and/or any suitable number of core switches  50 . For example, as is discussed above, system  10  may include a data center where there are, for example, one million host computers, ten thousand access switches, and ten core switches. 
     Modifications, additions, or omissions may be made to system  10  without departing from the scope of the invention. The components of system  10  may be integrated or separated. Moreover, the operations of system  10  may be performed by more, fewer, or other components. For example, the operations of processor  30  may be performed by more than one processor. 
       FIG. 1B  illustrates an example embodiment of operations of system  10  of  FIG. 1A . Access switch  22  participates in routing protocol  100 , according to the illustrated embodiment. Routing protocol  100  may include any routing protocol that carries IP-MAC address pairs. For example, routing protocol  100  may include IS-IS. In particular embodiments, routing protocol  100  may include a routing protocol that traditionally does not carry IP-MAC address pairs, but which has been modified to carry IP-MAC address pairs. 
     Routing protocol  100  carries an IP-MAC address pair  104  for host computer  14   b , according to the illustrated embodiment. IP-MAC address pair  104  may represent the IP address  108  and the MAC address  112  of host computer  14   b . Therefore, because access switch  22   a  participates in routing protocol  100 , access switch  22   a  receives IP-MAC address pair  104  from routing protocol  100 . When access switch  22   a  receives IP-MAC address pair  104  from routing protocol  100 , access switch  22   a  populates ARP table  42  with IP-MAC address pair  104 , as is seen by population arrow  116 . In response to ARP table  42  being populated with IP-MAC address pair  104 , ARP table  42  may now map IP address  108  of host computer  14   b  to MAC address  112  of host computer  14   b.    
     In particular embodiments, not only may access switch  22   a  populate ARP table  42  with IP-MAC address pair  104 , but access switch  22   a  may also populate routing protocol table  46  with IP-MAC address pair  104 , thereby allowing access switch  22   a  to develop the topology information of system  10 . Although  FIG. 1B  illustrates ARP table  46  being populated with IP-MAC address pair  104  directly from routing protocol  100 , in particular embodiments, access switch  22   a  may retrieve IP-MAC address pair  104  from routing protocol table  46 , and populate ARP table  42  using the IP-MAC address pair  104  from routing protocol table  46 . 
     In addition to populating ARP table  42  with IP-MAC address pair  104  from routing protocol  100 , in particular embodiments, access switch  22  may further re-populate ARP table  42  with an updated version of IP-MAC address pair  104 . For example, if the IP address  108  and/or the MAC address  112  of host computer  14   b  changes, routing protocol  100  may carry the updated version of IP address  108  and MAC address  112  as an updated version of IP-MAC address pair  104 . As such, access switch  22  may update ARP table  42  using the updated version of IP-MAC address pair  104 . 
     Once ARP table  42  has been populated with IP-MAC address pair  104  for host computer  14   b , access switch  22   a  may begin to respond to ARP queries that request the MAC address  112  of host computer  14   b . For example, as is discussed above, in order for host computer  14   a  to communicate with host computer  14   b , host computer  14   a  may need host computer  14   b &#39;s MAC address  112 . In order to discover host computer  14   b &#39;s MAC address  112 , host computer  14   a  may transmit ARP query  120 . In particular embodiments, ARP query  120  may include the IP address of host computer  14   b.    
     Upon receiving ARP query  120  from host computer  14   a , switch  22   a  may respond to ARP query  120 . For example, using ARP query  120  (and the IP address included in ARP query  120 ), access switch  22   a  may access ARP table  42  in order to determine MAC address  112  of host computer  14   b . Upon determining MAC address  112 , access switch  22   a  may provide response  124  (which includes MAC address  112  of host computer  14   b ) to host computer  14   a . Therefore, host computer  14   a  may now communicate with host computer  14   b  using MAC address  112  included in response  124 . 
     Although  FIG. 1B  illustrates routing protocol  100  as including an IP-MAC address pair  104  for only host computer  14   b , in particular embodiments, routing protocol  100  may include an IP-MAC address pair  104  for any suitable number of host computers  14  (or any other device) in system  10 . For example, in particular embodiments, routing protocol  100  may include an IP-MAC address pair  104  for every host computer  14  (or other device) in system  10 . In particular embodiments, in addition to including the IP-MAC address pair  104  for host computer  14   b , routing protocol  100  may further include information regarding the port  26  that access switch  22   a  may use to transmit packets to host computer  14   b.    
     In particular embodiments, system  10  may utilize segmentation so that routing protocol  100  may only provide access switch  22  with the IP-MAC address pairs  104  for host computers  14  on the same segment of network  18 . For example, if access switch  22  does not participate in a particular segment of network  18 , access switch  22  may not receive (or even see) any IP-MAC address pairs  104  for any host computers  14  on that segment. In particular embodiments, any suitable type of segmentation may be utilized in system  10  in order to restrict the number of IP-MAC address pairs  104  received by an access switch  22 . In particular embodiments, this may reduce the amount of IP-MAC pairs  104  stored in ARP table  46  of an access switch  22 . 
       FIG. 2  illustrates a method  200  for facilitating communications between host computers, according to an example embodiment. According to the example embodiment, one or more steps of method  200  may be performed by an access switch  22  (e.g., access switch  22   a  and/or access switch  22   b ). 
     The method begins at step  204 . At step  208 , an ARP table is stored. For example, the ARP table may be stored in memory  34  of access switch  22   a . At step  212 , a routing protocol table is stored. For example, the routing protocol table may be stored in memory  34  of access switch  22   a.    
     At step  216 , an IP-MAC address pair for a first host computer is received from a routing protocol. For example, access switch  22   a  may receive the IP-MAC address pair from a routing protocol that carries IP-MAC address pairs, such as IS-IS. 
     At step  220 , the ARP table is populated with the IP-MAC address pair. For example, access switch  22   a  may store the IP-MAC address pair received from the routing protocol in the ARP table stored in the memory  34  of access switch  22   a.    
     At step  224 , the routing protocol table is populated with the IP-MAC address pair. For example, access switch  22   a  may store the IP-MAC address pair received from the routing protocol in the routing protocol table stored in the memory  34  of access switch  22   a.    
     At step  228 , it is determined whether the IP-MAC address pair for a first host computer has changed. In particular embodiments, the IP-MAC address pair for a first computer may change for any reason, such as if the host computer has moved locations. If the IP-MAC pair has changed, steps  216 - 228  may be repeated for the updated IP-MAC address pair. On the other hand, if the IP-MAC address pair has not changed, the method may move to step  232 . 
     At step  232 , an ARP query is received from a second host computer. The ARP query may include a request for the MAC address of the first host computer. For example, the second host computer may need the MAC address of the first host computer in order to communicate with the first host computer. 
     At step  236 , the MAC address for the first host computer is transmitted. The MAC address for the first host computer may be transmitted based on the ARP table. For example, in response to the ARP query received from the second host computer, access switch  22   a  may search for and retrieve the MAC address from the ARP table, and may transmit the MAC address to the second host computer. Once the MAC address for the first host computer has been transmitted, the method moves to step  240 , where the method ends. 
     Modifications, additions, or omissions may be made to method  200 . Additionally, one or more steps in method  200  in  FIG. 2  may be performed in parallel or in any suitable order. 
     Although the present invention has been described with several embodiments, a myriad of changes, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present invention encompass such changes, variations, alterations, transformations, and modifications as fall within the scope of the appended claims.