Dynamic software architecture reconfiguration for converged cable access platform (CCAP)
Approaches for Converged Cable Access Platform (CCAP) processing. A software-based CCAP environment is executed on one or more physical machines. The software-based CCAP environment is maintained by a plurality of functional blocks that are each implemented in software and perform a specific function supporting the software-based CCAP environment. Each of the plurality of functional blocks performs their specific function asynchronously from each other. A configuration is maintained for the software-based CCAP environment which informs each of the plurality of functional blocks discretely for one or more Data Over Cable Service Interface Specification (DOCSIS) service groups. The configuration may treat one or more Data Over Cable Service Interface Specification (DOCSIS) service groups as a logical unit with respect to their association with each functional block.
1 . One or more non-transitory computer-readable storage mediums storing one or more sequences of instructions for performing Converged Cable Access Platform (CCAP) processing, wherein execution of the one or more sequences of instructions by one or more processors causes:
executing a software-based Converged Cable Access Platform (CCAP) environment on one or more physical machines, wherein an execution runtime of said software-based Converged Cable Access Platform (CCAP) environment is performed by a plurality of functional blocks using library Application Program Interfaces (APIs), wherein said software-based Converged Cable Access Platform (CCAP) environment exchanges data packets carrying data and voice traffic to cable subscribers,
wherein each of said plurality of functional blocks is implemented in software and performs a specific function supporting said software-based Converged Cable Access Platform (CCAP) environment, wherein said plurality of functional blocks perform packet classification, packet scheduling, and packet replication for said software-based Converged Cable Access Platform environment on said data packets carrying said data and voice traffic exchanged with said cable subscribers; and
maintaining a configuration file for said software-based Converged Cable Access Platform (CCAP) environment which instructs each of said plurality of functional blocks how to operate with respect to one or more Data Over Cable Service Interface Specification (DOCSIS) service groups (SGs) as defined by the DOCSIS telecommunications standard,
wherein each of said plurality of functional blocks performs their specific function synchronously, asynchronously, and/or in parallel with each other based on said configuration file,
wherein said plurality of functional blocks process downstream data packets by moving said downstream data packets through a sequence of operational stages,
wherein each operational stage of said sequence of operational stages is implemented by one or more functional blocks of said plurality of functional blocks, and
wherein a particular functional block identifies, from a group of functional blocks implementing a particular operational stage in said sequence, one functional block in said group of functional blocks to which a particular downstream data packet should be forwarded for processing using (a) DOCSIS SG data provided by said configuration file and (b) DOCSIS service flow data associated with said particular downstream data packet.
2 . The one or more non-transitory computer-readable storage mediums of claim 1 , wherein said one or more Data Over Cable Service Interface Specification (DOCSIS) service groups (SGs) are treated as a logical unit by said configuration file with respect to their association with said each of said plurality of functional blocks.
3 . The one or more non-transitory computer-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further cause:
adjusting an execution of a particular functional block, of said plurality of functional blocks, to switch from one or more of (a) executing upon a single thread to upon multiple threads, (b) executing upon multiple threads to a single thread, (c) executing upon multiple compute nodes to a single compute node, and (d) executing upon a single compute node to multiple compute nodes.
4 . The one or more non-transitory computer-readable storage mediums of claim 1 , wherein each of the plurality of functional blocks executes within a separate container.
5 . The one or more non-transitory computer-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further cause:
instructing a first functional block of the plurality of functional blocks to perform work for a single Data Over Cable Service Interface Specification (DOCSIS) service group (SG); and
instructing a second functional block of the plurality of functional blocks to perform work for multiple DOCSIS service groups (SGs).
6 . The one or more non-transitory computer-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further cause:
dynamically measuring a set of available resources of one or more compute nodes;
in response to determining that said set of available resources is presently below a pre-identified threshold, updating, during runtime, a configuration of said plurality of functional blocks to cause each of said functional blocks to execute on a separate thread of execution; and
in response to determining that said set of available resources is presently at or above said pre-identified threshold, updating, during runtime, said configuration of said plurality of functional blocks to cause each of said functional blocks to execute on multiple threads of execution.
7 . The one or more non-transitory computer-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further cause:
dynamically measuring a set of available resources of one or more compute nodes;
in response to determining that said set of available resources is presently below a pre-identified threshold, updating, during runtime, a configuration of said plurality of functional blocks to cause a first portion of said functional blocks to execute on a separate thread of execution; and
in response to determining that said set of available resources is presently at or above said pre-identified threshold, updating, during runtime, said configuration of said plurality of functional blocks to cause a second portion of said functional blocks to execute on multiple threads of execution.
8 . The one or more non-transitory computer-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further cause:
dynamically changing, during runtime, whether at least one of said plurality of functional blocks executes on a single thread basis or a multiple thread basis based on observed load patterns and availability of compute resources.
9 . One or more apparatuses for performing Converged Cable Access Platform (CCAP) processing, comprising:
one or more processors; and
one or more non-transitory computer-readable storage mediums storing one or more sequences of instructions, which when executed, cause:
executing a software-based Converged Cable Access Platform (CCAP) environment on one or more physical machines, wherein an execution runtime of said software-based Converged Cable Access Platform (CCAP) environment is performed by a plurality of functional blocks, using library Application Program Interfaces (APIs), wherein said software-based Converged Cable Access Platform CCAP environment exchanges data packets carrying data and voice traffic to cable subscribers,
wherein each of said plurality of functional blocks is implemented in software and performs a specific function supporting said software-based Converged Cable Access Platform (CCAP) environment, wherein said plurality of functional blocks perform packet classification, packet scheduling, and packet replication for said software-based Converged Cable Access Platform environment on said data packets carrying said data and voice traffic exchanged with said cable subscribers; and
maintaining a configuration file for said software-based Converged Cable Access Platform (CCAP) environment which instructs each of said plurality of functional blocks how to operate with respect to one or more Data Over Cable Service Interface Specification (DOCSIS) service groups (SGs) as defined by the DOCSIS telecommunications standard,
wherein each of said plurality of functional blocks performs their specific function synchronously, asynchronously, and/or in parallel with each other based on said configuration file,
wherein said plurality of functional blocks process downstream data packets by moving said downstream data packets through a sequence of operational stages,
wherein each operational stage of said sequence of operational stages is implemented by one or more functional blocks of said plurality of functional blocks, and
wherein a particular functional block identifies, from a group of functional blocks implementing a particular operational stage in said sequence, one functional block in said group of functional blocks to which a particular downstream data packet should be forwarded for processing using (a) DOCSIS SG data provided by said configuration file and (b) DOCSIS service flow data associated with said particular downstream data packet.
10 . The one or more apparatuses of claim 9 , wherein said one or more Data Over Cable Service Interface Specification (DOCSIS) service groups (SGs) are treated as a logical unit by said configuration file with respect to their association with said each of said plurality of functional blocks.
11 . The one or more apparatuses of claim 9 , wherein execution of the one or more sequences of instructions further cause:
adjusting an execution of a particular functional block, of said plurality of functional blocks, to switch from one or more of (a) executing upon a single thread to upon multiple threads, (b) executing upon multiple threads to a single thread, (c) executing upon multiple compute nodes to a single compute node, and (d) executing upon a single compute node to multiple compute nodes.
12 . The one or more apparatuses of claim 9 , wherein each of the plurality of functional blocks executes within a separate container.
13 . The one or more apparatuses of claim 9 , wherein execution of the one or more sequences of instructions further cause:
instructing a first functional block of the plurality of functional blocks to perform work for a single Data Over Cable Service Interface Specification (DOCSIS) service group (SG); and
instructing a second functional block of the plurality of functional blocks to perform work for multiple DOCSIS service groups (SGs).
14 . The one or more apparatuses of claim 9 , wherein execution of the one or more sequences of instructions further cause:
dynamically measuring a set of available resources of one or more compute nodes;
in response to determining that said set of available resources is presently below a pre-identified threshold, updating, during runtime, a configuration of said plurality of functional blocks to cause each of said functional blocks to execute on a separate thread of execution; and
in response to determining that said set of available resources is presently at or above said pre-identified threshold, updating, during runtime, said configuration of said plurality of functional blocks to cause each of said functional blocks to execute on multiple threads of execution.
15 . The one or more apparatuses of claim 9 , wherein execution of the one or more sequences of instructions further cause:
dynamically measuring a set of available resources of one or more compute nodes;
in response to determining that said set of available resources is presently below a pre-identified threshold, updating, during runtime, a configuration of said plurality of functional blocks to cause a first portion of said functional blocks to execute on a separate thread of execution; and
in response to determining that said set of available resources is presently at or above said pre-identified threshold, updating, during runtime, said configuration of said plurality of functional blocks to cause a second portion of said functional blocks to execute on multiple threads of execution.
16 . The one or more apparatuses of claim 9 , wherein execution of the one or more sequences of instructions further cause:
dynamically changing, during runtime, whether at least one of said plurality of functional blocks executes on a single thread basis or a multiple thread basis based on observed load patterns and availability of compute resources.
17 . A method for performing Converged Cable Access Platform (CCAP) processing, comprising:
executing a software-based Converged Cable Access Platform (CCAP) environment on one or more physical machines, wherein an execution runtime of said software-based Converged Cable Access Platform (CCAP) environment is performed by a plurality of functional blocks using library Application Program Interfaces (APIs), wherein said software-based Converged Cable Access Platform CCAP environment exchanges data packets carrying data and voice traffic to cable subscribers,
wherein each of said plurality of functional blocks is implemented in software and performs a specific function supporting said software-based Converged Cable Access Platform (CCAP) environment, wherein said plurality of functional blocks perform packet classification, packet scheduling, and packet replication for said software-based Converged Cable Access Platform environment on said data packets carrying said data and voice traffic exchanged with said cable subscribers; and
maintaining a configuration file for said software-based Converged Cable Access Platform (CCAP) environment which instructs each of said plurality of functional blocks how to operate with respect to one or more Data Over Cable Service Interface Specification (DOCSIS) service groups (SGs) as defined by the DOCSIS telecommunications standard,
wherein each of said plurality of functional blocks performs their specific function synchronously, asynchronously, and/or in parallel with each other based on said configuration file,
wherein said plurality of functional blocks process downstream data packets by moving said downstream data packets through a sequence of operational stages,
wherein each operational stage of said sequence of operational stages is implemented by one or more functional blocks of said plurality of functional blocks, and
wherein a particular functional block identifies, from a group of functional blocks implementing a particular operational stage in said sequence, one functional block in said group of functional blocks to which a particular downstream data packet should be forwarded for processing using (a) DOCSIS SG data provided by said configuration file and (b) DOCSIS service flow data associated with said particular downstream data packet.
18 . The method of claim 17 , wherein said one or more Data Over Cable Service Interface Specification (DOCSIS) service groups (SGs) are treated as a logical unit by said configuration file with respect to their association with said each of said plurality of functional blocks.
19 . The method of claim 17 , further comprising:
adjusting an execution of a particular functional block, of said plurality of functional blocks, to switch from one or more of (a) executing upon a single thread to upon multiple threads, (b) executing upon multiple threads to a single thread, (c) executing upon multiple compute nodes to a single compute node, and (d) executing upon a single compute node to multiple compute nodes.
20 . The method of claim 17 , further comprising:
instructing a first functional block of the plurality of functional blocks to perform work for a single Data Over Cable Service Interface Specification (DOCSIS) service group (SG); and
instructing a second functional block of the plurality of functional blocks to perform work for multiple DOCSIS service groups (SGs).
21 . The method of claim 17 , wherein each of the plurality of functional blocks executes within a separate container.
22 . The method of claim 17 , further comprising:
dynamically measuring a set of available resources of one or more compute nodes;
in response to determining that said set of available resources is presently below a pre-identified threshold, updating, during runtime, a configuration of said plurality of functional blocks to cause each of said functional blocks to execute on a separate thread of execution; and
in response to determining that said set of available resources is presently at or above said pre-identified threshold, updating, during runtime, said configuration of said plurality of functional blocks to cause each of said functional blocks to execute on multiple threads of execution.
23 . The method of claim 17 , further comprising:
dynamically measuring a set of available resources of one or more compute nodes;
in response to determining that said set of available resources is presently below a pre-identified threshold, updating, during runtime, a configuration of said plurality of functional blocks to cause a first portion of said functional blocks to execute on a separate thread of execution; and
in response to determining that said set of available resources is presently at or above said pre-identified threshold, updating, during runtime, said configuration of said plurality of functional blocks to cause a second portion of said functional blocks to execute on multiple threads of execution.
24 . The method of claim 17 , further comprising:
dynamically changing, during runtime, whether at least one of said plurality of functional blocks executes on a single thread basis or a multiple thread basis based on observed load patterns and availability of compute resources.