Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

A network controller including a packet forwarding mechanism and method therefor improve load-balancing within a network system without requiring an intelligent switch having TCP splicing capability. If the network controller node is becoming overloaded (for example as indicated by a full output FIFO), the network controller forwards connections directly to alternate servers. The network controller and method further provide improved fail-safe operation, as the network controller can more easily detect failure of the coupled server than can a remote switch being monitored for failure of a connected server node. The packet forwarding mechanism can be implemented very compactly within the firmware of the network controller, providing a load-balancing solution with little incremental cost (as opposed to an intelligent switch solution) and with tight coupling to the server, providing a redirection solution from the point that has the most information available regarding the status of...

InventorsEric Van Hensbergen, Ramakrishnan Rajamony
Original AssigneeInternational Business Machines Corporation
Primary Examiner: Kenny Lin
Attorneys: Mitch Harris, Atty at Law, LLC, Andrew M. Harris, Casimer K. Salys
Current U.S. Classification709/228; 709/227; 709/239

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US5477547Jul 29, 1994Dec 19, 1995Kabushiki Kaisha ToshibaInter-LAN connection equipment
US5802366Oct 11, 1994Sep 1, 1998Auspex Systems, Inc.Parallel I/O network file server architecture
US6084858Jan 29, 1997Jul 4, 2000Cabletron Systems, Inc.Distribution of communication load over multiple paths based upon link utilization
US6101543Oct 25, 1996Aug 8, 2000Digital Equipment CorporationPseudo network adapter for frame capture, encapsulation and encryption
US6230200Sep 8, 1997May 8, 2001EMC CorporationDynamic modeling for resource allocation in a file server
US6243379Apr 4, 1997Jun 5, 2001Ramp Networks, Inc.Connection and packet level multiplexing between network links
US6262976Sep 17, 1999Jul 17, 2001Ordered Networks, Inc.System and method for network flow optimization using traffic classes
US6321336Mar 13, 1998Nov 20, 2001Secure Computing CorporationSystem and method for redirecting network traffic to provide secure communication
US6628654Jul 1, 1999Sep 30, 2003Cisco Technology, Inc.Dispatching packets from a forwarding agent using tag switching
US6751728Jun 16, 1999Jun 15, 2004Microsoft CorporationSystem and method of transmitting encrypted packets through a network access point
US6779035Mar 6, 2000Aug 17, 2004Microsoft CorporationApplication programming interface and generalized network address translator for translation of transport-layer sessions
US6880089Mar 31, 2000Apr 12, 2005Avaya Technology Corp.Firewall clustering for multiple network servers
US6968394Mar 21, 2000Nov 22, 2005Zaksat General Trading Co., WLLAsymmetric satellite-based internet service
US6970913Jul 2, 1999Nov 29, 2005Cisco Technology, Inc.Load balancing using distributed forwarding agents with application based feedback for different virtual machines
US20010037358Jan 24, 2001System and method to publish information from servers to remote monitor devices
US20020065938May 15, 2001Edge adapter architecture apparatus and method

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US7827141Apr 27, 2005Nov 2, 2010Oracle International CorporationDynamically sizing buffers to optimal size in network layers when supporting data transfers related to database applications
US8209700Dec 22, 2005Jun 26, 2012International Business Machines CorporationSystem, method, and program product for providing local load balancing for high-availability servers

Claims

1. A method for forwarding connections at a server, comprising:

receiving a packet at a network controller of said server, wherein said packet is destined for an original destination node of said server and was provided by an originating source;

within said network controller, selecting an alternate destination node for said packet;

modifying a destination address and an origin address of said packet within said network controller to produce a modified packet containing a destination address of said alternate destination node and an origin address of a response node of said network controller;

transmitting said modified packet from said network controller to said alternate destination node; and
building a database within said server of alternate destinations for packet data, and wherein said selecting selects said alternate destination node form said database.

2. The method of claim 1, wherein said receiving receives a packet from a switch coupled to said network controller and wherein said transmitting transmits said modified packet to said switch.

3. The method of claim 1, wherein said database of alternate destinations is transmitted within said server to a memory of said network controller, whereby said network controller may select said alternate destination node from said database.

4. The method of claim 1, further comprising: analyzing network traffic at said server; and building said database in conformity with a result of said analyzing.

5. The method of claim 1, further comprising

detecting that a size of a packet buffer for said original destination node has exceeded a predetermined threshold, and wherein said selecting, modifying and transmitting are performed in response to said detecting.

6. The method of claim 1, wherein said packet is a connection request, wherein said selecting selects an alternate node for said connection, and wherein said modifying and transmitting are performed for subsequent packets received for said connection.

7. The method of claim 1, further comprising:

receiving a response packet from said alternate destination node at said response node;

modifying an origination address and a destination address of said response packet within said network controller to produce a modified response packet containing an origination address of said original destination node and a destination address of said originating source; and

transmitting said modified response packet from said network controller to said originating source.

8. A server system, comprising:

a processing unit, including a server memory for storing server program instructions for execution by a server processor within said processing unit; wherein said server program instructions include:
program instructions for building within said server a database of alternate destinations for packet data; and
program instructions for transferring said database to said network controller, whereby said network controller may select said alternate destination node from said database;

a bus for interconnecting said processing unit with peripheral devices; and

a network controller coupled to said bus for coupling said server system to a network, said network controller including a controller processor and a controller memory coupled to said controller processor for storing controller program instructions for execution by said controller processor, and wherein said controller program instructions include instructions for
receiving a packet at a network controller of said server, wherein said packet is destined for an original destination node of said server and was provided by an originating source;
selecting an alternate destination node for said packet;
modifying a destination address and an origin address of said packet within said network controller to produce a modified packet containing a destination address of said alternate destination node and an origin address of a response node of said network controller; and
transmitting said modified packet from said network controller to said alternate destination node.

9. The server system of claim 8, wherein said network controller includes a network processor and wherein said controller processor and said controller memory are included within said network processor.

10. The server system of claim 8, wherein said server program instructions further comprise program instructions for: analyzing network traffic at said server; and building said database in conformity with a result of said analyzing.

11. The server system of claim 8, wherein said controller program instructions further comprise program instructions for detecting that a size of a packet buffer for said original destination node has exceeded a predetermined threshold, and wherein said program instructions for selecting, modifying and transmitting are executed in response to said detecting.

12. The server system of claim 8, wherein said packet is a connection request, wherein said controller program instructions for selecting select an alternate node for said connection, and wherein said program instructions for modifying and transmitting are executed for subsequent packets received for said connection.

13. The server system of claim 8, wherein said controller program instructions further comprise program instructions for:

receiving a response packet from said alternate destination node at said response node;

modifying an origination address and a destination address of said packet within said network controller to produce a modified response packet containing an origination address of said original destination node and a destination address of said originating source; and

transmitting said modified response packet from said network controller to said originating source.

14. A server system, comprising:

a processing unit, including a server memory for storing server program instructions for execution by a server processor within said processing unit;

a bus for interconnecting said processing unit with peripheral devices; and

a network controller coupled to said bus for coupling said server system to a network, said network controller including a controller processor and a controller memory coupled to said controller processor for storing controller program instructions for execution by said controller processor, and wherein said controller program instructions include instructions for
receiving a packet at a network controller of said server, wherein said packet is destined for an original destination node of said server and was provided by an originating source;
selecting an alternate destination node for said packet;
modifying a destination address and an origin address of said packet within said network controller to produce a modified packet containing a destination address of said alternate destination node and an origin address of a response node of said network controller;
transmitting said modified packet from said network controller to said alternate destination node; and
building within said intelligent network controller a database of alternate destinations for packet data, and wherein said program instructions for selecting select said alternate destination node from said database.

15. A computer program product comprising computer-readable storage medium encoding program instructions for execution within a controller processor of a network controller, said program instructions comprising program instructions for:

receiving a packet at a network controller of said server, wherein said packet is destined for an original destination node of said server and was provided by an originating source;

selecting an alternate destination node for said packet; modifying a destination address and an origin address of said packet within said network controller to produce a modified packet containing a destination address of said alternate destination node and an origin address of a response node of said network controller;

transmitting said modified packet from said network controller to said alternate destination node;

building within said network controller a database of alternate destinations for packet data, and wherein said program instructions for selecting select said alternate destination node form said database.

16. The computer program product of claim 15, wherein said program instructions further comprise program instructions for detecting that a size of a packet buffer for said original destination node has exceeded a predetermined threshold, and wherein said program instructions for selecting, modifying and transmitting are executed in response to said detecting.

17. The computer program product of claim 15, wherein said packet is a connection request, wherein said program instructions for selecting select an alternate node for said connection, and wherein said program instructions for modifying and transmitting are executed for subsequent packets received for said connection.

18. The computer program product of claim 15, wherein said program instructions further comprise program instructions for:

receiving a response packet from said alternate destination node at said response node;

modifying an origination address and a destination address of said packet within said network controller to produce a modified response packet containing an origination address of said original destination node and a destination address of said originating source; and

transmitting said modified response packet from said network controller to said originating source.

19. A computer program product comprising computer-readable storage medium encoding program instructions for execution within a server processor of a server including a network controller, said server program instructions include:

program instructions for building within said server a database of alternate destinations for packet data; and

program instructions for transferring said database to said network controller, whereby said network controller may select said alternate destination node from said database.

20. The computer program product of claim 19, wherein said server program instructions further comprise program instructions for:

analyzing network traffic at said server; and building said database in conformity with a result of said analyzing.