IP Library Granted Patent US 8,521,955
Granted Patent B2
US 8,521,955 · App. 13/039,642 · Granted Aug 27, 2013

Aligned data storage for network attached media streaming systems

Inventors: Ambalavanar Arulambalam (Macungie, PA); Richard J. Byrne (Hillsborough, NJ); Jeffrey L. Timbs (Austin, TX); Nevin C. Heintze (Worthington, OH); Silvester Tjandra (Singapore, SG); Eu Gene Goh (Singapore, SG); Nigamanth Lakshiminarayana (Bangalore, IN)
Assignee: LSI 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 8,521,955
App. No.
13/039,642
Granted
Aug 27, 2013
Kind
B2
Abstract

Described embodiments provide a server for transferring data packets of streaming data sessions between devices. A redundant array of inexpensive disks (RAID) array having one or more stripe sector units (SSU) stores media files corresponding to the one or more data sessions. The RAID control module receives a request to perform the write operation to the RAID array beginning at a starting data storage address (DSA) and pads the data of the write operation if the amount of data is less than a full SSU of data, such that the padded data of the write operation is a full SSU of data. The RAID control module stores the full SSU of data beginning at a starting data storage address (DSA) that is aligned with a second SSU boundary, without performing a read-modify-write operation.

Claims (53)

1. A server for transmitting and receiving data packets corresponding to one or more streaming data sessions between one or more playback devices over at least one network connection, the server comprising:

a traffic manager adapted to, for a write operation of received data corresponding to the one or more data sessions, i) determine one or more header fields of the received data, and ii) provide a write request to a RAID control module;

a control processor adapted to perform processing on the received data;

a shared memory adapted to buffer received data;

a storage medium adapted to store media files corresponding to the one or more data sessions, wherein the storage medium is a redundant array of inexpensive disks (RAID) array having one or more stripe sector units (SSU);

the RAID control module configured to receive a request to perform the write operation to the RAID array beginning at a starting data storage address (DSA);

means for padding the data of the write operation if the amount of data is less than a full SSU of data, such that the padded data of the write operation is a full SSU of data, wherein the RAID control module includes means for causing storage of the full SSU of data beginning at a starting data storage address (DSA) that is aligned with a second SSU boundary, without performing a read-modify-write operation.

2. The server of claim 1 , wherein:

in response to receiving a request to perform the write operation to the RAID array beginning at a starting data storage address (DSA) that is aligned with an SSU boundary:

the RAID control module is further adapted to determine an SSU number of the request by dividing the requested DSA by a product of a chunk size (K) of the RAID array and a number that is one less than a number of disks in the RAID array;

the traffic manager is further adapted to determine whether the last sector of data of the write operation is aligned with a sector boundary by dividing the amount of data of the write operation by a sector size of the RAID array; and

the RAID control module is further adapted to write a full SSU of data containing the requested DSA to a stripe having the determined stripe number.

3. The server of claim 2 , wherein the traffic manager adds padding to any incomplete sector in the additional data to be stored, so as to include a full sector of data, and the RAID control module adds padding to the additional data to be stored, so as to include a full SSU of data.

4. The server of claim 3 , wherein the traffic manager is adapted to add padding to any incomplete sector by subtracting the number of data bytes in the incomplete sector from the sector size of the RAID array, wherein the result is the number of bytes to be padded.

5. The server of claim 4 , wherein the padding comprises setting the bytes to be padded equal to a default value.

6. The server of claim 1 , wherein the control processor is further adapted to:

in response to receiving a request to perform the write operation to the RAID array beginning at a starting data storage address (DSA) that is not aligned with an SSU boundary:

initiate a read-modify-write operation to i) read a block retrieval of an SSU aligned object, the SSU aligned object including the data located at the DSA in the request; ii) modify the SSU aligned object to include the data of the write operation, and iii) write an SSU of data to be written back to the RAID array, aligned with an SSU boundary and including the DSA identified in the request.

7. The server of claim 1 , wherein the RAID control module is adapted to restrict write operations to the RAID array so as to only include storage of one or more full SSUs.

8. The server of claim 1 , wherein the server further comprises:

a memory arbiter adapted to manage accesses to the shared memory, wherein the shared memory is further adapted to store one or more keys corresponding to the one or more data sessions;

a key manager comprising i) a first memory for storing at least one master key of the server, ii) a second memory for storing one or more keys corresponding to the one or more data sessions, and iii) an encryption/decryption processor adapted to encrypt and decrypt data; and

an encryption/decryption processor that is adapted to:

i) encrypt, using the at least one master key, the one or more keys corresponding to the one or more data sessions, and provide the encrypted one or more keys to the memory arbiter for storage to the shared memory, and

ii) retrieve the encrypted one or more keys from the shared memory by way of the memory arbiter, and decrypt, using the at least one master key, the encrypted one or more keys, wherein the decrypted one or more keys are not accessible to modules outside of the key manager.

9. The server of claim 8 , wherein the encryption/decryption engine is further adapted to employ the decrypted one or more keys to decrypt data packets for storage on the storage medium and encrypt data packets for transmission to the one or more playback devices.

10. A method of processing, by a media server, data packets corresponding to one or more streaming data sessions between one or more playback devices over at least one network connection, the method comprising:

determining, by a traffic manager, one or more header fields of received data for a received write operation corresponding to the one or more data sessions, i) determine and ii) provide the received data to a RAID control module;

receiving, by a RAID control module from the traffic manager, a request to perform the write operation to a storage medium of the server at a starting data storage address (DSA), wherein the storage medium is a redundant array of inexpensive disks (RAID) array having one or more stripe sector units (SSU);

padding the data of the write operation if the amount of data is less than a full SSU of data, wherein the padded data of the write operation is a full SSU of data;

writing, to the storage medium, the full SSU of data beginning at a starting data storage address (DSA) that is aligned with a second SSU boundary, without performing a read-modify-write operation.

11. The method of claim 10 , wherein in response to receiving a request to perform the write operation to the RAID array beginning at a starting data storage address (DSA) that is aligned with an SSU boundary, the method further comprises:

determining, by the RAID control module, an SSU number of the request by dividing the requested DSA by a product of a chunk size (K) of the RAID array and a number that is one less than a number of disks in the RAID array;

determining, by the traffic manager, whether the last sector of data of the write operation is aligned with a sector boundary by dividing the amount of data of the write operation by a sector size of the RAID array; and

writing, by the RAID control module, a full SSU of data containing the requested DSA to a stripe having the determined stripe number.

12. The method of claim 11 , the method further comprising:

adding, by the traffic manager, padding to any incomplete sector in the additional data to be stored, so as to include a full sector of data; and

adding, by the RAID control module, padding to the additional data to be stored, so as to include a full SSU of data.

13. The method of claim 12 , wherein the step of adding, by the traffic manager, padding to any incomplete sector in the additional data to be stored, so as to include a full sector of data further comprises:

subtracting the number of data bytes in the incomplete sector from the sector size of the RAID array, wherein the result is the number of bytes to be padded.

14. The method of claim 13 , wherein the padding comprises setting the bytes to be padded equal to a default value.

15. The method of claim 10 , wherein in response to receiving a request to perform the write operation to the RAID array beginning at a starting data storage address (DSA) that is not aligned with an SSU boundary, the method further comprises:

initiating, by a control processor, a read-modify-write operation to i) read a block retrieval of an SSU aligned object, the SSU aligned object including the data located at the DSA in the request; ii) modifying the SSU aligned object to include the data of the write operation, and iii) write an SSU of data to be written back to the RAID array, aligned with an SSU boundary and including the DSA identified in the request.

16. The method of claim 10 , further comprising:

restricting, by the RAID control module, write operations to the RAID array so as to only include storage of one or more full SSUs.

17. The method of claim 10 , further comprising:

managing accesses to a shared memory, by a memory arbiter, wherein the shared memory is stores one or more keys corresponding to the one or more data sessions;

storing, by a key manager, at least one master key of the server and one or more keys corresponding to the one or more data sessions;

encrypting, by an encryption/decryption processor, using the at least one master key, the one or more keys corresponding to the one or more data sessions, and providing the encrypted one or more keys to the memory arbiter for storage to the shared memory; and

retrieving, by the encryption/decryption processor, the encrypted one or more keys from the shared memory by way of the memory arbiter, and decrypting, using the at least one master key, the encrypted one or more keys, wherein the decrypted one or more keys are not accessible to modules outside of the key manager.

18. The method of claim 17 , further comprising:

employing the decrypted one or more keys to decrypt data packets for storage on the storage medium and to encrypt data packets for transmission to the one or more playback devices.

19. The method of claim 10 , wherein the method is implemented by a machine executing program code encoded on a non-transitory machine-readable storage medium.

Assignments (9)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2020
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
To: BROADCOM INTERNATIONAL PTE. LTD.
Reel/Frame 053771/0901 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERROR IN RECORDING THE MERGER IN THE INCORRECT US PATENT NO. 8,876,094 PREVIOUSLY RECORDED ON REEL 047351 FRAME 0384. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 8, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 049248/0558 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF THE MERGER PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0910. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047351/0384 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0910 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: AGERE SYSTEMS LLC
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035365/0634 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
Continuity (12)
Continuation In Part 11226507 · Sep 13, 2005
Continuation In Part 11273750 · Nov 15, 2005
Continuation In Part 11364979 · Feb 28, 2006
Continuation In Part 11384975 · Mar 20, 2006
Provisional Application 60724692 · Oct 7, 2005
Provisional Application 60724464 · Oct 7, 2005
Provisional Application 60724462 · Oct 7, 2005
Provisional Application 60724463 · Oct 7, 2005
Provisional Application 60724722 · Oct 7, 2005
Provisional Application 60725060 · Oct 7, 2005
Provisional Application 60724573 · Oct 7, 2005
Related Publication 20130091237A1 · Apr 11, 2013