WO2018098767A1 - Device and method for performing network interface bonding - Google Patents

Device and method for performing network interface bonding Download PDF

Info

Publication number
WO2018098767A1
WO2018098767A1 PCT/CN2016/108184 CN2016108184W WO2018098767A1 WO 2018098767 A1 WO2018098767 A1 WO 2018098767A1 CN 2016108184 W CN2016108184 W CN 2016108184W WO 2018098767 A1 WO2018098767 A1 WO 2018098767A1
Authority
WO
WIPO (PCT)
Prior art keywords
network interface
logical
physical
bonding
logical network
Prior art date
Application number
PCT/CN2016/108184
Other languages
French (fr)
Inventor
Ruyong CHENG
Yi Ding
Original Assignee
Zte Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zte Corporation filed Critical Zte Corporation
Priority to PCT/CN2016/108184 priority Critical patent/WO2018098767A1/en
Publication of WO2018098767A1 publication Critical patent/WO2018098767A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2596Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/622Layer-2 addresses, e.g. medium access control [MAC] addresses

Definitions

  • the present application is related generally to computer networking technologies and in particular to a method, a device, and a computer program product for performing network interface bonding.
  • High-performance servers have been widely used for providing those network traffic-intensive services, e.g., multimedia applications, to end users on the Internet.
  • Such services often require link aggregation, i.e., aggregating multiple network connections in parallel in order to increase throughput beyond what a single connection could sustain, and to provide redundancy when one of the links fails.
  • link aggregation i.e., aggregating multiple network connections in parallel in order to increase throughput beyond what a single connection could sustain, and to provide redundancy when one of the links fails.
  • a server has to allocate a significant amount of resources such as CPU time and memory for managing the link aggregation. This would undoubtedly affect the server’s capability to provide better user-satisfying services.
  • An object of the present application is to provide a method, a device, and a computer program product for performing network interface bonding required by link aggregation so as to reduce the burden imposed on a server.
  • a method for performing network interface bonding includes the following operations: at a network interface bonding device, receiving a network interface bonding configuration request; determining a current status of a physical network interface associated with the network interface bonding configuration request; when the current status indicates that the physical network interface is not bonded to any logical network interface: identifying a logical network interface; establishing a bonding relationship between the physical network interface and the identified logical network interface; and updating the current status of the physical network interface and the identified logical network interface in accordance with the established bonding relationship.
  • the network interface bonding device terminates the bonding relationship between the physical network interface and the logical network interface and updates the current status of the physical network interface and the logical network interface in accordance with the terminated bonding relationship.
  • a network interface bonding device includes one or more processors, memory and a plurality of program modules stored in the memory that, when executed by the one or more processors, perform a plurality of operations as described above.
  • a computer program product stored in a non-transitory computer-readable medium in conjunction with a network interface bonding device having one or more processors includes a plurality of program modules that, when executed by the one or more processors, perform a plurality of operations as described above.
  • a server system includes a host and a network interface bonding device, the network interface bonding device being communicatively coupled to the host via a plurality of logical network interfaces and to a network via a plurality of multiple network interfaces.
  • the network interface bonding device includes one or more processors, memory and a plurality of program modules stored in the memory that, when executed by the one or more processors, perform a plurality of operations as described above.
  • FIG. 1 is a block diagram of a network of data processing systems in accordance with an illustrative embodiment of the present application.
  • FIG. 2A is a block diagram of a network interface bonding device in accordance with an illustrative embodiment of the present application.
  • Figure 2B is a block diagram illustrating different components of the network interface bonding device in accordance with an illustrative embodiment.
  • Figure 3 is a flowchart of the network interface bonding device creating a bonding relationship mapping table between logical network interfaces and physical network interfaces in accordance with an illustrative embodiment.
  • Figure 4A is a flowchart of the network interface bonding device adding/removing a physical network interface to/from the bonding relationship mapping table in accordance with an illustrative embodiment.
  • Figure 4B is a flowchart of the network interface bonding device collecting and analyzing statistical data from different sources in accordance with an illustrative embodiment.
  • FIG. 5 is a flowchart of data packets being transmitted between a host and a data processing terminal through the network interface bonding device in accordance with an illustrative embodiment.
  • FIG. 1 depicts a block diagram of a network of data processing systems in accordance with an illustrative embodiment of the present application.
  • Network data processing system 10 includes a network 14, which is the medium used to provide communications links between various computing devices and computer servers connected together within the network data processing system 10.
  • the network 14 may include connections, such as wire, wireless communication links, or fiber optic cables.
  • servers 15 and 16 connect to the network 14 along with a storage unit 17.
  • clients 11, 12, and 13 connect to the network 14.
  • Clients 11, 12, and 13 may take the form of a laptop computer, a desktop computer, a tablet computer, a mobile phone (such as a smartphone) , a multimedia player device, a navigation device, an educational device (such as a child’s learning toy) , a gaming system, or a control device (e.g., a home or industrial controller) .
  • servers 15 and 16 provide data, such as boot files, operating system images, and applications to clients 11, 12, and 13.
  • Network data processing system 10 may include additional servers, clients, and other devices not shown.
  • network data processing system 10 is the Internet with network 14 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of tens of thousands of commercial, governmental, educational and other computer systems that route data packets.
  • Network data processing system 10 also may be implemented as a number of different types of networks, such as for example, an intranet, network (LAN) , or a wide area network (WAN) .
  • LAN intranet
  • WAN wide area network
  • Figure 1 is intended as an example, and not as an architectural limitation for the different illustrative embodiments.
  • the server 15 exchanges a large number of data packets with the other server-side components such as the server 16 or the storage unit 17 to provide services to end users at one or more of clients 11, 12, and 13.
  • the server 15 may employ link aggregation techniques to improve its throughput.
  • certain apparatus such as one or more network interface bonding devices are employed between the server 15 and the network 14 (not shown in Figure 1) to perform network interface bonding between the server 15 and the network 14.
  • the present application is primarily focused on the architecture and operation of a network interface bonding device.
  • FIG. 2A is a block diagram of a network interface bonding device 30 in accordance with an illustrative embodiment of the present application.
  • a host 20 that may correspond to the server 15 in Figure 1 and to the right of the network interface bonding device 30 is the network 14.
  • the host 20 is coupled to the network interface bonding device 30 via a plurality of logical network interfaces such as logical network interface 1, ..., logical network interface M, each logical network interface having a virtual address (e.g., a logical media access control (MAC) address) .
  • MAC media access control
  • the host 20 When the host 20 sends a data packet to the network interface bonding device 30, it identifies one of the logical network interfaces as the recipient of the data packet by putting the logical network interface’s logical MAC address in the data packet. Similarly, when the network interface bonding device 30 sends a data packet to the host 20, the data packet also includes the logical MAC address of a logical network interface from which the data packet departs the network interface bonding device 30. In some embodiments, the host 20 and the network interface bonding device 30 are physically integrated together forming a server system.
  • a physical network interface is in the form of a network interface controller (NIC) , which is also known as network adapter or LAN adapter. It is well known that a physical network interface has a unique physical MAC address. A data packet arriving at a particular physical network interface or departing from the physical network interface should include the physical network interface’s unique physical MAC address.
  • NIC network interface controller
  • a bonding management module 40 is coupled to the plurality of logical network interfaces on the left side and the plurality of physical network interfaces on the right side, respectively.
  • the bonding management module 40 performs link aggregation by bonding the logical network interfaces and the physical network interfaces using a data structure such as a bonding relationship mapping table.
  • the network interface bonding device 30 Upon receipt of a data packet transmitted from the host 20 to the network 14 at one of the multiple logical network interfaces, the network interface bonding device 30 identifies a physical network interface among the multiple physical network interfaces in accordance with the bonding relationship mapping table. There is a network connection between the logical network interface and the physical network interface.
  • the network interface bonding device 30 inserts a physical MAC address of the identified physical network interface into the data packet and then transmits the data packet to a destination (e.g., one of the clients 11, 12, and 13) from the corresponding physical network interface.
  • a destination e.g., one of the clients 11, 12, and 13
  • the network interface bonding device 30 receives a data packet from the network 14 at one of the multiple physical network interfaces
  • the network interface bonding device 30 identifies a logical network interface among the multiple logical network interfaces in accordance with the bonding relationship mapping table. There is a network connection between the logical network interface and the physical network interface.
  • the network interface bonding device 30 inserts a logical MAC address of the identified logical network interface into the data packet and then transmits the data packet to the host 20 from the corresponding logical network interface.
  • FIG. 2B is a block diagram illustrating different components of the network interface bonding device 30 in accordance with an illustrative embodiment.
  • the network interface bonding device 30 includes communications fabric 102, which provides communications between processor unit 104, memory 106, persistent storage 108, communications unit 110, input/output (I/O) unit 112, and display 114.
  • the network interface bonding device 30 make take the form of a laptop computer, a desktop computer, a tablet computer, etc.
  • Processor unit 104 serves to execute instructions for software programs that may be loaded into memory 106.
  • Processor unit 104 may be a set of one or more processors or may be a multi-processor core, depending on the particular implementation. Further, processor unit 104 may be implemented using one or more heterogeneous processor systems in which a main processor is present with secondary processors on a single chip. As another illustrative example, processor unit 104 may be a symmetric multi-processor system containing multiple processors of the same type.
  • Memory 106 may be a random access memory or any other suitable volatile or non-volatile storage device.
  • Persistent storage 108 may take various forms depending on the particular implementation.
  • persistent storage 108 may contain one or more components or devices such as a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above.
  • the media used by persistent storage 108 may also be removable.
  • a removable hard drive may be used for persistent storage 108.
  • Communications units 110 provides for communications with other data processing systems or devices.
  • communications units 110 may correspond to the physical network interfaces shown in Figure 2A, each taking the form of a network interface card.
  • Communications units 110 may provide communications through the use of either or both physical and wireless communications links.
  • Input/output unit 112 allows for input and output of data with other devices that may be connected to the network interface bonding device 30.
  • input/output unit 112 may provide a connection for user input through a keyboard and mouse. Further, input/output unit 112 may send output to a printer.
  • Display 114 provides a mechanism to display information to a user.
  • Instructions for the operating system and applications or programs are stored in persistent storage 108. These instructions may be loaded into memory 106 for execution by the processor unit 104.
  • the processes of the different embodiments as described below may be performed by the processor unit 104 using computer implemented instructions, which may be located in a memory, such as memory 106.
  • These instructions are referred to as program code (or module) , computer usable program code (or module) , or computer readable program code (or module) that may be read and executed by a processor in processor unit 104.
  • the program code (or module) in the different embodiments may be embodied on different physical or tangible computer readable media, such as memory 106 or persistent storage 108.
  • Program code/module 118 is located in a functional form on the computer readable storage media 116 that is selectively removable and may be loaded onto or transferred to the network interface bonding device 30 for execution by processor unit 104.
  • Program code/module 118 and computer readable storage media 116 form a computer program product.
  • the computer readable storage media 116 may be in a tangible form, such as, for example, an optical or magnetic disc that is inserted or placed into a drive or other device that is part of the persistent storage 108 for transfer onto a storage device, such as a hard drive that is part of the persistent storage 108.
  • the computer readable storage media 116 may also take the form of a persistent storage, such as a hard drive, a thumb drive, or a flash memory that is connected to the network interface bonding device 30.
  • the tangible form of computer readable storage media 116 is also referred to as computer recordable storage media. In some instances, the computer readable storage media 116 may not be removable from the network interface bonding device 30.
  • the program code/module 118 may be transferred to the network interface bonding device 30 from computer readable storage media 116 through a communications link to communications units 110 and/or through a connection to input/output unit 112.
  • the communications link and/or the connection may be physical or wireless in the illustrative examples.
  • the computer readable storage media 116 also may take the form of non-tangible media, such as communications links or wireless transmissions containing the program code/module.
  • the different components illustrated for the network interface bonding device 30 are not meant to provide architectural limitations to the manner in which different embodiments may be implemented.
  • the different illustrative embodiments may be implemented in a data processing system including components in addition to or in place of those illustrated for the network interface bonding device 30.
  • Other components shown in Figure 2B can be varied from the illustrative examples shown.
  • a storage device in the network interface bonding device 30 is any hardware apparatus that may store data.
  • Memory 106, persistent storage 108 and computer readable storage media 116 are examples of storage devices in a tangible form.
  • a bus system may be used to implement communications fabric 102 and may be comprised of one or more buses, such as a system bus or an input/output bus. The bus system may be implemented using any suitable type of architecture that provides for a transfer of data between different components or devices attached to the bus system.
  • a communications unit may include one or more devices used to transmit and receive data, such as a modem or a network adapter.
  • a memory may be, for example, memory 106 or a cache such as found in an interface and memory controller hub that may be present in communications fabric 102.
  • the network interface bonding device 30 includes a bonding management module 40 for managing the bonding relationship mapping table between logical network interfaces and physical network interfaces.
  • Figure 3 is a flowchart illustrating how the network interface bonding device 30 (or more specifically the bonding management module 40) creates the bonding relationship mapping table between logical network interfaces and physical network interfaces in accordance with an illustrative embodiment.
  • a user e.g., system administrator
  • the network interface bonding device 30 provides input 120 to the network interface bonding device 30.
  • the input 120 defines user preferences on the bonding relationship between logical network interfaces and physical network interfaces.
  • the user input 120 is fed to a logical network interface configuration block 130, which is part of the bonding management module 40 for configuring the logical network interfaces managed by the bonding management module 40.
  • the output of the logical network interface configuration block 130 is the logical-physical network interface mapping 140 that combines the logical network interfaces 1-M with the physical network interfaces 1-N.
  • the logical-physical network interface mapping 140 takes the form of a mapping table 150 between logical MAC addresses associated with the logical network interfaces 1-M and physical MAC addresses associated with the physical network interfaces 1-N.
  • the bonding relationship between the logical MAC addresses and the physical MAC addresses is a one-to-many relationship.
  • the first logical MAC address i.e., Logical MAC0
  • the second logical MAC address i.e., Logical MAC1
  • the third logical MAC address i.e., Logical MAC2
  • the network bonding device 30 For a pair of logical and physical network interfaces, the network bonding device 30 allocates certain hardware components to act as a designated network connection channel therebetween such that data packets coming from the host 20 and arriving at a logical network interface is then transmitted to a physical network interface paired with the logical network interface according to the mapping table and vice versa.
  • the network bonding device 30 includes circuitry for controlling the number of logical network interfaces that the network bonding device 30 intends to support. This number may vary based on the configuration of the network bonding device 30.
  • the bonding management module 40 is responsible for not only creating the mapping table 150 but also updating the mapping table 150 in accordance with the user instructions or other network traffic related criteria (e.g., load balancing between different servers) .
  • Figure 4A is a flowchart of the network interface bonding device 30 adding/removing a physical network interface to/from the bonding relationship mapping table in accordance with an illustrative embodiment.
  • the network interface bonding device 30 receives (410) a network interface bonding configuration request.
  • the request is generated by a user through the I/O of the network interface bonding device 30.
  • the user may increase the number of logical network interfaces managed by the network interface bonding device 30, create a new mapping between a logical network interface and a physical network interface, or update (e.g., remove) an existing mapping between a logical network interface and a physical network interface.
  • the request is automatically generated when certain conditions are met. For example, when the current network traffic monitored by the network interface bonding device 30 reaches certain limits, an alarm is sent to a user of the device, e.g., in the form of a message. Upon receipt of the message, the user may issue an instruction for automatically generating the network interface bonding configuration request to address the network traffic condition that triggers the alarm message.
  • the network interface bonding device 30 then processes (420) the network interface bonding configuration request.
  • the network interface bonding configuration request includes an identifier of a physical network interface.
  • the network interface bonding device 30 determines a current status of a physical network interface associated with the network interface bonding configuration request and then acts accordingly. For example, when the current status indicates that the physical network interface is not bonded to any logical network interface and the request is to use the physical network interface, the network interface bonding device 30 identifies a logical network interface, activates the logical network interface if it has not been mapped to any other physical network interface, and establishes a bonding relationship between the physical network interface and the identified logical network interface.
  • the network interface bonding device 30 allocates resources (e.g., a network channel) for the newly established bonding relationship so that data packets can be transmitted through the channel between the logical network interface and the physical network interface.
  • resources e.g., a network channel
  • the network interface bonding device 30 terminates the bonding relationship between the physical network interface and the logical network interface.
  • the network interface bonding device 30 checks (430) whether the request has been satisfied or not. If the request is not satisfied (430-No) , the network interface bonding device 30 returns to wait for the next request. If the request is satisfied (430-Yes) , the network interface bonding device 30 then updates (440) the network interface bonding relationship table to reflect the processing result. For example, when the request is to use a physical network interface for a newly established bonding relationship, the network interface bonding device 30 then removes (440-A) the physical network interface from a list of available physical network interfaces. Alternatively, when the request is to terminate an existing bonding relationship for a physical network interface, the network interface bonding device 30 then adds (440-B) the physical network interface back to the list of available physical network interfaces.
  • the bonding relationship may take the form of a mapping table between a plurality of logical network interfaces and a plurality of physical network interfaces.
  • the bonding relationship mapping table defines a one-to-many relationship between the plurality of logical network interfaces and the plurality of physical network interfaces.
  • each row in the bonding relationship mapping table is keyed by a pair of a logical network interface identifier and a physical network interface identifier and has a parameter indicating the current status of the bonding relationship.
  • the network interface bonding device 30 In response to a request for establishing a new bonding relationship between a physical network interface and an logical network interface, the network interface bonding device 30 creates a new entry in the bonding relationship mapping table for the physical network interface and the logical network interface and activates the logical network interface when the new entry is the only one associated with the identified logical network interface in the mapping table. In other words, this is the first time that the logical network interface is to be used for any data packet transmission.
  • the network interface bonding device 30 In response to a request for terminating an existing bonding relationship between a physical network interface and an logical network interface, the network interface bonding device 30 removes an entry keyed by an identifier of the physical network interface and an identifier of the logical network interface from the bonding relationship mapping table and may also deactivate the logical network interface when the removed entry is the only one associated with the logical network interface. In other words, there is no other physical network interface mapping to the logical network interface. In this case, the network interface bonding device 30 may release the resources allocated for the logical network interface for other use.
  • Figure 4B is a flowchart of the network interface bonding device 30 collecting and analyzing statistical data from different sources in accordance with an illustrative embodiment.
  • the network interface bonding device 30 may use statistical data derived from the network operations on both sides of the network interface bonding device 30 to determine the current status of the mappings between logical network interfaces and physical network interfaces.
  • the network interface bonding device 30 receives (460) statistical data related to network traffic between the plurality of logical network interfaces and the plurality of physical network interfaces. Such statistical data may come from the host (450-A) or the physical network interfaces (450-B) .
  • the network interface bonding device 30 determines (470) the operating status (e.g., the network traffic level) between a logical network interface and a physical network interface using the statistical data and displays (480) the operating status to the end user of the network interface bonding device 30.
  • the operating status e.g., the network traffic level
  • the network interface bonding device 30 checks (485) whether any predefined alarm conditions are met or not. If not (485-No) , the network interface bonding device 30 returns to receive future statistical data. Otherwise (485-Yes) , the network interface bonding device 30 generates (490) an alarm when the network traffic level exceeds a predefined threshold level and sends a report message to the end user (e.g., the system administrator) .
  • the network interface bonding device 30 can take over the responsibility of bonding the logical and physical network interfaces together from the host 20 and therefore save more system resources at the host 20 for other purposes.
  • FIG. 5 is a flowchart of how data packets are transmitted between the host 20 and a data processing terminal (e.g., client 11, 12, 13) through the network interface bonding device 30 in accordance with an illustrative embodiment.
  • a data processing terminal e.g., client 11, 12, 13
  • the network interface bonding device 30 receives (510) one or more data packets from the host 20 through the protocol stack, the data packet including a logical MAC address associated with the logical network interface in the layer 2 of the protocol stack.
  • the network interface bonding device 30 identifies a physical MAC address for the logical MAC address from the bonding relationship mapping table.
  • the physical MAC address corresponds to the physical network interface 60.
  • the data packet is then updated by replacing the logical MAC address with the identified physical MAC address and forwarded (520) to the physical network address in the layer 2 of the protocol stack.
  • the network interface bonding device 30 routes (530) the updated data packet to a data processing terminal 70 from the physical network interface 60 associated with the identified physical MAC address.
  • the network interface bonding device 30 receives (550) one or more data packets from the data processing terminal 70 at the physical network interface 60, each data packet including a physical MAC address associated with the physical network interface 60, the network interface bonding device 30 identifies a logical MAC address for the physical MAC address using the bonding relationship mapping table and forwards (560) the data packet to the logical network interface 50 via a network connection between the physical network interface 60 and the logical network interface 50.
  • the network interface bonding device 30 also updates the data packet by replacing the physical MAC address with the logical MAC address of the logical network interface 50 in the layer 2 of the protocol stack and then transmits (570) the updated data packet to the host 20 from the logical network interface 50.
  • the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements.
  • the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
  • the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
  • a computer-usable or computer readable medium can be any tangible apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
  • the medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
  • Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM) , a read-only memory (ROM) , a rigid magnetic disk and an optical disk.
  • Current examples of optical disks include compact disk -read only memory (CD-ROM) , compact disk -read/write (CD-R/W) and DVD.
  • a data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus.
  • the memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
  • I/O devices including but not limited to keyboards, displays, pointing devices, etc.
  • I/O controllers can be coupled to the system either directly or through intervening I/O controllers.
  • Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks.
  • Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
  • first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another.
  • a first port could be termed a second port, and, similarly, a second port could be termed a first port, without departing from the scope of the embodiments.
  • the first port and the second port are both ports, but they are not the same port.

Abstract

A method for performing network interface bonding is performed at a network interface bonding device. The network interface bonding device receives a network interface bonding configuration request and determines a current status of a physical network interface associated with the network interface bonding configuration request. Based on the current status of the physical network interface, the network interface bonding device either establishes a new bonding relationship between the physical network interface and an identified logical network interface or terminates an existing bonding relationship between the physical network interface and a logical network interface. Finally, the network interface bonding device updates the current status of the physical network interface and the logical network interface in accordance with the newly established bonding relationship or the terminated existing bonding relationship.

Description

DEVICE AND METHOD FOR PERFORMING NETWORK INTERFACE BONDING TECHNICAL FIELD
The present application is related generally to computer networking technologies and in particular to a method, a device, and a computer program product for performing network interface bonding.
BACKGROUND
High-performance servers have been widely used for providing those network traffic-intensive services, e.g., multimedia applications, to end users on the Internet. Such services often require link aggregation, i.e., aggregating multiple network connections in parallel in order to increase throughput beyond what a single connection could sustain, and to provide redundancy when one of the links fails. Traditionally, a server has to allocate a significant amount of resources such as CPU time and memory for managing the link aggregation. This would undoubtedly affect the server’s capability to provide better user-satisfying services.
SUMMARY
An object of the present application is to provide a method, a device, and a computer program product for performing network interface bonding required by link aggregation so as to reduce the burden imposed on a server.
According to a first aspect of the present application, a method for performing network interface bonding includes the following operations: at a network interface bonding device, receiving a network interface bonding configuration request; determining a current status of a physical network interface associated with the network interface bonding configuration request; when the current status indicates that the physical network interface is not bonded to any logical network interface: identifying a logical network interface; establishing a bonding relationship between  the physical network interface and the identified logical network interface; and updating the current status of the physical network interface and the identified logical network interface in accordance with the established bonding relationship. When the current status indicates that there is an existing bonding relationship between the physical network interface and a logical network interface, the network interface bonding device terminates the bonding relationship between the physical network interface and the logical network interface and updates the current status of the physical network interface and the logical network interface in accordance with the terminated bonding relationship.
According to a second aspect of the present application, a network interface bonding device includes one or more processors, memory and a plurality of program modules stored in the memory that, when executed by the one or more processors, perform a plurality of operations as described above.
According to a third aspect of the present application, a computer program product stored in a non-transitory computer-readable medium in conjunction with a network interface bonding device having one or more processors includes a plurality of program modules that, when executed by the one or more processors, perform a plurality of operations as described above.
According to a fourth aspect of the present application, a server system includes a host and a network interface bonding device, the network interface bonding device being communicatively coupled to the host via a plurality of logical network interfaces and to a network via a plurality of multiple network interfaces. The network interface bonding device includes one or more processors, memory and a plurality of program modules stored in the memory that, when executed by the one or more processors, perform a plurality of operations as described above.
BRIEF DESCRIPTION OF DRAWINGS
The accompanying drawings, which are included to provide a further understanding of the embodiments and are incorporated herein and constitute a part of the specification, illustrate the described embodiments and together with the description serve to explain the underlying principles. Like reference numerals refer to corresponding parts.
Figure 1 is a block diagram of a network of data processing systems in accordance with an illustrative embodiment of the present application.
Figure 2A is a block diagram of a network interface bonding device in accordance with an illustrative embodiment of the present application.
Figure 2B is a block diagram illustrating different components of the network interface bonding device in accordance with an illustrative embodiment.
Figure 3 is a flowchart of the network interface bonding device creating a bonding relationship mapping table between logical network interfaces and physical network interfaces in accordance with an illustrative embodiment.
Figure 4A is a flowchart of the network interface bonding device adding/removing a physical network interface to/from the bonding relationship mapping table in accordance with an illustrative embodiment.
Figure 4B is a flowchart of the network interface bonding device collecting and analyzing statistical data from different sources in accordance with an illustrative embodiment.
Figure 5 is a flowchart of data packets being transmitted between a host and a data processing terminal through the network interface bonding device in accordance with an illustrative embodiment.
DETAILED DESCRIPTION OF EMBODIMENTS
Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed  description, numerous non-limiting specific details are set forth in order to assist in understanding the subject matter presented herein. But it will be apparent to one of ordinary skill in the art that various alternatives may be used without departing from the scope of claims and the subject matter may be practiced without these specific details. With reference now to the figures, exemplary block diagrams of data processing environments are provided in which illustrative embodiments may be implemented. It should be appreciated that these figures are only exemplary and are not intended to assert or imply any limitation with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made.
Figure 1 depicts a block diagram of a network of data processing systems in accordance with an illustrative embodiment of the present application. Network data processing system 10 includes a network 14, which is the medium used to provide communications links between various computing devices and computer servers connected together within the network data processing system 10. The network 14 may include connections, such as wire, wireless communication links, or fiber optic cables.
In the depicted example,  servers  15 and 16 connect to the network 14 along with a storage unit 17. In addition, clients 11, 12, and 13 connect to the network 14. Clients 11, 12, and 13 may take the form of a laptop computer, a desktop computer, a tablet computer, a mobile phone (such as a smartphone) , a multimedia player device, a navigation device, an educational device (such as a child’s learning toy) , a gaming system, or a control device (e.g., a home or industrial controller) . In the depicted example,  servers  15 and 16 provide data, such as boot files, operating system images, and applications to clients 11, 12, and 13. Network data processing system 10 may include additional servers, clients, and other devices not shown.
In the depicted example, network data processing system 10 is the Internet with network 14 representing a worldwide collection of networks and  gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of tens of thousands of commercial, governmental, educational and other computer systems that route data packets. Network data processing system 10 also may be implemented as a number of different types of networks, such as for example, an intranet, network (LAN) , or a wide area network (WAN) . Note that Figure 1 is intended as an example, and not as an architectural limitation for the different illustrative embodiments.
In some embodiments, the server 15 exchanges a large number of data packets with the other server-side components such as the server 16 or the storage unit 17 to provide services to end users at one or more of clients 11, 12, and 13. The server 15 may employ link aggregation techniques to improve its throughput. In order to take at least some of the workload of implementing the link aggregation techniques away from the server 15, certain apparatus such as one or more network interface bonding devices are employed between the server 15 and the network 14 (not shown in Figure 1) to perform network interface bonding between the server 15 and the network 14. The present application is primarily focused on the architecture and operation of a network interface bonding device.
Figure 2A is a block diagram of a network interface bonding device 30 in accordance with an illustrative embodiment of the present application. To the left of the network interface bonding device 30 is a host 20 that may correspond to the server 15 in Figure 1 and to the right of the network interface bonding device 30 is the network 14. The host 20 is coupled to the network interface bonding device 30 via a plurality of logical network interfaces such as logical network interface 1, …, logical network interface M, each logical network interface having a virtual address (e.g., a logical media access control (MAC) address) . When the host 20 sends a data packet to the network interface bonding device 30, it identifies one of the logical network  interfaces as the recipient of the data packet by putting the logical network interface’s logical MAC address in the data packet. Similarly, when the network interface bonding device 30 sends a data packet to the host 20, the data packet also includes the logical MAC address of a logical network interface from which the data packet departs the network interface bonding device 30. In some embodiments, the host 20 and the network interface bonding device 30 are physically integrated together forming a server system.
At the other side of the network interface bonding device 30 are multiple physical network interfaces (e.g., physical network interface 1, …, physical network interface N) coupled to the network 14. In the depicted example, a physical network interface is in the form of a network interface controller (NIC) , which is also known as network adapter or LAN adapter. It is well known that a physical network interface has a unique physical MAC address. A data packet arriving at a particular physical network interface or departing from the physical network interface should include the physical network interface’s unique physical MAC address.
Within the network interface bonding device 30, a bonding management module 40 is coupled to the plurality of logical network interfaces on the left side and the plurality of physical network interfaces on the right side, respectively. The bonding management module 40 performs link aggregation by bonding the logical network interfaces and the physical network interfaces using a data structure such as a bonding relationship mapping table. Upon receipt of a data packet transmitted from the host 20 to the network 14 at one of the multiple logical network interfaces, the network interface bonding device 30 identifies a physical network interface among the multiple physical network interfaces in accordance with the bonding relationship mapping table. There is a network connection between the logical network interface and the physical network interface. Next, the network interface bonding device 30 inserts a physical MAC address of the identified physical network interface into the data packet and then transmits the data packet to a  destination (e.g., one of the clients 11, 12, and 13) from the corresponding physical network interface. Similarly, when the network interface bonding device 30 receives a data packet from the network 14 at one of the multiple physical network interfaces, the network interface bonding device 30 identifies a logical network interface among the multiple logical network interfaces in accordance with the bonding relationship mapping table. There is a network connection between the logical network interface and the physical network interface. Next, the network interface bonding device 30 inserts a logical MAC address of the identified logical network interface into the data packet and then transmits the data packet to the host 20 from the corresponding logical network interface.
Figure 2B is a block diagram illustrating different components of the network interface bonding device 30 in accordance with an illustrative embodiment. In this illustrative example, the network interface bonding device 30 includes communications fabric 102, which provides communications between processor unit 104, memory 106, persistent storage 108, communications unit 110, input/output (I/O) unit 112, and display 114. In some embodiments, the network interface bonding device 30 make take the form of a laptop computer, a desktop computer, a tablet computer, etc.
Processor unit 104 serves to execute instructions for software programs that may be loaded into memory 106. Processor unit 104 may be a set of one or more processors or may be a multi-processor core, depending on the particular implementation. Further, processor unit 104 may be implemented using one or more heterogeneous processor systems in which a main processor is present with secondary processors on a single chip. As another illustrative example, processor unit 104 may be a symmetric multi-processor system containing multiple processors of the same type.
Memory 106, in these examples, may be a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage 108 may  take various forms depending on the particular implementation. For example, persistent storage 108 may contain one or more components or devices such as a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage 108 may also be removable. For example, a removable hard drive may be used for persistent storage 108.
Communications units 110 provides for communications with other data processing systems or devices. In these examples, communications units 110 may correspond to the physical network interfaces shown in Figure 2A, each taking the form of a network interface card. Communications units 110 may provide communications through the use of either or both physical and wireless communications links.
Input/output unit 112 allows for input and output of data with other devices that may be connected to the network interface bonding device 30. For example, input/output unit 112 may provide a connection for user input through a keyboard and mouse. Further, input/output unit 112 may send output to a printer. Display 114 provides a mechanism to display information to a user.
Instructions for the operating system and applications or programs are stored in persistent storage 108. These instructions may be loaded into memory 106 for execution by the processor unit 104. The processes of the different embodiments as described below may be performed by the processor unit 104 using computer implemented instructions, which may be located in a memory, such as memory 106. These instructions are referred to as program code (or module) , computer usable program code (or module) , or computer readable program code (or module) that may be read and executed by a processor in processor unit 104. The program code (or module) in the different embodiments may be embodied on different physical or tangible computer readable media, such as memory 106 or persistent storage 108.
Program code/module 118 is located in a functional form on the computer readable storage media 116 that is selectively removable and may be loaded onto or transferred to the network interface bonding device 30 for execution by processor unit 104. Program code/module 118 and computer readable storage media 116 form a computer program product. In one example, the computer readable storage media 116 may be in a tangible form, such as, for example, an optical or magnetic disc that is inserted or placed into a drive or other device that is part of the persistent storage 108 for transfer onto a storage device, such as a hard drive that is part of the persistent storage 108. In a tangible form, the computer readable storage media 116 may also take the form of a persistent storage, such as a hard drive, a thumb drive, or a flash memory that is connected to the network interface bonding device 30. The tangible form of computer readable storage media 116 is also referred to as computer recordable storage media. In some instances, the computer readable storage media 116 may not be removable from the network interface bonding device 30.
In some other embodiments, the program code/module 118 may be transferred to the network interface bonding device 30 from computer readable storage media 116 through a communications link to communications units 110 and/or through a connection to input/output unit 112. The communications link and/or the connection may be physical or wireless in the illustrative examples. The computer readable storage media 116 also may take the form of non-tangible media, such as communications links or wireless transmissions containing the program code/module.
The different components illustrated for the network interface bonding device 30 are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different illustrative embodiments may be implemented in a data processing system including components in addition to or in place of those illustrated for the network interface bonding device 30. Other components shown in Figure 2B can be varied from the illustrative examples shown.
As one example, a storage device in the network interface bonding device 30 is any hardware apparatus that may store data. Memory 106, persistent storage 108 and computer readable storage media 116 are examples of storage devices in a tangible form. In another example, a bus system may be used to implement communications fabric 102 and may be comprised of one or more buses, such as a system bus or an input/output bus. The bus system may be implemented using any suitable type of architecture that provides for a transfer of data between different components or devices attached to the bus system. Additionally, a communications unit may include one or more devices used to transmit and receive data, such as a modem or a network adapter. Further, a memory may be, for example, memory 106 or a cache such as found in an interface and memory controller hub that may be present in communications fabric 102.
As noted above in connection with Figure 2A, the network interface bonding device 30 includes a bonding management module 40 for managing the bonding relationship mapping table between logical network interfaces and physical network interfaces. Figure 3 is a flowchart illustrating how the network interface bonding device 30 (or more specifically the bonding management module 40) creates the bonding relationship mapping table between logical network interfaces and physical network interfaces in accordance with an illustrative embodiment. A user (e.g., system administrator) of the network interface bonding device 30 provides input 120 to the network interface bonding device 30. In some embodiments, the input 120 defines user preferences on the bonding relationship between logical network interfaces and physical network interfaces. The user input 120 is fed to a logical network interface configuration block 130, which is part of the bonding management module 40 for configuring the logical network interfaces managed by the bonding management module 40. The output of the logical network interface configuration block 130 is the logical-physical network interface mapping 140 that combines the logical network interfaces 1-M with the physical network interfaces 1-N. In some  embodiments, the logical-physical network interface mapping 140 takes the form of a mapping table 150 between logical MAC addresses associated with the logical network interfaces 1-M and physical MAC addresses associated with the physical network interfaces 1-N. In this example, the bonding relationship between the logical MAC addresses and the physical MAC addresses is a one-to-many relationship. For example, the first logical MAC address, i.e., Logical MAC0, corresponds to two different physical MAC addresses, i.e., Physical MAC0 and Physical MAC1. The second logical MAC address, i.e., Logical MAC1, corresponds to one physical MAC address, i.e., Physical MAC2. The third logical MAC address, i.e., Logical MAC2, corresponds to three different physical MAC addresses, i.e., Physical MAC3, Physical MAC4, and Physical MAC5. For a pair of logical and physical network interfaces, the network bonding device 30 allocates certain hardware components to act as a designated network connection channel therebetween such that data packets coming from the host 20 and arriving at a logical network interface is then transmitted to a physical network interface paired with the logical network interface according to the mapping table and vice versa. In some embodiments, the network bonding device 30 includes circuitry for controlling the number of logical network interfaces that the network bonding device 30 intends to support. This number may vary based on the configuration of the network bonding device 30. The bonding management module 40 is responsible for not only creating the mapping table 150 but also updating the mapping table 150 in accordance with the user instructions or other network traffic related criteria (e.g., load balancing between different servers) .
Figure 4A is a flowchart of the network interface bonding device 30 adding/removing a physical network interface to/from the bonding relationship mapping table in accordance with an illustrative embodiment.
The network interface bonding device 30 receives (410) a network interface bonding configuration request. In some embodiments, the request is generated by a user through the I/O of the network interface bonding device 30. For  example, the user may increase the number of logical network interfaces managed by the network interface bonding device 30, create a new mapping between a logical network interface and a physical network interface, or update (e.g., remove) an existing mapping between a logical network interface and a physical network interface. In some other embodiments, the request is automatically generated when certain conditions are met. For example, when the current network traffic monitored by the network interface bonding device 30 reaches certain limits, an alarm is sent to a user of the device, e.g., in the form of a message. Upon receipt of the message, the user may issue an instruction for automatically generating the network interface bonding configuration request to address the network traffic condition that triggers the alarm message.
The network interface bonding device 30 then processes (420) the network interface bonding configuration request. In some embodiments, the network interface bonding configuration request includes an identifier of a physical network interface. The network interface bonding device 30 determines a current status of a physical network interface associated with the network interface bonding configuration request and then acts accordingly. For example, when the current status indicates that the physical network interface is not bonded to any logical network interface and the request is to use the physical network interface, the network interface bonding device 30 identifies a logical network interface, activates the logical network interface if it has not been mapped to any other physical network interface, and establishes a bonding relationship between the physical network interface and the identified logical network interface. The network interface bonding device 30 allocates resources (e.g., a network channel) for the newly established bonding relationship so that data packets can be transmitted through the channel between the logical network interface and the physical network interface. When the current status indicates that there is an existing bonding relationship between the physical network interface and a logical network interface and the request is to move the physical  network interface for a different use, the network interface bonding device 30 terminates the bonding relationship between the physical network interface and the logical network interface.
Next, the network interface bonding device 30 checks (430) whether the request has been satisfied or not. If the request is not satisfied (430-No) , the network interface bonding device 30 returns to wait for the next request. If the request is satisfied (430-Yes) , the network interface bonding device 30 then updates (440) the network interface bonding relationship table to reflect the processing result. For example, when the request is to use a physical network interface for a newly established bonding relationship, the network interface bonding device 30 then removes (440-A) the physical network interface from a list of available physical network interfaces. Alternatively, when the request is to terminate an existing bonding relationship for a physical network interface, the network interface bonding device 30 then adds (440-B) the physical network interface back to the list of available physical network interfaces.
As noted above, the bonding relationship may take the form of a mapping table between a plurality of logical network interfaces and a plurality of physical network interfaces. The bonding relationship mapping table defines a one-to-many relationship between the plurality of logical network interfaces and the plurality of physical network interfaces. In some embodiments, each row in the bonding relationship mapping table is keyed by a pair of a logical network interface identifier and a physical network interface identifier and has a parameter indicating the current status of the bonding relationship.
In response to a request for establishing a new bonding relationship between a physical network interface and an logical network interface, the network interface bonding device 30 creates a new entry in the bonding relationship mapping table for the physical network interface and the logical network interface and activates the logical network interface when the new entry is the only one associated with the  identified logical network interface in the mapping table. In other words, this is the first time that the logical network interface is to be used for any data packet transmission.
In response to a request for terminating an existing bonding relationship between a physical network interface and an logical network interface, the network interface bonding device 30 removes an entry keyed by an identifier of the physical network interface and an identifier of the logical network interface from the bonding relationship mapping table and may also deactivate the logical network interface when the removed entry is the only one associated with the logical network interface. In other words, there is no other physical network interface mapping to the logical network interface. In this case, the network interface bonding device 30 may release the resources allocated for the logical network interface for other use.
Figure 4B is a flowchart of the network interface bonding device 30 collecting and analyzing statistical data from different sources in accordance with an illustrative embodiment. As noted above, the network interface bonding device 30 may use statistical data derived from the network operations on both sides of the network interface bonding device 30 to determine the current status of the mappings between logical network interfaces and physical network interfaces. The network interface bonding device 30 receives (460) statistical data related to network traffic between the plurality of logical network interfaces and the plurality of physical network interfaces. Such statistical data may come from the host (450-A) or the physical network interfaces (450-B) . Next, the network interface bonding device 30 determines (470) the operating status (e.g., the network traffic level) between a logical network interface and a physical network interface using the statistical data and displays (480) the operating status to the end user of the network interface bonding device 30.
In some embodiments, the network interface bonding device 30 checks (485) whether any predefined alarm conditions are met or not. If not (485-No) , the  network interface bonding device 30 returns to receive future statistical data. Otherwise (485-Yes) , the network interface bonding device 30 generates (490) an alarm when the network traffic level exceeds a predefined threshold level and sends a report message to the end user (e.g., the system administrator) .
With the establishment of the bonding relationship table, the network interface bonding device 30 can take over the responsibility of bonding the logical and physical network interfaces together from the host 20 and therefore save more system resources at the host 20 for other purposes.
Figure 5 is a flowchart of how data packets are transmitted between the host 20 and a data processing terminal (e.g., client 11, 12, 13) through the network interface bonding device 30 in accordance with an illustrative embodiment.
The network interface bonding device 30 (or more specifically a logical network interface 50) receives (510) one or more data packets from the host 20 through the protocol stack, the data packet including a logical MAC address associated with the logical network interface in the layer 2 of the protocol stack.
The network interface bonding device 30 identifies a physical MAC address for the logical MAC address from the bonding relationship mapping table. In this example, the physical MAC address corresponds to the physical network interface 60.The data packet is then updated by replacing the logical MAC address with the identified physical MAC address and forwarded (520) to the physical network address in the layer 2 of the protocol stack.
Finally the network interface bonding device 30 routes (530) the updated data packet to a data processing terminal 70 from the physical network interface 60 associated with the identified physical MAC address.
Similarly, when the network interface bonding device 30 receives (550) one or more data packets from the data processing terminal 70 at the physical network interface 60, each data packet including a physical MAC address associated with the physical network interface 60, the network interface bonding device 30 identifies a  logical MAC address for the physical MAC address using the bonding relationship mapping table and forwards (560) the data packet to the logical network interface 50 via a network connection between the physical network interface 60 and the logical network interface 50.
The network interface bonding device 30 also updates the data packet by replacing the physical MAC address with the logical MAC address of the logical network interface 50 in the layer 2 of the protocol stack and then transmits (570) the updated data packet to the host 20 from the logical network interface 50.
Finally, it should be noted that the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any tangible apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM) , a read-only memory (ROM) , a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk -read only memory (CD-ROM) , compact disk -read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc. ) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
The description of the present application has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
The terminology used in the description of the embodiments herein is for the purpose of describing particular embodiments only and is not intended to limit the scope of claims. As used in the description of the embodiments and the appended claims, the singular forms “a, ” “an, ” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be  understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising, ” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
It will also be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first port could be termed a second port, and, similarly, a second port could be termed a first port, without departing from the scope of the embodiments. The first port and the second port are both ports, but they are not the same port.
Many modifications and alternative embodiments of the embodiments described herein will come to mind to one skilled in the art having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the scope of claims are not to be limited to the specific examples of the embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.
The embodiments were chosen and described in order to best explain the underlying principles and their practical applications, to thereby enable others skilled in the art to best utilize the underlying principles and various embodiments with various modifications as are suited to the particular use contemplated.

Claims (29)

  1. A method for performing network interface bonding, comprising:
    at a network interface bonding device having one or more processors, memory, and a plurality of program modules stored in the memory and to be executed by the one or more processors:
    receiving a network interface bonding configuration request;
    determining a current status of a physical network interface associated with the network interface bonding configuration request;
    when the current status indicates that the physical network interface is not bonded to any logical network interface:
    identifying a logical network interface;
    establishing a bonding relationship between the physical network interface and the identified logical network interface; and
    updating the current status of the physical network interface and the identified logical network interface in accordance with the established bonding relationship.
  2. The method of claim 1, further comprising:
    when the current status indicates that there is an existing bonding relationship between the physical network interface and a logical network interface:
    terminating the bonding relationship between the physical network interface and the logical network interface; and
    updating the current status of the physical network interface and the logical network interface in accordance with the terminated bonding relationship.
  3. The method of claim 1, wherein there is a bonding relationship mapping table between a plurality of logical network interfaces and a plurality of physical network  interfaces, each row in the bonding relationship mapping table being keyed by a pair of a logical network interface identifier and a physical network interface identifier.
  4. The method of claim 3, wherein the bonding relationship mapping table defines a one-to-many relationship between the plurality of logical network interfaces and the plurality of physical network interfaces.
  5. The method of claim 3, wherein the operation of establishing a bonding relationship between the physical network interface and the identified logical network interface further includes:
    creating a new entry in the bonding relationship mapping table for the physical network interface and the identified logical network interface; and
    activating the identified logical network interface when the new entry is the only one associated with the identified logical network interface.
  6. The method of claim 3, wherein the operation of terminating the bonding relationship between the physical network interface to the logical network interface further includes:
    removing an entry keyed by an identifier of the physical network interface and an identifier of the logical network interface from the bonding relationship mapping table; and
    deactivating the logical network interface when the removed entry is the only one associated with the logical network interface.
  7. The method of claim 3, further comprising:
    receiving statistical data related to network traffic between the plurality of logical network interfaces and the plurality of physical network interfaces;
    determining a network traffic level between a logical network interface and a physical network interface using the statistical data; and
    generating an alarm when the network traffic level exceeds a predefined threshold level.
  8. The method of claim 3, further comprising:
    receiving a data packet from a host at one of the plurality of logical network interfaces, the data packet including a logical MAC address associated with the logical network interface;
    identifying a physical MAC address for the logical MAC address from the bonding relationship mapping table;
    updating the data packet by replacing the logical MAC address with the identified physical MAC address; and
    transmitting the updated data packet to a data processing terminal from a physical network interface associated with the identified physical MAC address.
  9. The method of claim 3, further comprising:
    receiving a data packet from a data processing terminal at one of the plurality of physical network interfaces, the data packet including a physical MAC address associated with the physical network interface;
    identifying a logical MAC address for the physical MAC address using the bonding relationship mapping table;
    updating the data packet by replacing the physical MAC address with the identified logical MAC address; and
    transmitting the updated data packet to a host from a logical network interface associated with the identified logical MAC address.
  10. A network interface bonding device, comprising:
    one or more processors;
    memory; and
    a plurality of program modules stored in the memory that, when executed by the one or more processors, perform a plurality of operations including:
    receiving a network interface bonding configuration request;
    determining a current status of a physical network interface associated with the network interface bonding configuration request;
    when the current status indicates that the physical network interface is not bonded to any logical network interface:
    identifying a logical network interface;
    establishing a bonding relationship between the physical network interface and the identified logical network interface; and
    updating the current status of the physical network interface and the identified logical network interface in accordance with the established bonding relationship.
  11. The network interface bonding device of claim 10, wherein the plurality of operations further include:
    when the current status indicates that there is an existing bonding relationship between the physical network interface and a logical network interface:
    terminating the bonding relationship between the physical network interface and the logical network interface; and
    updating the current status of the physical network interface and the logical network interface in accordance with the terminated bonding relationship.
  12. The network interface bonding device of claim 10, wherein the memory stores a bonding relationship mapping table between a plurality of logical network interfaces and a plurality of physical network interfaces, each row in the bonding relationship mapping table being keyed by a pair of a logical network interface identifier and a physical network interface identifier.
  13. The network interface bonding device of claim 12, wherein the bonding relationship mapping table defines a one-to-many relationship between the plurality of logical network interfaces and the plurality of physical network interfaces.
  14. The network interface bonding device of claim 12, wherein the operation of establishing a bonding relationship between the physical network interface and the identified logical network interface further includes:
    creating a new entry in the bonding relationship mapping table for the physical network interface and the identified logical network interface; and
    activating the identified logical network interface when the new entry is the only one associated with the identified logical network interface.
  15. The network interface bonding device of claim 12, wherein the operation of terminating the bonding relationship between the physical network interface to the logical network interface further includes:
    removing an entry keyed by an identifier of the physical network interface and an identifier of the logical network interface from the bonding relationship mapping table; and
    deactivating the logical network interface when the removed entry is the only one associated with the logical network interface.
  16. The network interface bonding device of claim 12, wherein the plurality of operations further include:
    receiving statistical data related to network traffic between the plurality of logical network interfaces and the plurality of physical network interfaces;
    determining a network traffic level between a logical network interface and a physical network interface using the statistical data; and
    generating an alarm when the network traffic level exceeds a predefined threshold level.
  17. The network interface bonding device of claim 12, wherein the plurality of operations further include:
    receiving a data packet from a host at one of the plurality of logical network interfaces, the data packet including a logical MAC address associated with the logical network interface;
    identifying a physical MAC address for the logical MAC address from the bonding relationship mapping table;
    updating the data packet by replacing the logical MAC address with the identified physical MAC address; and
    transmitting the updated data packet to a data processing terminal from a physical network interface associated with the identified physical MAC address.
  18. The network interface bonding device of claim 12, wherein the plurality of operations further include:
    receiving a data packet from a data processing terminal at one of the plurality of physical network interfaces, the data packet including a physical MAC address associated with the physical network interface;
    identifying a logical MAC address for the physical MAC address using the bonding relationship mapping table;
    updating the data packet by replacing the physical MAC address with the identified logical MAC address; and
    transmitting the updated data packet to a host from a logical network interface associated with the identified logical MAC address.
  19. A computer program product stored in a non-transitory computer-readable medium in conjunction with a network interface bonding device having one or more processors, the computer program product including a plurality of program modules that, when executed by the one or more processors, perform a plurality of operations including:
    receiving a network interface bonding configuration request;
    determining a current status of a physical network interface associated with the network interface bonding configuration request;
    when the current status indicates that the physical network interface is not bonded to any logical network interface:
    identifying a logical network interface;
    establishing a bonding relationship between the physical network interface and the identified logical network interface; and
    updating the current status of the physical network interface and the identified logical network interface in accordance with the established bonding relationship.
  20. The computer program product of claim 19, wherein the plurality of operations further include:
    when the current status indicates that there is an existing bonding relationship between the physical network interface and a logical network interface:
    terminating the bonding relationship between the physical network interface and the logical network interface; and
    updating the current status of the physical network interface and the logical network interface in accordance with the terminated bonding relationship.
  21. The computer program product of claim 19, wherein the memory stores a bonding relationship mapping table between a plurality of logical network interfaces and a plurality of physical network interfaces, each row in the bonding relationship mapping table being keyed by a pair of a logical network interface identifier and a physical network interface identifier.
  22. The computer program product of claim 21, wherein the bonding relationship mapping table defines a one-to-many relationship between the plurality of logical network interfaces and the plurality of physical network interfaces.
  23. The computer program product of claim 21, wherein the operation of establishing a bonding relationship between the physical network interface and the identified logical network interface further includes:
    creating a new entry in the bonding relationship mapping table for the physical network interface and the identified logical network interface; and
    activating the identified logical network interface when the new entry is the only one associated with the identified logical network interface.
  24. The computer program product of claim 21, wherein the operation of terminating the bonding relationship between the physical network interface to the logical network interface further includes:
    removing an entry keyed by an identifier of the physical network interface and an identifier of the logical network interface from the bonding relationship mapping table; and
    deactivating the logical network interface when the removed entry is the only one associated with the logical network interface.
  25. The computer program product of claim 21, wherein the plurality of operations further include:
    receiving statistical data related to network traffic between the plurality of logical network interfaces and the plurality of physical network interfaces;
    determining a network traffic level between a logical network interface and a physical network interface using the statistical data; and
    generating an alarm when the network traffic level exceeds a predefined threshold level.
  26. The computer program product of claim 21, wherein the plurality of operations further include:
    receiving a data packet from a host at one of the plurality of logical network interfaces, the data packet including a logical MAC address associated with the logical network interface;
    identifying a physical MAC address for the logical MAC address from the bonding relationship mapping table;
    updating the data packet by replacing the logical MAC address with the identified physical MAC address; and
    transmitting the updated data packet to a data processing terminal from a physical network interface associated with the identified physical MAC address.
  27. The computer program product of claim 21, wherein the plurality of operations further include:
    receiving a data packet from a data processing terminal at one of the plurality of physical network interfaces, the data packet including a physical MAC address associated with the physical network interface;
    identifying a logical MAC address for the physical MAC address using the bonding relationship mapping table;
    updating the data packet by replacing the physical MAC address with the identified logical MAC address; and
    transmitting the updated data packet to a host from a logical network interface associated with the identified logical MAC address.
  28. A server system comprising:
    a host; and
    a network interface bonding device, wherein the network interface bonding device is communicatively coupled to the host via a plurality of logical network  interfaces and communicatively coupled to a network via a plurality of multiple network interfaces, the network interface bonding device further comprising:
    one or more processors;
    memory; and
    a plurality of program modules stored in the memory that, when executed by the one or more processors, perform a plurality of operations including:
    receiving a network interface bonding configuration request;
    determining a current status of a physical network interface associated with the network interface bonding configuration request;
    when the current status indicates that the physical network interface is not bonded to any logical network interface:
    identifying a logical network interface;
    establishing a bonding relationship between the physical network interface and the identified logical network interface; and
    updating the current status of the physical network interface and the identified logical network interface in accordance with the established bonding relationship.
  29. The server system of claim 28, wherein the plurality of operations further include:
    when the current status indicates that there is an existing bonding relationship between the physical network interface and a logical network interface:
    terminating the bonding relationship between the physical network interface and the logical network interface; and
    updating the current status of the physical network interface and the logical network interface in accordance with the terminated bonding relationship.
PCT/CN2016/108184 2016-12-01 2016-12-01 Device and method for performing network interface bonding WO2018098767A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/108184 WO2018098767A1 (en) 2016-12-01 2016-12-01 Device and method for performing network interface bonding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/108184 WO2018098767A1 (en) 2016-12-01 2016-12-01 Device and method for performing network interface bonding

Publications (1)

Publication Number Publication Date
WO2018098767A1 true WO2018098767A1 (en) 2018-06-07

Family

ID=62241066

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/108184 WO2018098767A1 (en) 2016-12-01 2016-12-01 Device and method for performing network interface bonding

Country Status (1)

Country Link
WO (1) WO2018098767A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866897A (en) * 2005-11-08 2006-11-22 华为技术有限公司 Method and apparatus for building RPR node
TW201222259A (en) * 2010-11-22 2012-06-01 Inventec Corp Method for bonding network interfaces and computer program product using the method
CN102594660A (en) * 2012-01-19 2012-07-18 华为技术有限公司 Virtual interface exchange method, device and system
WO2013120069A1 (en) * 2012-02-09 2013-08-15 Connectify Secure remote computer network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866897A (en) * 2005-11-08 2006-11-22 华为技术有限公司 Method and apparatus for building RPR node
TW201222259A (en) * 2010-11-22 2012-06-01 Inventec Corp Method for bonding network interfaces and computer program product using the method
CN102594660A (en) * 2012-01-19 2012-07-18 华为技术有限公司 Virtual interface exchange method, device and system
WO2013120069A1 (en) * 2012-02-09 2013-08-15 Connectify Secure remote computer network

Similar Documents

Publication Publication Date Title
US10437775B2 (en) Remote direct memory access in computing systems
US20220318184A1 (en) Virtual rdma switching for containerized applications
US10237238B2 (en) Regional firewall clustering in a networked computing environment
US11075948B2 (en) Method and system for virtual machine aware policy management
US7962587B2 (en) Method and system for enforcing resource constraints for virtual machines across migration
US7941539B2 (en) Method and system for creating a virtual router in a blade chassis to maintain connectivity
US10257066B2 (en) Interconnect congestion control in a storage grid
US7581021B2 (en) System and method for providing multiple virtual host channel adapters using virtual switches
US7984123B2 (en) Method and system for reconfiguring a virtual network path
US8739179B2 (en) Method and system for low-overhead data transfer
CN107078974B (en) Network switch, method executed by network switch and memory resource
US7826359B2 (en) Method and system for load balancing using queued packet information
US20120089981A1 (en) Method and system for power management in a virtual machine environment without disrupting network connectivity
EP3586494A1 (en) Load balancing in distributed computing systems
US9083611B2 (en) Method and system for virtual network interface cards (VNICs) over aggregation spanning multiple switches
US20120215946A1 (en) Discovery and configuration of device configurations
US9910687B2 (en) Data flow affinity for heterogenous virtual machines
TWI577164B (en) Scalable address resolution
JP2015015671A5 (en)
US8762485B2 (en) Information system having computer and storage apparatus coupled to network
US20220210086A1 (en) Managing network state for high flow availability within distributed network platform
US10623341B2 (en) Configuration of a set of queues for multi-protocol operations in a target driver
US10055241B1 (en) Virtual machine aware fibre channel
US10554552B2 (en) Monitoring network addresses and managing data transfer
EP3481099B1 (en) Load balancing method and associated device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16922666

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16922666

Country of ref document: EP

Kind code of ref document: A1