US2008279208A1PendingUtilityA1

System and method for buffering data received from a network

51
Assignee: WALLS JEFFREY JOELPriority: Feb 8, 2003Filed: Jul 21, 2008Published: Nov 13, 2008
Est. expiryFeb 8, 2023(expired)· nominal 20-yr term from priority
H04L 49/90H04L 49/9047G06F 5/06H04L 49/9021H04L 49/901G06F 2205/064
51
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A system for buffering data received from a network comprises a network socket, a plurality of buffers, a buffer pointer pool, receive logic, and packet delivery logic. The buffer pointer pool has a plurality of entries respectively pointing to the buffers. The receive logic is configured to pull an entry from the pool and to perform a bulk read of the network socket. The entry points to one of the buffers, and the receive logic is further configured to store data from the bulk read to the one buffer based on the entry. The packet delivery logic is configured to read, based on the entry, the one buffer and to locate a missing packet sequence in response to a determination, by the packet delivery logic, that the one buffer is storing an incomplete packet sequence. The packet delivery logic is further configured to form a complete packet sequence based on the incomplete packet sequence and the missing packet sequence.

Claims

exact text as granted — not AI-modified
1 . A system for buffering data from a network, comprising:
 a network socket;   a plurality of pre-allocated buffers;   a buffer pointer pool having a plurality of entries respectively pointing to the buffers;   receive logic configured to pull an entry from the pool and to perform a bulk read of the network socket, the entry pointing to one of the buffers, the receive logic further configured to store data from the bulk read to the one buffer based on the entry; and   packet delivery logic configured to read, based on the entry, the one buffer and to locate a missing packet sequence in response to a determination, by the packet delivery logic, that the one buffer is storing an incomplete packet sequence, the packet delivery logic further configured to form a complete packet sequence based on the incomplete packet sequence and the missing packet sequence.   
     
     
         2 . The system of  claim 1 , wherein each of the buffers is pre-allocated. 
     
     
         3 . The system of  claim 1 , wherein the receive logic is configured to insert the entry into a queue, and wherein the packet delivery logic is configured to pull the entry from the queue. 
     
     
         4 . The system of  claim 3 , wherein the packet delivery logic is configured to search the queue, in response to the determination, for an entry pointing to at least one data packet within the missing packet sequence. 
     
     
         5 . The system of  claim 1 , wherein the receive logic is configured to run on a first operating system thread, and wherein the packet delivery logic is configured to run on a second operating system thread. 
     
     
         6 . The system of  claim 1 , wherein the receive logic is configured to perform a scan of the one buffer and to identify, based on the scan, a partial packet stored in the one buffer, the receive logic further configured to write the partial packet to another of the buffers. 
     
     
         7 . The system of  claim 1 , wherein the receive logic is configured to perform a scan of the one buffer and to identify, based on the scan, a last complete packet of the one buffer, the receive logic further configured to store, in the one buffer, data indicative of the last complete packet, wherein the packet delivery logic is configured to identify the incomplete packet sequence based on the data that is indicative of the last complete packet. 
     
     
         8 . The system of  claim 7 , wherein the data indicative of the last complete packet comprises a pointer pointing to a starting address of the one buffer. 
     
     
         9 . The system of  claim 1 , wherein the missing packet sequence comprises at least two data packets consecutively transmitted from a remote transmitting unit. 
     
     
         10 . The system of  claim 1 , wherein the packet delivery logic is configured to form the complete packet sequence by inserting data packets of the missing packet sequence between data packets of the incomplete packet sequence. 
     
     
         11 . The system of  claim 1 , wherein the packet delivery logic is configured to push the entry to the pool once the data has been read from the one buffer thereby freeing the one buffer for storing other data. 
     
     
         12 . The system of  claim 1 , wherein the receive logic is configured to store the missing packet sequence to one of the buffers, and wherein the packet delivery logic is configured to search the entries in response to the determination to locate an entry pointing to the one buffer storing the missing packet sequence. 
     
     
         13 . The system of  claim 12 , wherein the packet delivery logic is configured to retrieve, based on the one entry, the missing packet sequence and to insert the retrieved missing packet sequence between data packets of the incomplete packet sequence. 
     
     
         14 . A method for buffering data from a network, comprising:
 storing, into a buffer pointer pool, entries respectively pointing to one of a plurality of buffers;   pulling an entry from the pool, the entry pointing to one of the buffers;   storing data, from a bulk read of a network socket, to the one buffer based on the entry;   inserting the entry into a queue;   reading the one buffer based on the inserted entry;   determining, based on the reading, that the one buffer is storing an incomplete packet sequence, the incomplete packet sequence comprising at least two non-sequential data packets; and   forming, in response to the determining, a complete packet sequence based on the incomplete packet sequence.   
     
     
         15 . The method of  claim 14 , further comprising pre-allocating each of the buffers. 
     
     
         16 . The method of  claim 14 , wherein the storing to the one buffer is performed by logic running on a first operating system thread, and wherein the determining is performed by logic running on a second operating system thread. 
     
     
         17 . The method of  claim 14 , further comprising:
 scanning the one buffer;   identifying a partial packet based on the scanning; and   writing the partial packet to another of the buffers.   
     
     
         18 . The method of  claim 14 , further comprising:
 identifying a last complete packet of the one buffer; and   storing, in the one buffer, data indicative of the last complete packet.   
     
     
         19 . The method of  claim 18 , wherein the data indicative of the last complete packet comprises a pointer pointing to a starting address of the one buffer. 
     
     
         20 . The method of  claim 14 , further comprising freeing the one buffer for storing other data, wherein the freeing comprises pushing the entry to the pool. 
     
     
         21 . The method of  claim 14 , wherein the forming comprises locating a sequence of data packets missing from the incomplete packet sequence. 
     
     
         22 . The method of  claim 21 , wherein the forming comprises inserting the sequence of data packets between the at least two non-sequential data packets. 
     
     
         23 . The method of  claim 21 , wherein the forming comprises inserting the sequence of missing data packets between the at least two non-sequential data packets. 
     
     
         24 . The method of  claim 21 , wherein the locating comprises searching the queue for an entry pointing to at least one of the data packets within the sequence of missing data packets. 
     
     
         25 . The method of  claim 24 , wherein the searching is performed in response to the determination.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.