Software interface between switching module and operating system of a data packet switching and load balancing system
First Claim
1. A multiprocessor computer system, comprising:
- a plurality of network interfaces each adapted to be coupled to respective external networks for receiving and sending data packets to and from remote devices coupled to said external networks via a particular communication protocol;
a plurality of symmetrical processors including a control processor and at least one data packet switching processor, said at least one data packet switching processor being coupled to said plurality of network interfaces, said control processor further including a user portion and an operating system portion, said operating system portion of said control processor further including a pseudo-network driver that appears to be a network interface to user application programs operating on said user portion of said control processor; and
a memory coupled to each of said plurality of symmetrical processors and having a memory space shared by said control processor and said at least one switching processor, said at least one data packet switching processor routing an incoming one of said data packets directed to one of said user application programs operating on said control processor from one of said remote devices to said shared memory space, said pseudo-network driver retrieving said incoming data packet from said shared memory space and providing said incoming data packet to said one of said user application programs.
2 Assignments
0 Petitions
Accused Products
Abstract
A data packet switching system comprises a plurality of network interfaces each adapted to be coupled to respective external networks for receiving and sending data packets to and from the external networks via a particular communication protocol. The data packet switching system further includes a plurality of symmetrical processors, including a first processor providing a control processor and remaining ones of the processors each providing data packet switching processors. The data packet switching processors are coupled to the plurality of network interfaces. The control processor further includes a user portion and an operating system portion. The operating system portion is provided with a pseudo-network driver that appears to be a network interface to user application programs operating on the user portion of the control processor. A memory space is shared by the control processor and the data packet switching processors. The data packet switching processors route an incoming data packet directed to a user application program to the memory space. The pseudo-network driver retrieves the incoming data packet from the shared memory space and provides the data packet to the user application program.
163 Citations
25 Claims
-
1. A multiprocessor computer system, comprising:
-
a plurality of network interfaces each adapted to be coupled to respective external networks for receiving and sending data packets to and from remote devices coupled to said external networks via a particular communication protocol;
a plurality of symmetrical processors including a control processor and at least one data packet switching processor, said at least one data packet switching processor being coupled to said plurality of network interfaces, said control processor further including a user portion and an operating system portion, said operating system portion of said control processor further including a pseudo-network driver that appears to be a network interface to user application programs operating on said user portion of said control processor; and
a memory coupled to each of said plurality of symmetrical processors and having a memory space shared by said control processor and said at least one switching processor, said at least one data packet switching processor routing an incoming one of said data packets directed to one of said user application programs operating on said control processor from one of said remote devices to said shared memory space, said pseudo-network driver retrieving said incoming data packet from said shared memory space and providing said incoming data packet to said one of said user application programs. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
reading routing information from a header portion of each received one of said data packets; and
if said routing information reflects an address of said control processor, writing said received one of said data packets to said shared memory space.
-
-
3. The multiprocessor computer system of claim 1, wherein said pseudo-network driver further writing an outgoing data packet from one of said user application programs operating on said control processor directed to one of said remote devices to said shared memory space, said at least one data packet switching processor retrieving said outgoing data packet from said shared memory space and routing said outgoing data packet to one of said network interfaces corresponding to said one of said remote devices.
-
4. The multiprocessor computer system of claim 1, wherein said control processor receives raw load status data from said external networks and generates load distribution configuration data therefrom, said load distribution configuration data being stored in said memory for access by said at least one data packet switching processor, said at least one data packet switching processor routing received ones of said data packets other than said incoming data packet to a selected one of said external networks in accordance with information included in a header portion of said data packets and said load distribution configuration data.
-
5. The multiprocessor computer system of claim 4, wherein said at least one data packet switching processor further re-writes said routing information included in said header portion of said data packets to reflect said selected one of said external networks.
-
6. The multiprocessor computer system of claim 4, wherein said memory further comprises a connection table reflecting status of previously received ones of said data packets.
-
7. The multiprocessor computer system of claim 6, wherein said at least one data packet switching processor accesses said connection table to determine correspondence between a received one of said data packets and said previously received ones of said data packets in determining said selected one of said external networks.
-
8. The multiprocessor computer system of claim 4, wherein said memory further comprises a configuration table containing said load distribution configuration data.
-
9. The multiprocessor computer system of claim 4, wherein said at least one data packet switching processor further includes an engine module having stored instructions to be executed by said at least one data packet switching processor, said stored instructions comprising the steps of:
-
polling a first one of said network interfaces for presence of a received data packet;
if a received data packet is present at said first one of said network interfaces, routing said received data packet to said selected one of said external networks; and
if a received one of said data packets is not present at said first one of said network interfaces, polling another one of said network interfaces for presence of a received data packet.
-
-
10. The multiprocessor computer system of claim 4, wherein said at least one switching processor further includes a filter module having stored instructions to be executed by said at least one switching processor, said stored instructions comprising the steps of:
-
reading routing information from said header portion of said data packet;
accessing said load distribution configuration data stored in said memory;
selecting said selected one of said external networks based on said routing information and said load distribution configuration data;
modifying said data packet by re-writing said routing information to reflect said selected one of said external networks; and
sending said modified data packet to one of said plurality of network interfaces corresponding to said selected one of said external networks.
-
-
11. The multiprocessor computer system of claim 10, wherein said stored instructions of said filter module further comprises the steps of:
-
reading transport information from said header portion of said data packet; and
accessing connection status data stored in a connection table of said main memory reflecting status of previously received ones of said data packets, wherein, if said transport information indicates that said data packet corresponds to a previously received data packet, then said selecting step further comprises selecting said selected one of said external networks based on routing of said previously received data packet.
-
-
12. The multiprocessor computer system of claim 1, wherein said at least one data packet switching processor further provides periodic polling of corresponding ones of said network interfaces for detecting received ones of said data packets therein.
-
13. In a multiprocessor computer system comprising a plurality of symmetrical processors, a main memory shared by said plurality of processors, and a plurality of network interfaces each adapted to be coupled to respective external networks for receiving data packets from remote devices and sending data packets thereto via a particular communication protocol, a method for operating said computer system comprises the steps of:
-
configuring one of said plurality of processors as a control processor and others of said plurality of processors as data packet switching processors, said at least one data packet switching processor being coupled to said plurality of network interfaces, said control processor further including a user portion and an operating system portion;
routing a received one of said data packets directed to said control processor to a portion of said main memory by at least one of said data packet switching processors;
providing a pseudo-network driver in said operating system portion of said control processor that appears as a network interface to user application programs operating on said user portion of said control processor; and
routing said received one of said data packets from said portion of said main memory by said pseudo-network driver to said user portion of said control processor. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
reading routing information from a header portion of each received one of said data packets; and
if said routing information reflects an address of said control processor, writing said received one of said data packets to said portion of said main memory.
-
-
15. The method of claim 13, further comprising the steps of:
-
providing load data to said control processor regarding load status of said external networks;
generating load distribution configuration data from said load data using said control processor and storing said load distribution configuration data in said main memory for access by said data packet switching processors; and
routing received ones of said data packets using said switching processors to a selected one of said external networks in accordance with information included in a header portion of said data packets and said load distribution configuration data.
-
-
16. The method of claim 15, further comprising the step of providing an active and a back-up portion of said main memory, wherein newly generated load distribution configuration data is stored in said active portion while said back-up portion is accessible to said switching processors.
-
17. The method of claim 13, further comprising the step of periodically polling corresponding ones of said network interfaces by said switching processors for received ones of said data packets.
-
18. The method of claim 13, further comprising the step of re-writing said routing information included in said header portion of said data packets by said switching processors to reflect said selected one of said external networks.
-
19. The method of claim 13, further comprising the step of providing a connection table in said main memory reflecting status of previously received ones of said data packets.
-
20. The method of claim 19, further comprising accessing said connection table by said switching processors to determine correspondence between said received one of said data packets and said previously received ones of said data packets in determining said selected one of said external networks.
-
21. The method of claim 13, further comprising providing a configuration table in said main memory containing said load distribution configuration data.
-
22. The method of claim 13, further comprising the steps of:
-
polling a first one of said network interfaces for presence of a received data packet, if a received data packet is present at said first one of said network interfaces, routing said received data packet to said selected one of said external networks, and if a received one of said data packets is not present at said first one of said network interfaces, polling another one of said network interfaces for presence of a received data packet.
-
-
23. The method of claim 13, further comprising the steps of:
-
reading routing information from said header portion of said data packet, accessing said load distribution configuration data stored in said main memory, selecting said selected one of said external networks based on said routing information and said load distribution configuration data, modifying said data packet by re-writing said routing information to reflects said selected one of said external networks, and sending said modified data packet to one of said plurality of network interfaces corresponding to said selected one of said external networks.
-
-
24. The method of claim 23, further comprising the steps of:
-
reading transport information from said header portion of said data packet, and accessing connection status data stored in a connection table of said main memory reflecting status of previously received ones of said data packets, wherein, if said transport information indicates that said data packet corresponds to a previously received data packet, then said selecting step further comprises selecting said selected one of said external networks based on routing of said previously received data packet.
-
-
25. The method of claim 13, wherein said particular communication protocol further comprises TCP/IP.
Specification