IP Library Granted Patent US 8,811,412
Granted Patent B2
US 8,811,412 · App. 12/579,739 · Granted Aug 19, 2014

Steering data communications packets among service applications with server selection modulus values

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,811,412
App. No.
12/579,739
Granted
Aug 19, 2014
Kind
B2
Abstract

Steering data communications packets for transparent, bump-in-the-wire data processing among multiple service applications; the service applications executing on servers organized in groups, each server in a server group executing an instance of a same service application, including selecting an instance of each of the service applications to process a packet; identifying a server selection value for each packet as a single integer value that yields server selection modulus values that identify each instance of each of the service applications to process the packet; and steering, by the switches in dependence upon the server selection modulus values, each packet to each instance of each of the service applications to process the packet.

Claims (185)

1. A method of steering data communications packets for transparent, bump-in-the-wire data processing among multiple service applications, the method implemented with link-level data communications switching apparatus disposed among two or more data communications networks, the method comprising:

receiving, in a steering control engine of the switching apparatus from a source network, data communications packets directed to a destination network, the switching apparatus comprising:

the steering control engine and link-level data communications switches, the steering control engine comprising a module of automated computing machinery coupled for data communications to the link-level data communications switches, each link-level data communications switch comprising data communications ports, a plurality of the ports connected for data communications to the service applications;

the service applications organized in sets, each set of service applications comprising a plurality of service applications that process a packet in a predefined sequence through the service applications in the set; the service applications executing on servers; and

the servers organized in groups, each server in a server group executing an instance of a same service application, each instance of a service application identified by a server selection modulus value that is unique among the instances of a service application executing on the servers in a server grow;

selecting, by the steering control engine for each packet, an instance of each of the service applications to process the packet;

identifying, by the steering control engine for each packet, a server selection value comprising a single integer value that yields, by a plurality of modulus operations, server selection modulus values that identify each instance of each of the plurality of service applications to process the packet; and

steering, by the switches in dependence upon the server selection modulus values, each packet to each instance of each of the plurality of service applications to process the packet.

2. The method of claim 1 wherein the steering control engine is configured with server selection values and identifying a server selection value further comprises:

calculating a value of an index into the server selection values in dependence upon the server selection modulus values that identify each instance of a service application selected to process the packet; and

identifying the server selection value in dependence upon the value of the index.

3. The method of claim 1 wherein the steering control engine is configured with server selection values and identifying a server selection value further comprises:

calculating a value of an index into the server selection values in dependence upon the server selection modulus values that identify each instance of a service application selected to process the packet according to

I

=

j

=

1

k

-

1

(

N

j

·

M

j

+

1

·

M

j

+

2

·

·

M

k

)

+

N

k

,

where I is the value of the index, k is the number of groups of servers in a set of service applications, M j is a modulus operator value for the j th server group, N j is the server selection modulus value that identifies the selected server within the j th group of servers in a set of service applications; and

identifying the server selection value in dependence upon the value of the index.

4. The method of claim 1 wherein:

each switch is further configured with a modulus operator value for each server group, the modulus operator value determined according to the number of servers within each server group; and

steering each packet further comprises identifying each instance of each of the service applications to process the packet according to V i =N mod M i , where V i is the server selection modulus value for the instance of the service application to process the packet in the i th server group, N is the server selection modulus value for the packet and M i is the modulus operator value for the i th server group executing instances of service applications in a set of service applications.

5. The method of claim 1 further comprising:

selecting, by the steering control engine for each packet, a set of service applications to process the packet; and

configuring by the steering control engine each packet with an identifier of the selected set of service applications;

wherein steering each packet by the switches further comprises steering each packet among the service applications in the selected set of service applications.

6. The method of claim 1 further comprising:

selecting, by the steering control engine for each packet, a set of service applications to process the packet;

configuring by the steering control engine each packet with an identifier of the selected set of service applications and the packet's server selection value, the server selection value maskably separated from the identifier of the selected set of service applications;

maskably identifying by the switches for each packet both the packet's identifier of the selected set of service applications and also the packet's server selection value; and

steering by the switches each packet among the service applications in the predefined sequence of the selected set.

7. Link-level data communications switching apparatus for steering data communications packets for transparent, bump-in-the-wire data processing among multiple service applications, the switching apparatus disposed among two or more data communications networks, the switching apparatus comprising:

a steering control engine and link-level data communications switches, the steering control engine comprising a module of automated computing machinery coupled for data communications to the link-level data communications switches, each link-level data communications switch comprising data communications ports, a plurality of the ports connected for data communications to the service applications;

the service applications organized in sets, each set of service applications comprising a plurality of service applications that process a packet in a predefined sequence through the service applications in the set; the service applications executing on servers;

the servers organized in groups, each server in a server group executing an instance of a same service application, each instance of a service application identified by a server selection modulus value that is unique among the instances of a service application executing on the servers in a server group;

the switching apparatus configured to function by:

receiving, in the steering control engine from a source network, data communications packets directed to a destination network;

selecting, by the steering control engine for each packet, an instance of each of the service applications to process the packet;

identifying, by the steering control engine for each packet, a server selection value comprising a single integer value that yields, by a plurality of modulus operations, server selection modulus values that identify each instance of each of the plurality of service applications to process the packet; and

steering, by the switches in dependence upon the server selection modulus values, each packet to each instance of each of the plurality of service applications to process the packet.

8. The switching apparatus of claim 7 wherein the steering control engine is configured with server selection values and identifying a server selection value further comprises:

calculating a value of an index into the server selection values in dependence upon the server selection modulus values that identify each instance of a service application selected to process the packet; and

identifying the server selection value in dependence upon the value of the index.

9. The switching apparatus of claim 7 wherein the steering control engine is configured with server selection values and identifying a server selection value further comprises:

calculating a value of an index into the server selection values in dependence upon the server selection modulus values that identify each instance of a service application selected to process the packet according to

I

=

j

=

1

k

-

1

(

N

j

·

M

j

+

1

·

M

j

+

2

·

·

M

k

)

+

N

k

,

where I is the value of the index, k is the number of groups of servers in a set of service applications, M j is a modulus operator value for the j th server group, N j is the server selection modulus value that identifies the selected server within the j th group of servers in a set of service applications; and

identifying the server selection value in dependence upon the value of the index.

10. The switching apparatus of claim 7 wherein:

each switch is further configured with a modulus operator value for each server group, the modulus operator value determined according to the number of servers within each server group; and

steering each packet further comprises identifying each instance of each of the service applications to process the packet according to V i =N mod M i , where V i is the server selection modulus value for the instance of the service application to process the packet in the i th server group, N is the server selection modulus value for the packet and M i is the modulus operator value for the i th server group executing instances of service applications in a set of service applications.

11. The switching apparatus of claim 7 further configured to function by:

selecting, by the steering control engine for each packet, a set of service applications to process the packet; and

configuring by the steering control engine each packet with an identifier of the selected set of service applications;

wherein steering each packet by the switches further comprises steering each packet among the service applications in the selected set of service applications.

12. The switching apparatus of claim 7 further configured to function by:

selecting, by the steering control engine for each packet, a set of service applications to process the packet;

configuring by the steering control engine each packet with an identifier of the selected set of service applications and the packet's server selection value, the server selection value maskably separated from the identifier of the selected set of service applications;

maskably identifying by the switches for each packet both the packet's identifier of the selected set of service applications and also the packet's server selection value; and

steering by the switches each packet among the service applications in the predefined sequence of the selected set.

13. A computer program product for steering data communications packets for transparent, bump-in-the-wire data processing among multiple service applications, the computer program product disposed upon a machine-readable recording medium, wherein the machine-readable recording medium is not a signal, the computer program product configured for installation within link-level data communications switching apparatus disposed among two or more data communications networks, the switching apparatus comprising:

a steering control engine and link-level data communications switches; the steering control engine comprising a module of automated computing machinery coupled for data communications to the link-level data communications switches, each link-level data communications switch comprising data communications ports, a plurality of the ports connected for data communications to the service applications,

the service applications organized in sets, each set of service applications comprising a plurality of service applications that process a packet in a predefined sequence through the service applications in the set; the service applications executing on servers;

the servers organized in groups, each server in a server group executing an instance of a same service application, each instance of a service application identified by a server selection modulus value that is unique among the instances of a service application executing on the servers in a server group,

the computer program product comprising computer program instructions that, when installed within and executed by the link-level data communications switching apparatus, cause the link-level data communications switching apparatus to function by:

receiving, in the steering control engine from a source network, data communications packets directed to a destination network;

selecting, by the steering control engine for each packet, an instance of each of the service applications to process the packet;

identifying, by the steering control engine for each packet, a server selection value comprising a single integer value that yields, by a plurality of modulus operations, server selection modulus values that identify each instance of each of the plurality of service applications to process the packet; and

steering, by the switches in dependence upon the server selection modulus values, each packet to each instance of each of the plurality of service applications to process the packet.

14. The computer program product of claim 13 wherein the steering control engine is configured with server selection values and identifying a server selection value further comprises:

calculating a value of an index into the server selection values in dependence upon the server selection modulus values that identify each instance of a service application selected to process the packet; and

identifying the server selection value in dependence upon the value of the index.

15. The computer program product of claim 13 wherein the steering control engine is configured with server selection values and identifying a server selection value further comprises:

calculating a value of an index into the server selection values in dependence upon the server selection modulus values that identify each instance of a service application selected to process the packet according to

I

=

j

=

1

k

-

1

(

N

j

·

M

j

+

1

·

M

j

+

2

·

·

M

k

)

+

N

k

,

where I is the value of the index, k is the number of groups of servers in a set of service applications, M j is a modulus operator value for the j th server group, N j is the server selection modulus value that identifies the selected server within the j th group of servers in a set of service applications; and

identifying the server selection value in dependence upon the value of the index.

16. The computer program product of claim 13 wherein:

each switch is further configured with a modulus operator value for each server group, the modulus operator value determined according to the number of servers within each server group; and

steering each packet further comprises identifying each instance of each of the service applications to process the packet according to V i =N mod M i , where V i is the server selection modulus value for the instance of the service application to process the packet in the i th server group, N is the server selection modulus value for the packet and M i is the modulus operator value for the i th server group executing instances of service applications in a set of service applications.

17. The computer program product of claim 13 further comprising computer program instructions that, when installed within and executed by the link-level data communications switching apparatus, cause the link-level data communications switching apparatus to function by:

selecting, by the steering control engine for each packet, a set of service applications to process the packet; and

configuring by the steering control engine each packet with an identifier of the selected set of service applications;

wherein steering each packet by the switches further comprises steering each packet among the service applications in the selected set of service applications.

18. The computer program product of claim 13 further comprising computer program instructions that, when installed within and executed by the link-level data communications switching apparatus, cause the link-level data communications switching apparatus to function by:

selecting, by the steering control engine for each packet, a set of service applications to process the packet;

configuring by the steering control engine each packet with an identifier of the selected set of service applications and the packet's server selection value, the server selection value maskably separated from the identifier of the selected set of service applications;

maskably identifying by the switches for each packet both the packet's identifier of the selected set of service applications and also the packet's server selection value; and

steering by the switches each packet among the service applications in the predefined sequence of the selected set.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2014
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: LENOVO INTERNATIONAL LIMITED
Reel/Frame 034194/0291 →