Methods and apparatus for performing in-service upgrade of software in network processor
First Claim
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.
7 Assignments
0 Petitions
Accused Products
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.
26 Citations
20 Claims
-
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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 16, 17, 18)
-
-
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. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 19, 20)
-
Specification