IP Library Granted Patent US 7,802,245
Granted Patent B2
US 7,802,245 · App. 11/412,915 · Granted Sep 21, 2010

Methods and apparatus for performing in-service upgrade of software in network processor

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,802,245
App. No.
11/412,915
Granted
Sep 21, 2010
Kind
B2
Abstract

Improved techniques are disclosed for performing an in-service upgrade of software associated with a network or packet processor. By way of example, a method of performing an in-service upgrade of code, storable in a memory associated with a packet processor and executable on the packet processor, from a first code version to a second code version, includes the following steps. A first step includes preparing for the upgrade by generating one or more write operations to effectuate the code upgrade from the first code version to the second code version. A second step includes updating the code from the first code version to the second code version by propagating the one or more write operations to the packet processor. A third step includes cleaning up after the updating step by reclaiming one or more memory locations available after the update step. As such, the storage of only a single version of the code in the memory associated with the packet processor is required.

Claims (38)

1. A method of performing an in-service upgrade of code, storable in a memory associated with a packet processor and executable on the packet processor, from a first code version to a second code version, comprising the steps of:

preparing for the upgrade by generating one or more write operations to effectuate the code upgrade from the first code version to the second code version, the preparing step comprising the steps of:

allocating an indirection address for a given flow function, wherein the indirection address points to an address for the given flow function in the first code version;

modifying one or more references to the given flow function to point to the indirection address for the given flow function;

generating the one or more write operations, wherein the one or more operations are operative to update the indirection address for the given flow function to point to an address for the given flow function in the second code version;

updating the code from the first code version to the second code version by propagating the one or more write operations to the packet processor; and

cleaning up after the updating step, the cleaning up step comprising the steps of:

modifying the one or more references to the given flow function to point to the address for the given flow function in the second code version; and

reclaiming one or more memory locations available after the update step;

wherein the preparing, updating and cleaning up steps require only the storage of a single version of the code in the memory associated with the packet processor.

2. The method of claim 1 , wherein the code being upgraded comprises one or more processing elements and the updating step further comprises, for each processing element, ceasing operation of at least a portion of the packet processor responsible for executing the processing element.

3. The method of claim 2 , wherein the updating step further comprises, for each processing element, propagating to the packet processor the one or more write operations associated with the processing element.

4. The method of claim 3 , wherein the updating step further comprises, for each processing element, restarting operation of the ceased portion of the packet processor.

5. The method of claim 4 , wherein the processing element comprises a functionally discrete block of code.

6. The method of claim 1 , wherein the first code version comprises an old code version and the second code version comprises a new code version.

7. The method of claim 1 , wherein the code executable on the packet processor comprises code for executing a packet classification function.

8. A packet processor configured to have code, storable in a memory associated with the packet processor and executable on the packet processor, upgraded from a first code version to a second code version by a process comprising the steps of:

preparing for the upgrade by generating one or more write operations to effectuate the code upgrade from the first code version to the second code version, the preparing step comprising the steps of:

allocating an indirection address for a given flow function, wherein the indirection address points to an address for the given flow function in the first code version;

modifying one or more references to the given flow function to point to the indirection address for the given flow function;

generating the one or more write operations, wherein the one or more operations are operative to update the indirection address for the given flow function to point to an address for the given flow function in the second code version;

updating the code from the first code version to the second code version by propagating the one or more write operations to the packet processor; and

cleaning up after the updating step, the cleaning up step comprising the steps of:

modifying the one or more references to the given flow function to point to the address for the given flow function in the second code version; and

reclaiming one or more memory locations available after the update step;

wherein the preparing, updating and cleaning up steps require only the storage of a single version of the code in the memory associated with the packet processor.

9. The packet processor of claim 8 , wherein the code being upgraded comprises one or more processing elements and the updating step further comprises, for each processing element, ceasing operation of at least a portion of the packet processor responsible for executing the processing element.

10. The packet processor of claim 9 , wherein the updating step further comprises, for each processing element, propagating to the packet processor the one or more write operations associated with the processing element.

11. The packet processor of claim 10 , wherein the updating step further comprises, for each processing element, restarting operation of the ceased portion of the packet processor.

12. The packet processor of claim 11 , wherein the processing element comprises a functionally discrete block of code.

13. The packet processor of claim 8 , wherein the first code version comprises an old code version and the second code version comprises a new code version.

14. The packet processor of claim 8 , wherein the code executable on the packet processor comprises code for executing a packet classification function.

15. The packet processor of claim 8 , wherein the packet processor is implemented on an integrated circuit.

16. The method of claim 1 , wherein the preparing step further comprises the step of building at least one tree associated with the second code version.

17. The method of claim 16 , wherein the one or more write operations are further operative to modify a root address to point to the at least one tree associated with the second code version instead of at least one tree associated with the first code version.

18. The method of claim 17 , wherein the one or more memory locations comprises one or more memory locations associated with the at least one tree associated with the first code version.

19. The packet processor of claim 8 , wherein the preparing step further comprises the step of building at least one tree associated with the second code version.

20. The packet processor of claim 19 , wherein the one or more write operations are further operative to modify a root address to point to the at least one tree associated with the second code version instead of at least one tree associated with the first code version.

Assignments (7)
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 Feb 24, 2015
From: LSI CORPORATION
To: INTEL CORPORATION
Reel/Frame 035090/0477 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 32856/0031 Recorded Nov 18, 2014
From: DEUTSCHE BANK AG NEW YORK BRANCH
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 034286/0872 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2014
From: AGERE SYSTEMS LLC
To: LSI CORPORATION
Reel/Frame 034245/0655 →
CERTIFICATE OF CONVERSION Recorded Oct 19, 2014
From: AGERE SYSTEMS INC.
To: AGERE SYSTEMS LLC
Reel/Frame 034014/0846 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2006
From: SONNIER, DAVID P.; VANGATI, NARENDER REDDY
To: AGERE SYSTEMS INC.
Reel/Frame 017953/0597 →