Resources Contact Us Home
Browse by: INVENTOR PATENT HOLDER PATENT NUMBER DATE
 
 
Cryptography accelerator interface decoupling from cryptography processing cores
7568110 Cryptography accelerator interface decoupling from cryptography processing cores
Patent Drawings:Drawing: 7568110-10    Drawing: 7568110-11    Drawing: 7568110-12    Drawing: 7568110-13    Drawing: 7568110-4    Drawing: 7568110-5    Drawing: 7568110-6    Drawing: 7568110-7    Drawing: 7568110-8    Drawing: 7568110-9    
« 1 »

(10 images)

Inventor: Buer, et al.
Date Issued: July 28, 2009
Application: 10/350,902
Filed: January 23, 2003
Inventors: Buer; Mark (Gilbert, AZ)
Matthews; Donald P. (Morgan Hill, CA)
Assignee: Broadcom Corporation (Irvine, CA)
Primary Examiner: Moise; Emmanuel L
Assistant Examiner: Gergiso; Techane J
Attorney Or Agent: Sterne Kessler Goldstein & Fox, PLLC
U.S. Class: 713/189; 370/389; 713/153; 713/187
Field Of Search: 713/189; 713/153; 713/187; 370/389
International Class: G06F 11/30; H04L 12/28; H04L 9/00
U.S Patent Documents:
Foreign Patent Documents: 0876026; 1132800; WO 01/80483; WO 02/41599
Other References: Erich Nahum, David J. Yates, Sean O'Malley, Hilarie Orman, and Richard Schroeppel; "Parallelized Network Security Protocols"; 1996 IEEE; pp.145-154. cited by other.
Krishna et al., "Classification Engine in a Cryptography Acceleration Chip", U.S. Appl. No. 09/610,722, filed Jul. 6, 2000, 43 pgs. cited by other.
Krishna et al., "Distributed Processing in a Cryptography Acceleration Chip", U.S. Appl. No. 09/610,798, filed Jul. 6, 2000, 44 pgs. cited by other.
Deepakumara, J. et al., "FPGA Implementation of MD5 Hash Algorithm," Conference Proceedings of the Canadian Conference on Electrical and Computer Engineering, vol. II, pp. 919-924, May 13-16, 2001. cited by other.
Burnside, M. and Keromytis, A.D., "Accelerating Application-Level Security Protocols," The 11.sup.th IEEE International Conference on Networks, pp. 313-318, Sep. 28-Oct. 1, 2003. cited by other.
Jiang, S. et al., "Securing Web Servers against Insider Attack," Proceedings 17th Annual Computer Security Applications Conference, pp. 265-276, Dec. 10-14, 2001. cited by other.
"Server ECS", Mar. 9, 1998, [Retrieved from Internet Sep. 2, 2004], "http://home.expertcanmore.net/expert/servers.htm". cited by other.
IPSec Overview, Jun. 5, 2001, [Retrieved from Internet Sep. 2, 2004], "http://forsitesolutions.com/Techstuff/freeswan/inside.sub.--overview.htm- l.". cited by other.
"RFC 2402", Oct. 1998, [Retrieved from Internet Sep. 3, 2004], "http://www.ietf.org/rfc/rfc2402.txt?number=2402". cited by other.
Secure Products VMS115, VLSI Technology, Inc., Printed in USA, Document Control: VMS115, VI, 0, Jan. 1999, pp. 1-2. cited by other.
VMS 115 Data Sheet, VLSI Technology, Inc., a subsidiary of Philips Semiconductors, Revision 2:3, Aug. 10, 1999, pp. 1-64. cited by other.
Data Sheet 7751 Encryption Processor, Network Security Processors, Jun. 1999, pp. 1-84. cited by other.
Senie, D., "NAT Friendly Application Design Guidelines", Amaranth Networks, Inc., NAT Working Group, Internet-Draft, Sep. 1999, pp. 1-7. cited by other.
Floyd, S. and Jacobson, V., "Random Early Detection Gateways for Congestion Avoidance", IEEE/ACM Transactions on Networking, vol. 1, No. 4, Aug. 1993, pp. 397-413. cited by other.
Egevang, K. and Francis, P., "The IP Network Address Translator (NAT)", Network Working Group, Request for Comments: 1631, May 1994, pp. 1-10. cited by other.
Pall, G. S. and Zorn, G., "Microsoft Point-to Point Encryption (MPPE) Protocol", Microsoft Corporation, Network Working Group, Internet Draft, Updates: RFC 2118, Oct. 1999, pp. 1-12. cited by other.
Deutsch, P., "DEFLATE Compressed Data Format Specification Version 1.3", Aladdin Enterprises, Network Working Group, Request for Comments: 1951, May 1996, pp. 1-17. cited by other.
Kent, S. and Atkinson, R., "IP Authentication Header", Network Working Group, Request for Comments: 2402, printed from http://www.ietf.org/rfc/rfc2402.txt?number=2402, Nov. 1998, 21 pages. cited by other.
Kent, S. and Atkinson, R., "IP Encapsulating Security Payload (ESP)", Network Working Group, Request for Comments: 2406, printed from http:www.ietf.org/rfc/rfc2406.txt?number=2406, Nov. 1998, 21 pages. cited by other.
Maughan, D. et al., "Internet Security Association and Key Management Protocol (ISAKMP)", Network Working Group, Request for Comments: 2408, Nov. 1998, pp. 1-20. cited by other.
Harkins, D. et al., "The Internet Key Exchange (IKE)", Cisco Systems, Network Working Group, Request for Comments: 2409, Nov. 1998, pp. 1-12. cited by other.
Srisuresh, P., "Security Model with Tunnel-mode IPsec for NAT Domains", Lucent Technologies, Network Working Group, Request for Comments: 2709, Oct. 1999, pp. 1-11. cited by other.
Shenker, S. et al., "Specification of Guaranteed Quality of Service", Network Working Group, Request for Comments: 2212, Sep. 1997, pp. 1-20. cited by other.
Srisuresh, P. and Holdrege, M., "IP Network Address Translator (NAT) Terminology and Considerations", Lucent Technologies, Network Working Group, Request for Comments: 2663, Aug. 1999, pp. 1-30. cited by other.
Kent, S., and Atkinson, R., "Security Architecture for the Internet Protocol", Network Working Group, Request for Comments: 2401, Nov. 1998, pp. 1-66. cited by other.
Compression for Broadband Data Communications, BlueSteel Networks, Inc., Sep. 8, 1999, pp. 1-9. cited by other.
Securing and Accelerating e-Commerce Transactions, BlueSteel Networks, Inc., Revision 2.0, Oct. 20, 1999, pp. 1-7. cited by other.
Securing Broadband Communications, By BlueSteel Networks, Inc., Sep. 8, 1999, pp. 1-10. cited by other.
Keromytis, A.D. et al., "Implementing IPsec", Global Telecommunications Conference (Globecom), IEEE, Nov. 3, 1997, pp. 1948-1952. cited by other.
Pierson, L.G. et al., "Context-Agile Encryption for High Speed Communication Networks", Computer Communications Review, Association for Computing Machinery, vol. 29, No. 1, Jan. 1999, pp. 35-49. cited by other.
Sholander, P. et al.,. "The Effect of Algorithm-Agile Encryption on ATM Quality of Service", Global Telecommunications Conference (Globecom), IEEE, Nov. 3, 1997, pp. 470-474. cited by other.
Smirni, E. et al., "Evaluation of Multiprocessor Allocation Policies", Technical Report, Vanderbilt University, Online, 1993, pp. 1-21. cited by other.
Tarman, T.D. et al., "Algorithm-Agile Encryption in ATM Networks", IEEE Computer, Sep. 1998, vol. 31, No. 1, pp. 57-64. cited by other.
Wassal, A.G. and Hasan, M.A., "A VLSI Architecture for ATM Algorithm-Agile Encryption", Proceedings Ninth Great Lakes Symposium on VLSI, Mar. 4-6, 1999, pp. 325-328. cited by other.
Analog Devices: "Analog Devices and IRE Announce First DSP-Based Internet Security System-On-A-Chip", Analog Devices Press Release, Online, Jan. 19, 1999, pp. 1-3, printed from http://content.analog.com/pressrelease/prdisplay/0,1622,16,00.html.cited by other.
3Com: "3Com Launches New Era of Network Connectivity", 3Com Press Release, Jun. 14, 1999, pp. 1-3. cited by other.
Analog Devices: ADSP2141 SafeNetDPS User's Manual, Revision 6, Analog Devices Technical Specifications, Mar. 2000, XP002163401, pp. i-v and 1-82. cited by other.
Madson, C. and Glenn, R., "RFC 2403- The Use of HMAC-MD5-96 within ESP and AH", IETF Request for Comments: 2403, Nov. 1998, printed from http://csrc.nist.gov/ipsec/papers/rfc2403-hmacmd5.txt, 7 Pages. cited by other.
Kent, S. and Atkinson, R., "RFC 2406-IP Encapsulating Security Payload (ESP)", IETF Request for Comments: 2406, Nov. 1998, Retrieved from the Internet and Mar. 20, 2001, http://www.faqs.org/rfcs/frc2406.html, 5 Pages. cited by other.
Sedgewick, R., Algorithms in C--Third Edition, 1998, Addison Wesley, XP002163543, pp. 573-608. cited by other.
Schneider, B., Applied Cryptography, Second Edition, 1996, John Wiley & Sons, New York, cited in the application, p. 442, paragraph 18.7--p. 445 (pp. 436-445 enclosed). cited by other.
Stallings, W., "SHA: The Secure Hash Algorithm,"Dr. Dobb's Journal, Apr. 1994, pp. 32 and 34. cited by other.
European Search Report, from European Patent Appl. No. 03029195.9, 3 pages, dated Nov. 2, 2005. cited by other.
Final Rejection completed for U.S. Appl. No. 10/350,907 by Examiner Zachary A. Davis, mailed on Aug. 15, 2008, 17 pages. cited by other.









Abstract: Methods and apparatus are provided for decoupling a cryptography accelerator interface from cryptographic processing cores. A shared resource is provided at the cryptography accelerator interface having multiple input ports. References to data in the shared resource are provided to allow processing and ordering of data in preparation for processing by cryptographic processing cores without substantial numbers of separate buffers in the cryptographic processing data paths.
Claim: What is claimed is:

1. A cryptography accelerator, comprising: a plurality of input ports configured to receive data comprising header information and data blocks; a plurality of cryptographicprocessing cores, each cryptographic processing core having a plurality of data paths; an input buffer coupled to the plurality of input ports and cryptographic processing cores, wherein the input buffer is shared by the plurality of input ports and theplurality of data paths associated with each cryptographic processing core in the plurality of cryptographic processing cores; an input controller coupled to the plurality of input ports, wherein the input controller dynamically allocates resources ofthe input buffer to the plurality of input ports and to the plurality of data paths associated with each cryptographic processing core in the plurality of cryptographic processing cores; and wherein the shared input buffer is dynamically allocable byvarying a number of entries in a buffer pointer table allocated to each of the plurality of ports.

2. The cryptography accelerator of claim 1, wherein policy and security association information is extracted based on source and destination addresses and source and destination ports of the data blocks.

3. The cryptography accelerator of claim 1, wherein policy and security association information comprises key and algorithm information.

4. The cryptography accelerator of claim 1, wherein the plurality of input ports comprise a streaming interface port.

5. The cryptography accelerator of claim 4, wherein the plurality of input ports further comprise a memory mapped port.

6. The cryptography accelerator of claim 1, wherein the buffer pointer table comprises a plurality of pointers.

7. The cryptographic accelerator of claim 1, further comprising: policy security association lookup circuitry configured to receive header information and determine policy and security association information associated with the data blocks,wherein the policy and security association information is forwarded with the data blocks to cryptographic processing cores.

8. The cryptography accelerator of claim 7, wherein the policy security association lookup circuitry receives a pointer to header information.

9. A cryptography accelerator comprising: a plurality of input ports configured to receive data comprising header information and data blocks; a plurality of cryptographic processing cores; an input buffer coupled to the plurality of inputports and cryptographic processing cores, wherein the input buffer is shared by the plurality of input ports and the plurality of cryptographic processing cores; an input controller coupled to the plurality of input ports, wherein the input controllerdynamically allocates resources of the input buffer to the plurality of input ports and the plurality of cryptographic processing cores; and a buffer pointer table associated with the plurality of input ports, the buffer pointer table having a pluralityof entries configured to hold header information from the plurality of input ports, the plurality of entries referencing data blocks in the shared input buffer.

10. The cryptography accelerator of claim 9, further comprising: a data input unit load distributor configured to select entries from the buffer pointer table.

11. The cryptography accelerator of claim 10, further comprising: an output controller configured to receive buffer pointer table entries from the load distributor, pull data blocks corresponding to the entries from the input buffer, andforward the data blocks to a plurality of data paths associated with the plurality of cryptographic processing cores.

12. The cryptography accelerator of claim 11, further comprising a merge data unit coupled to the output controller and the policy security association lookup circuitry, wherein the merge data unit is configured to wait for the policy andsecurity association information and the corresponding data block before forwarding the policy and security association information along with the data block to a cryptographic processing core.

13. The cryptographic accelerator of claim 7, wherein the input controller is configured to write data blocks from the plurality of input ports into the input buffer and write entries corresponding to the data blocks into the buffer pointertable.

14. A method for data handling in a cryptography accelerator having a plurality of input ports and a plurality of cryptographic processing cores, comprising: each cryptographic processing core having a plurality of data paths; receiving dataat the plurality of input ports; dynamically allocating space in an input buffer shared by the plurality of input ports and the plurality of data paths associated with each cryptographic processing core in the plurality of cryptographic processing coresto the received data; and allocating space in the shared input buffer to data used by the a data path associated a cryptographic processing core to process the received data; and wherein the input buffer is dynamically allocated by varying the numberof entries in a buffer pointer table allocated to each of the plurality of input ports.

15. The method of claim 14, wherein the shared resource is a buffer shared by the plurality of input ports.

16. The method of claim 14, wherein the references are pointers to entries in the shared resource.

17. The method of claim 16, wherein the references are included in a buffer pointer table.

18. The method of claim 17, wherein the shared resource can be allocated based on needs of particular input ports.

19. A method for data handling in a cryptography accelerator having a plurality of input ports and a plurality of cryptographic processing cores comprising: receiving data at the plurality of input ports; dynamically allocating space in aninput buffer shared by the plurality of input ports and the plurality of cryptographic processing cores to the received data; allocating space in the shared input buffer to data used by the cryptographic processing core to process the received data; providing references to the received data in the shared input buffer, wherein the references identify the received data as well as the type of the received data; performing a policy security association lookup to determine policy and securityassociation information associated with the received data; and forwarding the received data along with policy and security association to the plurality of cryptographic processing cores.

20. A cryptography accelerator, comprising: a plurality of input ports configured to receive data comprising header information and data blocks; a plurality of cryptographic processing cores, each cryptographic processing core having aplurality of data paths; a bypass line coupling the plurality of input ports to a plurality of output ports; an input buffer coupled to the plurality of input ports and cryptographic processing cores, wherein the input buffer is shared by the pluralityof input ports and the plurality of data paths associated with each cryptographic processing core in the plurality of cryptographic processing cores; an input controller coupled to the plurality of input ports, wherein the input controller dynamicallyallocates resources of the input buffer to the plurality of input ports and to the plurality of data paths associated with each cryptographic processing core in the plurality of cryptographic processing cores; and a target list having a bypass listassociated with data blocks to be passed through the cryptography accelerator without cryptographic processing.

21. A cryptography accelerator, comprising: a plurality of input ports configured to receive data comprising header information and data blocks; a plurality of cryptographic processing cores; a bypass line coupling the plurality of inputports to a plurality of output ports; an input buffer coupled to the plurality of input ports and cryptographic processing cores, wherein the input buffer is shared by the plurality of input ports and the plurality of cryptographic processing cores andwherein the input buffer is dynamically allocated by varying the number of entries in a buffer pointer table allocated to each of the plurality of input ports; an input controller coupled to the plurality of input ports, wherein the input controllerdynamically allocates resources of the input buffer to the plurality of input ports and the plurality of cryptographic processing cores; and a target list having a bypass list associated with data blocks to be passed through the cryptography acceleratorwithout cryptographic processing.
Description: BACKGROUND OF THE INVENTION

1. Field of the Invention

The present application relates to cryptography accelerators. More specifically, the present application relates to methods and apparatus for data handling in cryptography accelerators.

2. Description of Related Art

Conventional cryptography accelerators include a variety of mechanisms for managing the exchange of data with external devices. In many conventional implementations, specialized data handling mechanisms are configured for specific ports. Portbuffers are preconfigured based on expected needs and requirements of particular ports and data path buffers are provided for implementation of cryptographic operations.

Mechanisms for performing cryptographic operations are described in Applied Cryptography, Bruce Schneier, John Wiley & Sons, Inc. (ISBN 0471128457), incorporated by reference in its entirety for all purposes. However, implementation ofspecialized data handling mechanisms for specific ports and providing buffers throughout a cryptography accelerator causes a variety of inefficiencies including data handling inefficiencies and inflexibility in managing different types of data.

It is therefore desirable to provide methods and apparatus for improving data handling with respect to some or all of the performance limitations noted above.

SUMMARY OF THE INVENTION

Methods and apparatus are provided for decoupling a cryptography accelerator interface from cryptographic processing cores. A shared resource is provided at the cryptography accelerator interface having multiple input ports. References to datain the shared resource are provided to allow processing and ordering of data in preparation for processing by cryptographic processing cores without substantial numbers of separate buffers in the cryptographic processing data paths.

In one embodiment, a cryptography accelerator is provided. The cryptography accelerator includes a plurality of input ports, a data input unit input controller, and policy security association lookup circuitry. The data input unit inputcontroller is coupled to the plurality of input ports. The data input unit input controller is configured to write data blocks from the plurality of input ports into an input buffer and write entries corresponding to the data blocks into a bufferpointer table. Policy security association lookup circuitry is configured to receive header information and determine policy and security association information associated with the data blocks. The policy and security association information isforwarded with the data blocks to cryptographic processing cores.

In another embodiment, a method for data handling in a cryptography accelerator is provided. A plurality of data sequences is received at one of a plurality of input ports. The plurality of data sequences are into a shared resource. Referencesto the data sequences are provided in the shared resource. The references identify the data sequences as well as the type of the data sequences. A policy security association lookup is performed to determine policy and security association informationassociated with the data sequences. The plurality of data sequences are forwarded along with policy and security association information to cryptographic processing circuitry.

In another embodiment, a cryptography accelerator is provided. The cryptography accelerator includes a plurality of input ports, a shared input buffer, a buffer pointer table, and policy security association lookup circuitry. The plurality ofinput ports are configured to receive data comprising header information and data blocks from entities external to the cryptography accelerator. The shared input buffer is associated with the plurality of input ports. The shared input buffer isconfigured to hold data blocks from the plurality of input ports. A buffer pointer table is associated with the plurality of input ports. The buffer pointer table has a plurality of entries configured to hold header information from the plurality ofinput ports. The plurality of entries reference data blocks in the shared input buffer. Policy security association lookup circuitry is configured to receive header information and determine policy and security association information associated withthe data blocks. The policy and security association information is forwarded with the data blocks to cryptographic processing cores.

These and other features and advantages of the present invention will be presented in more detail in the following specification of the invention and the accompanying figures, which illustrate by way of example the principles of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention may best be understood by reference to the following description taken in conjunction with the accompanying drawings, which are illustrative of specific embodiments of the present invention.

FIG. 1 is a diagrammatic representation of a system that can use the techniques of the present invention.

FIG. 2 is a diagrammatic representation of a cryptography accelerator containing processing cores and interfaces.

FIG. 3 is a diagrammatic representation of a cryptography accelerator having a data interface unit and a data routing unit.

FIG. 4 is a diagrammatic representation showing a data input unit.

FIG. 5 is a diagrammatic representation showing a pointer buffer list.

FIG. 6 is a diagrammatic representation showing a target list.

FIG. 7 is a diagrammatic representation showing data handling associated with a policy security association lookup unit.

FIG. 8 is a flow process diagram showing packet processing at an input interface.

FIG. 9 is a diagrammatic representation showing a data routing unit.

FIG. 10 is a flow process diagram showing packet processing at an output interface.

DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS

The present application relates to implementing a cryptography accelerator. More specifically, the present application relates to methods and apparatus for providing a cryptography accelerator capable of performing secure session operations.

Reference will now be made in detail to some specific embodiments of the invention including the best modes contemplated by the inventors for carrying out the invention. Examples of these specific embodiments are illustrated in the accompanyingdrawings. While the invention is described in conjunction with these specific embodiments, it will be understood that it is not intended to limit the invention to the described embodiments. On the contrary, it is intended to cover alternatives,modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims.

For example, the techniques of the present invention will be described in the context of a multiple port cryptography accelerator with multiple cores for performing particular cryptographic operations. However, it should be noted that thetechniques of the present invention can be applied to a variety of different chip architectures that perform authentication and encryption operations in general. In the following description, numerous specific details are set forth in order to provide athorough understanding of the present invention. The present invention may be practiced without some or all of these specific details. In other instances, well known process operations have not been described in detail in order not to unnecessarilyobscure the present invention.

FIG. 1 is a diagrammatic representation of one example of a processing system 100 in accordance with an embodiment of the present invention. As shown in FIG. 1, the present invention may be implemented in a stand-alone cryptography accelerator102 or as part of the system 100. Any logic, mechanism, or device operable to perform encryption, decryption, and/or authentication operations is referred to herein as a cryptography accelerator. In the described embodiment, the cryptographyaccelerator 102 is connected to a bus 104 such as a PCI bus via a standard on-chip PCI interface. The processing system 100 includes a processing unit 106 and a system memory unit 108. In typical implementations, the cryptography accelerator 102includes multiple ports used for communication with external devices such as the processing unit 106 and system memory unit 108. The processing unit 106 and the system memory unit 108 are coupled to the system bus 104 via a bridge and memory controller110.

Although the processing unit 106 may be the central processing unit (CPU) of a system 100, it does not necessarily have to be the CPU. It can be one of a variety of processors in a multiprocessor system. In one example, a LAN interface 114 isprovided to couple the processing system 100 to a local area network (LAN) to allow packet receipt and transmission. Similarly, a Wide Area Network (WAN) interface 112 can also be provided to connect the processing system to a WAN (not shown) such asthe Internet. The WAN interface manages in-bound and out-bound packets to allow automatic decryption and authentication processing.

According to various embodiments, the cryptography accelerator 102 is an application specific integrated circuit (ASIC) coupled to the processor 106. The cryptography accelerator 102 can also be a programmable logic device (PLD), fieldprogrammable gate array (FPGA), or other device coupled to the processor 106. According to specific embodiments, the cryptography accelerator 102 is implemented either on a card connected to the bus 104 or as a standalone chip integrated in the system100.

In other embodiments, the cryptography accelerator 102 itself is integrated into the processing core of a CPU of system 100, such as that available from Tensilica Corporation of Santa Clara, Calif. or ARC Cores of San Jose, Calif. In anotherembodiment, techniques and mechanisms of the present invention are integrated into a CPU such as a CPU available from Intel Corporation of San Jose, Calif. or AMD Corporation of Sunnyvale, Calif. By implementing cryptography accelerator functionalityentirely on the processor 106, a separate card or chip in the system 100 is not needed. In still other embodiments, the processing system 100 including the cryptography accelerator 102 is implemented as a system on a chip (SOC). The network interfaces,memory, processing core, and cryptography accelerator functionality are provided on a single integrated circuit device.

The cryptography accelerator 102 is capable of implementing various network security standards, such as Secure Sockets Layer/Transport Layer Security (SSL/TLS), which provide application-transparent encryption and authentication services fornetwork traffic. Network security standards such as SSL/TLS provide authentication through the use of hash algorithms and encryption through the use of encryption algorithms. Two commonly used hash algorithms are MD5 and the Secure Hash algorithm(SHA-1). Other hash algorithms such as MD4 and MD2 are also available. Two commonly used encryption algorithms are DES and RC4. Other encryption algorithms such as triple DES are also available. Authentication and encryption algorithms are describedin Applied Cryptography, Bruce Schneier, John Wiley & Sons, Inc. (ISBN 0471128457), incorporated by reference in its entirety for all purposes.

FIG. 2 is a diagrammatic representation of one example of a cryptography accelerator 201. The cryptography accelerator 201 includes an input interface 203 connected to a host such as an external processor. According to various embodiments, theinterface 203 receives information from the host for processing and sends information to the host when processing is completed. In typical implementations, the input interface include multiple ports. Each of the different ports may be used to provide adifferent interface to an external resource such as a host or network card. In one example, one port is a streaming interface port configured to allow the input of data streams for processing in the cryptographic processing cores. Another port is aGigabit MAC (media access control) interface configured to receive individual packets.

According to various embodiments, the Gigabit MAC provides packet processing such as collision detection, back pressure, and error detection for received data. In one example, another port is a memory mapped port allowing the cryptographyaccelerator to obtain data from memory associated with the host. Each of the different ports may include buffers of various sizes. In one example, the buffer size is determined based on the expected packet size. For example, much larger buffers wouldhave to be provided to hold incoming traffic for ports supporting 9 k byte packets than for ports that support only 2 k byte packets. In conventional implementations, a system designer would estimate optimal buffer sizes for the various ports. However,because each port maintains its own buffer, inefficiencies in buffer allocation can occur. Some port buffers may be underutilized while other ports receiving a large amount of traffic may not have sufficient buffer space.

In typical implementations, small buffers are also provided in data paths associated with cryptographic processing cores 217 and 209. These buffers are typically required to store data for various cryptography operations along various datapaths. Having a large number of separate, fixed sized buffers leads to inefficiencies in both chip design, cost, and resource allocation. Consequently, the techniques of the present invention provide mechanisms for efficiently allocating a sharedmemory resource that can be optimized for different ports as well as for data paths associated with cryptographic operations.

The shared resource allows the decoupling of the interface from the various cryptographic processing cores. In one example, shared buffers are provided in both input interface 203 and output interface (not shown). The shared resource can beallocated and reallocated based on the particular specifications of the input and output ports.

FIG. 3 is a diagrammatic representation of one example of a cryptography accelerator having a shared resource. The cryptography accelerator 301 includes a data input unit 303 having multiple input ports 311, 313, 315, and 317. In one example,the data input unit 303 takes data in a round robin fashion from each of the four input ports. The data input unit 303 can then allocate space in a shared resource, here a shared input buffer, for each of the received data blocks. Informationassociated with the data, such as data length, packet type, start of packet information, end of packet information, and ordering information is also maintained based on the associated input port identified.

Using information associated with the data, the data input unit 305 can then determine how the data should be processed. In one example, the data may require no processing at all, and may be forwarded to a bypass line 371 to allow output of thedata from the cryptography accelerator 301 with substantially no cryptographic operations performed on the data. In typical implementations, the cryptography accelerator 102 includes multiple ports used for communication with external devices such asthe processing unit 106 and system memory unit 108.

In a similar manner, the data input unit 303 may determine that the data from one of the input ports should be processed using one of the cryptographic processing core data paths 331, 333, 335, 337, 341, 343, 345, and 347. Any mechanism sharedby various input ports to buffer and distribute data to various cryptographic processing data paths is referred to herein as a data input unit. According to various embodiments, the data input unit 303 determines whether to forward data to cryptographicprocessing core blocks 339 or 349 based on load information.

The data input unit 303 is configurable to provide buffering for all the different data has in the device. As noted above, in typical implementations, individual buffers were provided not only for the various ports in a cryptography accelerator,but also for the various data paths in a device. According to various embodiments, a single shared resource is provided in the data input unit to provide for buffering the various ports in the cryptographic accelerator and the various data paths in thecryptography accelerator.

In some embodiments, the cryptography accelerator 301 also includes a data routing unit 305 having multiple output ports 351, 353, 355, and 357. Any mechanism shared by output ports to buffer cryptographically processed data is referred toherein as a data routing unit. According to various embodiments, the data routing unit manages the ordering and delay of the data targeted at the various output ports. In typical embodiments, individual buffers were also associated with each of thevarious output ports. However, the techniques of the present invention provide a shared resource for the various output ports. According to various embodiments, the various ports are not configured with fixed size buffers and each of the ports can bemodified to accommodate different types of traffic based on user needs. In one example, a particular output port may be configured to handle large size packets by allocating more buffer space in the data routing unit shared resource to that particularport.

FIG. 4 is a diagrammatic representation showing more detail on one example of a data input unit 401. Data input unit 401 includes input ports 411, 413, 415, and 417. In one embodiment, the input controller 421 takes data from each of the fourinput ports in round robin fashion. The input controller 421 determines if any input buffer space is available for a particular port. In one example, input controller 421 determines if buffer space is available in input buffer 441 by examining bufferpointer table 451. Buffer pointer table 451 includes a list of pointers each associated with a block of memory in input buffer 441. In one instance, each pointer in the buffer pointer table 451 references a 128 byte chunk of memory in the input buffer441. Consequently, it should be noted that the input buffer 441 does not have to be physically divided amongst the input ports in order to dynamically allocate buffer space for each of the various input ports. Although physically allocating the inputbuffer 441 to the various input ports is one possible mechanism for providing an allocable shared resource, the techniques of the present invention also provide for allocation of pointers to the input buffer 441.

According to various embodiments, blocks of pointers in the buffer pointer table 451 are allocated to the various input ports. The input controller 421 determines if any pointer associated with the input port is available. If a pointerassociated with the input port is free or available, the data in the input port is forwarded to input buffer 441 and the pointer is assigned to the data block. In one implementation, an entry in the buffer pointer table 451 lists the free pointersavailable and their associated input ports. In another implementation, each entry is associated with a flag indicating if the pointer is being used and what port the pointer is associated with. If no pointers associated with the input port oravailable, the input controller does not hold data from the input port, as all buffer space allocated to the input port has been consumed. Any mechanism for tracking data blocks in a shared resource where the data blocks are destined for cryptographicprocessing is referred to herein as a buffer pointer table. Any mechanism for allocating the pointers in the buffer pointer table to various data blocks is referred to herein as an input controller 421.

When the input controller 421 has assigned data pointers from the buffer pointer table 451, a load distribution unit 461 can select data from the buffer pointer table entries. The order for all data on a particular port is maintained since theload distribution unit can be configured to select data in order from a single buffer pointer table 451. According to various embodiments, load distribution unit 461 can select data referenced by the buffer pointer table 451 using a variety ofmechanisms. In one example, the load distribution unit 461 selects data from ports that have consumed all allocated buffer space. The load distribution unit can also select data entries if the data entries are entire packets. In another example, loaddistribution unit can select data in round-robin fashion. The load distribution unit also be configured to identify data associated with cryptographic processing.

As will be appreciated, a data destined for cryptographic processing is often processed based on information associated with the data block. In one example, a data block is processed after obtaining security association information associatedwith the data block. The security association information includes keys such as session keys, initialization vectors, and the particular algorithms needed to process the data. Security association data is often determined using combinations of sourceand destination addresses and source and destination port numbers. For example, a packet with a source of A and a destination of B may be determined to need triple DES processing, MD5 authentication, and a session key available to the cryptographicprocessing core from a particular memory address. The load distribution unit 461 identifies information needed for cryptographic processing of the data and provides a pointer to the information. In many instances, the pointer is a pointer to the headerof a packet stored in the input buffer 441.

According to various embodiments, the load distribution unit 461 passes information to target list 471. In one example, target list 471 includes multiple lists, each list associated with a particular data path. One list may be associated withbypass data that should be passed through the cryptography accelerator substantially without processing. Other lists may be associated with public key operation data paths. In one example, a modular exponentiation unit list is provided for performingmodulus operations on data in the input buffer 441. Still other lists include pointers to data blocks in buffer memory 441 requiring processing by one of the cryptographic accelerator course. The data pointer lists are associated with a header pointerlist that identifies how to derive information such as security association information for processing the data corresponding to the pointers in the data pointer list. The output controller 481 is responsible for forwarding data associated with thepointers in the target list to the various data paths. Typically, data associated with each of the lists in the target list 471 is pulled in round-robin fashion. In one example data associated with each list gets the same amount of bandwidth out of theinput buffer 441.

The input buffer allows storage of information for use in various cryptographic operations as well as the allocation of memory to various ports as provided by the buffer pointer table 451. FIG. 5 is a diagrammatic representation, of a bufferpointer table 501. According to various embodiments, the buffer pointer table 501 includes a free pointers entry 511 listing the available free pointers associated with free blocks in the input buffer memory. In one example, blocks of pointers areallocated to each of the various ports in the data input unit. For example, buffer pointer entry 521 and 523 are associated with port one. Buffer pointer entry 531 is associated with port two. Buffer pointer entries 541, 543, 545, 547, and 549 areassociated with port three. Buffer pointer entries 551 and 553 are associated with port 4. As long as free pointers are available for a particular port, an input controller can continue to pull data from the particular port, store the data in inputbuffer memory, and assign an available pointer associated with the port to the data block. However, when no free pointers are available for a particular port, the input controller no longer pulls data from that port. The port is blocked until space ismade available in the input buffer as represented by the buffer pointer table.

It should be noted that much of the load distribution processing and the data path decision processing is performed using pointers to blocks of memory in the input buffer. In a cryptography processing context, this provides important benefitsincluding the capability to process data and associated security association information along data paths where the data paths can be implemented substantially without data path buffers.

FIG. 6 is a diagrammatic representation of a target list. According to various embodiments, target list 601 includes multiple lists associated with various data paths. In one example, target list 601 includes a bypass list 643 associated withdata to be passed through the cryptography accelerator without cryptographic processing. A modular exponentiation buffer list 611 is provided for public key processing of data. According to various embodiments, merge data unit buffer list 621 and mergedata unit buffer list 623 are provided for data to be forwarded to cryptographic processing cores. Merge data unit buffer list 621 and 623 are associated with pointers to data that will be merged with security association information beforecryptographic processing is performed.

Consequently, merge data unit buffer lists 621 and 623 are linked to policy security association lookup unit header list 631. When a pointer is provided to merge data unit buffer list 621, a pointer is also provided to policy securityassociation lookup unit header list 631. The merge data unit buffer list 621 pointer allows later combination of data with security association information extracted from a policy security association lookup unit. When the data is combined with thesecurity association information, the data can be processed using one of a number of cryptographic processing cores.

FIG. 7 is a diagrammatic representation of data passed to a merge data unit. According to various embodiments, the output controller 781 associated with the data input unit 701 provides data 711 and 713 to a merge data unit 793. However, beforethe data 711 and header 713 can be processed using one of a number of cryptographic processing cores, the data typically is combined with security association information. According to various embodiments, the security association information is derivedby a policy security association lookup unit. In one embodiment, the policy security association lookup unit reads information from memory and prepends information to data 711 and header 713. The location in memory of the security association datastructure can be specified directly or by identifiers passed by the output controller 781. In one example the output controller 781 passes a security association handle 715 to the policy security association lookup unit 791.

In one example, the policy security association lookup unit 791 uses the information in the security association handle 715 to identify security association information. The information identified can be used for both inbound and outboundpackets to allow the packets to be classified into flows. In one instance, the security association handle 715 includes up to 2 k of the header of the associated packet. The policy security association lookup unit then issues a security associationupdate 717 to modify data such as sequence numbers associated with a flow.

The policy security association lookup unit 791 acquires security association data 721 and passes the security association data 725 to a merge data unit 793. The merge data unit 793 combines the security association data 723 with the data 711and header 713. It should be noted that the policy security association lookup unit processing may vary depending on whether the packet is an inbound packet or an outbound packet. For an outbound packet, the policy security association lookup unit mayalso be responsible for determining header information such as outer IP header information. For an inbound packet, the outer IP header information is included in the data 711 and header information 713. Various types of error checking can also beperformed by the policy security association lookup unit 791 to determine that the flow referenced by a security association handle 715 is a valid one.

It should be noted that each merge data unit 793 can then pass the combined data to one of multiple cryptography processing core data paths. In one example, two merge data units are provided in a cryptography accelerator having a data input unitand eight processing cores. The two merge data units are also associated with a single policy security association lookup unit. Each merge data is coupled to four cryptographic cores. In some examples, each merge data unit would select one of the fourcryptographic processing cores to handle data based on load.

FIG. 8 is a flow process diagram showing data handling in the cryptography accelerator. At 801, data is received from one of any number of input ports associated with the cryptography accelerator. As noted above, each port may be configured tohandle different types of traffic such as streaming, packet, large packet, or memory mapped data. At 803, a free buffer is pointer table is used to track the packet and the packet type. It should be noted that data is typically pulled in round-robinfashion from one of the input ports as long as free pointers are available in the buffer pointer table. According to various embodiments, blocks of pointers are allocated to each of the input ports. In this manner, the system designer can allocateinput buffer memory associated with the pointers to each of the various input ports based on the needs and requirements of each port or the corresponding traffic. At 805, the load distributor schedules the data sequence for processing on a data pathhaving the lowest load.

According to various embodiments, the load distributor schedules data sequences by scheduling the pointers in the buffer pointer table. At 811, the load distributor provides a pointer to a policy security association lookup unit list. It shouldbe noted that some data sequences may require no cryptographic core processing and may instead be provided to a bypass list or a public key processing list. At 813, the output controller pulls data from the input buffer along with any associated policysecurity association lookup unit header information. The output controller pulls data from the input buffer based on pointers provided in a target list. At 815, the policy security association lookup is performed using information such as headerinformation associated with the data sequence. At 821, a merge data unit combines the data sequence with the results of a policy security association lookup. At 823, input buffer memory and any associated free pointers are returned.

FIG. 9 is a diagrammatic representation of a data routing unit 901. As noted above, the data input unit provides the input interface for a cryptography accelerator while the data routing unit provides the output interface for the cryptographyaccelerator. According to various embodiments, the data routing unit manages the ordering of cryptographically processed data for the various egress output ports. The input controller 921 is coupled to a variety of data paths such as bypass, public keyprocessing, and cryptographic core processing data paths. According to various embodiments, data blocks in a data sequence may be received out of order by an input controller as several data paths may be associated with cryptographic processing cores. For example, blocks 1, 2, and 4 may be received through a first data path and blocks 3 and 5 may be received through a second data path. The data routing unit is configured to order the data blocks and provide them to the appropriate output port.

According to various embodiments, the input controller 921 writes data blocks to buffer memory and data block pointers to a buffer pointer table 951 in the order that the input controller receives them. In one example, pointers to blocks 1, 2,and 4 may be placed into a first port buffer list while pointers to blocks 3 and 5 may be placed in a second port buffer list. A routing unit 961 recognizes the ordering and pulls pointers in order and places the pointers in the target list 971. Inmany implementations, the target list 971 includes lists of pointers each associated with the various output ports. In one example, lists of pointers are provided in target list 971. In one example, four lists of pointers correspond to output ports911, 913, 915, and 917. Each pointer in the target list 971 corresponds to a block in output buffer 991. It should be noted that in the data input unit, the pointers in the buffer pointer table are allocable to the various input ports based on theparticular needs and requirements of the input ports.

In the data routing unit, however, the pointers in the target list 971 are allocable to the various output ports based upon the needs and requirements of the various output ports. In one example, output port 911 may be configured to supportlarge packets. Consequently, the large number of output buffer memory manager 991 would be allocated to output port 911. In one example, the routing unit 961 would pull a first block pointer associated with a flow and place the pointer into a bufferlist associated with a Gigabit MAC output port. The routing unit 961 would not pull another block from that particular flow until the second block pointer is pulled. In this manner, the routing unit 961 can pull data blocks in order from the bufferpointer table even if the blocks of data came from different data paths in the cryptographic accelerator.

It should be noted that although the blocks on a particular data path will typically be in order, the blocks received from multiple data paths by the input controller will not necessarily be in order. That is, blocks 3 and 5 in a sequence may bereceived along a data path before blocks 1, 2 and 4 are received from another data path. The routing unit 961 pulls pointers to data blocks in order from the buffer pointer table and places them in an output port list in the target list 971. The outputcontroller 981 uses the pointers in the target list 971 to identify data blocks in the output buffer 991 to forward to the output ports.

FIG. 10 is a flow process diagram showing data handling at an output interface associated with the cryptography accelerator. At 1001, input controller receives data from a data path. At 1003, data is written to the output buffer 991 and thepointer is written to the buffer pointer table 951. The routing unit 961 pulls data blocks in order from the buffer pointer table 951 at 1005. At 1011, the routing block forwards the pointers to the target buffer list upon determining that pointers areavailable in the target list. At 1013, the output controller may immediately forward data associated with the pointers in the target list or may wait until a packet size is reached before forwarding data out through a particular port.

While the invention has been particularly shown and described with reference to specific embodiments thereof, it will be understood by those skilled in the art that changes in the form and details of the disclosed embodiments may be made withoutdeparting from the spirit or scope of the invention. It is therefore intended that the invention be interpreted to include all variations and equivalents that fall within the true spirit and scope of the present invention.

* * * * *
 
 
  Recently Added Patents
Tread portion of an automobile tire
Computerized apparatus for identifying industries for potential transfer of a job function
Methods of packaging imager devices and optics modules, and resulting assemblies
Once daily formulations of tetracyclines
Vehicle running control system
Luminaire
Managing personal information on a network
  Randomly Featured Patents
Top housing for a ceiling fan
Methods of treating cancer with an antibody-drug conjugate
Display and key array for a handset
Friction facing in slip-controlled lockup clutch configuration
Coating method utilizing a polymer film and method of making metal-polymer laminates
Method of using scatterometry measurements to determine and control gate electrode profiles
Electroluminescence display apparatus
Apparatus for delivering button body
Biocompatible magnetic nanocrystal, powder of a biocompatible magnetic nanocrystal bearing a surface reactive group and preparations thereof
Aromatic derivatives comprising an aminoalkoxy chain and pharmaceutical compositions thereof