IP Library Granted Patent US 7,734,829
Granted Patent B2
US 7,734,829 · App. 10/864,266 · Granted Jun 8, 2010

Methods, systems, and computer program products for transparently controlling communications between network applications and a plurality of network communications protocol stacks using deferred protocol stack association

Assignee: EMC Corporation
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 7,734,829
App. No.
10/864,266
Filed
Jun 9, 2004
Granted
Jun 8, 2010
Kind
B2
Art Unit
2445
USPC
709/250
Abstract

Methods, systems, and computer program products for controlling communications between network applications and multiple network communications protocol stacks using deferred protocol stack association are disclosed. In one method, a socket creation function call is received from an application. A socket creation function call is terminated, a pseudo communications endpoint is created, and a socket descriptor corresponding to the pseudo communications endpoint is returned to the application. At least one subsequent sockets-related function call is received. Based on the subsequent sockets-related function call, it is determined whether the application is a client or a server. In response to determining that the application is a server, communications endpoints are created on each of the network communications protocol stacks and server-related sockets function calls are made to each of the underlying protocol stacks. In response to determining that the application is a client, a protocol stack is selected, a protocol-stack-specific communications endpoint is created, and client-related sockets function calls are made to the underlying protocol-stack.

Claims (77)

1. A method for transparently controlling communications between a network application and a plurality of network communications protocol stacks, the method comprising:

in a stack multiplexer layer located between the network application and the plurality of network communication protocol stacks:

(a) intercepting a socket creation function call generated by the network application using an application programming interface;

(b) creating a pseudo communications endpoint in response to the socket creation function call;

(c) intercepting at least one sockets-related function call to the socket of step (a);

(d) determining whether the application comprises a client or a server based on the sockets-related function call; and

(e) based on the determination in step (d), creating at least one protocol-stack-specific communications endpoint and making client- or server-related socket function calls from the stack multiplexer layer to at least one of the plurality of network communications protocol stacks using the at least one protocol-stack-specific communications endpoint and the application programming interface.

2. The method of claim 1 wherein, in response to determining that the application comprises a server, step (e) includes:

(i) creating a protocol-stack-specific communications endpoint corresponding to each of the communications protocol stacks and storing descriptors for each protocol-stack-specific communications endpoint; and

(ii) making server-related socket function calls for each of the protocol-stack-specific communications endpoints.

3. The method of claim 1 wherein intercepting a socket creation function call and creating a pseudo communications endpoint includes terminating the socket creation function call and returning a socket descriptor to the application, the socket descriptor being associated with the pseudo communications endpoint.

4. The method of claim 1 wherein intercepting at least one sockets-related function call includes intercepting a bind function call for binding the pseudo communications endpoint to a local IP address and port and wherein determining whether the application comprises a client or a server includes identifying the application as a server based on the bind function call.

5. The method of claim 1 wherein intercepting at least one sockets-related function call includes intercepting a listen function call for listening on the pseudo communications endpoint and wherein determining whether the application comprises a client or server includes identifying the application as a server based on the presence of the listen function call.

6. The method of claim 1 wherein intercepting at least one sockets-related function call includes intercepting a connect call and wherein determining whether the application comprises a client or a server comprises identifying the application as a client based on the presence of the connect function call.

7. The method of claim 4 wherein making server-related socket function calls for each of the protocol-stack-specific communication endpoints includes making a bind function call to each of the underlying protocol-stacks.

8. The method of claim 5 wherein making server-related socket function calls for each of the protocol-stack-specific communication endpoints includes making a listen function call to each of the underlying protocol-stacks.

9. The method of claim 8 comprising intercepting an accept function call.

10. The method of claim 9 comprising, in response to the accept function call, monitoring each of the protocol-stack-specific communication endpoints for incoming connection requests.

11. The method of claim 10 comprising receiving connection requests on any of the protocol-stack-specific communication endpoints, accepting the connection requests, and forwarding new socket descriptors to the application for communicating with the remote applications.

12. The method of claim 1 comprising, in response to identifying the application as a client, performing a stack lookup to select a network communications protocol stack from the plurality of network communications protocol stacks, creating a communications endpoint associated with the selected communications protocol stack, the communications endpoint being directly associated with the socket created by the application, thereby bypassing the pseudo communications endpoint.

13. The method of claim 12 comprising sending and receiving data via the socket created by the application and the communication endpoint.

14. The method of claim 1 comprising, in response to identifying the application as a client, performing a stack lookup to select a network communications protocol stack from the plurality of network communications protocol stacks, creating a communications endpoint associated with the selected communications protocol stack, and associating the communication endpoint with the pseudo communications endpoint.

15. The method of claim 14 comprising, in response to identifying the remote application as a client, making a connect function call using the protocol-stack-specific communication endpoint.

16. The method of claim 15 comprising receiving a return code from the protocol-stack-specific connect function call in response to a connection acceptance by a remote network communications protocol stack.

17. The method of claim 16 comprising returning the connect return code to the client and populating remote endpoint address data structures in the pseudo communications endpoint.

18. The method of claim 17 comprising sending data to and receiving data from the remote application using the pseudo communications endpoint and the protocol-stack-specific communications endpoint.

19. The method of claim 18 wherein sending data to and receiving data from the remote application using the pseudo communications endpoint and the protocol-stack-specific socket includes intercepting send function calls and making send function calls via the protocol-stack-specific socket and intercepting receive function calls and making receive function calls via the protocol-stack-specific socket.

20. A method for controlling communications between a network application and a plurality of network communications protocol stacks, the method comprising:

in a stack multiplexer layer located between the network application and the plurality of network communications protocol stacks:

(a) intercepting a socket creation function call generated by the network application using an application programming interface;

(a) receiving a socket creation function call for creating a socket for communications between a network application and one of a plurality of network communications protocol stacks;

(b) deferring association between the socket and one or more of the network communications protocol stacks until a determination can be made as to whether the application is a client or a server; and

(c) in response to determining whether the application is a client or a server, associating the socket with one or more of the network communications protocol stacks by making at least one socket related function call from the stack multiplexer layer to the one or more network communications protocol stacks using the application programming interf ace.

21. A system for controlling communication between a local network application and a plurality of communications protocol stacks, the system comprising:

within a computer:

(a) a stack multiplexer layer located between the network application and the plurality of communications protocol stacks, the stack multiplexer layer for receiving a socket-creation function call generated by the local network application using an application programming interface, for terminating the socket-creation function call, and for making a protocol-stack-specific socket function call from the stack multiplexer layer to at least one of plurality of network communications protocol stacks, using the application programming interface, and based on the socket creation function call to create at least one protocol-stack-specific communications endpoint; and

(b) the plurality of network communications protocol stacks for transporting data between the local network application and a remote application via the at least one protocol-stack-specific communications endpoint.

22. The system of claim 21 wherein the stack multiplexer layer is adapted to determine whether the local application comprises a client or a server, and, in response to determining that the local application is a server, the stack multiplexer layer is adapted to create a protocol-stack-specific communications endpoint on each of the network communications protocol stacks, to intercept server-related socket function calls, and to make the server-related socket function calls to each of the communications protocol stacks.

23. The system of claim 22 wherein the stack multiplexer layer is adapted to make bind function calls to each of the network communications protocol stacks.

24. The system of claim 23 wherein the stack multiplexer layer is adapted to make listen function calls to each of the network communications protocol stacks.

25. The system of claim 24 wherein the stack multiplexer layer is adapted to monitor the network communications protocol stacks for incoming connection requests and to accept received connection requests on behalf of the application.

26. The system of claim 21 wherein the stack multiplexer layer is adapted to determine whether the local application comprises a client or a server, and, in response to determining that the local application comprises a client, the stack multiplexer layer is adapted to select one of the plurality of network communications protocol stacks, to intercept client sockets-related function calls, and to make the client-related socket function calls to the selected network communications protocol stack.

27. The system of claim 26 wherein the stack multiplexer layer is adapted to make a connect function call to the selected network communications protocol stack.

28. The system of claim 27 wherein the stack multiplexer layer is adapted to make a receive function call to the selected network communications protocol stack.

29. The system of claim 28 wherein the stack multiplexer layer is adapted to make a send function call to the selected network communications protocol stack.

30. The system of claim 21 wherein the at least one protocol-stack-specific communications endpoint comprises at least one protocol control block.

31. The system of claim 21 wherein the at least one protocol-stack-specific communications endpoint comprises at least one stream.

32. The system of claim 21 wherein the at least one protocol-stack-specific communications endpoint comprises at least one socket.

33. The system of claim 21 wherein the network communications protocol stacks include TCP/IP protocol stacks.

34. The system of claim 33 wherein the network communications protocol stacks include at least one software-implemented TCP/IP protocol stack.

35. The system of claim 33 wherein the network communications protocol stacks include at least one hardware-implemented TCP/IP protocol stack.

36. A computer program product comprising computer-executable instructions embodied in a computer-readable medium for performing steps comprising:

at a stack multiplexer layer located between a network application and a plurality of network communications protocol stacks:

(a) intercepting a socket creation function generated by the network application using an application programming interface;

(b) creating a pseudo communications endpoint in response to the socket creation function call;

(c) intercepting at least one sockets-related function call relating to the socket of step (a);

(d) determining whether the application comprises a client or a server based on the sockets-related function call; and

(e) based on the determination in step (d), creating at least one protocol-stack-specific communications endpoint and making client- or server-related socket function calls from the stack multiplexer layer to at least one of the plurality of network communications protocol-stacks using the application programming interface and the at least one protocol-stack-specific communications endpoint.

37. The computer program product of claim 36 wherein, in response to determining that the application comprises a server, step (e) includes:

(i) creating a protocol-stack-specific communications endpoint corresponding to each of the communications protocol stacks and storing descriptors for each protocol-stack-specific communications endpoint; and

(ii) making server-related socket function calls for each of the protocol-stack-specific communications endpoints.

38. The computer program product of claim 36 wherein intercepting at least one socket creation function call and creating a pseudo communications endpoint includes terminating the socket creation function call returning a socket descriptor to the application, the socket descriptor being associated with the pseudo communications endpoint.

39. The computer program product of claim 36 wherein intercepting at least one sockets-related function call includes intercepting a bind function call for binding the pseudo communications endpoint to a local IP address and port and wherein determining whether the application comprises a client or a server includes identifying the application as a server based on the bind function call.

40. The computer program product of claim 36 wherein intercepting at least one sockets-related function call includes intercepting a listen function call for listening on the pseudo communications endpoint and wherein determining whether the application comprises a client or server includes identifying the application of the server based on the presence of the listen function call.

41. The computer program product of claim 36 wherein intercepting at least one sockets-related function call includes intercepting a connect call and wherein determining whether the application comprises a client or a server comprises identifying the application as a client based on the presence of the connect function call.

42. The computer program product of claim 39 wherein making server-related socket function calls for each of the protocol-stack-specific communication endpoints includes making a bind function call to each of the underlying protocol stacks.

43. The computer program product of claim 40 wherein making server-related socket function calls for each of the protocol-stack-specific communications endpoints includes making a listen function call to each of the underlying protocol-stacks.

44. The computer program product of claim 43 comprising intercepting an accept function call.

45. The computer program product of claim 44 comprising, in response to the accept function call, monitoring each of the protocol-stack-specific communications endpoints for incoming connection requests.

46. The computer program product of claim 45 comprising receiving connection requests on any of the protocol-stack-specific communications endpoints, accepting the connection requests, and forwarding new socket descriptors to the application for communicating with the remote application.

47. The computer program product of claim 36 comprising, in response to identifying the application as a client, performing a stack lookup to select a network communications protocol stack from the plurality of network communications protocol stacks, creating a communications endpoint associated with the selected network communications protocol stack, and associating the communications endpoint directly with the socket created by the application, thereby bypassing the pseudo communications endpoint.

48. The computer program product of claim 47 comprising sending and receiving data via the socket created by the application and the communications endpoint.

49. The computer program product of claim 36 comprising, in response to identifying the application as a client, performing a stack lookup to select a network communications protocol stack form the plurality of network communications protocol stacks, creating a communication endpoint associated with the selected communications protocol stack, and associating the socket with the pseudo communications endpoint.

50. The computer program product of claim 49 comprising, in response to identifying the remote application as a client, making a connect function call using the protocol-stack-specific communications endpoint.

51. The computer program product of claim 50 comprising receiving a return code from the protocol-stack-specific connect function call in response to a connection acceptance by a remote network communications protocol stack.

52. The computer program product of claim 51 comprising returning the connect return code to the client and populating remote endpoint address data structures in the pseudo communications endpoint.

53. The computer program product of claim 52 comprising sending data to and receiving data from the remote application using the pseudo communications endpoint and the protocol-stack-specific communications endpoint.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2004
From: JONES, JAMES GREGORY
To: EMC CORPORATION
Reel/Frame 015457/0721 →
Continuity (1)
Related Publication 20050276281A1 · Dec 15, 2005