US20090147677A1 - System, method, and apparatus for load-balancing to a plurality of ports - Google Patents

System, method, and apparatus for load-balancing to a plurality of ports Download PDF

Info

Publication number
US20090147677A1
US20090147677A1 US12/264,734 US26473408A US2009147677A1 US 20090147677 A1 US20090147677 A1 US 20090147677A1 US 26473408 A US26473408 A US 26473408A US 2009147677 A1 US2009147677 A1 US 2009147677A1
Authority
US
United States
Prior art keywords
ports
network controller
control module
network
register
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US12/264,734
Inventor
Steven B. Lindsay
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US12/264,734 priority Critical patent/US20090147677A1/en
Publication of US20090147677A1 publication Critical patent/US20090147677A1/en
Assigned to BANK OF AMERICA, N.A., AS COLLATERAL AGENT reassignment BANK OF AMERICA, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: BROADCOM CORPORATION
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROADCOM CORPORATION
Assigned to BROADCOM CORPORATION reassignment BROADCOM CORPORATION TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Assignors: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/13Flow control; Congestion control in a LAN segment, e.g. ring or bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Definitions

  • the present application is related to computer networks, and more particularly, to a system, method, and apparatus for efficient traffic load-balancing to a plurality of ports.
  • Computers and other devices may be networked together using any one of several available architectures and any one of several corresponding and compatible network protocols.
  • a common network architecture is Ethernet, such as the 10Base-T and 100Base-TX Ethernet Standards according to the IEEE Standard 802.3, although an Ethernet architecture operating at 1 Gigabit per second (Gbps) is also available.
  • the computers each include a bus system with corresponding slots for receiving compatible network adapter expansion cards, where one or more of the adapter cards may be network interface cards (NICs).
  • NICs network interface cards
  • Each NIC includes an appropriate connector, known as a port, for interfacing a compatible network cable, such as a coaxial cable, a twisted-wire cable, a fiber optic cable, etc.
  • a compatible network cable such as a coaxial cable, a twisted-wire cable, a fiber optic cable, etc.
  • each NIC includes an RJ-45 connector for receiving a compatible RJ-45 plug of a twisted-wire cable, where each network cable is coupled to a central device such as a repeater, hub, switch, etc.
  • each computer or device sends data packets according to a selected upper level protocol, such as Transmission Control Protocol/Internet Protocol (TCP/IP), the Internet Protocol exchange (IPX), NetBEUI or the like.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • IPX Internet Protocol exchange
  • NetBEUI is short for NetBIOS Enhanced User Interface, and is an enhanced version of the NetBIOS protocol used by network operating systems such as LAN Manager, LAN Server, Windows for Workgroups, Windows 95 and Windows NT.
  • NetBEUI was originally designed by IBM for IBM's LAN Manager server and was later extended by Microsoft and Novell.
  • TCP/IP is used in Internet applications, or in intranet applications such as a local area network (LAN). In this manner, computers and other devices share information according to the higher-level protocols.
  • One or more of the computers in a network configuration typically operate as a server for other computers and devices in the network. Often, the other computers and devices rely on the server(s) for information, storage, access to databases, programs, other networks, etc., and various other services. It is desired that the client/server connection be as reliable as possible. Where a computer is coupled to a network using a single network controller, if the network controller fails, the access to the server is interrupted.
  • a single network controller results in a bottleneck of data flow.
  • Use of multiple network controllers is especially advantageous for servers. Servers communicate with numerous clients over a network, resulting in more transactions. Additionally, the amount of data transmitted from the server (downloaded) is usually much more than the amount of data transmitted from the client (uploaded).
  • Balancing the load between the ports is critical to enable communication between the computer and the port, and prevent communication faults.
  • Current devices use intermediate drivers that operate below the computer operating systems and communicate with the miniport drivers.
  • a miniport driver is a driver that interfaces hardware with higher level intermediate drivers. The miniport drivers are used to communicate with the NICs.
  • Known intermediate drivers work well balancing a load across similar (homogeneous) NICs, but have trouble balancing the load between dissimilar NICs.
  • One currently known intermediate driver operates under the computer operating systems and balances the load between heterogeneous NICs.
  • the intermediate driver operates below and communicates with a network driver interface specification (NDIS) which in turn communicates with two miniport driver instances. Each miniport driver in turn communicates with an NIC.
  • NDIS network driver interface specification
  • the foregoing advantageously provides for load balancing across dissimilar NICs.
  • additional host overhead is required which affects performance.
  • performance efficiency degradation of as much as 50% has been measured when using an intermediate driver to perform load balancing.
  • a system, method, and apparatus for efficient load-balancing for a plurality of ports is presented herein.
  • a miniport driver is adapted to multiplex and demultiplex traffic workload across the ports.
  • the miniport driver classifies outgoing packet streams and distributes each packet stream to a communication ring, such as an Ethernet ring, for example, associated with at least one of the ports.
  • the NIC is optionally configured so that the NIC appears to the computer operating system to be a single peripheral control interface (PCI) function containing two PCI base address registers, one for each port. Both ports share a single interrupt line.
  • PCI peripheral control interface
  • the NIC can be configured in one of a plurality of modes, including modes where each of the ports are separately operable, and a mode wherein the plurality of ports are operable as a single logical PCI function from the perspective of an operating system.
  • FIG. 1 is a block diagram of an intermediate driver based load balancing solution
  • FIG. 2 is a block diagram of a miniport driver configured to balance traffic between a plurality of ports in accordance with an embodiment of the present invention
  • FIG. 3 is a block diagram of a dual port network controller in accordance with an embodiment of the present invention.
  • FIG. 4 is a flow chart describing the operation of a miniport driver in accordance with an embodiment of the present invention.
  • FIG. 5 is a block diagram of an exemplary computer system in accordance with an embodiment of the present invention.
  • FIG. 1 there is illustrated a block diagram of an intermediate driver based load balancing solution.
  • a computer system is controlled by an operating system that supports one or more communication protocols, such as Transmission Control Protocol/Internet Protocol, TCP/IP, Internet Protocol Exchange, IPX, or Network Basic Input Output System End User Interface, NetBEUI.
  • Network access is provided by network interface cards (NIC), NIC 1 , NIC 2 .
  • a Network Device Interface Specification, NDIS interfaces the TCP/IP, IPX, and NetBEUI to the NICs, NIC 1 , NIC 2 .
  • the NDIS communicates with two miniport driver instances, Miniport Driver Instance # 1 , Miniport Driver Instance # 2 , that in turn communicate with the NICs, NIC 1 , NIC 2 , respectively.
  • An intermediate driver, IM Driver comprising a Virtual NIC interface, a hashing module, and physical NIC interfaces, Phys NIC Interface # 1 , Phys NIC interface # 2 , operating below the operating system performs the load balancing across the NICs, NIC 1 , NIC 2 .
  • the intermediate driver solution injects additional host overhead that hurts performance.
  • the performance penalty due to the intermediate driver heavily depends on the specific test/benchmark scenario.
  • performance efficiency degradation of as much as 50% can be incurred when using an intermediate driver to perform load balancing in a Microsoft Windows (registered trademark) environment.
  • FIG. 2 there is illustrated a block diagram of a dual-port network controller 100 for providing access to a network 105 for a computer system 110 , in accordance with an embodiment of the present invention.
  • the network 105 can comprise, for example, a network with a 10 Gigabit Ethernet architecture according to IEEE Standard 802.3.
  • the computer system 110 can comprise either a client or a server.
  • the computer system 110 is controlled by an operating system 115 .
  • the operating system 115 supports one or more communication protocols, such as Transmission Control Protocol/Internet Protocol (TCP/IP) 120 , Internet Protocol Exchange (IPX) 125 , or Network Basic Input Output System End User Interface (NetBEUI) 130 .
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • IPX Internet Protocol Exchange
  • NetBEUI Network Basic Input Output System End User Interface
  • the dual-port network controller 100 comprises a two media access controllers 135 a , 135 b for communicating with the network 105 .
  • Use of the two media access controllers 135 a , 135 b provides for reliable network access. Additionally, the two media access controllers 135 a , 135 b alleviate bottlenecking when large amounts of data are transmitted between the computer system 110 and the network 105 , especially when the computer system 110 comprises a server.
  • the dual-port network controller 100 also includes a miniport driver 140 for load balancing between the MACs 135 a , 135 b .
  • the miniport driver 140 is homogeneous software that classifies and distributes outgoing packet streams.
  • a single instance of a miniport driver 140 multiplexes and demultiplexes traffic across both MACs 135 a , 135 b.
  • the computer system 110 and the dual-port network controller 100 are interfaced by a Network Driver Interface Specification (NDIS) 145 .
  • NDIS Network Driver Interface Specification
  • the miniport driver 140 performs the load balancing across the MACs 135 a , 135 b .
  • the foregoing avoids the extra overhead associated with placement of an intermediate driver at the NDIS 145 .
  • the dual-port network controller 100 includes a PCI bus interface 205 and two PCI function modules 210 ( 1 ), 210 ( 2 ).
  • the PCI bus interface 205 provides interrupts, INTA and INTB.
  • An arbiter 215 arbitrates contention over the PCI bus interface 205 between the PCI function modules 210 .
  • the dual-port network controller 100 also includes an EEPROM 218 for storage of a mode of operation code.
  • Each PCI function includes a MAC 220 associated with an ethernet transceiver 225 .
  • the MAC 220 performs the data link layer function for data transmitted over the network while the ethernet transceiver 225 performs the physical layer function.
  • Each MAC 220 is also associated with a memory 230 and registers 235 .
  • the memory 230 provides packet buffering for higher performance and load balancing.
  • the registers 235 include various PCI space configuration registers including a base address registers 235 a.
  • the network controller can operate in one of several modes.
  • the modes include modes wherein only MAC 220 ( 1 ) is operating and where only MAC 220 ( 2 ) is operating, and where both MACs 220 are operating and appear to the operating system 115 as separate PCI functions.
  • each PCI module 210 ( 1 ), 210 ( 2 ) are associated with an interrupt, INTA, and INTB, respectively.
  • both MACs 220 are operating and appear to the operating system 115 as a single PCI function.
  • both MACs 220 use INTA to interrupt the operating system 115 .
  • both MACs 220 operate in one mode.
  • the MACs 220 appear as 2 PCI functions, while in another mode, the MACs 220 appear as a single PCI function.
  • the advantage of a single function is that it appears to be only a single device to the OS, rather than multiple devices. This makes the configuration and management more intuitive.
  • the specific mode of operation can be selectively set by storage of a specific code in the EEPROM 218 .
  • the EEPROM 218 is read by the miniport driver 140 , which configures the network controller 100 .
  • An exemplary coding scheme is shown in TABLE 1.
  • FIG. 4 there is illustrated a flow diagram describing the operation of the miniport driver in accordance with an embodiment of the present invention.
  • the operating system 115 loads the miniport driver 140 .
  • the miniport driver 140 accesses ( 305 ) the mode of operation code in the EEPROM 218 .
  • the miniport driver 140 configures the network controller 100 based on the mode of operation code ( 310 ).
  • the miniport driver 140 configures ( 315 ) PCI module 210 ( 1 ), and/or PCI module 210 ( 2 ) as indicated by the mode of operation code.
  • Each operable PCI module 210 is associated with a particular PCI function identification number. After configuration of the PCI modules 210 , each operable PCI module 210 is associated ( 320 ) with a separate miniport driver instance 140.
  • the miniport driver 140 configures ( 325 ) the PCI modules 210 .
  • the registers 235 ( 1 ) of PCI module 210 are configured ( 330 ) to include a base address register 235 ( 1 ) a , and an auxiliary base address register 235 ( 1 ) a ′.
  • the auxiliary base address register 235 ( 1 ) a ′ is loaded ( 335 ) with the location of the registers 235 ( 2 ) of PCI module 210 ( 2 ).
  • a single instance of miniport driver 140 performs load balancing across both MACs 220 as shown in FIG. 1 .
  • a CPU 60 is interconnected via system bus 62 to random access memory (RAM) 64 , read only memory (ROM) 66 , an input/output (I/O) adapter 68 , a user interface adapter 72 , a communications adapter 84 , and a display adapter 86 .
  • the input/output (I/O) adapter 68 connects peripheral devices such as hard disc drives 40 , floppy disc drives 41 for reading removable floppy discs 42 , and optical disc drives 43 for reading removable optical disc 44 (such as a compact disc or a digital versatile disc) to the bus 62 .
  • the user interface adapter 72 connects devices such as a keyboard 74 , a mouse 76 having a plurality of buttons 67 , a speaker 78 , a microphone 82 , and/or other user interfaces devices such as a touch screen device (not shown) to the bus 62 .
  • the communications adapter 84 connects the computer system to a data processing network 92 .
  • the display adapter 86 connects a monitor 88 to the bus 62 .
  • An embodiment of the present invention can be implemented as sets of instructions resident in the random access memory 64 of one or more computer systems 110 configured generally as described in FIG. 4 .
  • the set of instructions may be stored in another computer readable memory, for example in a hard disc drive 40 , or in removable memory such as an optical disc 44 for eventual use in an optical disc drive 43 , or a floppy disc 42 for eventual use in a floppy disc drive 41 .
  • the physical storage of the sets of instructions physically changes the medium upon which it is stored electrically, magnetically, or chemically so that the medium carries computer readable information.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)

Abstract

A system, method, and apparatus for load balancing to a plurality of ports is presented herein. A miniport driver is adapted to multiplex and demultiplex traffic workload across the ports. The miniport driver classifies outgoing packet streams and distributes each packet stream to a communication ring, such as an Ethernet ring, for example, associated with at least one of the ports. Additionally, the miniport driver can be configured to configure a operation of the plurality of ports in one of several modes, including a mode wherein the plurality of ports are operable and act as a single logical interface for the operation.

Description

    RELATED APPLICATIONS
  • This application is a continuation of U.S. application for patent Ser. No. 10/439,494, filed May 16, 2003, entitled “System, Method, and Apparatus for Load-Balancing to a Plurality of Ports”, by Steven Lindsey, which issued as U.S. Pat. No. ______, which claims the priority benefit of Provisional U.S. Application Ser. No. 60/381,942, entitled “Turbo Teaming Solution for a Network Adaptor”, filed May 16, 2002, which is incorporated herein by reference in its entirety.
  • FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
  • [Not Applicable]
  • MICROFICHE/COPYRIGHT REFERENCE
  • [Not Applicable]
  • FIELD OF THE INVENTION
  • The present application is related to computer networks, and more particularly, to a system, method, and apparatus for efficient traffic load-balancing to a plurality of ports.
  • BACKGROUND OF THE INVENTION
  • Computers and other devices may be networked together using any one of several available architectures and any one of several corresponding and compatible network protocols. A common network architecture is Ethernet, such as the 10Base-T and 100Base-TX Ethernet Standards according to the IEEE Standard 802.3, although an Ethernet architecture operating at 1 Gigabit per second (Gbps) is also available. In an Ethernet architecture, the computers each include a bus system with corresponding slots for receiving compatible network adapter expansion cards, where one or more of the adapter cards may be network interface cards (NICs).
  • Each NIC includes an appropriate connector, known as a port, for interfacing a compatible network cable, such as a coaxial cable, a twisted-wire cable, a fiber optic cable, etc. For example, in a star configuration, each NIC includes an RJ-45 connector for receiving a compatible RJ-45 plug of a twisted-wire cable, where each network cable is coupled to a central device such as a repeater, hub, switch, etc.
  • In a packet-switched configuration, each computer or device sends data packets according to a selected upper level protocol, such as Transmission Control Protocol/Internet Protocol (TCP/IP), the Internet Protocol exchange (IPX), NetBEUI or the like. NetBEUI is short for NetBIOS Enhanced User Interface, and is an enhanced version of the NetBIOS protocol used by network operating systems such as LAN Manager, LAN Server, Windows for Workgroups, Windows 95 and Windows NT. NetBEUI was originally designed by IBM for IBM's LAN Manager server and was later extended by Microsoft and Novell. TCP/IP is used in Internet applications, or in intranet applications such as a local area network (LAN). In this manner, computers and other devices share information according to the higher-level protocols.
  • One or more of the computers in a network configuration typically operate as a server for other computers and devices in the network. Often, the other computers and devices rely on the server(s) for information, storage, access to databases, programs, other networks, etc., and various other services. It is desired that the client/server connection be as reliable as possible. Where a computer is coupled to a network using a single network controller, if the network controller fails, the access to the server is interrupted.
  • It is also desired to provide as high a bandwidth client/server connection as possible, especially during periods of heavy demand and increased network traffic. A single network controller results in a bottleneck of data flow. Use of multiple network controllers is especially advantageous for servers. Servers communicate with numerous clients over a network, resulting in more transactions. Additionally, the amount of data transmitted from the server (downloaded) is usually much more than the amount of data transmitted from the client (uploaded).
  • Balancing the load between the ports is critical to enable communication between the computer and the port, and prevent communication faults. Current devices use intermediate drivers that operate below the computer operating systems and communicate with the miniport drivers. A miniport driver is a driver that interfaces hardware with higher level intermediate drivers. The miniport drivers are used to communicate with the NICs. Known intermediate drivers work well balancing a load across similar (homogeneous) NICs, but have trouble balancing the load between dissimilar NICs.
  • One currently known intermediate driver operates under the computer operating systems and balances the load between heterogeneous NICs. The intermediate driver operates below and communicates with a network driver interface specification (NDIS) which in turn communicates with two miniport driver instances. Each miniport driver in turn communicates with an NIC.
  • The foregoing advantageously provides for load balancing across dissimilar NICs. However, additional host overhead is required which affects performance. In some cases, performance efficiency degradation of as much as 50% has been measured when using an intermediate driver to perform load balancing.
  • Accordingly, it would be advantageous to exploit the advantages of using multiple ports, while minimizing resource overhead and avoiding performance degradation.
  • Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.
  • BRIEF SUMMARY OF THE INVENTION
  • A system, method, and apparatus for efficient load-balancing for a plurality of ports is presented herein. A miniport driver is adapted to multiplex and demultiplex traffic workload across the ports. The miniport driver classifies outgoing packet streams and distributes each packet stream to a communication ring, such as an Ethernet ring, for example, associated with at least one of the ports.
  • In one embodiment, the NIC is optionally configured so that the NIC appears to the computer operating system to be a single peripheral control interface (PCI) function containing two PCI base address registers, one for each port. Both ports share a single interrupt line.
  • In another embodiment, the NIC can be configured in one of a plurality of modes, including modes where each of the ports are separately operable, and a mode wherein the plurality of ports are operable as a single logical PCI function from the perspective of an operating system.
  • These and other advantages and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
  • BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS
  • FIG. 1 is a block diagram of an intermediate driver based load balancing solution;
  • FIG. 2 is a block diagram of a miniport driver configured to balance traffic between a plurality of ports in accordance with an embodiment of the present invention;
  • FIG. 3 is a block diagram of a dual port network controller in accordance with an embodiment of the present invention;
  • FIG. 4 is a flow chart describing the operation of a miniport driver in accordance with an embodiment of the present invention; and
  • FIG. 5 is a block diagram of an exemplary computer system in accordance with an embodiment of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • Referring now to FIG. 1, there is illustrated a block diagram of an intermediate driver based load balancing solution. A computer system is controlled by an operating system that supports one or more communication protocols, such as Transmission Control Protocol/Internet Protocol, TCP/IP, Internet Protocol Exchange, IPX, or Network Basic Input Output System End User Interface, NetBEUI. Network access is provided by network interface cards (NIC), NIC1, NIC2.
  • A Network Device Interface Specification, NDIS, interfaces the TCP/IP, IPX, and NetBEUI to the NICs, NIC1, NIC2. The NDIS communicates with two miniport driver instances, Miniport Driver Instance # 1, Miniport Driver Instance # 2, that in turn communicate with the NICs, NIC1, NIC2, respectively. An intermediate driver, IM Driver comprising a Virtual NIC interface, a hashing module, and physical NIC interfaces, Phys NIC Interface # 1, Phys NIC interface # 2, operating below the operating system performs the load balancing across the NICs, NIC1, NIC2.
  • However, the intermediate driver solution injects additional host overhead that hurts performance. The performance penalty due to the intermediate driver heavily depends on the specific test/benchmark scenario. In some cases, performance efficiency degradation of as much as 50% can be incurred when using an intermediate driver to perform load balancing in a Microsoft Windows (registered trademark) environment.
  • Referring now to FIG. 2, there is illustrated a block diagram of a dual-port network controller 100 for providing access to a network 105 for a computer system 110, in accordance with an embodiment of the present invention. The network 105 can comprise, for example, a network with a 10 Gigabit Ethernet architecture according to IEEE Standard 802.3. The computer system 110 can comprise either a client or a server.
  • The computer system 110 is controlled by an operating system 115. The operating system 115 supports one or more communication protocols, such as Transmission Control Protocol/Internet Protocol (TCP/IP) 120, Internet Protocol Exchange (IPX) 125, or Network Basic Input Output System End User Interface (NetBEUI) 130.
  • The dual-port network controller 100 comprises a two media access controllers 135 a, 135 b for communicating with the network 105. Use of the two media access controllers 135 a, 135 b provides for reliable network access. Additionally, the two media access controllers 135 a, 135 b alleviate bottlenecking when large amounts of data are transmitted between the computer system 110 and the network 105, especially when the computer system 110 comprises a server.
  • The dual-port network controller 100 also includes a miniport driver 140 for load balancing between the MACs 135 a, 135 b. The miniport driver 140 is homogeneous software that classifies and distributes outgoing packet streams. A single instance of a miniport driver 140 multiplexes and demultiplexes traffic across both MACs 135 a, 135 b.
  • The computer system 110 and the dual-port network controller 100 are interfaced by a Network Driver Interface Specification (NDIS) 145. As noted above, the miniport driver 140 performs the load balancing across the MACs 135 a, 135 b. The foregoing avoids the extra overhead associated with placement of an intermediate driver at the NDIS 145.
  • Referring now to FIG. 3, there is illustrated a block diagram of an exemplary dual-port network controller 100 in accordance with an embodiment of the present invention. The dual-port network controller 100 includes a PCI bus interface 205 and two PCI function modules 210(1), 210(2). The PCI bus interface 205 provides interrupts, INTA and INTB. An arbiter 215 arbitrates contention over the PCI bus interface 205 between the PCI function modules 210. The dual-port network controller 100 also includes an EEPROM 218 for storage of a mode of operation code.
  • Each PCI function includes a MAC 220 associated with an ethernet transceiver 225. The MAC 220 performs the data link layer function for data transmitted over the network while the ethernet transceiver 225 performs the physical layer function. Each MAC 220 is also associated with a memory 230 and registers 235. The memory 230 provides packet buffering for higher performance and load balancing. The registers 235 include various PCI space configuration registers including a base address registers 235 a.
  • The network controller can operate in one of several modes. The modes include modes wherein only MAC 220(1) is operating and where only MAC 220(2) is operating, and where both MACs 220 are operating and appear to the operating system 115 as separate PCI functions. In each of the foregoing modes, each PCI module 210(1), 210(2) are associated with an interrupt, INTA, and INTB, respectively.
  • There is also a mode of operating, wherein both MACs 220 are operating and appear to the operating system 115 as a single PCI function. In the mode wherein both MACs 220 are operating and appear to the operating system 115 as a single PCI function, both MACs 220 use INTA to interrupt the operating system 115.
  • As can be seen, there is a two modes of operation where both MACs 220 operate. In one mode, the MACs 220 appear as 2 PCI functions, while in another mode, the MACs 220 appear as a single PCI function. The advantage of a single function is that it appears to be only a single device to the OS, rather than multiple devices. This makes the configuration and management more intuitive.
  • The specific mode of operation can be selectively set by storage of a specific code in the EEPROM 218. During reset, the EEPROM 218 is read by the miniport driver 140, which configures the network controller 100. An exemplary coding scheme is shown in TABLE 1.
  • TABLE 1
    Code Operation Mode
    00 Both operable, two PCI functions
    01 MAC(1) operable
    10 MAC(2) operable
    11 Both operable, single PCI function
  • Referring now to FIG. 4, there is illustrated a flow diagram describing the operation of the miniport driver in accordance with an embodiment of the present invention. Responsive to a reset, the operating system 115 loads the miniport driver 140. During an initialization sequence, the miniport driver 140 accesses (305) the mode of operation code in the EEPROM 218. The miniport driver 140 configures the network controller 100 based on the mode of operation code (310).
  • If the mode of operation code during 310 indicates either PCI module 210(1) operable only, PCI module 210(2) operable only, or both PCI modules operable, with two PCI functions, the miniport driver 140 configures (315) PCI module 210(1), and/or PCI module 210(2) as indicated by the mode of operation code. Each operable PCI module 210 is associated with a particular PCI function identification number. After configuration of the PCI modules 210, each operable PCI module 210 is associated (320) with a separate miniport driver instance 140.
  • If the mode of operation code during 310 indicates that both PCI modules 210(1), 210(2) are to operate, with one PCI function, the miniport driver 140 configures (325) the PCI modules 210. The registers 235(1) of PCI module 210 are configured (330) to include a base address register 235(1)a, and an auxiliary base address register 235(1)a′. The auxiliary base address register 235(1)a′ is loaded (335) with the location of the registers 235(2) of PCI module 210(2). After configuration, a single instance of miniport driver 140 performs load balancing across both MACs 220 as shown in FIG. 1.
  • Referring now to FIG. 5, there is illustrated an exemplary computer system 110 in accordance with an embodiment of the present invention. A CPU 60 is interconnected via system bus 62 to random access memory (RAM) 64, read only memory (ROM) 66, an input/output (I/O) adapter 68, a user interface adapter 72, a communications adapter 84, and a display adapter 86. The input/output (I/O) adapter 68 connects peripheral devices such as hard disc drives 40, floppy disc drives 41 for reading removable floppy discs 42, and optical disc drives 43 for reading removable optical disc 44 (such as a compact disc or a digital versatile disc) to the bus 62. The user interface adapter 72 connects devices such as a keyboard 74, a mouse 76 having a plurality of buttons 67, a speaker 78, a microphone 82, and/or other user interfaces devices such as a touch screen device (not shown) to the bus 62. The communications adapter 84 connects the computer system to a data processing network 92. The display adapter 86 connects a monitor 88 to the bus 62.
  • An embodiment of the present invention can be implemented as sets of instructions resident in the random access memory 64 of one or more computer systems 110 configured generally as described in FIG. 4. Until required by the computer system 58, the set of instructions may be stored in another computer readable memory, for example in a hard disc drive 40, or in removable memory such as an optical disc 44 for eventual use in an optical disc drive 43, or a floppy disc 42 for eventual use in a floppy disc drive 41. One skilled in the art would appreciate that the physical storage of the sets of instructions physically changes the medium upon which it is stored electrically, magnetically, or chemically so that the medium carries computer readable information.
  • While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the invention. In addition, many modifications may be made to adapt particular situation or material to the teachings of the invention without departing from its scope. Therefore, it is intended that the invention not be limited to the particular embodiment(s) disclosed, but that the invention will include all embodiments falling within the scope of the appended claims.

Claims (16)

1. An integrated network controller comprising:
a plurality of ports; and
a control module connected to the plurality of ports and adapted to control a traffic workload across each of the plurality of ports, wherein the control module operates below a network design interface specification.
2. The network controller of claim 1, wherein the control module comprises a miniport driver.
3. The network controller of claim 1, wherein the control module multiplexes and demultiplexes the traffic.
4. The network controller of claim 3, wherein the control module is adapted to classify outgoing packet streams and distribute such packet streams to a communication ring associated with at least one of said ports.
5. The network controller of claim 1, wherein each of said ports is associated with a media access controller.
6. The network controller of claim 1, further comprising a first memory for storing an operating mode indicator.
7. The network controller of claim 1, further comprising a plurality of register sets, wherein each of said ports is associated with a particular one of the plurality of register sets.
8. The network controller of claim 6, wherein one of the plurality of register sets includes a first base address register and a second base address register storing an address associated with another one of the plurality of register sets.
9. An integrated network controller comprising:
a plurality of ports for receiving a traffic workload; and
a control module for controlling the traffic workload across each of the plurality of ports, wherein the control module operates below a network design interface specification.
10. The integrated network controller of claim 9, wherein the control module comprises a miniport driver.
11. The integrated network controller of claim 9, wherein the control module multiplexes and demultiplexes the traffic.
12. The integrated network controller of claim 11, wherein the control module classifies outgoing packet streams and distributes such packet streams to a communication ring associated with at least one of said ports.
13. The integrated network controller of claim 11, wherein each of said ports is associated with a media access controller.
14. The integrated network controller of claim 9, further comprising a first memory for storing an operating mode indicator.
15. The integrated network controller of claim 9, wherein each of said ports is associated with a particular one of a plurality of register.
16. The integrated network controller of claim 15, wherein one of the plurality of register sets comprises a first base address register and a second base address register storing an address associated with another one of the plurality of register sets.
US12/264,734 2002-05-16 2008-11-04 System, method, and apparatus for load-balancing to a plurality of ports Abandoned US20090147677A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/264,734 US20090147677A1 (en) 2002-05-16 2008-11-04 System, method, and apparatus for load-balancing to a plurality of ports

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US38194202P 2002-05-16 2002-05-16
US10/439,494 US7463585B2 (en) 2002-05-16 2003-05-16 System, method, and apparatus for load-balancing to a plurality of ports
US12/264,734 US20090147677A1 (en) 2002-05-16 2008-11-04 System, method, and apparatus for load-balancing to a plurality of ports

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/439,494 Continuation US7463585B2 (en) 2002-05-16 2003-05-16 System, method, and apparatus for load-balancing to a plurality of ports

Publications (1)

Publication Number Publication Date
US20090147677A1 true US20090147677A1 (en) 2009-06-11

Family

ID=30118248

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/439,494 Active 2025-08-01 US7463585B2 (en) 2002-05-16 2003-05-16 System, method, and apparatus for load-balancing to a plurality of ports
US12/264,734 Abandoned US20090147677A1 (en) 2002-05-16 2008-11-04 System, method, and apparatus for load-balancing to a plurality of ports

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/439,494 Active 2025-08-01 US7463585B2 (en) 2002-05-16 2003-05-16 System, method, and apparatus for load-balancing to a plurality of ports

Country Status (1)

Country Link
US (2) US7463585B2 (en)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158651A1 (en) * 2003-02-10 2004-08-12 Fan Kan Frankie System and method for teaming
US7003591B2 (en) * 2003-08-20 2006-02-21 Hewlett-Packard Development Company, L.P. Configurable mapping of devices to bus functions
US7073010B2 (en) * 2003-12-02 2006-07-04 Super Talent Electronics, Inc. USB smart switch with packet re-ordering for interleaving among multiple flash-memory endpoints aggregated as a single virtual USB endpoint
US8572288B2 (en) * 2005-12-15 2013-10-29 Nvidia Corporation Single logical network interface for advanced load balancing and fail-over functionality
US7693044B2 (en) * 2005-12-15 2010-04-06 Nvidia Corporation Single logical network interface for advanced load balancing and fail-over functionality
US8031632B2 (en) * 2006-08-30 2011-10-04 Hewlett-Packard Development Company, L.P. Method and system of implementing virtual local area networks (VLANS) with teamed communication ports
US8190403B2 (en) * 2007-06-26 2012-05-29 Microsoft Corporation Real-time rendering of light-scattering media
US20100036903A1 (en) * 2008-08-11 2010-02-11 Microsoft Corporation Distributed load balancer
WO2011067408A1 (en) 2009-12-04 2011-06-09 Napatech A/S An apparatus and a method of receiving and storing data packets controlled by a central controller
US8874809B2 (en) 2009-12-04 2014-10-28 Napatech A/S Assembly and a method of receiving and storing data while saving bandwidth by controlling updating of fill levels of queues

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664122A (en) * 1993-11-12 1997-09-02 Intel Corporation Method and apparatus for sequencing buffers for fast transfer of data between buses
US5940392A (en) * 1994-12-30 1999-08-17 Advanced Micro Devices, Inc. Programmable address mapping matrix for secure networks
US6016310A (en) * 1997-06-30 2000-01-18 Sun Microsystems, Inc. Trunking support in a high performance network device
US6208616B1 (en) * 1997-05-13 2001-03-27 3Com Corporation System for detecting errors in a network
US6381218B1 (en) * 1998-09-11 2002-04-30 Compaq Computer Corporation Network controller system that uses directed heartbeat packets
US20020186656A1 (en) * 2001-05-07 2002-12-12 Vu Chuong D. Automatic load balancing in switch fabrics
US6542511B1 (en) * 1998-04-30 2003-04-01 Nortel Networks Limited Programmable transport and network architecture
US20030140124A1 (en) * 2001-03-07 2003-07-24 Alacritech, Inc. TCP offload device that load balances and fails-over between aggregated ports having different MAC addresses
US6633929B1 (en) * 1999-04-30 2003-10-14 Microsoft Corporation Method and system for abstracting network device drivers
US20040213220A1 (en) * 2000-12-28 2004-10-28 Davis Arlin R. Method and device for LAN emulation over infiniband fabrics
US20050183134A1 (en) * 1999-03-18 2005-08-18 Microsoft Corporation Methods and systems for broadcast data services

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4587651A (en) * 1983-05-04 1986-05-06 Cxc Corporation Distributed variable bandwidth switch for voice, data, and image communications
US5754792A (en) * 1992-03-19 1998-05-19 Hitachi, Ltd. Switch circuit comprised of logically split switches for parallel transfer of messages and a parallel processor system using the same
US5701414A (en) * 1995-06-19 1997-12-23 Motorola, Inc. Controller for selective call receiver having memory for storing control information, plurality of addresses, status information, receive address information, and message
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
KR100429187B1 (en) * 1999-05-11 2004-04-28 엘지전자 주식회사 ATM Packet Network and Method for Transmitting Packet
WO2001025949A1 (en) * 1999-10-05 2001-04-12 Ejasent Inc. Ip virtualization
US6577420B1 (en) * 1999-10-27 2003-06-10 Lucent Technologies Inc. Reduction of modal noise in step-index fiber bundles
US7010802B1 (en) * 2000-03-01 2006-03-07 Conexant Systems, Inc. Programmable pattern match engine
GB2363869B (en) * 2000-06-20 2004-06-23 Element 14 Inc Register addressing

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664122A (en) * 1993-11-12 1997-09-02 Intel Corporation Method and apparatus for sequencing buffers for fast transfer of data between buses
US5940392A (en) * 1994-12-30 1999-08-17 Advanced Micro Devices, Inc. Programmable address mapping matrix for secure networks
US6208616B1 (en) * 1997-05-13 2001-03-27 3Com Corporation System for detecting errors in a network
US6016310A (en) * 1997-06-30 2000-01-18 Sun Microsystems, Inc. Trunking support in a high performance network device
US6542511B1 (en) * 1998-04-30 2003-04-01 Nortel Networks Limited Programmable transport and network architecture
US6381218B1 (en) * 1998-09-11 2002-04-30 Compaq Computer Corporation Network controller system that uses directed heartbeat packets
US20050183134A1 (en) * 1999-03-18 2005-08-18 Microsoft Corporation Methods and systems for broadcast data services
US6633929B1 (en) * 1999-04-30 2003-10-14 Microsoft Corporation Method and system for abstracting network device drivers
US20040213220A1 (en) * 2000-12-28 2004-10-28 Davis Arlin R. Method and device for LAN emulation over infiniband fabrics
US20030140124A1 (en) * 2001-03-07 2003-07-24 Alacritech, Inc. TCP offload device that load balances and fails-over between aggregated ports having different MAC addresses
US20020186656A1 (en) * 2001-05-07 2002-12-12 Vu Chuong D. Automatic load balancing in switch fabrics

Also Published As

Publication number Publication date
US20040008705A1 (en) 2004-01-15
US7463585B2 (en) 2008-12-09

Similar Documents

Publication Publication Date Title
US20090147677A1 (en) System, method, and apparatus for load-balancing to a plurality of ports
US8631162B2 (en) System and method for network interfacing in a multiple network environment
EP1514191B1 (en) A network device driver architecture
US8032664B2 (en) Method and apparatus for using a single multi-function adapter with different operating systems
US6654812B2 (en) Communication between multiple partitions employing host-network interface
US9100349B2 (en) User selectable multiple protocol network interface device
US7934021B2 (en) System and method for network interfacing
US7245627B2 (en) Sharing a network interface card among multiple hosts
US8503468B2 (en) PCI express load sharing network interface controller cluster
JP2004534311A (en) Configuration to create multiple virtual queue pairs from compressed queue pairs based on shared attributes
US6330616B1 (en) System for communications of multiple partitions employing host-network interface, and address resolution protocol for constructing data frame format according to client format
US20080002704A1 (en) Method and system for controlling virtual machine bandwidth
US20070081538A1 (en) Off-load engine to re-sequence data packets within host memory
US20030043794A1 (en) Data stream multiplexing in data network
US7415552B2 (en) Keyboard video mouse switch for multiple chaining and the method thereof
EP1460806A2 (en) System and method for network interfacing in a multiple network environment
US6334154B1 (en) Article of manufacture for communications of multiple partitions employing host-network interface, and address resolution protocol for constructing data frame format according to client format
EP1540473B1 (en) System and method for network interfacing in a multiple network environment
EP1158750B1 (en) Systems and method for peer-level communications with a network interface card
CN100472450C (en) System and method for network interfacing in a multiple network environment
US7519089B1 (en) Arrangement in a channel adapter for transmitting data according to link widths selected based on received link management packets
Sterling Network hardware

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

AS Assignment

Owner name: BROADCOM CORPORATION, CALIFORNIA

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041712/0001

Effective date: 20170119