US20040073683A1 - Method and apparatus for providing an integrated cluster alias address - Google Patents

Method and apparatus for providing an integrated cluster alias address Download PDF

Info

Publication number
US20040073683A1
US20040073683A1 US10/677,584 US67758403A US2004073683A1 US 20040073683 A1 US20040073683 A1 US 20040073683A1 US 67758403 A US67758403 A US 67758403A US 2004073683 A1 US2004073683 A1 US 2004073683A1
Authority
US
United States
Prior art keywords
processor
cluster
processor node
node
nodes
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
US10/677,584
Inventor
Paul Beck
Larry Cohen
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to US10/677,584 priority Critical patent/US20040073683A1/en
Publication of US20040073683A1 publication Critical patent/US20040073683A1/en
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: COMPAQ INFORMATION TECHNOLOGIES GROUP LP
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1006Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1038Load balancing arrangements to avoid a single path through a load balancer

Definitions

  • processor nodes typically include one or more central processor nodes, referred to simply as “processor nodes” or “nodes”. Each of those processor nodes includes one or more network interface modules, connected to a computer network, for communicating with other processor nodes. Each network interface module has an associated network layer address or IP address to which packets of information are directed. The network layer address allows processor nodes to communicate with one another by sending those packets of information across the computer network. Each packet includes a header that contains the network layer addresses of the originating, or source, processor node and of the destination processor node.
  • Groups of processor nodes can be connected in an arrangement referred to as a “cluster”.
  • processor nodes within a cluster are more tightly coupled than in a general network environment and act in concert with one another.
  • all of the processor nodes within a cluster can share a common file system such that they are able to access the same files.
  • each of the processor nodes within the cluster can use the same security domain files such that common user names and passwords may be utilized to log on to any of the processor nodes.
  • a cluster should appear as a single processor node to clients accessing that cluster.
  • a cluster should present a common set of software services that can be executed by any of the associated processor nodes. Therefore, regardless of which processor node is accessed by a client, the same services will be provided. In such a manner, processor nodes can be seamlessly added to the cluster to increase the capacity of those services without the cluster looking any different to the client.
  • cluster alias address To make a cluster appear to be a single processor node, it should have a single network layer address. Such a network layer address is referred to as a “cluster alias address”. That cluster alias address should not be tied to one specific node within the cluster but rather should be collectively associated with all the processor nodes. To that end, the cluster's network layer address must be accessible regardless of what the current membership of the cluster is. The current membership of a cluster is defined by the nodes that are “up” and capable of running the software services required by any client accessing the cluster. Accordingly, a client accessing the cluster over a network does not need to know which nodes within the cluster are currently up and running in order to access the software services that the cluster provides.
  • a node may include a hardware circuit for accelerating a particular operation which the other cluster nodes perform in software, or vice versa. Because prior art clusters simply distribute new connections amongst existing nodes, a client that gains access to the cluster in order to perform the above mentioned operation will be assigned a connection regardless of the capabilities of that chosen node. The operation will be performed, but the client will incur additional overhead if it is connected to one of the nodes that does not have the more efficient capabilities. Therefore, each processor node is associated with specific port numbers. The client application that issued the data packet is also associated up, or binds to, a “port number”.
  • a port number is essentially a queue into which data packets, that are sent to a processor node, are stored for servicing.
  • Software programs referred to as receiver applications or datalink applications, execute on the processor nodes of a cluster and monitor specific port numbers for data packets sent from clients via established connections.
  • Each processor node within the cluster has the ability to distribute received data packets to an appropriate processor node for servicing.
  • the processor node receiving the data packet from the network will hereinafter be referred to as the “receiving processor node” for that transaction.
  • the receiving processor node When a data packet arrives at the cluster, the receiving processor node first determines the type of the data packet. For example, most data packets correspond to the TCP/IP or UDP network protocols. The receiving processor node further determines whether the data packet is associated with an existing connection to an application running on one of the processor nodes within the cluster or whether a new connection should be established.
  • a receiving processor node When a receiving processor node receives a new data packet that is addressed to the cluster alias address, and which requests establishment of a new connection, the receiving processor node executes an application to select an available processor node in the cluster. That selection is typically performed without regard to the associated port number. If the receiver application for that processor node is not monitoring the associated port number, a connection cannot be established. In that situation, the connection attempt will timeout and the client will have to re-transmit another connection request. Such an occurrence increases the overhead of the connection operation by increasing the amount of time needed to establish a connection. Further, requiring the client to subsequently re-try a connection attempt destroys the image of the cluster as a single node because the re-transmission of the connection request is an attempt to connect to another processor node in the same cluster.
  • the receiving processor node determines a processor node of the cluster to which a new connection should be established, it retransmits the data packet to the selected processor node over the network.
  • the data packet's header is modified to reflect the network layer address of the selected destination processor node, and the data packet is re-broadcast on the network for delivery to that processor node.
  • a method for making a cluster of processor nodes appear as a single processor node to client applications that operate in conjunction with that cluster. More particularly, the cluster is provided with a skinny stack application for selecting a processor node to which a connection will be established as a function of the TCP port numbers that the processor node is monitoring. Further, the cluster is provided with a method for tunneling data packets between processor nodes of the cluster such that they do not have to be re-transmitted across a network. Further still, the cluster is provided with a virtual subnetwork or “subnet” to which the cluster alias address can be associated.
  • the cluster is provided with a method for preventing retransmission of data packets addressed to a processor node that has failed.
  • the address of the failed processor node is acquired by another processor node for the duration of the routing failover delay.
  • data packets directed to the failed processor node will be serviced during that routing failover delay.
  • FIG. 1 is a schematic drawing of a single processor node coupled to a network
  • FIG. 2 is a schematic drawing depicting a number of processor nodes of FIG. 1 arranged in a cluster;
  • FIG. 3 is a block diagram of a TCP-IP packet header issued from the cluster depicted in FIG. 2.
  • FIG. 4 is a flow diagram of the present invention method for establishing a connection by a cluster such as the cluster depicted in FIG. 2;
  • FIGS. 5A and 5B are flow diagrams depicting the operation of the skinny stack application of the present invention, executing on a processor node of the cluster of FIG. 2;
  • FIG. 6 is a flow diagram depicting the tunneling of a data packet between processor nodes of the cluster depicted in FIG. 2, according to the present invention
  • FIG. 7 is a schematic drawing depicting a number of processor nodes of the cluster of FIG. 2 arranged in a virtual subnet, according to the present invention
  • FIG. 8 is a flow diagram depicting the use of virtual subnet addressing on the processor nodes of FIG. 2, according to the present invention.
  • FIG. 9 is a flow diagram depicting the router address takeover operation of the present invention, running on the processor nodes of FIG. 7.
  • FIG. 1 is a block diagram of a single processor node 10 .
  • the processor node includes a central processing unit (CPU) 12 coupled to a cache memory 14 , a main memory 16 and an I/O device driver 18 .
  • the processor node 10 is coupled to a computer network 22 via network interface module 20 .
  • the network interface module 20 has an associated network layer address to which packets of information, transferred on the computer network by other processor nodes, can be directed.
  • the network layer address therefore allows remote processor nodes to communicate with one another through the passing of packets of information across the computer network 23 .
  • Each packet includes a header that contains the network layer addresses of the originating processor node and the network layer address of the destination processor node.
  • a cluster 24 is a collection of processor nodes tightly coupled via a computer network and acting in concert with one another.
  • Processor nodes 10 a - 10 c are shown connected together via network interfaces 20 a - 20 c and via the computer network 23 .
  • the indicated portion of computer network 23 is referred to as a subnet, and in this case “subnet S1” 22 .
  • Each of the processor nodes 10 a - 10 c are referred to as Processor nodes A-C and, for illustration purposes, have thirty-two bit network layer (or IP) addresses S1.A, S1.B and S1.C, respectively.
  • IP network layer
  • a client processor node 26 is also shown connected to subnet 22 via a network 23 and a network router 25 .
  • Cluster 24 is associated with a single network layer address such that it appears as a single processor node to a client 26 located outside the cluster, i.e. on the other side of network 23 . That network layer address is associated with all the processor nodes 10 a - 10 c in the cluster 24 and is referred to as a “cluster alias address”. Using the cluster alias address, data packets are directed to a specific cluster of processor nodes. However, the cluster alias address does not specify the processor node within the cluster to which the data packet should be directed.
  • each processor node 10 a - 10 c has the ability to distribute those data packets within the cluster 24 .
  • the processor node and application receiving the data packets will hereinafter be referred to as the “receiving processor node” and “receiver application,” respectively.
  • connection is a construct that is established by both the source processor node and the destination processor node for exchanging data via data packets. More specifically, the connection is established by applications running on the source and destination processor nodes. When an application program running on the source processor node requires a service provided by another cluster, it sends a data packet to that cluster's alias address.
  • Such data packets that arrive at cluster 24 include a TCP/IP header portion 30 which contains information regarding an associated connection to a processor node if such connection exists.
  • the source IP address field 34 identifies the thirty-two bit network layer address of the processor node or cluster, that sent the associated data packet to cluster 24 .
  • the destination IP address field 38 identifies the thirty-two bit network layer address of the destination processor node or cluster 24 .
  • the source port field 36 identifies the TCP port number for the application on the source processor node that sent the data packet. The port number identified by the source port field 36 is typically assigned only for as long as the connection exists.
  • the port number is deallocated.
  • the TCP port number used by the application running on the destination processor node is stored in the destination port field 40 .
  • the protocol being used by the associated data packet is represented by an eight bit value that is stored in the “Protocol” field 42 .
  • the TCP/IP header 30 further includes an incoming sequence number field 52 and an acknowledgment, or outgoing sequence number field 44 , collectively referred to as the “sequence number fields.”
  • the sequence number fields 52 and 44 are typically used to order data packets that are associated with a fragmented data transfer. In addition, the sequence number fields 52 and 44 are used to confirm that all such data packets successfully arrived at the destination processor node.
  • Sequential numbers are stored in the sequence number fields 52 and 44 of each data packet header to indicate the relative position of that data packet within the transfer. Although some packets may arrive at the destination processor node out of order, the total number of data packets must arrive for a successful data transmission to occur. By monitoring the sequence numbers from the sequence number fields 52 and 44 of each data packet, a destination processor node can determine whether all the data has been transferred that was intended to be transferred.
  • the header 30 also includes a number of code bits, one of which is referred to as the “synchronize sequence numbers” or “SYN” bit 54 .
  • the source processor node sets the SYN bit 54 before it sends the initial data packet to the cluster alias address to request establishment of a new connection.
  • Another code bit referred to as the “acknowledgment valid” or “ACK” bit 56 is also included in the header. The operation of the SYN 54 and ACK 56 bits will be described in more detail below.
  • a flow diagram depicts the establishment of a new connection.
  • the receiver application running on a processor node 10 within the destination cluster 24 receives the data packet, it first determines whether the packet was sent to the cluster alias address. If not, the packet is handled normally. If the packet was sent to the cluster alias, the application executes a routine, referred to as the “skinny stack” routine, to perform cluster-alias specific checks on the packet (Step 59 ).
  • the skinny stack application checks the value of the SYN bit 54 (Step 60 ). When the SYN bit 54 is set, the skinny stack application knows that a new connection needs to be established (Step 62 ).
  • Step 64 It executes a routine, referred to as the “round robin” routine, for choosing a processor node 10 within the cluster 24 that has the correct service application running for this connection request, and will be associated with the new connection (Step 64 ). That chosen processor node will hereinafter be referred to as the destination processor node.
  • the data packet is transferred to it by the receiver application (Step 66 ) and is matched up with the correct service application.
  • a receiver application running on the chosen destination processor node acknowledges the connection by copying the contents of the incoming data packet header into the header of an outgoing data packet. Additionally, the network layer address of the destination processor node is added to the header (Step 68 ).
  • the receiver application does not change the value of the SYN bit 54 , but rather sets the other code bit referred to as the “acknowledgment” or “ACK” bit 56 .
  • the ACK bit 56 is set to indicate to the source application that the destination processor node has received the data packet containing the asserted SYN bit 54 and that it is ready to establish a connection (Step 70 ). Subsequently, the outgoing data packet is transmitted to the source processor node. The source application replies to that data packet with a final data packet containing asserted SYN 54 and ACK 56 bits (Step 72 ). When the destination processor node receives that data packet, the connection is established (Step 74 ).
  • the receiver application When the receiver application is started, it binds to a TCP port number identifying the service being offered.
  • the source application initiates the connection, it selects or “binds” a TCP port number to identify its half of the connection within the source processor node, and also specifies the destination port which identifies the service in the destination processor node to which it is trying to connect. This is the same port number to which the receiver application on the destination processor node has previously been bound.
  • the TCP port numbers essentially designate queues into which arriving data packets are placed for service by an appropriate application running on the receiving processor node.
  • the skinny stack application chooses a processor node 10 a or 10 c within the cluster 24 after considering whether that processor node 10 a, 10 c has a receiver application “listening” for data packets associated with the same destination TCP port number as the client application that sent the data packet. If the destination processor node is not listening on the same TCP port as the source application, it will not be selected to establish the connection, and another processor node in the cluster that is listening on this destination port number will be selected. To that end, a cluster wide registration, identifying the TCP port numbers that each processor node is listening on, is maintained.
  • a receiver application running on a processor node within the cluster, begins to listen on a TCP port, it issues a “listen” system call.
  • the listen system call sends a message to the other nodes in the cluster to indicate that the associated processor node has begun listening on that port.
  • Each processor node in the cluster stores the information contained in the message in a look up table. This look up table is accessed each time the skinny stack application is executed by any of the processor nodes in the cluster.
  • each processor node within the cluster associates a value, referred to as the “selection weight” value, with the cluster alias to which it belongs.
  • the selection weight indicates a processor node's capacity for servicing new connections, in relation to the other processor nodes in the cluster. Accordingly, a database of those selection weights is maintained by each processor node within the cluster.
  • the skinny stack application indexes that database using a combination of a processor node's alias address and Host ID. Each TCP port that a processor node is listening on will be associated with the same selection weight.
  • the selection weight can be refined such that it is associated with a combination of a processor node's alias address, Host ID and a TCP port that it is listening on. In such a manner, each TCP port that a processor node is listening on can be associated with a different selection weight.
  • the selection weights indicate the number of new connections that a processor node will be issued from the skinny stack application before a connection is issued to another processor node listening on the same TCP port. For example, consider that processor nodes 10 a and 10 b are each listening on TCP port number 6000 and have selection weights of 5 and 1, respectively. Therefore, five new connections will be issued to processor node 10 a for each new connection issued to processor node 10 b.
  • FIGS. 5A and 5B a flow diagram illustrates the operation of the skinny stack application in accordance with the foregoing features of the present invention.
  • the receiver application execution processor node 10 b
  • the skinny stack application first determines whether the data packet was sent using the TCP or UDP network protocols as indicated by protocol field 42 of the data packet header 30 (Step 110 ). Assuming that the data packet was sent using the TCP network protocol, the value of the SYN field of the data packet's header is used to determine whether the data packet is associated with an existing connection or is requesting the establishment of a new connection (Step 112 ). If the data packet is associated with an existing connection it will be transferred to the associated processor node for servicing (Step 114 ).
  • a round robin routine is initiated by the skinny stack application for distributing new connections to processor nodes within the cluster (Step 116 ).
  • the round robin routine maintains a sequential list of processor nodes that are candidates for receiving connections to incoming data packets to the cluster.
  • that software pointer is stored to indicate the starting point for the present execution of the routine (Step 118 ).
  • Step 120 a determination is made as to whether the candidate processor node is associated with the cluster alias address to which the data packet was directed. If the candidate processor node is not associated with that cluster alias address, the round robin routine increments the software pointer and considers the next processor node in the sequential list (Step 122 ). After the software pointer is incremented, the round robin routine determines whether it is pointing to the starting point noted above (Step 124 ). If the software pointer is pointing to the same location in the sequential list as it was when the round robin routine was initiated, none of the processor nodes within the cluster are associated with the cluster alias address to which the data packet is directed. Therefore the data packet will not be serviced by the cluster and the round robin routine is terminated (Step 126 ).
  • the routine accesses the above mentioned cluster-wide registration to determine whether it is listening on the TCP port number identified by the data packet (Step 128 ). If that processor node is not listening on the TCP port number, the software pointer is incremented and another processor node is considered for the connection (Step 122 ). If the processor node is listening on the TCP port number, it is eligible to receive the new connection (Step 130 ). A counter, that was initialized to a value equal to the selection weight for the candidate processor node, is responsively decremented (Step 132 ). If the resulting value of the counter is not zero (Step 134 ), the data packet is forwarded to the selected processor node (Step 136 ) using a procedure referred to as “tunneling,” as will be described below.
  • a further enhancement to the distribution of new connections by the skinny stack application in the present invention is the issuance of a “selection priority” to each processor node within the cluster.
  • the selection priority indicates that the skinny stack application will distribute new connections among processor nodes having the highest selection priority. More than one processor node can share the highest selection priority.
  • the round-robin routine will only select a destination processor node from among those active nodes listening on the destination port that share the highest selection priority. If all nodes at the highest selection priority are not functioning or are “down”, the round robin routine will select a destination processor node from those nodes sharing the next highest selection priority, and so forth.
  • processor nodes with a higher selection priority come back “up”
  • the round robin routine will once again select from them, to the exclusion of any nodes with lower selection priority. Because the processor nodes that are most efficient for the services required are given the highest priority, data packets will only occasionally be serviced by less efficient processor nodes.
  • a TCP/IP data packet arrives at a processor node within cluster 24 , it is stored by the receiver application in a data structure such that it is queued for service by that processor node.
  • the data packet is reconfigured by the receiver application and stored in a linked-list data structure referred to as an “Mbuf chain.” Because the elements of the data structure are linked, they operate as an input queue for sequentially delivering the received data packets to higher layers of network applications.
  • a data packet is delivered to the receiver application, a determination is made as to whether an existing connection is associated with the client application that sent the data packet or if a new connection should be generated. That determination is performed by checking the value of the SYN bit 54 of the data packet's header 30 . If the SYN bit 54 is set to a logical one, it indicates that the data packet is requesting the establishment of a new connection, as previously described.
  • the receiving processor node executes the skinny stack routine to choose a destination processor node 10 within the cluster 24 that will receive the new connection as described above. Once that destination processor node 10 is chosen, a transfer operation is performed to convey the data packet to that processor node 10 . Likewise when the receiver application determines that an existing connection is associated with the received data packet, the same transfer operation is performed to redirect the data packet to the destination processor node.
  • receiver applications of prior art systems perform that transfer operation by modifying the destination field of the TCP/IP header to indicate the network layer address for the chosen processor node. Thereafter, the data packet is sent to the network interface device and re-transmitted over the network using the normal network routing methodology.
  • the operations performed to configure the Mbuf chain data structure must be undone.
  • the receiver application has to reconfigure the Mbuf chain data structure. Accordingly, such modification and retransmission of the data packet adds overhead processing time.
  • the present invention significantly reduces such overhead processing.
  • the present invention takes advantage of the fact that when the data packet is stored in the Mbuf chain data structure of the receiving processor node, it is in the same configuration that the chosen processor node requires. Therefore, that Mbuf chain data structure is sent across a cluster interconnect (a specialized communications path that is optimized for communications between processor nodes within a cluster) in such a way that it is directly stored in the Mbuf chain for the chosen processor node. That operation, referred to as “tunneling”or “cluster alias tunneling,” avoids a significant portion of the overhead of re-transmitting the data packet.
  • cluster interconnect a specialized communications path that is optimized for communications between processor nodes within a cluster
  • FIG. 6 a flow diagram depicts the cluster alias tunneling operation.
  • a TCP/IP data packet that arrives at a processor node 10 b within the cluster 24 (Step 140 ).
  • the receiver application running on processor node 10 b removes the header and data portions of the data packet and configures them in a manner specified by the Mbuf chain data structure (Step 142 ).
  • the reconfigured data packet is stored in the Mbuf chain and queued for service by the higher level network applications (Step 144 ).
  • the receiver application determines whether the data packet is associated with an existing connection or whether a new connection needs to be established (Step 146 ) as discussed above in FIG. 4. If a new connection is to be established, the destination processor node is determined by executing the skinny stack application in the manner previously described (Step 148 ). If the data packet is associated with an existing connection, the destination processor node is established by reference to a cluster-wide connection registration database.
  • the Mbuf data structure that stores the data packet is provided to a Remote Procedure Call (RPC) (Step 150 ).
  • RPC Remote Procedure Call
  • the RPC is issued and transfers the Mbuf data structure across the cluster interconnect to the destination processor node.
  • Such a transfer takes advantage of the fact that each Mbuf data structure of each processor node within the cluster uses the same configuration. Therefore, when the receiving processor node configures the Mbuf data structure, it is in a form that is utilizable by any processor node within the cluster.
  • the overhead of re-transmitting that structure on the network is not incurred. That is because the overhead needed to transform the Mbuf data structure back into data packets, to transfer them across the network, and then reconstruct a new Mbuf data structure at the destination node is replaced by the overhead needed to tunnel the Mbuf data structure across the cluster interconnect.
  • the operation of transferring the Mbuf data structure to the destination processor node is initiated when a dedicated application (RPC), running on the receiving processor node, sends the Mbuf data structure to the cluster interconnect (Step 152 ).
  • the cluster interconnect is a specialized communications path that is optimized for communications between processor nodes within a cluster.
  • the cluster interconnect operates in concert with separate “sender” and “recipient” applications running on the receiving and destination processor nodes, respectively.
  • the sender application is the RPC referred to above which implements a technique, referred to as “marshalling,” for transferring the Mbuf data structure to the recipient application.
  • Marshalling involves redirecting any pointers in the Mbuf structure so that they point to the new memory locations in the destination processor node (Step 154 ). Data structures that are sent from the sender application, via the cluster interconnect, are automatically identified by the recipient application as being tunneled.
  • the recipient application running on the destination processor node, bypasses that processor node's normal data packet handling application and stores the tunneled data structure in its Mbuf data structure (Step 156 ). Accordingly, the Mbuf data structure is queued for service by the destination processor node without the data packet being re-transmitted on the network.
  • Cluster alias tunneling relies on the ability of a processor node to issue a RPC.
  • the ability to issue RPC calls is generally available on all UNIX operating systems including the Digital Unix operating system.
  • the ability to define a custom data type for a data structure such as the Mbuf data structure, so that parameters of this structure type can be transparently passed as arguments to the Remote Procedure, is also a standard capability of all RPC implementations.
  • the advantage of Cluster alias tunneling relies on the RPC calls being issued over a high-speed communications interface (e.g. Gigabit Ethernet or ATM) that connects all members of the cluster. It is not critical what specific interface is employed, as long as the RPC mechanism uses it efficiently.
  • each processor node 10 a - 10 c may include more than one network interface module.
  • Each of those network interface modules 20 a - 20 e may be connected to physical networks referred to as “physical subnets.”
  • Subnets are a means provided by the IP networking architecture to provide a hierarchical approach to routing network packets. It is assumed that processor nodes using addresses in the same physical subnet can send each other data packets without requiring the services of an intervening router node, whereas processor nodes using addresses in different physical subnets must send each other data packets through one or more router nodes.
  • a physical subnet is an arrangement of adjacent processor node network layer addresses.
  • Such an arrangement of network layer addresses are differentiated by a network router through the use of a bitmask, referred to as a “subnet mask”.
  • the subnet mask is logically “ANDed” with the identified destination address, e.g. the cluster alias address.
  • the result of the masking operation is that the destination address is converted into a subnet address identifying the subnet to which the data packet should be directed.
  • Two network layers addresses are in the same subnet if the result of “ANDing” the addresses with their associated subnet mask results in the same subnet address. It is assumed that two nodes sharing the same subnet address can communicate directly without requiring the services of a network router. The whole network layer address is then used to discern the proper node within the subnet to which the data packet is directed.
  • Cluster 24 is shown to include a subnet S 3 that is not associated with a physical connection to the associated processor nodes. Such a subnet is referred to as a “virtual subnet” rather than a physical subnet. Although each processor node associated with a virtual subnet does not have a physical connection to that virtual subnet, they “advertise” the location of that virtual subnet to router 25 and to the routers included in network 23 . Each processor node 10 in the cluster 24 uses IP routing to advertise itself as a network route to the associated virtual subnet.
  • One or more cluster alias addresses may be “configured in” a virtual or physical subnet.
  • the subnet address is essentially the same as the cluster alias address, except for the least significant value. That least significant value is used to discriminate between different cluster alias addresses within the virtual subnet.
  • the disadvantage that arises with a cluster alias address in a physical subnet configuration is that nodes in the same physical subnet as the cluster alias know that they are directly connected. As such, those processor nodes use the ARP protocol directly to find the physical address of destination nodes within the cluster.
  • the ARP protocol specifies that only one node in a subnet can respond to an ARP request.
  • all traffic for the cluster alias address, originating from processor nodes within the physical subnet are initially delivered to one cluster node, i.e. the one that is dedicated for issuing ARP responses. That processor node essentially acts as a router for the cluster alias address and therefore may be overloaded by ARP requests.
  • a cluster alias address is configured in a virtual subnet, i.e. one to which no network layer addresses belong other than cluster alias addresses, then no client processor node will think it is in the same subnet as the cluster alias address. Therefore the ARP protocol will not be used to send packets to the cluster alias. Instead, normal IP routing methods will be used.
  • all nodes in the cluster run a standard IP routing protocol and advertise that they have a physical connection to the virtual subnet.
  • the processor nodes By advertising that they have a physical connection to the virtual subnet, the processor nodes ensure that any data packet that is directed to an address contained within the virtual subnet will be forwarded to one of the processor nodes of the cluster by the associated network routers. Accordingly, data packets that are addressed to a cluster alias address that is associated with a virtual subnet, arrive at one of the associated processor nodes because that processor has indicated that it has a physical connection to the virtual subnet. That processor node intercepts the data packets addressed to the virtual subnet and handles them locally.
  • FIG. 8 a flow diagram depicts the operation of virtual subnet addressing.
  • the routers that comprise network 23 have to know where to send a data packet that is addressed to any network layer address, including a cluster alias address associated with a virtual subnet S 3 . Therefore, a route to the virtual subnet address must be advertised by the associated processor nodes to the routers that comprise the associated network 23 (Step 160 ). Such route advertisement is achieved by using a common IP routing protocol such as RIP or OSPF.
  • RIP or OSPF OSPF
  • a router that has a physical connection to the cluster receives a data packet from the network, it applies a subnet mask to determine the subnet portion of the destination address (Step 164 ). Assuming that the data packet is destined for virtual subnet S 3 , the router will access its map database and determine that processor nodes 10 a - 10 c have advertised themselves as a network route to virtual subnet S 3 (Step 166 ).
  • the packet is passed to one of those processor nodes (Step 168 ).
  • the receiving processor node analyzes that data packet's header and transfers it to the appropriate processor node within the cluster using cluster alias tunneling, as previously described (Step 170 ).
  • the router may choose a different processor node within the cluster for each packet it is sending, according to whether it is using a routing routine to split data traffic across multiple equivalent paths to the same destination.
  • processor nodes within a cluster will not be overloaded, since the router protocols can spread the packets across all processor nodes within the cluster, rather than sending all packets addressed to a given cluster alias address through the same processor node in the cluster.
  • Network 22 includes network router devices that forward those data packets to their respective destination processor nodes.
  • Each network router maintains a map database that indicates available network paths over which data packets can be sent to reach particular processor nodes. Those network paths may include other routers and other clusters. That map database is maintained by a routing daemon process or “daemon” 21 that executes on each network router 25 .
  • the daemon processes 21 queries the processor nodes and network routers to which it is connected to find out which processor nodes and network routers they are connected to. Accordingly, the routing daemon 21 puts together a table of routes from the router to each processor node.
  • a routing daemon 21 that queries processing nodes 10 a - 10 c generates a map indicating that each of those processor nodes can be used as paths to subnet S 1 .
  • the network router 25 typically selects one to use as a preferred path to subnet S 1 .
  • processor node 10 a is the preferred path to subnet S 1 .
  • the network router will stop getting responses to its queries.
  • the routing daemon 21 will timeout while waiting for a response from processor node 10 a. Such a timeout is referred to as the “routing failover period”.
  • the routing daemon 21 thereafter replaces processor node 10 a as the preferred route to subnet S 1 with either processor 10 b or 10 c.
  • Such a timeout can take up to two minutes, during which time data packets are still sent to processor node 10 a by the network router 25 .
  • processor node 10 a Because processor node 10 a has crashed, those data packets will not be delivered and therefore will have to be re-transmitted by the client application. Such re-transmissions substantially impact system performance. Therefore the present invention avoids re-transmissions of data packets by allocating the address of the processor node that crashed, to a functioning processor node in the same cluster. In that manner, the otherwise undeliverable data packets are delivered to the functioning processor node such that they are able to be serviced.
  • each processor node within that cluster establishes a database containing the network layer addresses used by each of the processor nodes in that cluster (Step 180 ).
  • processor node 10 a would have a database that shows that processor node 10 b is using network layer addresses S1.B and S2.B and that processor node 10 c is using network layer addresses S1.C and S2.C.
  • those processor nodes are tightly coupled through the use of a cluster management application. That cluster management application sends a message to the other processor nodes within the cluster when one of those processor nodes crashes.
  • processor node 10 a crashes, the cluster management software sends messages to processor nodes 10 b and 10 c (Step 182 ).
  • Processor nodes 10 b and 10 c arbitrate among themselves to determine which one will acquire the network layer address of processor node 10 a (Step 184 ).
  • processor node 10 b wins the arbitration (Step 186 ). Therefore, processor node 10 b can assign address S1.A to its network interface along with network layer address S1.B (Step 188 ). Therefore, during the period of time that it takes for an associated network router to determine that processor node 10 a has crashed, data packets that are sent to processor node 10 a will be redirected to processor node 10 b (Step 190 ). Therefore, no retransmission of those data packets will need to be performed. After the routing failover period has expired, the routers will not send data packets to processor node 10 a and therefore processor node 10 b will de-assign network layer address S1.A from its network interface (Step 192 ).

Abstract

In accordance with the present invention, a method is disclosed for making a cluster of processor nodes appear as a single processor node to client applications that operate in conjunction with that cluster. More particularly, the cluster is provided with a skinny stack application for selecting a processor node, to which a connection will be established, after consideration has been given to the TCP port numbers that the processor node is listening for. Further, the cluster is provided with a method for tunneling data packets between processor nodes of the cluster such that the data packets do not have to be re-transmitted across a network. Further still, the cluster is provided with a virtual subnet to which the cluster alias address is associated. The route to that subnet is advertised to the network routers by the processor nodes that are associated with the virtual subnet. Lastly, the cluster is provided with a method for substituting a processor node of the cluster in place of a processor node that has failed, for the duration of the routing failover delay. Using such a method, data packets directed to the failed processor node are prevented from being dropped during that routing failover delay.

Description

    BACKGROUND OF THE INVENTION
  • Generally speaking, computer systems typically include one or more central processor nodes, referred to simply as “processor nodes” or “nodes”. Each of those processor nodes includes one or more network interface modules, connected to a computer network, for communicating with other processor nodes. Each network interface module has an associated network layer address or IP address to which packets of information are directed. The network layer address allows processor nodes to communicate with one another by sending those packets of information across the computer network. Each packet includes a header that contains the network layer addresses of the originating, or source, processor node and of the destination processor node. [0001]
  • Groups of processor nodes can be connected in an arrangement referred to as a “cluster”. Generally, processor nodes within a cluster are more tightly coupled than in a general network environment and act in concert with one another. For example, all of the processor nodes within a cluster can share a common file system such that they are able to access the same files. Also, each of the processor nodes within the cluster can use the same security domain files such that common user names and passwords may be utilized to log on to any of the processor nodes. [0002]
  • A cluster should appear as a single processor node to clients accessing that cluster. In other words, a cluster should present a common set of software services that can be executed by any of the associated processor nodes. Therefore, regardless of which processor node is accessed by a client, the same services will be provided. In such a manner, processor nodes can be seamlessly added to the cluster to increase the capacity of those services without the cluster looking any different to the client. [0003]
  • To make a cluster appear to be a single processor node, it should have a single network layer address. Such a network layer address is referred to as a “cluster alias address”. That cluster alias address should not be tied to one specific node within the cluster but rather should be collectively associated with all the processor nodes. To that end, the cluster's network layer address must be accessible regardless of what the current membership of the cluster is. The current membership of a cluster is defined by the nodes that are “up” and capable of running the software services required by any client accessing the cluster. Accordingly, a client accessing the cluster over a network does not need to know which nodes within the cluster are currently up and running in order to access the software services that the cluster provides. [0004]
  • While each of the nodes in a cluster having a cluster alias address typically provide the same services, some of those nodes may provide those services in a more efficient manner. For example, a node may include a hardware circuit for accelerating a particular operation which the other cluster nodes perform in software, or vice versa. Because prior art clusters simply distribute new connections amongst existing nodes, a client that gains access to the cluster in order to perform the above mentioned operation will be assigned a connection regardless of the capabilities of that chosen node. The operation will be performed, but the client will incur additional overhead if it is connected to one of the nodes that does not have the more efficient capabilities. Therefore, each processor node is associated with specific port numbers. The client application that issued the data packet is also associated up, or binds to, a “port number”. [0005]
  • A port number is essentially a queue into which data packets, that are sent to a processor node, are stored for servicing. Software programs, referred to as receiver applications or datalink applications, execute on the processor nodes of a cluster and monitor specific port numbers for data packets sent from clients via established connections. [0006]
  • Each processor node within the cluster has the ability to distribute received data packets to an appropriate processor node for servicing. The processor node receiving the data packet from the network will hereinafter be referred to as the “receiving processor node” for that transaction. When a data packet arrives at the cluster, the receiving processor node first determines the type of the data packet. For example, most data packets correspond to the TCP/IP or UDP network protocols. The receiving processor node further determines whether the data packet is associated with an existing connection to an application running on one of the processor nodes within the cluster or whether a new connection should be established. [0007]
  • When a receiving processor node receives a new data packet that is addressed to the cluster alias address, and which requests establishment of a new connection, the receiving processor node executes an application to select an available processor node in the cluster. That selection is typically performed without regard to the associated port number. If the receiver application for that processor node is not monitoring the associated port number, a connection cannot be established. In that situation, the connection attempt will timeout and the client will have to re-transmit another connection request. Such an occurrence increases the overhead of the connection operation by increasing the amount of time needed to establish a connection. Further, requiring the client to subsequently re-try a connection attempt destroys the image of the cluster as a single node because the re-transmission of the connection request is an attempt to connect to another processor node in the same cluster. [0008]
  • Further still, when the receiving processor node determines a processor node of the cluster to which a new connection should be established, it retransmits the data packet to the selected processor node over the network. In other words, the data packet's header is modified to reflect the network layer address of the selected destination processor node, and the data packet is re-broadcast on the network for delivery to that processor node. Such an operation significantly increases the overhead of the data transport operation, as well as the amount of time necessary to establish a connection. [0009]
  • Accordingly, improvements are needed in integrating a cluster of processor nodes, using a cluster alias address, such that the cluster appears as an individual processor node without incurring the detrimental overhead that is present in prior art systems. [0010]
  • SUMMARY OF THE INVENTION
  • The foregoing prior art problems are overcome by the present invention. In accordance with the present invention, a method is disclosed for making a cluster of processor nodes appear as a single processor node to client applications that operate in conjunction with that cluster. More particularly, the cluster is provided with a skinny stack application for selecting a processor node to which a connection will be established as a function of the TCP port numbers that the processor node is monitoring. Further, the cluster is provided with a method for tunneling data packets between processor nodes of the cluster such that they do not have to be re-transmitted across a network. Further still, the cluster is provided with a virtual subnetwork or “subnet” to which the cluster alias address can be associated. The route to that subnet being advertised to the network routers by the processor nodes that are associated with the virtual subnet. Lastly, the cluster is provided with a method for preventing retransmission of data packets addressed to a processor node that has failed. With such an approach, the address of the failed processor node is acquired by another processor node for the duration of the routing failover delay. Using such a method, data packets directed to the failed processor node will be serviced during that routing failover delay. [0011]
  • With such an approach, a cluster of processor nodes is made to appear as a highly available single processor node when accessed by client applications running on other clusters. [0012]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. The drawings are not meant to limit the invention to particular mechanisms for carrying out the invention in practice, but rather, are illustrative of certain ways of performing the invention. Other ways of performing the invention will be readily apparent to those skilled in the art. [0013]
  • FIG. 1 is a schematic drawing of a single processor node coupled to a network; [0014]
  • FIG. 2 is a schematic drawing depicting a number of processor nodes of FIG. 1 arranged in a cluster; [0015]
  • FIG. 3 is a block diagram of a TCP-IP packet header issued from the cluster depicted in FIG. 2. [0016]
  • FIG. 4 is a flow diagram of the present invention method for establishing a connection by a cluster such as the cluster depicted in FIG. 2; [0017]
  • FIGS. 5A and 5B are flow diagrams depicting the operation of the skinny stack application of the present invention, executing on a processor node of the cluster of FIG. 2; [0018]
  • FIG. 6 is a flow diagram depicting the tunneling of a data packet between processor nodes of the cluster depicted in FIG. 2, according to the present invention; [0019]
  • FIG. 7 is a schematic drawing depicting a number of processor nodes of the cluster of FIG. 2 arranged in a virtual subnet, according to the present invention; [0020]
  • FIG. 8 is a flow diagram depicting the use of virtual subnet addressing on the processor nodes of FIG. 2, according to the present invention; and [0021]
  • FIG. 9 is a flow diagram depicting the router address takeover operation of the present invention, running on the processor nodes of FIG. 7. [0022]
  • DETAILED DESCRIPTION OF THE INVENTION
  • I. Single Processor Node [0023]
  • Referring to the drawings, FIG. 1 is a block diagram of a [0024] single processor node 10. The processor node includes a central processing unit (CPU) 12 coupled to a cache memory 14, a main memory 16 and an I/O device driver 18. The processor node 10 is coupled to a computer network 22 via network interface module 20. The network interface module 20 has an associated network layer address to which packets of information, transferred on the computer network by other processor nodes, can be directed. The network layer address therefore allows remote processor nodes to communicate with one another through the passing of packets of information across the computer network 23. Each packet includes a header that contains the network layer addresses of the originating processor node and the network layer address of the destination processor node.
  • II. Clusters of Processor Nodes [0025]
  • Referring now to FIG. 2, a group of processor nodes are shown connected in an arrangement referred to as a “cluster” [0026] 24. A cluster 24 is a collection of processor nodes tightly coupled via a computer network and acting in concert with one another. Processor nodes 10 a-10 c are shown connected together via network interfaces 20 a-20 c and via the computer network 23. The indicated portion of computer network 23 is referred to as a subnet, and in this case “subnet S1” 22. Each of the processor nodes 10 a-10 c are referred to as Processor nodes A-C and, for illustration purposes, have thirty-two bit network layer (or IP) addresses S1.A, S1.B and S1.C, respectively. Further, a client processor node 26 is also shown connected to subnet 22 via a network 23 and a network router 25.
  • [0027] Cluster 24 is associated with a single network layer address such that it appears as a single processor node to a client 26 located outside the cluster, i.e. on the other side of network 23. That network layer address is associated with all the processor nodes 10 a-10 c in the cluster 24 and is referred to as a “cluster alias address”. Using the cluster alias address, data packets are directed to a specific cluster of processor nodes. However, the cluster alias address does not specify the processor node within the cluster to which the data packet should be directed. Therefore, in order to direct incoming data packets to the processor nodes 10 a-10 c that have established connections with associated source applications, each processor node 10 a-10 c has the ability to distribute those data packets within the cluster 24. The processor node and application receiving the data packets will hereinafter be referred to as the “receiving processor node” and “receiver application,” respectively.
  • III. Data Transfer via a Connection [0028]
  • Data packets that are transferred between processor nodes of different clusters are typically associated with a virtual circuit referred to as a connection. A connection is a construct that is established by both the source processor node and the destination processor node for exchanging data via data packets. More specifically, the connection is established by applications running on the source and destination processor nodes. When an application program running on the source processor node requires a service provided by another cluster, it sends a data packet to that cluster's alias address. Such data packets that arrive at [0029] cluster 24 include a TCP/IP header portion 30 which contains information regarding an associated connection to a processor node if such connection exists.
  • Referring now to FIG. 3, the configuration of the TCP/IP header information is depicted. In the [0030] first portion 32 of TCP/IP header 30, the aforementioned connection is identified by several fields, collectively referred to as the “five-tuple” 32. The source IP address field 34 identifies the thirty-two bit network layer address of the processor node or cluster, that sent the associated data packet to cluster 24. The destination IP address field 38 identifies the thirty-two bit network layer address of the destination processor node or cluster 24. The source port field 36 identifies the TCP port number for the application on the source processor node that sent the data packet. The port number identified by the source port field 36 is typically assigned only for as long as the connection exists. When the connection is closed, such as when an entire data file has been successfully transferred, the port number is deallocated. Likewise, the TCP port number used by the application running on the destination processor node is stored in the destination port field 40. Also, the protocol being used by the associated data packet is represented by an eight bit value that is stored in the “Protocol” field 42.
  • The TCP/[0031] IP header 30 further includes an incoming sequence number field 52 and an acknowledgment, or outgoing sequence number field 44, collectively referred to as the “sequence number fields.” The sequence number fields 52 and 44 are typically used to order data packets that are associated with a fragmented data transfer. In addition, the sequence number fields 52 and 44 are used to confirm that all such data packets successfully arrived at the destination processor node.
  • More specifically, data to be transferred from one processor node to another will be fragmented into many data packets that are independently transferred. Sequential numbers are stored in the [0032] sequence number fields 52 and 44 of each data packet header to indicate the relative position of that data packet within the transfer. Although some packets may arrive at the destination processor node out of order, the total number of data packets must arrive for a successful data transmission to occur. By monitoring the sequence numbers from the sequence number fields 52 and 44 of each data packet, a destination processor node can determine whether all the data has been transferred that was intended to be transferred.
  • The [0033] header 30 also includes a number of code bits, one of which is referred to as the “synchronize sequence numbers” or “SYN” bit 54. The source processor node sets the SYN bit 54 before it sends the initial data packet to the cluster alias address to request establishment of a new connection. Another code bit, referred to as the “acknowledgment valid” or “ACK” bit 56 is also included in the header. The operation of the SYN 54 and ACK 56 bits will be described in more detail below.
  • Referring now to FIG. 4, a flow diagram depicts the establishment of a new connection. When the receiver application running on a [0034] processor node 10 within the destination cluster 24 receives the data packet, it first determines whether the packet was sent to the cluster alias address. If not, the packet is handled normally. If the packet was sent to the cluster alias, the application executes a routine, referred to as the “skinny stack” routine, to perform cluster-alias specific checks on the packet (Step 59). The skinny stack application checks the value of the SYN bit 54 (Step 60). When the SYN bit 54 is set, the skinny stack application knows that a new connection needs to be established (Step 62). It executes a routine, referred to as the “round robin” routine, for choosing a processor node 10 within the cluster 24 that has the correct service application running for this connection request, and will be associated with the new connection (Step 64). That chosen processor node will hereinafter be referred to as the destination processor node.
  • Once the destination processor node is chosen, the data packet is transferred to it by the receiver application (Step [0035] 66) and is matched up with the correct service application. A receiver application running on the chosen destination processor node acknowledges the connection by copying the contents of the incoming data packet header into the header of an outgoing data packet. Additionally, the network layer address of the destination processor node is added to the header (Step 68). The receiver application does not change the value of the SYN bit 54, but rather sets the other code bit referred to as the “acknowledgment” or “ACK” bit 56. The ACK bit 56 is set to indicate to the source application that the destination processor node has received the data packet containing the asserted SYN bit 54 and that it is ready to establish a connection (Step 70). Subsequently, the outgoing data packet is transmitted to the source processor node. The source application replies to that data packet with a final data packet containing asserted SYN 54 and ACK 56 bits (Step 72). When the destination processor node receives that data packet, the connection is established (Step 74).
  • When the receiver application is started, it binds to a TCP port number identifying the service being offered. When the source application initiates the connection, it selects or “binds” a TCP port number to identify its half of the connection within the source processor node, and also specifies the destination port which identifies the service in the destination processor node to which it is trying to connect. This is the same port number to which the receiver application on the destination processor node has previously been bound. The TCP port numbers essentially designate queues into which arriving data packets are placed for service by an appropriate application running on the receiving processor node. [0036]
  • IV. Skinny Stack Application [0037]
  • In response to a request for establishment of a new connection, prior art systems arbitrarily select a destination processor node within the cluster to establish that connection. If the selected processor node is not monitoring or “listening on” the same TCP port as the client application, the connection will fail. The connection attempt will be repeatedly retried, in hopes of connecting to another processor node, until a “time-out period” expires. Such connection retries make the cluster appear not as a single node, but rather as a collection of nodes, only some of which are available for establishing connections. In one embodiment of the invention, the skinny stack application chooses destination processor nodes in a manner that reduces the likelihood that a connection attempt will need to be re-tried, thus making the cluster appearance more similar to a single processor node. [0038]
  • Consider a data packet that arrives at a [0039] processor node 10 b (for example) within cluster 24, the data packet identifying the cluster alias address as its destination IP address. A receiver application running on that processor node 10 b determines whether the data packet was sent to the cluster alias address. When the destination IP address is determined to be the cluster alias, the processor node 10 a executes the skinny stack. Next, the skinny stack application determines whether the data packet is associated with an existing connection or whether a new connection needs to be established. Upon determining that a new connection should be established, the skinny stack application determines a processor node 10 a or 10 c within the cluster 24 to which the data packet will be transferred for establishment of the connection.
  • The skinny stack application chooses a [0040] processor node 10 a or 10 c within the cluster 24 after considering whether that processor node 10 a, 10 c has a receiver application “listening” for data packets associated with the same destination TCP port number as the client application that sent the data packet. If the destination processor node is not listening on the same TCP port as the source application, it will not be selected to establish the connection, and another processor node in the cluster that is listening on this destination port number will be selected. To that end, a cluster wide registration, identifying the TCP port numbers that each processor node is listening on, is maintained.
  • When a receiver application, running on a processor node within the cluster, begins to listen on a TCP port, it issues a “listen” system call. The listen system call sends a message to the other nodes in the cluster to indicate that the associated processor node has begun listening on that port. Each processor node in the cluster stores the information contained in the message in a look up table. This look up table is accessed each time the skinny stack application is executed by any of the processor nodes in the cluster. [0041]
  • To further aid distribution of new connections by the skinny stack application, each processor node within the cluster associates a value, referred to as the “selection weight” value, with the cluster alias to which it belongs. The selection weight indicates a processor node's capacity for servicing new connections, in relation to the other processor nodes in the cluster. Accordingly, a database of those selection weights is maintained by each processor node within the cluster. When the skinny stack application is executed, it indexes that database using a combination of a processor node's alias address and Host ID. Each TCP port that a processor node is listening on will be associated with the same selection weight. It should be noted that in an alternative embodiment, the selection weight can be refined such that it is associated with a combination of a processor node's alias address, Host ID and a TCP port that it is listening on. In such a manner, each TCP port that a processor node is listening on can be associated with a different selection weight. [0042]
  • More specifically, the selection weights indicate the number of new connections that a processor node will be issued from the skinny stack application before a connection is issued to another processor node listening on the same TCP port. For example, consider that [0043] processor nodes 10 a and 10 b are each listening on TCP port number 6000 and have selection weights of 5 and 1, respectively. Therefore, five new connections will be issued to processor node 10 a for each new connection issued to processor node 10 b.
  • Referring now to FIGS. 5A and 5B, a flow diagram illustrates the operation of the skinny stack application in accordance with the foregoing features of the present invention. Consider a data packet that arrives at [0044] processor node 10 b (Step 102). The receiver application, execution processor node 10 b, looks at the destination IP address field 38 of the data packet header 30 to determine whether it was sent to processor node 10 b explicitly, or whether it was sent to the cluster alias address (Step 104). If the data packet was sent to processor node 10 b explicitly, it is handled by the normal IP stack application (Step 106). Alternatively, if the data packet was sent to the cluster alias address, it is evaluated by the skinny stack application executed on processor node 10 b (Step 108).
  • The skinny stack application first determines whether the data packet was sent using the TCP or UDP network protocols as indicated by [0045] protocol field 42 of the data packet header 30 (Step 110). Assuming that the data packet was sent using the TCP network protocol, the value of the SYN field of the data packet's header is used to determine whether the data packet is associated with an existing connection or is requesting the establishment of a new connection (Step 112). If the data packet is associated with an existing connection it will be transferred to the associated processor node for servicing (Step 114).
  • Alternatively, if the data packet requests the establishment of a new connection, a round robin routine is initiated by the skinny stack application for distributing new connections to processor nodes within the cluster (Step [0046] 116). The round robin routine maintains a sequential list of processor nodes that are candidates for receiving connections to incoming data packets to the cluster. Each time that the skinny stack application is executed, it accesses a software pointer that points to the last processor node that received a connection, i.e. during the previous execution of the routine. That processor node will be the first candidate for receiving the new connection. Also, that software pointer is stored to indicate the starting point for the present execution of the routine (Step 118).
  • Subsequently, a determination is made as to whether the candidate processor node is associated with the cluster alias address to which the data packet was directed (Step [0047] 120). If the candidate processor node is not associated with that cluster alias address, the round robin routine increments the software pointer and considers the next processor node in the sequential list (Step 122). After the software pointer is incremented, the round robin routine determines whether it is pointing to the starting point noted above (Step 124). If the software pointer is pointing to the same location in the sequential list as it was when the round robin routine was initiated, none of the processor nodes within the cluster are associated with the cluster alias address to which the data packet is directed. Therefore the data packet will not be serviced by the cluster and the round robin routine is terminated (Step 126).
  • If the candidate processor node is associated with the cluster alias address to which the data packet was sent, the routine accesses the above mentioned cluster-wide registration to determine whether it is listening on the TCP port number identified by the data packet (Step [0048] 128). If that processor node is not listening on the TCP port number, the software pointer is incremented and another processor node is considered for the connection (Step 122). If the processor node is listening on the TCP port number, it is eligible to receive the new connection (Step 130). A counter, that was initialized to a value equal to the selection weight for the candidate processor node, is responsively decremented (Step 132). If the resulting value of the counter is not zero (Step 134), the data packet is forwarded to the selected processor node (Step 136) using a procedure referred to as “tunneling,” as will be described below.
  • A further enhancement to the distribution of new connections by the skinny stack application in the present invention, is the issuance of a “selection priority” to each processor node within the cluster. The selection priority indicates that the skinny stack application will distribute new connections among processor nodes having the highest selection priority. More than one processor node can share the highest selection priority. The round-robin routine will only select a destination processor node from among those active nodes listening on the destination port that share the highest selection priority. If all nodes at the highest selection priority are not functioning or are “down”, the round robin routine will select a destination processor node from those nodes sharing the next highest selection priority, and so forth. Once one or more processor nodes with a higher selection priority come back “up”, the round robin routine will once again select from them, to the exclusion of any nodes with lower selection priority. Because the processor nodes that are most efficient for the services required are given the highest priority, data packets will only occasionally be serviced by less efficient processor nodes. [0049]
  • V. Cluster Alias Tunneling [0050]
  • When a TCP/IP data packet arrives at a processor node within [0051] cluster 24, it is stored by the receiver application in a data structure such that it is queued for service by that processor node. When the receiving processor node is running the Digital UNIX operating system, the data packet is reconfigured by the receiver application and stored in a linked-list data structure referred to as an “Mbuf chain.” Because the elements of the data structure are linked, they operate as an input queue for sequentially delivering the received data packets to higher layers of network applications. When a data packet is delivered to the receiver application, a determination is made as to whether an existing connection is associated with the client application that sent the data packet or if a new connection should be generated. That determination is performed by checking the value of the SYN bit 54 of the data packet's header 30. If the SYN bit 54 is set to a logical one, it indicates that the data packet is requesting the establishment of a new connection, as previously described.
  • When a new connection is generated, the receiving processor node executes the skinny stack routine to choose a [0052] destination processor node 10 within the cluster 24 that will receive the new connection as described above. Once that destination processor node 10 is chosen, a transfer operation is performed to convey the data packet to that processor node 10. Likewise when the receiver application determines that an existing connection is associated with the received data packet, the same transfer operation is performed to redirect the data packet to the destination processor node.
  • Typically, receiver applications of prior art systems perform that transfer operation by modifying the destination field of the TCP/IP header to indicate the network layer address for the chosen processor node. Thereafter, the data packet is sent to the network interface device and re-transmitted over the network using the normal network routing methodology. When the data packet is prepared for re-transmission, the operations performed to configure the Mbuf chain data structure must be undone. Also, when the data packet reaches the chosen processor node, the receiver application has to reconfigure the Mbuf chain data structure. Accordingly, such modification and retransmission of the data packet adds overhead processing time. The present invention significantly reduces such overhead processing. [0053]
  • Generally, the present invention takes advantage of the fact that when the data packet is stored in the Mbuf chain data structure of the receiving processor node, it is in the same configuration that the chosen processor node requires. Therefore, that Mbuf chain data structure is sent across a cluster interconnect (a specialized communications path that is optimized for communications between processor nodes within a cluster) in such a way that it is directly stored in the Mbuf chain for the chosen processor node. That operation, referred to as “tunneling”or “cluster alias tunneling,” avoids a significant portion of the overhead of re-transmitting the data packet. [0054]
  • Referring now to FIG. 6, a flow diagram depicts the cluster alias tunneling operation. For illustration purposes, consider a TCP/IP data packet that arrives at a [0055] processor node 10 b within the cluster 24 (Step 140). The receiver application running on processor node 10 b removes the header and data portions of the data packet and configures them in a manner specified by the Mbuf chain data structure (Step 142). Thereafter, the reconfigured data packet is stored in the Mbuf chain and queued for service by the higher level network applications (Step 144).
  • The receiver application determines whether the data packet is associated with an existing connection or whether a new connection needs to be established (Step [0056] 146) as discussed above in FIG. 4. If a new connection is to be established, the destination processor node is determined by executing the skinny stack application in the manner previously described (Step 148). If the data packet is associated with an existing connection, the destination processor node is established by reference to a cluster-wide connection registration database.
  • Next, the Mbuf data structure that stores the data packet is provided to a Remote Procedure Call (RPC) (Step [0057] 150). The RPC is issued and transfers the Mbuf data structure across the cluster interconnect to the destination processor node. Such a transfer takes advantage of the fact that each Mbuf data structure of each processor node within the cluster uses the same configuration. Therefore, when the receiving processor node configures the Mbuf data structure, it is in a form that is utilizable by any processor node within the cluster. By transferring the Mbuf data structure to the destination processor node using the tunneling operation, the overhead of re-transmitting that structure on the network is not incurred. That is because the overhead needed to transform the Mbuf data structure back into data packets, to transfer them across the network, and then reconstruct a new Mbuf data structure at the destination node is replaced by the overhead needed to tunnel the Mbuf data structure across the cluster interconnect.
  • The operation of transferring the Mbuf data structure to the destination processor node is initiated when a dedicated application (RPC), running on the receiving processor node, sends the Mbuf data structure to the cluster interconnect (Step [0058] 152). The cluster interconnect is a specialized communications path that is optimized for communications between processor nodes within a cluster. The cluster interconnect operates in concert with separate “sender” and “recipient” applications running on the receiving and destination processor nodes, respectively. The sender application is the RPC referred to above which implements a technique, referred to as “marshalling,” for transferring the Mbuf data structure to the recipient application. Marshalling involves redirecting any pointers in the Mbuf structure so that they point to the new memory locations in the destination processor node (Step 154). Data structures that are sent from the sender application, via the cluster interconnect, are automatically identified by the recipient application as being tunneled.
  • The recipient application, running on the destination processor node, bypasses that processor node's normal data packet handling application and stores the tunneled data structure in its Mbuf data structure (Step [0059] 156). Accordingly, the Mbuf data structure is queued for service by the destination processor node without the data packet being re-transmitted on the network.
  • Cluster alias tunneling relies on the ability of a processor node to issue a RPC. The ability to issue RPC calls is generally available on all UNIX operating systems including the Digital Unix operating system. The ability to define a custom data type for a data structure such as the Mbuf data structure, so that parameters of this structure type can be transparently passed as arguments to the Remote Procedure, is also a standard capability of all RPC implementations. The advantage of Cluster alias tunneling relies on the RPC calls being issued over a high-speed communications interface (e.g. Gigabit Ethernet or ATM) that connects all members of the cluster. It is not critical what specific interface is employed, as long as the RPC mechanism uses it efficiently. [0060]
  • VI. Virtual Subnet Addressing [0061]
  • Referring now to FIG. 7, each [0062] processor node 10 a-10 c may include more than one network interface module. Each of those network interface modules 20 a-20 e may be connected to physical networks referred to as “physical subnets.” Subnets are a means provided by the IP networking architecture to provide a hierarchical approach to routing network packets. It is assumed that processor nodes using addresses in the same physical subnet can send each other data packets without requiring the services of an intervening router node, whereas processor nodes using addresses in different physical subnets must send each other data packets through one or more router nodes.
  • More specifically, a physical subnet is an arrangement of adjacent processor node network layer addresses. Such an arrangement of network layer addresses are differentiated by a network router through the use of a bitmask, referred to as a “subnet mask”. The subnet mask is logically “ANDed” with the identified destination address, e.g. the cluster alias address. The result of the masking operation is that the destination address is converted into a subnet address identifying the subnet to which the data packet should be directed. Two network layers addresses are in the same subnet if the result of “ANDing” the addresses with their associated subnet mask results in the same subnet address. It is assumed that two nodes sharing the same subnet address can communicate directly without requiring the services of a network router. The whole network layer address is then used to discern the proper node within the subnet to which the data packet is directed. [0063]
  • [0064] Cluster 24 is shown to include a subnet S3 that is not associated with a physical connection to the associated processor nodes. Such a subnet is referred to as a “virtual subnet” rather than a physical subnet. Although each processor node associated with a virtual subnet does not have a physical connection to that virtual subnet, they “advertise” the location of that virtual subnet to router 25 and to the routers included in network 23. Each processor node 10 in the cluster 24 uses IP routing to advertise itself as a network route to the associated virtual subnet.
  • One or more cluster alias addresses may be “configured in” a virtual or physical subnet. In other words, the subnet address is essentially the same as the cluster alias address, except for the least significant value. That least significant value is used to discriminate between different cluster alias addresses within the virtual subnet. [0065]
  • The disadvantage that arises with a cluster alias address in a physical subnet configuration is that nodes in the same physical subnet as the cluster alias know that they are directly connected. As such, those processor nodes use the ARP protocol directly to find the physical address of destination nodes within the cluster. The ARP protocol specifies that only one node in a subnet can respond to an ARP request. As a result, all traffic for the cluster alias address, originating from processor nodes within the physical subnet, are initially delivered to one cluster node, i.e. the one that is dedicated for issuing ARP responses. That processor node essentially acts as a router for the cluster alias address and therefore may be overloaded by ARP requests. [0066]
  • Alternatively, if a cluster alias address is configured in a virtual subnet, i.e. one to which no network layer addresses belong other than cluster alias addresses, then no client processor node will think it is in the same subnet as the cluster alias address. Therefore the ARP protocol will not be used to send packets to the cluster alias. Instead, normal IP routing methods will be used. [0067]
  • More specifically, to implement a virtual subnet design, all nodes in the cluster run a standard IP routing protocol and advertise that they have a physical connection to the virtual subnet. By advertising that they have a physical connection to the virtual subnet, the processor nodes ensure that any data packet that is directed to an address contained within the virtual subnet will be forwarded to one of the processor nodes of the cluster by the associated network routers. Accordingly, data packets that are addressed to a cluster alias address that is associated with a virtual subnet, arrive at one of the associated processor nodes because that processor has indicated that it has a physical connection to the virtual subnet. That processor node intercepts the data packets addressed to the virtual subnet and handles them locally. [0068]
  • Referring now to FIG. 8, a flow diagram depicts the operation of virtual subnet addressing. The routers that comprise network [0069] 23 (FIG. 7) have to know where to send a data packet that is addressed to any network layer address, including a cluster alias address associated with a virtual subnet S3. Therefore, a route to the virtual subnet address must be advertised by the associated processor nodes to the routers that comprise the associated network 23 (Step 160). Such route advertisement is achieved by using a common IP routing protocol such as RIP or OSPF. Through the advertising of virtual subnet routes, all the routers in the network develop a map database that indicates which processor nodes should receive data packets that are directed to particular virtual subnet addresses (Step 162). Therefore, when a router that has a physical connection to the cluster receives a data packet from the network, it applies a subnet mask to determine the subnet portion of the destination address (Step 164). Assuming that the data packet is destined for virtual subnet S3, the router will access its map database and determine that processor nodes 10 a-10 c have advertised themselves as a network route to virtual subnet S3 (Step 166).
  • Thereafter, the packet is passed to one of those processor nodes (Step [0070] 168). The receiving processor node analyzes that data packet's header and transfers it to the appropriate processor node within the cluster using cluster alias tunneling, as previously described (Step 170). The router may choose a different processor node within the cluster for each packet it is sending, according to whether it is using a routing routine to split data traffic across multiple equivalent paths to the same destination.
  • Accordingly, through the use of virtual subnet addressing, processor nodes within a cluster will not be overloaded, since the router protocols can spread the packets across all processor nodes within the cluster, rather than sending all packets addressed to a given cluster alias address through the same processor node in the cluster. [0071]
  • VIII. Router Address Takeover [0072]
  • As previously stated, clusters communicate with each other by sending data packets across [0073] network 22. Network 22 includes network router devices that forward those data packets to their respective destination processor nodes. Each network router maintains a map database that indicates available network paths over which data packets can be sent to reach particular processor nodes. Those network paths may include other routers and other clusters. That map database is maintained by a routing daemon process or “daemon” 21 that executes on each network router 25. The daemon processes 21 queries the processor nodes and network routers to which it is connected to find out which processor nodes and network routers they are connected to. Accordingly, the routing daemon 21 puts together a table of routes from the router to each processor node.
  • Refer again to the [0074] processor nodes 10 a-10 c of FIG. 7 that are associated with subnet S1. A routing daemon 21 that queries processing nodes 10 a-10 c generates a map indicating that each of those processor nodes can be used as paths to subnet S1. Of the three processor nodes 10 a-10 c, the network router 25 typically selects one to use as a preferred path to subnet S1.
  • For illustration purposes consider that [0075] processor node 10 a is the preferred path to subnet S1. When processor node 10 a crashes, the network router will stop getting responses to its queries. After a predetermined period of time has expired, the routing daemon 21 will timeout while waiting for a response from processor node 10 a. Such a timeout is referred to as the “routing failover period”. The routing daemon 21 thereafter replaces processor node 10 a as the preferred route to subnet S1 with either processor 10 b or 10 c. Such a timeout can take up to two minutes, during which time data packets are still sent to processor node 10 a by the network router 25. Because processor node 10 a has crashed, those data packets will not be delivered and therefore will have to be re-transmitted by the client application. Such re-transmissions substantially impact system performance. Therefore the present invention avoids re-transmissions of data packets by allocating the address of the processor node that crashed, to a functioning processor node in the same cluster. In that manner, the otherwise undeliverable data packets are delivered to the functioning processor node such that they are able to be serviced.
  • Referring now to the flow diagram of FIG. 9, the operation of the router address takeover method is shown. When a cluster is configured, each processor node within that cluster establishes a database containing the network layer addresses used by each of the processor nodes in that cluster (Step [0076] 180). For example, processor node 10 a would have a database that shows that processor node 10 b is using network layer addresses S1.B and S2.B and that processor node 10 c is using network layer addresses S1.C and S2.C. Also, as previously stated, those processor nodes are tightly coupled through the use of a cluster management application. That cluster management application sends a message to the other processor nodes within the cluster when one of those processor nodes crashes. Accordingly, if processor node 10 a crashes, the cluster management software sends messages to processor nodes 10 b and 10 c (Step 182). Processor nodes 10 b and 10 c arbitrate among themselves to determine which one will acquire the network layer address of processor node 10 a (Step 184).
  • For illustration purposes, consider that [0077] processor node 10 b wins the arbitration (Step 186). Therefore, processor node 10 b can assign address S1.A to its network interface along with network layer address S1.B (Step 188). Therefore, during the period of time that it takes for an associated network router to determine that processor node 10 a has crashed, data packets that are sent to processor node 10 a will be redirected to processor node 10 b (Step 190). Therefore, no retransmission of those data packets will need to be performed. After the routing failover period has expired, the routers will not send data packets to processor node 10 a and therefore processor node 10 b will de-assign network layer address S1.A from its network interface (Step 192).
  • With such a method, data packets that are sent to a non-functioning processor node during its routing failover period, will be handled by another processor node in the same cluster and will not need to be re-transmitted. [0078]
  • While this invention has been particularly shown and described with references to preferred embodiments thereof, it will be understood by those skilled in the art that various form changes and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. [0079]

Claims (47)

What is claimed is:
1. A method for selecting a processor node of a cluster of processor nodes such that a client application can establish a connection to the cluster, said method comprising the steps of:
issuing a request, by the client application, for requesting an establishment of a connection to the cluster;
identifying port numbers with which the client application is associated; and
selecting a processor node from the cluster of processor nodes as a function of the identified port numbers with which the client is associated.
2. The method for selecting a processor node of the cluster of processor nodes, as described in claim 1, further including the steps of:
using a receiving processor node of the cluster, for receiving the request issued by the client application, said request identifying at least one of the port numbers associated with the client application;
determining, by the receiving processor node, that the request is requesting the establishment of a connection between the client application and a first application running on the cluster;
choosing the processor node from a group of candidate processor nodes within the cluster, the processor node executing a receiver application that is monitoring the at least one port number associated with the client application; and
establishing the connection between the first application and the client application.
3. The method for selecting a processor node of the cluster of processor nodes, as described in claim 2, wherein the choosing step includes the steps of:
accessing a list of candidate processor nodes that are associated with a cluster alias address of the cluster by the receiving processor node;
determining whether a candidate processor node in the list has a receiver application that is monitoring the at least one port number associated with the client application; and
deciding, in response to a determination that a candidate processor node in the list has a receiver application that is monitoring the at least one port number associated with the client application, whether a maximum number of connections have previously been established by that candidate processor node.
4. The method for selecting a processor node of the cluster of processor nodes, as described in claim 3, wherein said deciding step further includes the steps of:
decrementing a counter by a predetermined value, the counter being initialized to a value that is representative of the capacity of the candidate for establishing new connections;
determining if the counter has reached a count of zero;
selecting another candidate processor node in response to a determination that the counter has reached a count of zero; and
transferring the request to the candidate processor node in response to a determination that the counter has not reached a count other than zero, such that the connection can be established.
5. The method for selecting a processor node of the cluster of processor nodes, as described in claim 4, wherein the request issued by the client application is a specially configured data packet transferred across an IP network coupled to the cluster of processor nodes.
6. The method for selecting a processor node of the first cluster of processor nodes, as described in claim 5, wherein the request issued by the client application is a TCP/IP configured data packet having a header that includes a SYN bit that is set to indicate that the client application is requesting establishment of the connection to the cluster.
7. The method for selecting a processor node of the cluster of processor nodes, as described in claim 6, wherein the header includes a field that identifies at least one port number with which the client application is associated.
8. In a computer network having a plurality of network routers and a plurality of processor nodes, including associated processor nodes, a method for arranging a plurality of associated processor nodes in a virtual subnet, comprising the steps of:
advertising on the computer network, by each of the plurality of associated processor nodes, that the plurality of associated processor nodes comprise a network path to the virtual subnet, the plurality of associated processor nodes being free of physical connections to the virtual subnet;
determining, by the plurality of network routers, a routing path to the virtual subnet, the routing path including the plurality of associated processor nodes; and
delivering data packets that include a destination address associated with the virtual subnet, to one of the associated processor nodes via one of the network routers that has a physical connection to the associated processor node.
9. The method for arranging a plurality of associated processor nodes in a virtual subnet, as described in claim 8, wherein said network router splits the delivery of the plurality of data packets equally among the plurality of associated processor nodes.
10. The method for arranging a plurality of associated processor nodes in a virtual subnet, as described in claim 9, wherein each of the plurality of associated processor nodes is running the Digital UNIX operating system.
11. The method for arranging a plurality of associated processor nodes in a virtual subnet, as described in claim 8, wherein each of the plurality of associated processor nodes use the OSPF IP routing protocol to advertise the network path to the virtual subnet.
12. The method for arranging a plurality of associated processor nodes in a virtual subnet, as described in claim 8, wherein each of the plurality of associated processor nodes use the RIP IP routing protocol to advertise the network path to the virtual subnet.
13. A method for preventing retransmission of data packets issued to a first processor node that has stopped functioning, comprising the steps of:
identifying that the first processor node has stopped functioning; and
assigning an address, associated with the first processor node, to a second processor node in response to said identification that the first processor node has stopped functioning, such that data packets addressed to the first processor node will be redirected to the second processor node.
14. The method for preventing retransmission of data packets issued to a first processor node that has stopped functioning as described in claim 13, further including the steps of:
in response to said identifying step identifying that the first processor node has stopped functioning, issuing a message, from a cluster management application associated with a cluster to which the first processor node belongs, to a plurality of other processor nodes within that cluster; and
arbitrating, by the plurality of other processor nodes of the cluster, to determine said second processor node that will receive the data packets issued to the first processor node.
15. The method for preventing retransmission of data packets issued to a first processor node that has stopped functioning, as described in claim 14, further including the step of:
assigning, by the second processor node, a network layer address associated with the first processor node to the second processor node such that the data packets issued to the first processor node will be received by the second processor node.
16. The method for preventing retransmission of data packets issued to a first processor node that has stopped functioning, as described in claim 15, further including the step of:
de-assigning, by the second processor node, the network layer address associated with the first processor node after a predetermined amount of time has expired.
17. The method for preventing retransmission of data packets issued to a first processor node that has stopped functioning, as described in claim 16, wherein the predetermined period of time is:
a period of time for a network router, coupled to the first and second processor nodes, to identify that the first processor node has stopped functioning.
18. The method for preventing retransmission of data packets issued to a first processor node that has stopped functioning, as described in claim 17, wherein the network router is prevented from sending any data packets to the first processor node after the predetermined period of time has expired.
19. The method for preventing retransmission of data packets issued to a first processor node that has stopped functioning, as described in claim 18, wherein the first and second processor nodes are executing the Digital UNIX operating system.
20. A method for delivering a received data packet from a receiving processor node to a destination processor node, including the steps of:
configuring, by the receiving processor node, the received data packet in a predetermined configuration to form a configured data packet, said configuration being used by an application executing on the receiving processor node;
passing the configured data packet to a remote procedure, said remote procedure for passing data across a high speed communications interface between processor nodes of a cluster; and
issuing said remote procedure such that the configured data packet is delivered to the destination processor node in a manner free of being reconfigured.
21. The method of claim 20 wherein the configured data packet is stored in an Mbuf data structure, said Mbuf data structure being a queue for providing received data packets to said application enabling said data packets to be serviced by said application.
22. The method of claim 21 wherein said high speed communications interface is a Gigabit Ethernet interface.
23. The method of claim 21 wherein said high speed communications interface is an ATM interface.
24. The method of claim 21 wherein each of the processor nodes of the cluster is running the Digital UNIX operating system.
25. A computer system, comprising:
a client processor node executing a client application, the client application monitoring a certain port number;
a plurality of processor nodes coupled together to form a cluster, the cluster being responsive to the client processor node, each processor node of the cluster including a CPU for executing an application for selecting one node from the plurality of processor nodes, such that the selected node serves as a destination processor node; and
a receiver application executed on the destination processor node for monitoring the port number that the client application monitors.
26. A computer system as claimed in claim 25 wherein the executed application for selecting the destination processor node is a skinny stack application; and
the plurality of processor nodes further includes a plurality of memory systems, one for each node in the plurality of processor nodes, each memory system storing the skinny stack application of a respective processor node.
27. The computer system described in claim 26, further including:
a computer network for coupling the client processor node to the plurality of processor nodes such that the receiver application establishes a connection to the client application across the computer network.
28. The computer system described in claim 27, further including a database that is accessible by each of the plurality of processor nodes, the database indicating a plurality of port numbers that are being monitored by each of the plurality of processor nodes.
29. The computer system described in claim 28 wherein the skinny stack application accesses the database to determine the port number monitored by the receiver application of the destination processor node.
30. The computer system described in claim 29, further including:
a plurality of software counters, each associated with a different one of the plurality of processor nodes, each time that a connection is established by a receiver application executing on a processor node, the software counter associated with the processor node being decremented by a predetermined value.
31. The computer system described in claim 30 wherein the plurality of software counters are initialized to individual selection weight values that are indicative of the associated processor node's capacity for establishing connections.
32. The computer system described in claim 31 wherein decrementing of the software counter associated with the destination processor node results in a non-zero count value, indicates that the destination processor node has capacity to establish another connection.
33. The computer system described in claim 32 wherein each of the plurality of processor nodes is running The Digital Unix operating system.
34. A computer system, comprising:
a plurality of processor nodes, associated with a virtual subnet, each of the processor nodes advertising themselves as a network route to the virtual subnet, each of the plurality of processor nodes having a virtual connection to the virtual subnet;
a plurality of network routers, comprising a network coupled to each of the plurality of processor nodes, each of the network routers developing a map database indicating a network route to the virtual subnet based upon the processor nodes advertising; and
a plurality of CPUs, a different one included in each node of the plurality of processor nodes, for executing an application that effectuates the advertising by the processor nodes as network routes to the virtual subnet.
35. The computer system described in claim 34, further comprising:
a client processor node, for executing a client application that issues a data pocket to an address of a processor node within the virtual subnet; and
one network router, of the plurality of network routers, having a physical connection to at least one processor node of the plurality of processor nodes associated with the virtual subnet, the one network router imposing a bit mask on network addresses to form respective subnet addresses.
36. The computer system described in claim 35 wherein each of the plurality of processor nodes is running The Digital Unix operating system.
37. The computer system described in claim 36 wherein the application that effectuates the advertising by the processor nodes as network routes to the virtual subnet implements the OSPF IP routing protocol.
38. The computer system described in claim 36 wherein the application that effectuates the advertising by the processor nodes as network routes to the virtual subnet implements the RIP IP routing protocol.
39. A computer system, comprising:
a plurality of processor nodes, each including a network interface module for connecting to a computer network, the processor nodes being coupled together to form a cluster;
a first one of the processor nodes executing a cluster management application for monitoring the processor nodes to determine ones of the processor nodes that are non-functioning and for identifying the non-functioning processor nodes to the other processor nodes; and
a second one of the processor nodes allocating an address, associated with at least one of the non-functioning processor nodes, to the associated network interface module.
40. The computer system described in claim 39, further comprising:
at least one network router, coupling the processor nodes to the computer network, each network router continuing to query the non-functioning processor nodes for a predetermined period of time, the predetermined period of time being a routing failover delay.
41. The computer system described in claim 40, wherein the second one of the processor nodes de-allocates the address from the associated network interface module after the routing failover delay has expired.
42. The computer system described in claim 41, wherein each of the processor nodes is running The Digital Unix operating system.
43. A computer system, comprising:
a plurality of processor nodes, forming a cluster, each of the processor nodes coupled to a computer network;
a first one of the processor nodes executing a first receiver application for receiving data packets issued across the computer network by a client application and for configuring a received data packet in a first configuration such that the data packet is serviceable by a first high level application running on the first one of the processor nodes;
a second one of the processor nodes servicing data packets, the second one of the processor nodes executing a second receiver application; and
a high speed communications interface for passing packets of information between the plurality of processor nodes forming the cluster, the high speed communications interface receiving the first configuration of the data packet from the first one of the processor nodes and delivering it to the second one of the plurality of processor nodes without changing the configuration, such that the data packet is serviced by a high level application running on the second one of the processor nodes.
44. The computer system described in claim 43, further comprises first Mbuf data structure for storing the first configuration of the received data packet, said first Mbuf data structure being a queue for providing the received data packet to the first high level application.
45. The computer system described in claim 44, wherein the high speed communications interface is a Gigabit Ethernet interface.
46. The computer system described in claim 44, wherein the high speed communications interface is an ATM interface.
47. The computer system described in claim 44, wherein each processor node of the plurality of processor nodes is running the Digital Unix operating system.
US10/677,584 1998-12-31 2003-10-02 Method and apparatus for providing an integrated cluster alias address Abandoned US20040073683A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/677,584 US20040073683A1 (en) 1998-12-31 2003-10-02 Method and apparatus for providing an integrated cluster alias address

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/224,372 US6665304B2 (en) 1998-12-31 1998-12-31 Method and apparatus for providing an integrated cluster alias address
US10/677,584 US20040073683A1 (en) 1998-12-31 2003-10-02 Method and apparatus for providing an integrated cluster alias address

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/224,372 Division US6665304B2 (en) 1998-12-31 1998-12-31 Method and apparatus for providing an integrated cluster alias address

Publications (1)

Publication Number Publication Date
US20040073683A1 true US20040073683A1 (en) 2004-04-15

Family

ID=22840393

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/224,372 Expired - Fee Related US6665304B2 (en) 1998-12-31 1998-12-31 Method and apparatus for providing an integrated cluster alias address
US10/677,584 Abandoned US20040073683A1 (en) 1998-12-31 2003-10-02 Method and apparatus for providing an integrated cluster alias address

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/224,372 Expired - Fee Related US6665304B2 (en) 1998-12-31 1998-12-31 Method and apparatus for providing an integrated cluster alias address

Country Status (1)

Country Link
US (2) US6665304B2 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030013477A1 (en) * 2001-07-12 2003-01-16 Mcalinden Paul Controlling dual processors in cellular telephones
US20040002362A1 (en) * 2002-06-28 2004-01-01 Chuah Mooi Choo Backhaul multicasting using Ethernet-based Radio Access Networks
US20060248102A1 (en) * 2005-05-02 2006-11-02 Michael Bowler Adaptive pre-fragmentation and pre-segmentation system and method
US20070140111A1 (en) * 2005-12-21 2007-06-21 Cisco Technology, Inc. Method and system for preventing data packet loss in a redundant PDSN environment
US20090313306A1 (en) * 2005-12-08 2009-12-17 Electroncis And Telecommunications Research Institute Method of Effectively Managing Database System for Mobile Number Portability
US7957377B1 (en) * 2004-07-30 2011-06-07 Cisco Technology, Inc. Reducing and load balancing link-state requests in OSPF
US20130031509A1 (en) * 2011-07-28 2013-01-31 Curtis Matthew C Displaying Physical Signal Routing in a Diagram of a System
US8566471B1 (en) * 2006-01-09 2013-10-22 Avaya Inc. Method of providing network link bonding and management

Families Citing this family (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1042435B1 (en) * 1997-12-19 2002-07-24 Unilever N.V. Olive oil containing food composition
US7774469B2 (en) 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
US6401120B1 (en) 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
US6618377B1 (en) * 1999-03-30 2003-09-09 Cisco Technology, Inc. Flexible scheduling of network devices within redundant aggregate configurations
US6751191B1 (en) 1999-06-29 2004-06-15 Cisco Technology, Inc. Load sharing and redundancy scheme
US7844687B1 (en) * 1999-10-06 2010-11-30 Gelvin David C Method for internetworked hybrid wireless integrated network sensors (WINS)
US7349979B1 (en) * 1999-12-02 2008-03-25 Cisco Technology, Inc. Method and apparatus for redirecting network traffic
US6662219B1 (en) * 1999-12-15 2003-12-09 Microsoft Corporation System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource
US6598088B1 (en) * 1999-12-30 2003-07-22 Nortel Networks Corporation Port switch
US7058007B1 (en) 2000-01-18 2006-06-06 Cisco Technology, Inc. Method for a cable modem to rapidly switch to a backup CMTS
US6839829B1 (en) 2000-01-18 2005-01-04 Cisco Technology, Inc. Routing protocol based redundancy design for shared-access networks
US7028333B2 (en) * 2000-04-12 2006-04-11 Corente, Inc. Methods and systems for partners in virtual networks
US7181766B2 (en) 2000-04-12 2007-02-20 Corente, Inc. Methods and system for providing network services using at least one processor interfacing a base network
US7181542B2 (en) * 2000-04-12 2007-02-20 Corente, Inc. Method and system for managing and configuring virtual private networks
US6996628B2 (en) * 2000-04-12 2006-02-07 Corente, Inc. Methods and systems for managing virtual addresses for virtual networks
US7047424B2 (en) * 2000-04-12 2006-05-16 Corente, Inc. Methods and systems for hairpins in virtual networks
US7085854B2 (en) * 2000-04-12 2006-08-01 Corente, Inc. Methods and systems for enabling communication between a processor and a network operations center
FR2811844B1 (en) * 2000-07-13 2002-11-29 Schneider Automation S A AUTOMATED INTERNAL BUS SUPPORTING THE TCP / IP PROTOCOL
US7546369B2 (en) 2000-12-21 2009-06-09 Berg Mitchell T Method and system for communicating a request packet in response to a state
US7512686B2 (en) 2000-12-21 2009-03-31 Berg Mitchell T Method and system for establishing a data structure of a connection with a client
US7421505B2 (en) 2000-12-21 2008-09-02 Noatak Software Llc Method and system for executing protocol stack instructions to form a packet for causing a computing device to perform an operation
US7418522B2 (en) 2000-12-21 2008-08-26 Noatak Software Llc Method and system for communicating an information packet through multiple networks
US7287090B1 (en) 2000-12-21 2007-10-23 Noatak Software, Llc Method and system for identifying a computing device in response to a request packet
US20020116397A1 (en) 2000-12-21 2002-08-22 Berg Mitchell T. Method and system for communicating an information packet through multiple router devices
US7533409B2 (en) * 2001-03-22 2009-05-12 Corente, Inc. Methods and systems for firewalling virtual private networks
DE50209622D1 (en) * 2001-04-24 2007-04-19 Siemens Ag Switching device and central switch control with internal broadband bus
US7433957B2 (en) * 2001-04-30 2008-10-07 International Business Machines Corporation Group access privatization in clustered computer system
US7881208B1 (en) 2001-06-18 2011-02-01 Cisco Technology, Inc. Gateway load balancing protocol
US6925492B2 (en) * 2001-06-25 2005-08-02 Sun Microsystems, Inc Method and apparatus for automatic configuration of a cluster of computers
US7130305B2 (en) * 2001-07-02 2006-10-31 Stonesoft Oy Processing of data packets within a network element cluster
US6980534B1 (en) * 2001-07-20 2005-12-27 Cisco Technology, Inc. System and method for efficient selection of a packet data servicing node
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
FR2829337B1 (en) * 2001-09-03 2003-10-31 Schneider Automation AUTOMATION EQUIPMENT CONNECTED TO A TCP / IP NETWORK
US6880002B2 (en) * 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US7228337B1 (en) * 2001-09-11 2007-06-05 Cisco Technology, Inc. Methods and apparatus for providing a network service to a virtual machine
US7433914B2 (en) * 2001-09-13 2008-10-07 International Business Machines Corporation Aggregating service processors as a cluster
US6993566B2 (en) * 2001-09-13 2006-01-31 International Business Machines Corporation Entity self-clustering and host-entity communication such as via shared memory
US7277952B2 (en) 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US7325051B2 (en) * 2001-11-06 2008-01-29 International Business Machines Corporation Integrated storage appliance
US7315847B2 (en) * 2001-11-06 2008-01-01 International Business Machines Corporation Method and system for providing access to a database
US20030088659A1 (en) * 2001-11-08 2003-05-08 Susarla Hanumantha Rao System and method for distributed state management
JP4132788B2 (en) * 2001-11-15 2008-08-13 三菱電機株式会社 Data communication device
US8312117B1 (en) * 2001-11-15 2012-11-13 Unisys Corporation Dialog recovery in a distributed computer system
US20030115329A1 (en) * 2001-12-18 2003-06-19 Pascal Joly Stacked approach to service provider Architecture
US7130905B2 (en) * 2002-01-10 2006-10-31 Sun Microsystems, Inc. System and method for coordinating access to data for a distributed application
US20030154202A1 (en) * 2002-02-12 2003-08-14 Darpan Dinker Distributed data system with process co-location and out -of -process communication
US7395354B2 (en) * 2002-02-21 2008-07-01 Corente, Inc. Methods and systems for resolving addressing conflicts based on tunnel information
US7370329B2 (en) 2002-03-01 2008-05-06 Sun Microsystems, Inc. System and method for state saves in a distributed data system
US7320035B2 (en) * 2002-03-01 2008-01-15 Sun Microsystems, Inc. Object mutation determination for incremental state saves
US7139925B2 (en) * 2002-04-29 2006-11-21 Sun Microsystems, Inc. System and method for dynamic cluster adjustment to node failures in a distributed data system
US7251698B2 (en) * 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters
US7155525B2 (en) * 2002-05-28 2006-12-26 Newisys, Inc. Transaction management in systems having multiple multi-processor clusters
US7281055B2 (en) * 2002-05-28 2007-10-09 Newisys, Inc. Routing mechanisms in systems having multiple multi-processor clusters
US7103636B2 (en) * 2002-05-28 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US20030236852A1 (en) * 2002-06-20 2003-12-25 International Business Machines Corporation Sharing network adapter among multiple logical partitions in a data processing system
US7870260B2 (en) 2002-08-09 2011-01-11 Reflexion Networks, Inc. System and method for controlling access to an electronic message recipient
US7239605B2 (en) * 2002-09-23 2007-07-03 Sun Microsystems, Inc. Item and method for performing a cluster topology self-healing process in a distributed data system cluster
US7206836B2 (en) * 2002-09-23 2007-04-17 Sun Microsystems, Inc. System and method for reforming a distributed data system cluster after temporary node failures or restarts
US7624170B2 (en) * 2002-09-26 2009-11-24 International Business Machines Corporation Integrated storage appliance
US7840545B2 (en) 2002-10-25 2010-11-23 International Business Machines Corporation Method and system for providing access to a database
US8005979B2 (en) 2002-10-28 2011-08-23 Oracle America, Inc. System and method for uniquely identifying processes and entities in clusters
US7577755B2 (en) * 2002-11-19 2009-08-18 Newisys, Inc. Methods and apparatus for distributing system management signals
US7493416B2 (en) 2003-01-21 2009-02-17 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US8102843B2 (en) 2003-01-21 2012-01-24 Emulex Design And Manufacturing Corporation Switching apparatus and method for providing shared I/O within a load-store fabric
US7103064B2 (en) 2003-01-21 2006-09-05 Nextio Inc. Method and apparatus for shared I/O in a load/store fabric
US7698483B2 (en) 2003-01-21 2010-04-13 Nextio, Inc. Switching apparatus and method for link initialization in a shared I/O environment
US8032659B2 (en) 2003-01-21 2011-10-04 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US7502370B2 (en) 2003-01-21 2009-03-10 Nextio Inc. Network controller for obtaining a plurality of network port identifiers in response to load-store transactions from a corresponding plurality of operating system domains within a load-store architecture
US7219183B2 (en) 2003-01-21 2007-05-15 Nextio, Inc. Switching apparatus and method for providing shared I/O within a load-store fabric
US7457906B2 (en) 2003-01-21 2008-11-25 Nextio, Inc. Method and apparatus for shared I/O in a load/store fabric
US7512717B2 (en) 2003-01-21 2009-03-31 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US7617333B2 (en) 2003-01-21 2009-11-10 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US7953074B2 (en) 2003-01-21 2011-05-31 Emulex Design And Manufacturing Corporation Apparatus and method for port polarity initialization in a shared I/O device
US7046668B2 (en) 2003-01-21 2006-05-16 Pettey Christopher J Method and apparatus for shared I/O in a load/store fabric
US7836211B2 (en) 2003-01-21 2010-11-16 Emulex Design And Manufacturing Corporation Shared input/output load-store architecture
US7174413B2 (en) 2003-01-21 2007-02-06 Nextio Inc. Switching apparatus and method for providing shared I/O within a load-store fabric
US8346884B2 (en) 2003-01-21 2013-01-01 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US7917658B2 (en) 2003-01-21 2011-03-29 Emulex Design And Manufacturing Corporation Switching apparatus and method for link initialization in a shared I/O environment
US7188209B2 (en) 2003-04-18 2007-03-06 Nextio, Inc. Apparatus and method for sharing I/O endpoints within a load store fabric by encapsulation of domain information in transaction layer packets
US7664909B2 (en) 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US9110853B2 (en) * 2003-03-10 2015-08-18 Oracle America, Inc. Computer system with multiple classes of device IDs
US7178065B2 (en) * 2003-04-02 2007-02-13 Sun Microsystems, Inc. System and method for measuring performance with distributed agents
US8001142B2 (en) 2003-04-02 2011-08-16 Oracle America, Inc. Distributed data system with incremental data updates
US7281050B2 (en) * 2003-04-08 2007-10-09 Sun Microsystems, Inc. Distributed token manager with transactional properties
US20040202185A1 (en) * 2003-04-14 2004-10-14 International Business Machines Corporation Multiple virtual local area network support for shared network adapters
US7596595B2 (en) * 2003-06-18 2009-09-29 Utah State University Efficient unicast-based multicast tree construction and maintenance for multimedia transmission
US7386626B2 (en) * 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7577727B2 (en) * 2003-06-27 2009-08-18 Newisys, Inc. Dynamic multiple cluster system reconfiguration
US7272854B2 (en) * 2003-06-30 2007-09-18 Architecture Technology Corporation Aliasing to prevent attacks on messaging services
US7103823B2 (en) 2003-08-05 2006-09-05 Newisys, Inc. Communication between multi-processor clusters of multi-cluster computer systems
US7117419B2 (en) * 2003-08-05 2006-10-03 Newisys, Inc. Reliable communication between multi-processor clusters of multi-cluster computer systems
US7395347B2 (en) * 2003-08-05 2008-07-01 Newisys, Inc, Communication between and within multi-processor clusters of multi-cluster computer systems
US7159137B2 (en) * 2003-08-05 2007-01-02 Newisys, Inc. Synchronized communication between multi-processor clusters of multi-cluster computer systems
US7839843B2 (en) * 2003-09-18 2010-11-23 Cisco Technology, Inc. Distributed forwarding in virtual network devices
US7751416B2 (en) * 2003-09-18 2010-07-06 Cisco Technology, Inc. Virtual network device
US8086747B2 (en) * 2003-09-22 2011-12-27 Anilkumar Dominic Group-to-group communication over a single connection
US7525902B2 (en) * 2003-09-22 2009-04-28 Anilkumar Dominic Fault tolerant symmetric multi-computing system
US7769004B2 (en) 2003-09-26 2010-08-03 Surgient, Inc. Network abstraction and isolation layer for masquerading machine identity of a computer
US20050080913A1 (en) * 2003-10-09 2005-04-14 Thomas David Andrew Method and system for querying information from a switch by a server in a computer network
US8526427B1 (en) 2003-10-21 2013-09-03 Cisco Technology, Inc. Port-based loadsharing for a satellite switch
US20050108192A1 (en) * 2003-11-18 2005-05-19 Hua Huang Tree structure
US7606933B2 (en) * 2004-02-11 2009-10-20 Cray Canada Corporation Shared memory and high performance communication using interconnect tunneling
US8990430B2 (en) * 2004-02-19 2015-03-24 Cisco Technology, Inc. Interface bundles in virtual network devices
US8208370B1 (en) 2004-03-31 2012-06-26 Cisco Technology, Inc. Method and system for fast link failover
US7889733B2 (en) * 2004-04-28 2011-02-15 Cisco Technology, Inc. Intelligent adjunct network device
US7706364B2 (en) * 2004-05-19 2010-04-27 Cisco Technology, Inc. Virtual network device clusters
US7710957B2 (en) * 2004-05-19 2010-05-04 Cisco Technology, Inc. System and method for implementing multiple spanning trees per network
US7436836B2 (en) * 2004-06-30 2008-10-14 Cisco Technology, Inc. Method and apparatus for detecting support for a protocol defining supplemental headers
US8364948B2 (en) * 2004-07-02 2013-01-29 Hewlett-Packard Development Company, L.P. System and method for supporting secured communication by an aliased cluster
US7808983B2 (en) 2004-07-08 2010-10-05 Cisco Technology, Inc. Network device architecture for centralized packet processing
US8730976B2 (en) * 2004-08-17 2014-05-20 Cisco Technology, Inc. System and method for preventing erroneous link aggregation due to component relocation
GB2418797A (en) * 2004-10-02 2006-04-05 Hewlett Packard Development Co Re-assembling packet fragments in a subnet cluster
ATE536686T1 (en) * 2004-10-19 2011-12-15 Ericsson Telefon Ab L M INTEGRATION OF SGSN AND GGSN
US20060123111A1 (en) * 2004-12-02 2006-06-08 Frank Dea Method, system and computer program product for transitioning network traffic between logical partitions in one or more data processing systems
US20060123204A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and system for shared input/output adapter in logically partitioned data processing system
US7676587B2 (en) * 2004-12-14 2010-03-09 Emc Corporation Distributed IP trunking and server clustering for sharing of an IP server address among IP servers
US7801135B2 (en) * 2005-05-19 2010-09-21 Cisco Technology, Inc. Transport protocol connection synchronization
US20070050681A1 (en) * 2005-08-25 2007-03-01 Derobertis Christopher V Global user services management for system cluster
US8078728B1 (en) 2006-03-31 2011-12-13 Quest Software, Inc. Capacity pooling for application reservation and delivery
US20080225837A1 (en) * 2007-03-16 2008-09-18 Novell, Inc. System and Method for Multi-Layer Distributed Switching
KR20100015846A (en) * 2007-03-26 2010-02-12 빅풋 네트웍스, 인크. Method and system for communication between nodes
US9473598B2 (en) * 2007-12-18 2016-10-18 International Business Machines Corporation Network connection failover during application service interruption
US8194674B1 (en) 2007-12-20 2012-06-05 Quest Software, Inc. System and method for aggregating communications and for translating between overlapping internal network addresses and unique external network addresses
US7890626B1 (en) 2008-09-11 2011-02-15 Gadir Omar M A High availability cluster server for enterprise data management
US20100162036A1 (en) 2008-12-19 2010-06-24 Watchguard Technologies, Inc. Self-Monitoring Cluster of Network Security Devices
US8315264B2 (en) * 2009-12-17 2012-11-20 International Business Machines Corporation Network system using path health information for path selection
RU2513918C1 (en) * 2010-03-29 2014-04-20 Хуавей Текнолоджиз Ко., Лтд. Cluster router and cluster routing method
US8533312B2 (en) 2010-08-05 2013-09-10 Citrix Systems, Inc. Systems and methods for server initiated connection management in a multi-core system
US8892739B2 (en) * 2011-05-26 2014-11-18 International Business Machines Corporation Enabling and managing user-specified aliases
US9813413B2 (en) 2015-08-15 2017-11-07 Microsoft Technology Licensing, Llc Domain joined virtual names on domainless servers
US10216641B2 (en) 2017-01-13 2019-02-26 International Business Systems Corporation Managing and sharing alias devices across logical control units
US10819723B2 (en) * 2017-03-27 2020-10-27 Cujo LLC Securing port forwarding through a network traffic hub
US10587703B2 (en) * 2017-08-18 2020-03-10 Citrix Systems, Inc. Providing communication connectivity between disparate network entities located in isolated communication networks through a centralized cloud service

Citations (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4799215A (en) * 1985-10-07 1989-01-17 Nec Corporation High-speed packet-switched communications system with end-to-end flow control and retransmission
US4815071A (en) * 1986-08-14 1989-03-21 Nec Corporation Packet-switched communications network for efficiently switching non-burst signals
US4884263A (en) * 1986-01-09 1989-11-28 Nec Corporation Packet-switched communications network with parallel virtual circuits for re-routing message packets
US5371852A (en) * 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
US5682534A (en) * 1995-09-12 1997-10-28 International Business Machines Corporation Transparent local RPC optimization
US5790546A (en) * 1994-01-28 1998-08-04 Cabletron Systems, Inc. Method of transmitting data packets in a packet switched communications network
US5828318A (en) * 1996-05-08 1998-10-27 International Business Machines Corporation System and method for selecting a subset of autonomous and independent slave entities
US5862348A (en) * 1996-02-09 1999-01-19 Citrix Systems, Inc. Method and apparatus for connecting a client node to a server node based on load levels
US5913921A (en) * 1996-07-12 1999-06-22 Glenayre Electronics, Inc. System for communicating information about nodes configuration by generating advertisements having era values for identifying time reference for which the configuration is operative
US5918017A (en) * 1996-08-23 1999-06-29 Internatioinal Business Machines Corp. System and method for providing dynamically alterable computer clusters for message routing
US5930259A (en) * 1995-08-25 1999-07-27 Kabushiki Kaisha Toshiba Packet transmission node device realizing packet transfer scheme and control information transfer scheme using multiple virtual connections
US5963540A (en) * 1997-12-19 1999-10-05 Holontech Corporation Router pooling in a network flowswitch
US5996089A (en) * 1995-10-24 1999-11-30 Seachange International, Inc. Loosely coupled mass storage computer cluster
US6006259A (en) * 1998-11-20 1999-12-21 Network Alchemy, Inc. Method and apparatus for an internet protocol (IP) network clustering system
US6016319A (en) * 1995-10-31 2000-01-18 Lucent Technologies, Inc. Communications system for transmission of datagram packets over connection-oriented networks
US6044402A (en) * 1997-07-02 2000-03-28 Iowa State University Research Foundation Network connection blocker, method, and computer readable memory for monitoring connections in a computer network and blocking the unwanted connections
US6061349A (en) * 1995-11-03 2000-05-09 Cisco Technology, Inc. System and method for implementing multiple IP addresses on multiple ports
US6078957A (en) * 1998-11-20 2000-06-20 Network Alchemy, Inc. Method and apparatus for a TCP/IP load balancing and failover process in an internet protocol (IP) network clustering system
US6085238A (en) * 1996-04-23 2000-07-04 Matsushita Electric Works, Ltd. Virtual LAN system
US6108708A (en) * 1993-12-27 2000-08-22 Nec Corporation Connection-oriented network using distributed network resources and predetermined VPIs for fast VC establishment
US6182224B1 (en) * 1995-09-29 2001-01-30 Cisco Systems, Inc. Enhanced network services using a subnetwork of communicating processors
US6192411B1 (en) * 1997-08-29 2001-02-20 Cisco Technology, Inc. Mapping SNA session flow control to TCP flow control
US6195680B1 (en) * 1998-07-23 2001-02-27 International Business Machines Corporation Client-based dynamic switching of streaming servers for fault-tolerance and load balancing
US6253230B1 (en) * 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6256673B1 (en) * 1998-12-17 2001-07-03 Intel Corp. Cyclic multicasting or asynchronous broadcasting of computer files
US6266335B1 (en) * 1997-12-19 2001-07-24 Cyberiq Systems Cross-platform server clustering using a network flow switch
US6317775B1 (en) * 1995-11-03 2001-11-13 Cisco Technology, Inc. System for distributing load over multiple servers at an internet site
US6324177B1 (en) * 1997-05-02 2001-11-27 Cisco Technology Method and apparatus for managing connections based on a client IP address
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6330605B1 (en) * 1998-11-19 2001-12-11 Volera, Inc. Proxy cache cluster
US6335919B1 (en) * 1996-03-05 2002-01-01 Hirotoshi Maegawa Network management method, apparatus of same, and network systems
US6338112B1 (en) * 1997-02-21 2002-01-08 Novell, Inc. Resource management in a clustered computer system
US6370584B1 (en) * 1998-01-13 2002-04-09 Trustees Of Boston University Distributed routing
US6470389B1 (en) * 1997-03-14 2002-10-22 Lucent Technologies Inc. Hosting a network service on a cluster of servers using a single-address image
US20050278459A1 (en) * 1997-10-14 2005-12-15 Boucher Laurence B Network interface device that can offload data transfer processing for a TCP connection from a host CPU

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6549538B1 (en) * 1998-12-31 2003-04-15 Compaq Information Technologies Group, L.P. Computer method and apparatus for managing network ports cluster-wide using a lookaside list

Patent Citations (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4799215A (en) * 1985-10-07 1989-01-17 Nec Corporation High-speed packet-switched communications system with end-to-end flow control and retransmission
US4884263A (en) * 1986-01-09 1989-11-28 Nec Corporation Packet-switched communications network with parallel virtual circuits for re-routing message packets
US4815071A (en) * 1986-08-14 1989-03-21 Nec Corporation Packet-switched communications network for efficiently switching non-burst signals
US5371852A (en) * 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
US6108708A (en) * 1993-12-27 2000-08-22 Nec Corporation Connection-oriented network using distributed network resources and predetermined VPIs for fast VC establishment
US5790546A (en) * 1994-01-28 1998-08-04 Cabletron Systems, Inc. Method of transmitting data packets in a packet switched communications network
US5930259A (en) * 1995-08-25 1999-07-27 Kabushiki Kaisha Toshiba Packet transmission node device realizing packet transfer scheme and control information transfer scheme using multiple virtual connections
US5682534A (en) * 1995-09-12 1997-10-28 International Business Machines Corporation Transparent local RPC optimization
US6182224B1 (en) * 1995-09-29 2001-01-30 Cisco Systems, Inc. Enhanced network services using a subnetwork of communicating processors
US5996089A (en) * 1995-10-24 1999-11-30 Seachange International, Inc. Loosely coupled mass storage computer cluster
US6016319A (en) * 1995-10-31 2000-01-18 Lucent Technologies, Inc. Communications system for transmission of datagram packets over connection-oriented networks
US6317775B1 (en) * 1995-11-03 2001-11-13 Cisco Technology, Inc. System for distributing load over multiple servers at an internet site
US6061349A (en) * 1995-11-03 2000-05-09 Cisco Technology, Inc. System and method for implementing multiple IP addresses on multiple ports
US5862348A (en) * 1996-02-09 1999-01-19 Citrix Systems, Inc. Method and apparatus for connecting a client node to a server node based on load levels
US6335919B1 (en) * 1996-03-05 2002-01-01 Hirotoshi Maegawa Network management method, apparatus of same, and network systems
US6085238A (en) * 1996-04-23 2000-07-04 Matsushita Electric Works, Ltd. Virtual LAN system
US5828318A (en) * 1996-05-08 1998-10-27 International Business Machines Corporation System and method for selecting a subset of autonomous and independent slave entities
US5913921A (en) * 1996-07-12 1999-06-22 Glenayre Electronics, Inc. System for communicating information about nodes configuration by generating advertisements having era values for identifying time reference for which the configuration is operative
US5918017A (en) * 1996-08-23 1999-06-29 Internatioinal Business Machines Corp. System and method for providing dynamically alterable computer clusters for message routing
US6338112B1 (en) * 1997-02-21 2002-01-08 Novell, Inc. Resource management in a clustered computer system
US6470389B1 (en) * 1997-03-14 2002-10-22 Lucent Technologies Inc. Hosting a network service on a cluster of servers using a single-address image
US6324177B1 (en) * 1997-05-02 2001-11-27 Cisco Technology Method and apparatus for managing connections based on a client IP address
US6044402A (en) * 1997-07-02 2000-03-28 Iowa State University Research Foundation Network connection blocker, method, and computer readable memory for monitoring connections in a computer network and blocking the unwanted connections
US6192411B1 (en) * 1997-08-29 2001-02-20 Cisco Technology, Inc. Mapping SNA session flow control to TCP flow control
US20050278459A1 (en) * 1997-10-14 2005-12-15 Boucher Laurence B Network interface device that can offload data transfer processing for a TCP connection from a host CPU
US5963540A (en) * 1997-12-19 1999-10-05 Holontech Corporation Router pooling in a network flowswitch
US6266335B1 (en) * 1997-12-19 2001-07-24 Cyberiq Systems Cross-platform server clustering using a network flow switch
US6370584B1 (en) * 1998-01-13 2002-04-09 Trustees Of Boston University Distributed routing
US6195680B1 (en) * 1998-07-23 2001-02-27 International Business Machines Corporation Client-based dynamic switching of streaming servers for fault-tolerance and load balancing
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6253230B1 (en) * 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6330605B1 (en) * 1998-11-19 2001-12-11 Volera, Inc. Proxy cache cluster
US6078957A (en) * 1998-11-20 2000-06-20 Network Alchemy, Inc. Method and apparatus for a TCP/IP load balancing and failover process in an internet protocol (IP) network clustering system
US6006259A (en) * 1998-11-20 1999-12-21 Network Alchemy, Inc. Method and apparatus for an internet protocol (IP) network clustering system
US6256673B1 (en) * 1998-12-17 2001-07-03 Intel Corp. Cyclic multicasting or asynchronous broadcasting of computer files

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030013477A1 (en) * 2001-07-12 2003-01-16 Mcalinden Paul Controlling dual processors in cellular telephones
US20040002362A1 (en) * 2002-06-28 2004-01-01 Chuah Mooi Choo Backhaul multicasting using Ethernet-based Radio Access Networks
US7096039B2 (en) * 2002-06-28 2006-08-22 Lucent Technologies Inc. Backhaul multicasting using Ethernet-based radio access networks
US7957377B1 (en) * 2004-07-30 2011-06-07 Cisco Technology, Inc. Reducing and load balancing link-state requests in OSPF
US20060248102A1 (en) * 2005-05-02 2006-11-02 Michael Bowler Adaptive pre-fragmentation and pre-segmentation system and method
US7574578B2 (en) * 2005-05-02 2009-08-11 Elliptic Semiconductor Inc. System and method of adaptive memory structure for data pre-fragmentation or pre-segmentation
US20090313306A1 (en) * 2005-12-08 2009-12-17 Electroncis And Telecommunications Research Institute Method of Effectively Managing Database System for Mobile Number Portability
US8356006B2 (en) * 2005-12-08 2013-01-15 Electronics And Telecommunications Research Institute Method of effectively managing database system for mobile number portability
US7756010B2 (en) * 2005-12-21 2010-07-13 Cisco Technology, Inc. Method and system for preventing data packet loss in a redundant PDSN environment
US20070140111A1 (en) * 2005-12-21 2007-06-21 Cisco Technology, Inc. Method and system for preventing data packet loss in a redundant PDSN environment
US8566471B1 (en) * 2006-01-09 2013-10-22 Avaya Inc. Method of providing network link bonding and management
US20130031509A1 (en) * 2011-07-28 2013-01-31 Curtis Matthew C Displaying Physical Signal Routing in a Diagram of a System
US8782525B2 (en) * 2011-07-28 2014-07-15 National Insturments Corporation Displaying physical signal routing in a diagram of a system

Also Published As

Publication number Publication date
US6665304B2 (en) 2003-12-16
US20010014097A1 (en) 2001-08-16

Similar Documents

Publication Publication Date Title
US6665304B2 (en) Method and apparatus for providing an integrated cluster alias address
US6549538B1 (en) Computer method and apparatus for managing network ports cluster-wide using a lookaside list
US7684423B2 (en) System and method for virtual network interface cards based on internet protocol addresses
US6510164B1 (en) User-level dedicated interface for IP applications in a data packet switching and load balancing system
US6999998B2 (en) Shared memory coupling of network infrastructure devices
US5918021A (en) System and method for dynamic distribution of data packets through multiple channels
US6424621B1 (en) Software interface between switching module and operating system of a data packet switching and load balancing system
US6272522B1 (en) Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US20030074467A1 (en) Load balancing system and method for data communication network
US6272136B1 (en) Pseudo-interface between control and switching modules of a data packet switching and load balancing system
US6735169B1 (en) Cascading multiple services on a forwarding agent
US7570586B1 (en) Backup service managers for providing reliable network services in a distributed environment
US7443847B1 (en) Stateful failover of service managers
CN101156408B (en) Network communications for operating system partitions
US6891839B2 (en) Distributing packets among multiple tiers of network appliances
US7290059B2 (en) Apparatus and method for scalable server load balancing
US6370583B1 (en) Method and apparatus for portraying a cluster of computer systems as having a single internet protocol image
US7792140B2 (en) Reflecting the bandwidth assigned to a virtual network interface card through its link speed
US7471689B1 (en) Method and apparatus for managing and accounting for bandwidth utilization within a computing system
KR101363167B1 (en) Improved distributed kernel operating system
EP0838931A2 (en) Recoverable virtual encapsulated cluster
US7733890B1 (en) Network interface card resource mapping to virtual network interface cards
US6671273B1 (en) Method for using outgoing TCP/IP sequence number fields to provide a desired cluster node
CN1410905A (en) Full distribution type aggregation network servicer system
US8539089B2 (en) System and method for vertical perimeter protection

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: CHANGE OF NAME;ASSIGNOR:COMPAQ INFORMATION TECHNOLOGIES GROUP LP;REEL/FRAME:014628/0103

Effective date: 20021001

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION