Controlling and extending programmable network functions using a declarative approach
First Claim
1. An apparatus comprising:
- a network interface that is coupled to a data network for receiving one or more packet flows therefrom;
a processor;
a packet forwarding unit coupled to the processor and network interface and configured to receive one of the packet flows, determine an egress interface for the packet flow, and route the packet flow to the egress interface;
one or more stored sequences of instructions which, when executed by the processor, cause the processor to perform;
storing a first executable software module in a computer storage;
receiving and storing, in association with the first software module, a first human-readable declaration of one or more available extension points within the first software module;
receiving and storing an extension software module that implements a particular one or more of the extension points;
installing and executing the first software module and the extension software module; and
invoking the extension software module when the particular extension point is reached during execution of the first software module.
1 Assignment
0 Petitions
Accused Products
Abstract
In an embodiment, a computer apparatus comprises a network interface; a processor; a packet forwarding unit; and instructions which when executed cause storing a first executable software module in computer storage; receiving and storing, in association with the first software module, a first human-readable declaration of one or more available extension points within the first software module; receiving and storing an extension software module that implements a particular one or more of the extension points; installing and executing the first software module and the extension software module; and invoking the extension software module when the particular extension point is reached during execution of the first software module. In an embodiment, a declaration of extension points enables extending a software module while running in a host, by registering an extension matching the extension points, yet the author of the extension does not need to access any code of the extended module.
-
Citations
24 Claims
-
1. An apparatus comprising:
-
a network interface that is coupled to a data network for receiving one or more packet flows therefrom; a processor; a packet forwarding unit coupled to the processor and network interface and configured to receive one of the packet flows, determine an egress interface for the packet flow, and route the packet flow to the egress interface; one or more stored sequences of instructions which, when executed by the processor, cause the processor to perform; storing a first executable software module in a computer storage; receiving and storing, in association with the first software module, a first human-readable declaration of one or more available extension points within the first software module; receiving and storing an extension software module that implements a particular one or more of the extension points; installing and executing the first software module and the extension software module; and invoking the extension software module when the particular extension point is reached during execution of the first software module. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. An apparatus comprising:
-
a network interface that is coupled to a data network for receiving one or more packet flows therefrom; a processor; a packet forwarding unit coupled to the processor and network interface and configured to receive one of the packet flows, determine an egress interface for the packet flow, and route the packet flow to the egress interface; means for storing a first executable software module in a computer storage; means for receiving and storing, in association with the first software module, a first human-readable declaration of one or more available extension points the first software module; means for receiving and storing an extension software module that implements a particular one or more of the extension points; means for installing and executing the first software module and the extension software module; and means for invoking the extension software module when the particular extension point is reached during execution of the first software module. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A machine-implemented method comprising:
-
storing a first executable software module in a computer storage of a networking infrastructure device; receiving and storing, in association with the first software module, a first human-readable declaration of one or more available extension points within the first software module; receiving and storing an extension software module that implements a particular one or more of the extension points; installing and executing the first software module and the extension software module; and invoking the extension software module when the particular extension point is reached during execution of the first software module. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
-
24. A non-transitory computer-readable medium storing one or more sequences of instructions which when executed by one or more processors, cause the one or more processors to perform:
-
storing a first executable software module in a computer storage of a networking infrastructure device; receiving and storing, in association with the first software module, a first human-readable declaration of one or more available extension points within the first software module; receiving and storing an extension software module that implements a particular one or more of the extension points; installing and executing the first software module and the extension software module; and invoking the extension software module when the particular extension point is reached during execution of the first software module.
-
Specification