IP Library Granted Patent US 8,149,709
Granted Patent B2
US 8,149,709 · App. 11/479,143 · Granted Apr 3, 2012

Serialization queue framework for transmitting packets

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,149,709
App. No.
11/479,143
Granted
Apr 3, 2012
Kind
B2
Abstract

A method for sending packets. The method includes determining with which of a plurality of virtual serialization queues (VSQs) a first packet is associated, wherein a first application is attempting to issue the first packet, if a first VSQ of the plurality of VSQs has not exceeded a first bandwidth allocation, wherein the first VSQ is associated with the first packet and is associated with the first bandwidth allocation, then sending the first packet to the first VSQ, processing the first packet by a first virtual network stack (VNS) to obtain a first processed packet, wherein the first VSQ is associated with the first VNS, and sending the first processed packet to a physical network interface card (NIC) operatively connected to the first VNS. Alternatively, if the first VSQ has exceeded the first bandwidth allocation, then blocking the first application from issuing the first packet.

Claims (98)

1. A method for sending packets, comprising:

determining, based on a transport protocol associated with a first packet, a first virtual serialization queue (VSQ) of a plurality of virtual serialization queues (VSQs) with which the first packet is associated, wherein a first application is attempting to issue the first packet, wherein the plurality of VSQs are located in a single execution environment;

if the first VSQ has not exceeded a first bandwidth allocation associated with the first VSQ, then perform:

sending the first packet from the first application to the first VSQ;

queuing the first packet by the first VSQ;

sending the first packet from the first VSQ to a first virtual network stack (VNS) of a plurality of virtual network stacks (VNSs), wherein the first VNS is associated with the first VSQ, wherein the first VNS includes a transport layer corresponding to the transport protocol associated with the first packet, wherein the first VNS includes an Internet Protocol (IP) layer, wherein the plurality of VNSs are located in the single execution environment;

processing the first packet by the first VNS to obtain a first processed packet; and

sending the first processed packet from the first VNS to a physical network interface card (NIC) operatively connected to the first VNS; and

if the first VSQ has exceeded the first bandwidth allocation, then perform:

blocking the first application from issuing the first packet.

2. The method of claim 1 , further comprising:

determining, based on a transport protocol associated with a second packet, a second VSQ of the plurality of VSQs with which the second packet is associated, wherein the first application is attempting to issue the second packet;

if the second VSQ has not exceeded a second bandwidth allocation, wherein the second VSQ is associated with the second packet and is associated with the second bandwidth allocation, then perform:

sending the second packet to the second VSQ;

processing the second packet by a second VNS of the plurality of VNSs to obtain a second processed packet, wherein the second VSQ is associated with the second VNS; and

sending the second processed packet to a physical NIC operatively connected to the second VNS; and

if the second VSQ has exceeded the second bandwidth allocation, then perform blocking the first application from issuing the second packet.

3. The method of claim 2 , further comprising:

determining, based on a transport protocol associated with a third packet, a third VSQ of the plurality of VSQs with which the third packet is associated, wherein a second application is attempting to issue the third packet;

if the third VSQ has not exceeded a third bandwidth allocation, wherein the third VSQ is associated with the third packet and is associated with the third bandwidth allocation, then perform:

sending the third packet to the third VSQ;

processing the third packet by a third VNS of the plurality of VNSs to obtain a third processed packet, wherein the third VSQ is associated with the third VNS; and

sending the third processed packet to a physical NIC operatively connected to the third VNS; and

if the third VSQ has exceeded the third bandwidth allocation, then perform blocking the second application from issuing the third packet.

4. The method of claim 1 , further comprising:

attempting to reissue the first packet by the first application after a first period of time has elapsed and the first application was previously blocked.

5. The method of claim 1 , further comprising:

if the first application is blocked, then perform:

receiving a notification, by the first application, that the first application is no longer blocked; and

re-issuing the first packet by the first application after receiving the notification.

6. The method of claim 1 , wherein the transport layer is configured to only process packets associated with a single transport protocol.

7. The method of claim 6 , wherein the single transport protocol is one selected from a group consisting of Transmission Control Protocol (TCP) and User Datagram Protocol (UDP).

8. The method of claim 1 , wherein determining the first VSQ with which the first packet is associated comprises:

determining whether the first packet is associated with a connection; and

determining with which of the plurality of VSQs the connection is associated with, if the first packet is associated with a connection.

9. The method of claim 8 , further comprising:

if the first packet is not associated with the connection, then perform:

determining a socket associated with the first packet; and

determining with which of the plurality of VSQs the socket is associated.

10. The method of claim 9 , wherein determining with which of the plurality of VSQs the socket is associated with comprising:

querying a mapping data structure to determine to which of the plurality of VSQs the socket is mapped.

11. A system, comprising:

a first application configured to attempt to issue a first packet;

a plurality of virtual serialization queues (VSQs);

a plurality of virtual network stacks (VNSs);

a physical network interface card (NIC),

a physical processor;

a non-volatile computer usable storage medium having computer readable program code embodied therein, the computer readable program code adapted to, when executed by the processor, implement a method comprising:

determining, based on a transport protocol associated with the first packet, a first virtual serialization queue (VSQ) of the plurality of VSQs with which the first packet is associated, after the first application has attempted issuing the first packet, wherein the plurality of VSQs are located in a single execution environment;

if the first VSQ has not exceeded a first bandwidth allocation associated with the first VSQ, then:

enabling the first application to issue the first packet to the first VSQ;

sending the first packet from the first application to the first VSQ;

queuing the first packet by the first VSQ;

sending the first packet from the first VSQ to a first virtual network stack (VNS) of a plurality of virtual network stacks (VNSs), wherein the first VNS is associated with the first VSQ, wherein the first VNS includes a transport layer corresponding to the transport protocol associated with the first packet, wherein the first VNS includes an Internet Protocol (IP) layer, wherein the plurality of VNSs are located in the single execution environment;

processing the first packet by the first VNS to obtain a first processed packet; and

sending the first processed packet from the first VNS to the NIC, wherein the physical NIC is operatively connected to the first VNS; and

if the first VSQ has exceeded the first bandwidth allocation, then blocking the first application from issuing the first packet.

12. The system of claim 11 , further comprising:

a second VNS, wherein the first application is configured to attempt issuing a second packet,

wherein the method further comprises:

determining with which of the plurality of VSQs the second packet is associated, after the first application has attempted issuing the second packet;

if a second VSQ of the plurality of VSQs has not exceeded a second bandwidth allocation, wherein the second VSQ is associated with the second packet and is associated with the second bandwidth allocation, then:

enabling the first application to issue the second packet to the second VSQ;

processing the second packet by the second VNS to obtain a second processed packet, wherein the second VSQ is associated with the second VNS; and

sending the second processed packet to the NIC, wherein the physical NIC is operatively connected to the second VNS; and

if the second VSQ has exceeded the second bandwidth allocation, then blocking the first application from issuing the second packet.

13. The system of claim 12 , wherein the first VSQ is associated with a first configuration parameter and the second VSQ is associated with a second configuration parameter, wherein the first configuration parameter specifies that any thread accessing the first VSQ implement a mutual exclusion policy and wherein the second configured parameter specifies that multiple threads may concurrently access the second VSQ.

14. The system of claim 12 , further comprising:

a third VNS;

a second application, wherein the second application is configured to attempt issuing a third packet,

wherein the method further comprises:

determining with which of the plurality of VSQs the third packet is associated, after the second application has attempted to issue the third packet;

if a third VSQ of the plurality of VSQs has not exceeded a third bandwidth allocation, wherein the third VSQ is associated with the third packet and is associated with the third bandwidth allocation, then:

enabling the second application to issue the third packet to the third VSQ;

processing the third packet by the third VNS to obtain a third processed packet, wherein the third VSQ is associated with the third VNS; and

sending the third processed packet to the NIC, wherein the physical NIC is operatively connected to the third VNS; and

if the third VSQ has exceeded the third bandwidth allocation, then blocking the second application from issuing the third packet.

15. The system of claim 11 , wherein the transport layer is configured to only process packets associated with a single transport protocol.

16. The system of claim 15 , wherein the single transport protocol is one selected from the group consisting of Transmission Control Protocol (TCP) and User Datagram Protocol (UDP).

17. The system of claim 11 , wherein determining the first VSQ with which the first packet is associated comprises:

determining whether the first packet is associated with a connection; and

determining with which of the plurality of VSQs the connection is associated, if the first packet is associated with a connection.

18. The system of claim 17 , further comprising:

if the first packet is not associated with the connection, then perform:

determining a socket associated with the first packet; and

determining with which of the plurality of VSQs the socket is associated with, wherein determining with which of the plurality of VSQs the socket is associated with comprises querying a mapping data structure to determine which of the plurality of VSQs is mapped to the socket.

19. The system of claim 11 , wherein the system further comprises a plurality of virtual network interface cards (VNICs), and wherein sending the first processed packet from the first VNS to the NIC comprises:

sending the first packet from the first VNS to a first VNIC of the plurality of VNICs; and

sending the first packet from the first VNIC to the NIC.

20. A non-transitory computer readable medium comprising executable instructions for performing a method for sending packets, the method comprising:

determining, based on a transport protocol associated with a first packet, a first virtual serialization queue (VSQ) of a plurality of virtual serialization queues (VSQs) with which the first packet is associated, wherein a first application is attempting to issue the first packet, wherein the plurality of VSQs are located in a single execution environment;

if the first VSQ has not exceeded a first bandwidth allocation associated with the first VSQ, then perform:

sending the first packet from the first application to the first VSQ;

queuing the first packet by the first VSQ;

sending the first packet from the first VSQ to a first virtual network stack (VNS) of a plurality of virtual network stacks (VNSs), wherein the first VNS is associated with the first VSQ, wherein the first VNS includes a transport layer corresponding to the transport protocol associated with the first packet, wherein the first VNS includes an Internet Protocol (IP) layer, wherein the plurality of VNSs are located in the single execution environment;

processing the first packet by the first VNS to obtain a first processed packet; and

sending the first processed packet from the first VNS to a physical network interface card (NIC) operatively connected to the first VNS; and

if the first VSQ has exceeded the first bandwidth allocation, then perform blocking the first application from issuing the first packet.

Assignments (3)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0150 →
CORRECTIVE ASSIGNMENT TO REMOVE APPLICATION NUMBER 11/489926, PREVIOUSLY RECORDED AT REEL 018263 FRAME 0680. Recorded Nov 3, 2006
From: SRINIVASAN, THIRUMALAI; TRIPATHI, SUNAY; DROUX, NICOLAS G.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 018525/0888 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2006
From: TRIPATHI, SUNAY; CURTIS, BRUCE W.; CHU, HSIAO-KENG JERRY
To: SUN MICROSYSTEMS, INC.
Reel/Frame 018263/0680 →