Methods and systems for scheduling data transmission with a feedback mechanism

In one embodiment, a method includes identifying one or more channel queues associated with one or more RF channels, wherein the one or more RF channels are associated with a Data Over Cable System Interface Specification (DOCSIS) bonding group and wherein the DOCSIS bonding group receives downstream data from a first node, determining a data usage of the DOCSIS bonding group, determining that a data rate of the downstream data is to be modified based on at least one of the one or more channel queues or the data usage of the DOCSIS bonding group, and causing the first node to modify the data rate of the downstream data based on the determination.

TECHNICAL FIELD

The present disclosure relates generally to the field of networking, and in particular, to methods and system for scheduling the transmission of data.

BACKGROUND

The Data Over Cable Service Interface Specification (DOCSIS) is international telecommunications standard that permits cable television (CATV) systems to accommodate high-speed data. DOCSIS may be employed to provide network access (e.g., to provide access to the Internet) via a hybrid fiber-coaxial (HFC) network and/or infrastructure. An HFC network may be a broadband network that uses both optical fiber and coaxial cable. The HFC network may be a communication network between a cable modem termination system (CMTS) and a network communication device (e.g., a cable modem). Cable operators (e.g., cable companies/providers) may use DOCSIS to deploy high-speed data services on CATV systems that have an HFC infrastructure. The high-speed data services may allow subscriber-side computing devices (e.g., smartphones, tablet computers, laptop computers, desktop computers, netbook computers, etc.) to access public networks, such as the internet, via the HFC infrastructure of the CATV systems.

In accordance with common practice various features shown in the drawings may not be drawn to scale, as the dimensions of various features may be arbitrarily expanded or reduced for clarity. Moreover, the drawings may not depict all of the aspects and/or variants of a given system, method or device admitted by the specification. Finally, like reference numerals may be used to denote like features throughout the specification and figures.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Numerous details are described herein in order to provide a thorough understanding of the illustrative implementations shown in the accompanying drawings. However, the accompanying drawings show only some example aspects of the present disclosure and are therefore not to be considered limiting. Those of ordinary skill in the art will appreciate from the present disclosure that other effective aspects and/or variants do not include all of the specific details described herein. Moreover, well-known systems, methods, components, devices and circuits have not been described in exhaustive detail so as not to unnecessarily obscure more pertinent aspects of the implementations described herein.

Overview

Various implementations disclosed herein include apparatuses, systems, and methods for scheduling the transmission of data. For example, in some implementations, a method includes identifying one or more channel queues associated with one or more RF channels, wherein the one or more RF channels are associated with a Data Over Cable System Interface Specification (DOCSIS) bonding group and wherein the DOCSIS bonding group receives downstream data from a first node, determining a data usage of the DOCSIS bonding group (e.g., an expected and/or actual data usage of the DOCSIS bonding group), determining that a data rate of the downstream data is to be modified based on at least one of the one or more channel queues or the data usage of the DOCSIS bonding group, and causing the first node to modify the data rate of the downstream data based on the determination. In additional implementations, computing devices for performing the operations of the described embodiments may also be implemented. In further implementations, a non-transitory computer readable storage medium may store instructions for performing the operations of the embodiments described herein.

DETAILED DESCRIPTION

FIG. 1is a block diagram illustrating an example network100, in accordance with some embodiments. The network100data queues111, data queues121, data queues131, node112, node122, node132, bonding group (BG)110, bonding group120, bonding group130, channel queue115, channel queue125, channel queue135, RF channel117, RF channel127, and RF channel137. Node112includes a scheduling module113, node122includes a scheduling module123, and node132includes a scheduling module133. Bonding group110includes feedback module119, bonding group120includes feedback module129, and bonding group130includes feedback module139. The feedback modules119,129, and139, and the scheduling modules113,123, and133, may each be processing logic that includes hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed or run on a processor), or a combination thereof. In one embodiment, the nodes112,122, and132, and the bonding groups110,120, and130may be included in a CMTS.

As discussed above, various networks (e.g., HFC networks used by CATV systems/operators) may use DOCSIS to provide high-speed data services that may allow subscriber-side computing devices to access public networks (e.g., access the Internet, access streaming multimedia, access webpages, access social media, play online games, etc.). The network100may use DOCSIS to provide users (e.g., CATV subscriber) with high speed data services. Data (e.g., digital data, bits of data, packets, data packets, messages, etc.) may be modulated onto one or more of RF channels117,127, and137using various modulation techniques. For example, data may be modulated onto RF channels117,127, and137using Quadrature Amplitude Modulation (QAM) techniques.

In one embodiment, the network100may be an HFC network that may use a DOCSIS feature referred to as “bonding groups” (BGs) or “channel bonding. The network100may be a system and/or architecture that allows data to be transmitted and/or received using the HFC network. A bonding group may allow a user (e.g., a CATV system subscriber), a communication device (e.g., a cable modem) and/or a data flow (e.g., streams or flows of data associated with a user, a communication device, an application, a service, etc.) to use multiple RF channels simultaneously (e.g., to use multiple RF channels at the same time). For example, a communication device (e.g., a cable modem) may use multiple RF channels to receive downstream data (e.g., to receive downstream data from the HFC network, etc.). A bonding group may be associated with multiple RF channels and may multiplex data across the multiple RF channels. For example, bonding group130may allow a cable modem to use RF channels117,127, and137to receive downstream data. The bonding group130may distribute and/or multiplex downstream data (e.g., bits, data packets, messages, etc.) sent to the cable modem among the RF channels117,127, and137to transmit data in parallel (rather than in series). A bonding group (e.g., bonding group110, bonding group120, and/or bonding group130) may increase the capacity, throughput, and/or traffic burst capacity (e.g., capacity or ability to handle sudden and/or temporary increases in the amount of downstream data). Bonding groups110,120, and/or130may also be referred to as DOCSIS bonding groups. DOCSIS bonding groups (BGs) that use one or more RF channels may also be referred to as “bonded channels.” For example, bonding groups120and130may be referred to as bonded channels. DOCSIS single channels may also be referred to as “non-bonded channels.” For example, bonding group110may be referred to as a “non-bonded channel”. The present disclosure may refer to both “bonded channels” and “non-bonded channels” as bonding groups, as the disclosure apply to both. Furthermore, although the present disclosure may refer to DOCSIS and/or bonding groups, the embodiments, examples, and/or implementations described herein may also apply to other communication standards, interfaces, and/or protocols that may allow physical communication channels (e.g., RF channels) to be shared (e.g., multiplexed).

As discussed above, a bonding group may be associated with one or more RF channels. Bonding group110is associated with RF channel117. Bonding group120is associated with RF channel117and RF channel127. Bonding group130is associated with RF channel117, RF channel127, and RF channel137. The bonding groups110,120, and130illustrated inFIG. 1are merely examples of bonding groups. In some embodiments, bonding groups may be associated with any number of RF channels. For example, a bonding group may be associated with two RF channels, five RF channels, sixteen RF channels, thirty-two RF channels, sixty-four RF channels, etc. The associations between bonding groups110,120, and130, and RF channels117,127, and137may form a meshed hierarchy/topology because the bonding groups may each be associated with different RF channels.

As discussed above, users (e.g., CATV system subscribers), communication devices (e.g., cable modems) and/or data flows (e.g., a service flow) may transmit and/or receive data using the network100. The users, communication devices, and/or data flows may use the data queues111,121, and131to transmit data to the network100. For example, the users, communication devices, and/or data flows may transmit data to the network100using the data queues111,121, and131. In one embodiment, the data queues111,121, and/or131may be associated with various users, communication devices, and/or data flows. For example, there may be one queue per user (e.g., one queue per CATV system subscriber), one queue per data flow from a user (e.g., one queue for a user's video streaming application and another queue for the user's gaming application, etc.), one queue per communication device (e.g., one queue per cable modem), etc. Groups of queues (which may receive data from the users, communication devices, and/or data flows) may be associated with a node (e.g., a network node).

Each node may be associated with a bonding group. For example, node112is associated with bonding group110. Each node may transmit the downstream data in an associated group of data queues to a bonding group. For example, node112may transmit the downstream data in data queues111to the bonding group110. In another example, node132may transmit the downstream data in data queues131to the bonding group130.

As illustrated inFIG. 1, the node112includes scheduling module113, the node122includes scheduling module123, and the node132includes scheduling module133. Scheduling module113may schedule the transmission of downstream data (e.g., digital data, binary data, packets, messages, etc.) in the data queues111to bonding group110. Scheduling module123may schedule the transmission of downstream data in the data queues121to bonding group120. Scheduling module133may schedule the transmission of downstream data in the data queues131to bonding group130. The scheduling modules113,123, and133may also be referred to as schedulers and/or packet schedulers. In some embodiments, the scheduling modules113,123, and133may scalable schedulers that may schedule the transmission of data from any number of queues. For example, a scheduling module may schedule the transmission of data from tens, hundreds, thousands, of even hundreds of thousands of queues. In one embodiment, one or more of the scheduling modules113,123, and133may be scalable schedulers that may be able to support various features and/or perform various functions such as maintaining a minimum quality of service (QoS), maintaining a minimum or guaranteed data rate (e.g., minimum or guaranteed throughput) between the data queues and the nodes, enforcing bandwidth ratios (e.g., enforcing a percentage or a ratio usage for each data queue), prioritizing different types of data (e.g., priority voice data over other types of data), etc. The scheduling modules113,123, and133may use various techniques, algorithms, formulas, functions, data structures, etc., to schedule the transmission of data from the data queues111,121, and131to the bonding groups110,120, and130.

In one embodiment, the scheduling modules113,123, and133may not be aware of the underlying mesh topology/hierarchy of the bonding groups110,120, and130, and the RF channels117,127, and137. For example, the scheduling module133may not be aware that the bonding group130is associated with RF channels117,127, and137. In another example, the scheduling module123may not be aware that the bonding group120is associated with RF channels117and127. In one embodiment, the scheduling modules113,123, and133may support the use of feedback messages, such as feedback messages116,126, and136, to control the amount of downstream data the scheduling modules113,123, and133send to the bonding groups110,120, and130. For example, the scheduling module113may be configured to receive the feedback message116from a feedback module119of the bonding group110(as discussed in more detail below). A feedback message may include data indicating whether a scheduling module should modify the rate (e.g., the data rate) of downstream data that is provided to an associated bonding group. For example, feedback message136may include data indicating that the scheduling module133should decrease/increase the rate and/or amount of downstream data that the node132is providing to the bonding group130(as discussed in more detail below).

As discussed above, each node112,122, and132provides (e.g., transmits and/or sends) data received from respective data queues111,121, and132to a respective bonding group110,120, and130. The bonding groups110,120, and130are associated with the RF channels117,127, and137(as discussed above). The bonding groups110,120, and130may use channel queues115,125, and135to transmit downstream data to the RF channels117,127, and137, respectively. For example, the bonding group110may transmit data to the RF channel117by adding (e.g., inserting) the downstream data into the channel queue115. The downstream data in the channel queue115may be transmitted via the RF channel117on a first-in-first-out (FIFO) basis. In another example, the bonding group130may transmit downstream data to the RF channels117,127, and137by adding the downstream data into the channel queues115,125, and135, respectively. AlthoughFIG. 1Aillustrates that RF channels117,127, and137are each associated with one channel queue (e.g., channel queues115,125, and135, respectively), in other embodiments, each RF channel may be associated with any number of queues. For example, an RF channel may be associated with two channels queues, one for higher priority data and one for lower priority data. In another example, an RF channel may be associated with different channel queues for different types of data (e.g., one channel queue for voice data, one channel queue for streaming video data, etc.).

Each of the bonding groups110,120, and130may be configured to support a maximum data rate (e.g., maximum throughput) and minimum data rate (e.g., minimum throughput). A minimum data rate may be a data rate (e.g., throughput) for downstream data that a bonding group is generally able to guarantee to an associated node. For example, the node112may have a minimum data rate of 20 megabits/second. Thus, the bonding group may be able to guarantee a minimum data rate of 20 megabits/second for downstream data sent to users, computing devices and/or data flows (via the node112and the data queues111). The minimum data rate may also be referred to as a contract data rate, a guaranteed data rate and/or a committed information rate (CIR). A maximum data rate (e.g., throughput) may be a data rate for downstream data that a bonding group should generally not exceed. The maximum data rate for a bonding group may be based on the RF channels that are associated with the bonding group. In one embodiment, the maximum data rate for a bonding group may be the sum of the maximum data rates of the RF channels associated with the bonding group. As illustrated inFIG. 1, RF channels117,127, and137each have a maximum data rate of 40 megabits/second. Bonding group110is associated with RF channel117and bonding group110may have a maximum data rate of 40 megabits/second. Bonding group120is associated with RF channels117and127, and bonding group120may have a maximum data rate of 80 megabits/second. Bonding group130is associated with RF channels117,127, and137, and bonding group130may have a maximum data rate of 120 megabits/second. Configuring a bonding group to have a maximum data rate based on the RF channels associated with the bonding group may allow the bonding group to increase and/or maximize the utilization of the RF channels associated with the bonding group (as discussed in more detail below). It should be understood that each of the bonding groups110,120, and130may be configured to support different maximum data rates and/or different minimum data rates.

In one embodiment, the feedback modules119,129, and139may schedule the transmission of downstream data received from respective nodes112,122, and132by adding the downstream data into the channel queues of RF channels associated with the bonding groups110,120, and130, respectively. For example, the feedback module119may schedule the transmission of downstream data received from node112by adding (e.g., inserting) the downstream data into the channel queue115. In another example, the feedback module139may schedule the transmission of downstream data received from the node132by adding the downstream data into one or more of the channel queues115,125, and135. In one embodiment, the feedback modules119,129, and139may schedule the transmission of downstream data by determining the length of one or more channel queues associated with a bonding group and inserting the downstream data into the shortest channel queue associated with the bonding group (e.g., the channel queue with the least amount of downstream data in the channel queue). In other embodiments, the feedback modules may use various techniques, algorithms, formulas, functions, data structures, etc., to schedule the transmission of downstream data to the RF channels117,127, and137via the channel queues115,125, and125.

As discussed above, the scheduling modules113,123, and133may not be aware of the underlying mesh topology/hierarchy of the bonding groups110,120, and130, and the RF channels117,127, and137. The network100may not be able to efficiently use the RF channels117,127, and137(e.g., may not be able to maximize the data rate and/or throughput of the RF channels117,127, and137) because the scheduling modules113,123, and133may be unaware of the associations between the bonding groups110,120, and130, and the RF channels117,127, and137(e.g., the underlying topology/hierarchy). The network100may also not be able to reduce the amount of downstream data in accordance with the minimum data rates for the bonding groups110,120, and130(e.g., in order to help ensure that each bonding group110,120, and130are able to transmit data at their respective minimum data rates) when the RF channels117,127, and137are already at their maximum data rates and/or throughputs because the scheduling modules113,123, and133may be unaware of the associations between the bonding groups110,120, and130, and the RF channels117,127, and137. In one embodiment, the feedback modules119,129, and139may allow the network100to more efficiently use the RF channels117,127, and137and may allow the scheduling modules113,123, and133to reduce the amount of downstream data when the RF channels117,127, and137are already at their maximum data rates and/or throughputs.

The feedback modules119,129, and139may identify the RF channels that are associated with the respective bonding groups110,120, and130. For example, feedback module139may identify and/or determine that the bonding group130is associated with RF channels117,127, and137. The feedback modules119,129, and139may also determine the data usage of the bonding groups110,120, and130respectively. For example, the feedback module139may determine the amount of downstream data (e.g., the data rate and/or throughput) that the feedback module139has added to the channel queues115,125, and135. In one embodiment, the feedback modules119,129, and139may each use a token bucket to determine the data usage of the bonding groups110,120, and130respectively. The feedback modules119,129, and139may determine whether the data usage of the respective bonding groups110,120, and130exceed the minimum data rates for the bonding groups110,120, and130. For example, the feedback module119may determine whether the data usage of bonding group110exceeds a minimum data rate for the bonding group110. In one embodiment, the feedback modules119,129, and139may also determine whether the length of one or more channel queues for RF channels associated with their respective bonding groups110,120, and130is greater than a threshold length. For example, the feedback module129may determine whether the lengths of the channel queues115and125are greater than a threshold length. In another example, the feedback module139may determine whether the length of one or more of channel queues115,125, and135is greater than a threshold length. In one embodiment, the threshold length for a channel queue may be selected such that the RF channel may transmit at the maximum data rate when the length of the channel queue remains less than or equal to the threshold length. In other embodiments, the threshold length may be any length.

In one embodiment, the feedback modules119,129, and139may cause the scheduling modules113,123, and133to modify the data rate of the downstream data transmitted to the bonding groups110,120, and130(e.g., to decrease/increase the data rate of the downstream data) based on the data usage of the bonding groups110,120, and130, and based on the channel queues115,125, and135. For example, the feedback module129may cause the scheduling module123to decrease the amount of downstream data provided by the node122to the bonding group120if all of the lengths of the channel queues115and125are greater than a threshold length and if the data usage of the bonding group120is greater than the minimum data rate of the bonding group120. The feedback modules119,129, and139may cause the scheduling modules113,123, and133to decrease the amount of downstream data by sending feedback messages116,126, and136, respectively. As discussed above, a feedback message may include data indicating whether a scheduling module should modify (e.g., increase or decrease) the rate (e.g., the data rate) and/or the amount of downstream data that is provided to an associated bonding group. For example, feedback message116may include data indicating that the node112should stop sending downstream data to the bonding group110. In another example, the feedback message126may include data indicating that the node122should stop sending downstream data to the bonding group120. In a further example, the feedback message136may include data indicating that the node132should resume or continue sending downstream data to the bonding group130.

In one embodiment, the feedback messages116,126, and136may indicate that that the nodes112,122, and132should stop and/or resume (e.g., continue) sending (e.g., transmitting) downstream data to the bonding groups110,120, and130, respectively. In another embodiment, the feedback messages116,126, and136may indicate that that the nodes112122, and132should decrease and/or increase the data rate of the downstream data to the bonding group130, respectively. For example, feedback message136may indicate that the node132should decrease the rate of the downstream data to the bonding group130by twenty percent or by 5 megabits/second. In a further embodiment, the feedback messages116,126, and136may indicate that that the nodes112,122, and132should stop, resume, decrease, and/or increase certain types and/or priorities of downstream data to the bonding group130. For example, voice data (e.g., data for a voice-over-internet-protocol (VoIP) call may be given higher priority than other types of downstream data (e.g., data for streaming videos, data for online video games, etc.). The feedback messages116,126, and136may indicate that data rate for certain types/priorities of downstream data (e.g., data for streaming videos, data for online video games, etc.) should decreased and/or stopped but that other types/priorities of downstream data (e.g., data for VoIP calls) should not be decreased and/or stopped.

In one embodiment, the network100the scheduling modules113,123, and133, and the feedback modules119,129, and139may operate in conjunction with each other (e.g., may operate together) to schedule the transmission of downstream data from the data queues111,121, and131to the RF channels117,127, and137. Thus, the network100may thought of as scheduling the transmission of downstream data in two stages and/or phases. The scheduling modules113,123, and133may be referred to as a first stage or phase. As discussed above, the scheduling modules113,123, and133may schedule the transmission of downstream data from the nodes112,122, and132to the bonding groups110,120, and130. The bonding groups110,120, and130may be referred to as a second stage or phase. Also as discussed above, the bonding groups110,120, and130may schedule the transmission of downstream data received from the nodes112,122, and132to the RF channels117,127, and137.

In one embodiment, by scheduling the transmission of downstream data in two stages and/or phases, the network100may allow the RF channels117,127, and/or137to be used more efficiently even though the scheduling modules113,123, and133may not be aware of the associations between the bonding groups110,120, and130and the RF channels117,127, and137. The feedback modules119,129, and139may also allow a bonding group to increase and/or maximize the data rates of downstream data when other bonding groups are not transmitting downstream data or have less downstream data to transmit (as discussed further below in conjunction withFIGS. 2 and 3). For example, bonding group130may be able to transmit downstream data at a higher data rate than the minimum data rate for the bonding group if bonding groups110and120are transmitting data at less than their respective minimum data rates (e.g., if bonding groups110and120are not using their minimum data rates). The feedback messages116,126, and136allow the feedback modules119,129, and139to modify (e.g., decrease, stop, increase, resume) the downstream data received from the nodes112,122, and132to help ensure that each of the bonding groups110,120, and130is able to transmit downstream data at their respective minimum data rates (as discussed further below in conjunction withFIGS. 2 and 3).

In another embodiment, scheduling the transmission of downstream data in two stages and/or phases may allow for different scheduling modules and/or feedback modules to be used in the network100. For example, different cable operators may use different scheduling modules. The scheduling modules113,123, and133may be replaced with different scheduling modules that use different functions, algorithms, etc., to schedule the transmission of downstream packets if the different scheduling modules are configured to receive feedback messages (e.g., messages and/or data indicating whether a scheduling module should decrease, stop, increase, and/or resume the transmission of data). In another example, the different cable operators may use different feedback modules. The feedback modules119,129, and139may be replaced with feedback modules that use different functions, algorithms, etc., to schedule the transmission of downstream packets if the different feedback modules are configured to determine the data usages of bonding groups, determine the lengths of channel queues, and send feedback messages based on the data usages and/or lengths of the channel queues.

In one embodiment, a scheduling module and a feedback module may reside in the same physical device. For example, scheduling module113and feedback module119may reside on the same computing device, same network communication device (e.g., same network switch or same network router, and/or same network interface card (which may be inserted into the physical device). In another embodiment, a scheduling module and a feedback module may reside on different physical devices. For example, scheduling module113and feedback module119may reside on different computing devices, different network communication devices (e.g., different network switches or different network routers, and/or different network interface cards (which may be inserted into the same physical device).

FIG. 1Bis a block diagram illustrating an example network150, in accordance with other embodiments. The network150includes data queues161, data queues171, bonding group160, bonding group170, channel queue165, channel queue175, RF channel167, and RF channel177. As discussed above, the network150may use DOCSIS bonding groups to transmit downstream data from the data queues161and171to the RF channels167and177. Bonding group160is associated with RF channel167. Bonding group170is associated with RF channel167and RF channel177. Bonding group160may transmit downstream data to channel queue165. Bonding group170may transmit downstream data to channel queues165and175.

As illustrated inFIG. 1B, the bonding group160includes a scheduling module163and a feedback module169, and the bonding group170includes a scheduling module173and a feedback module179. Referring back toFIG. 1A, the network150does not include separate nodes that receive data from the data queues161and171(as illustrated inFIG. 1A). Instead, the scheduling modules163and173(e.g., the L1 nodes) are part of the bonding groups160and170(e.g., are included in the L2 nodes), respectively. For example, the scheduling module163and the feedback module169may be different line cards that are in a networking switch and/or networking router.

FIG. 2is a block diagram illustrating an example network system200A, in accordance with additional embodiments. The network200A includes data queues211, data queues221, node212, node222, bonding group210, bonding group220, channel queue215, channel queue225, RF channel217, and RF channel227. Node212includes a scheduling module213and node222includes a scheduling module223. Bonding group210includes feedback module219and bonding group220includes feedback module229. As discussed above, the network200A may use DOCSIS bonding groups to transmit downstream data from the data queues211and221to the RF channels217and227. Bonding group210is associated with RF channel217. Bonding group220is associated with RF channel217and RF channel227. Node212is associated with bonding group210and may transmit downstream data from the data queues211to the bonding group210. Bonding group210may transmit downstream data to channel queue215. Node222is associated with bonding group220and may transmit downstream data from the data queues221to the bonding group220. Bonding group220may transmit downstream data to channel queues215and225. Bonding group210is configured to support a guaranteed (e.g., minimum) data rate of 30 megabits/second (Mbps) and a maximum data rate of 40 megabits/second. Bonding group220is configured to support a guaranteed (e.g., minimum) data rate of 50 megabits/second (Mbps) and a maximum data rate of 80 megabits/second.

The node212includes scheduling module213and the node222includes scheduling module223. Scheduling module213may schedule the transmission of downstream data (e.g., digital data, binary data, packets, messages, etc.) in the data queues211to bonding group210. Scheduling module223may schedule the transmission of downstream data in the data queues221to bonding group220. In one embodiment, the scheduling modules213and223may not be aware of the underlying mesh topology/hierarchy of the bonding groups210and220, and the RF channels217and227. The scheduling modules213and223may modify the data rate of the downstream data to the bonding groups210and220based on feedback messages (as discussed above).

In one embodiment, the feedback modules219and229may schedule the transmission of downstream data received from respective nodes212and222by adding the downstream data into the channel queues of RF channels associated with the bonding groups210and220, respectively. The feedback modules219and229may identify the RF channels that are associated with the respective bonding groups210and220. The feedback modules219and229may also determine the data usage of the bonding groups210and220respectively (e.g., using token buckets). The feedback modules219and229may further determine whether the length of one or more channel queues of RF channels associated with their respective bonding groups210and220are greater than a threshold length. In another embodiment, separate modules, components, and/or schedulers (not shown in the figures) within the bonding groups210and220may schedule the transmission of downstream data received from respective nodes212and222by adding the downstream data into the channel queues of RF channels associated with the bonding groups210and220, respectively (as discussed above). In one embodiment, the feedback modules219and229may cause the scheduling modules213and223to modify the data rate of the downstream data transmitted to the bonding groups210and220based on the data usage of the bonding groups210and220, and based on the channel queues215and225. Feedback modules219and229may cause the scheduling modules213and223to modify the data rate of the downstream data by transmitting feedback messages (not shown inFIG. 2). The feedback messages may indicate whether a scheduling module should decrease, stop, increase, and/or continue sending downstream data and/or types of downstream data.

As discussed above, the scheduling modules213and223, the feedback messages, and the feedback modules may allow a bonding group to increase and/or maximize the data rates of downstream data when other bonding groups are not transmitting downstream data or are have less downstream data to transmit. As illustrated inFIG. 2, bonding group210has a received rate of 0 megabits/second. This may indicate that node212does not have downstream data to transmit to the bonding group210. Bonding group220has a received rate of 80 megabits/second. This may indicate that node222has enough downstream data to transmit at a rate of 80 megabits a second to bonding group220. Bonding group220has a maximum data rate of 80 megabits/second because the bonding group220is associated with RF channels217and227. Although 30 megabits/second of the capacity of RF channel217may be used for bonding group210(e.g., may be allocated for bonding group210), bonding group210has no downstream data to transmit. The bonding group220may use the portion of the capacity of the RF channel217that is not used by the bonding group210and may use the portion of the capacity of the RF channels217and227allocated to the bonding group220to transmit downstream data at a total data rate of 80 megabits/second. In one embodiment, the bonding group220may transmit feedback messages (not shown in theFIG. 2) to cause the node222to increase the rate of the downstream data from 50 megabits/second to 80 megabits/second. For example, the bonding group220may transmit a feedback message indicating that the node222should increase the rate of downstream data that may be transmitted to the bonding group220.

FIG. 3is a block diagram illustrating an example network system200B, in accordance with further embodiments. As discussed above, the network200B includes data queues211, data queues221, node212, node222, bonding group210, bonding group220, channel queue215, channel queue225, RF channel217, and RF channel227. Node212includes a scheduling module213and node222includes a scheduling module223. The scheduling modules213and223may not be aware of the underlying mesh topology/hierarchy of the bonding groups210and220, and the RF channels217and227. Bonding group210includes feedback module219and bonding group220includes feedback module229. As discussed above, the network200B may use DOCSIS bonding groups to transmit downstream data from the data queues211and221to the RF channels217and227. Bonding group210is associated with RF channel217. Bonding group220is associated with RF channel217and RF channel227. Node212is associated with bonding group210and may transmit downstream data from the data queues211to the bonding group210. Bonding group210may transmit downstream data to channel queue215. Node222is associated with bonding group220and may transmit downstream data from the data queues221to the bonding group220. Bonding group220may transmit downstream data to channel queues215and225. Bonding group210is configured to support a minimum data rate of 30 megabits/second (Mbps) and a maximum data rate of 40 megabits/second. Bonding group220is configured to support a minimum data rate of 50 megabits/second (Mbps) and a maximum data rate of 80 megabits/second.

Also as discussed above, the scheduling modules213and223, the feedback messages, and the feedback modules219and229may allow a bonding group to increase and/or maximize the data rates of downstream data when other bonding groups are not transmitting downstream data or are have less downstream data to transmit. Referring toFIG. 2, the bonding group220may use the portion of the capacity of the RF channel217that is not used by the bonding group210and may use the portion of the capacity of the RF channels217and227allocated to the bonding group220to transmit downstream data at a total data rate of 80 megabits/second.

In one embodiment, the node212may receive downstream data from the data queues211. The node212may transmit downstream data from the data queue211to the bonding group210and the bonding group210may transmit the downstream data to the RF channel217via the channel queue215. As illustrated inFIG. 3, bonding group210has a received rate of 30 megabits/second and the bonding group220has a received rate of 80 megabits/second. Thus, the total amount of data to be transmitted (e.g., 30 megabits/second+80 megabits/second) may exceed the capacity of the RF channels217and227(e.g., 80 megabits/second).

The length of the channel queue215may increase past a threshold length because both the bonding groups210and220may be transmitting downstream data to the channel queue215. The length of the channel queue225may increase because the bonding group220is no longer able to transmit at the maximum data rate of 80 megabits/second (as illustrated and discussed above in conjunction withFIG. 2) and the additional downstream data may increase the length of the channel queue225. The feedback module229may determine that the lengths of the channel queues215and225are greater than a threshold length. The feedback module229may also determine that the data usage of the bonding group220is greater than the minimum data rate of the bonding group. For example, referring back toFIG. 2, the feedback module229may determine that the data usage (e.g., data rate) of 80 megabits/second is greater than the minimum data rate of 50 megabits/second. The feedback module229may transmit feedback message226to the node222to indicate that the node222should decrease and/or stop transmitting data. The node222may reduce the amount of downstream data and/or reduce the data rate of the downstream data to 50 megabits/second (e.g., to the minimum data rate for the bonding group220).

FIG. 4is a flowchart representation of a method400of scheduling the transmission of downstream data in a network, in accordance with some embodiments. The method400may be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processor to perform hardware simulation), or a combination thereof. In some implementations, the method400may be performed by a feedback module (as illustrated inFIGS. 1, 2, and 3) and/or a computing device (e.g., a computing device). Briefly, method400includes identifying one or more channel queues, determining a data usage of a DOCSIS bonding group, and causing a first node to modify a data rate of downstream data based on the data usages and the length of the one or more channel queues.

The method begins at block405where the method400identifies one or more RF channels associated with a DOCSIS bonding group. For example, referring toFIG. 1A, the method400may identify and/or determine that RF channels117,127, and137are associated with bonding group130(e.g., a DOCSIS bonding group). The method400determines the data usage of the DOCSIS bonding group at block410. For example, the method400may use a token bucket associated with the DOCSIS bonding group to determine the data usage of the DOCSIS bonding group (e.g., the data rate and/or the amount of downstream data transmitted by the DOCSIS bonding group).

At block415, the method400may determine whether to cause a first node associated with the DOCSIS bonding group to modify the data rate of the downstream data received from the first node. In one embodiment, the method400may determine whether the lengths of one or more (or all) of the channel queues associated with the DOCSIS bonding group are greater than a threshold length and may also determine whether the data usage of the DOCSIS bonding group is greater than a minimum data rate (as discussed above in conjunction withFIGS. 1 through 3). If the method400determines that the data rate of the downstream data should be modified, the method400may proceed to block420. For example, the method400may determine that all of the channel queues associated with the DOCSIS bonding group are greater than the threshold length and that the data usage of the DOCSIS bonding group is greater than the minimum data rate (as discussed above in conjunction withFIGS. 1 through 3). At block420, the method400may cause the first node to modify the data rate of the downstream data. For example, the method400may send a feedback message to the first node indicating that the first node should increase/decrease the amount of downstream data and/or resume/stop sending downstream data (as discussed above in conjunction withFIGS. 1 through 3). Referring to block415, if the method400determines that the data rate of the downstream data should not be modified, the method400ends. For example, the method400may determine that one or more of the channel queues associated with the DOCSIS bonding group are less than (or equal to) the threshold length or that the data usage of the DOCSIS bonding group is less than (or equal to) the minimum data rate (as discussed above in conjunction withFIGS. 1 through 3).

FIG. 5is a flowchart representation of a method500of scheduling the transmission of downstream data in a network, in accordance with additional embodiments. The method500may be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processor to perform hardware simulation), or a combination thereof. In some implementations, the method500may be performed by one or more of a feedback modules (as illustrated inFIGS. 1, 2, and 3) and/or a computing device (e.g., a server computing device). Briefly, method500includes allowing a DOCSIS bonding group to exceed a minimum data rate, determining a data usage of the DOCSIS bonding group, and causing a first node to decrease a data rate of downstream data based on the data usage and the length of the one or more channel queues.

The method begins at block505where the method500allows the DOCSIS bonding group to exceed the minimum data rate for the DOCSIS bonding group. For example, the DOCSIS bonding group may transmit downstream data at a data rate greater than the minimum data rate for the DOCSIS bonding group because other DOCSIS bonding groups may not be using one or more of the RF channels associated with the DOCSIS bonding group (as discussed above in conjunction withFIGS. 1, 2, and 3). At block510, the method500determines whether the lengths of one or more channels queues are greater than a threshold length. If the lengths of one or more (or all) channels queues is not greater than the threshold length, the method500ends. If the lengths of one or more (or all) channels queues are greater than the threshold length, the method500proceeds to block515where the method500determines the data usage of the DOCSIS bonding group at block515. For example, the method500may use a token bucket associated with the DOCSIS bonding group to determine the data usage of the DOCSIS bonding group (e.g., the data rate and/or the amount of downstream data transmitted by the DOCSIS bonding group). If the data usage of the DOCSIS bonding group is not greater than the minimum data rate, the method500ends. If the data usage of the DOCSIS bonding group is greater than the minimum data rate, the method500proceeds to block520where the method500may cause the first node to modify the data rate of the downstream data. For example, the method500may send a feedback message to the first node indicating that the first node should decrease the amount of downstream data and/or stop sending downstream data (as discussed above in conjunction withFIGS. 1 through 3).

FIG. 6is a flowchart representation of a method600of scheduling the transmission of downstream data in a network, in accordance with further embodiments. The method600may be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processor to perform hardware simulation), or a combination thereof. In some implementations, the method600may be performed by one or more of a feedback modules (as illustrated inFIGS. 1, 2, and 3) and/or a computing device (e.g., a server computing device). Briefly, method600includes causing a first node to reduce the data rate of downstream data, determining a data usage of the DOCSIS bonding group, and causing a first node to increase the data rate of the downstream data based on the data usage and the length of the one or more channel queues.

The method begins at block605where the method600causes a first node to decrease a data rate of downstream data transmitted to the DOCSIS bonding group. For example, the DOCSIS bonding group may transmit downstream data at the minimum data rate for the DOCSIS bonding group because other DOCSIS bonding groups are also using one or more of the RF channels associated with the DOCSIS bonding group (as discussed above in conjunction withFIGS. 1, 2, and 3). At block620, the method600determines whether the lengths of one or more (or all) channels queues is less than or equal to a threshold length. If the lengths of one or more (or all) channels queues is less than or equal to the threshold length, the method600proceeds to block620where the method600may cause the first node to increase the data rate of downstream data. For example, the method600may send a feedback message to the first node indicating that the first node should increase the amount of downstream data and/or continue sending downstream data (as discussed above in conjunction withFIGS. 1 through 3). If the lengths of one or more (or all) channels queues is not less than or equal to the threshold length, the method600proceeds to block615where the method600determines whether the data usage of the DOCSIS bonding group is less than or equal to the minimum data rate for the DOCSIS bonding group. For example, the method600may use a token bucket associated with the DOCSIS bonding group to determine the data usage of the DOCSIS bonding group (e.g., the data rate and/or the amount of downstream data transmitted by the DOCSIS bonding group). If the data usage of the DOCSIS bonding group is less than or equal to the minimum data rate, the method600proceeds to block620where the method600may cause the first node to increase the data rate of downstream data. If the data usage of the DOCSIS bonding group is not less than or equal to the minimum data rate, the method600ends.

FIG. 7is a block diagram of the computing device700in accordance with some embodiments. While certain specific features are illustrated, those skilled in the art will appreciate from the present disclosure that various other features have not been illustrated for the sake of brevity, and so as not to obscure more pertinent aspects of the embodiments disclosed herein. To that end, as a non-limiting example, in some embodiments the computing device700includes one or more processing units (CPU's)702(e.g., processors), one or more output interfaces703, a memory706, a programming interface708, and one or more communication buses704for interconnecting these and various other components.

In some embodiments, the communication buses704include circuitry that interconnects and controls communications between system components. The memory706includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. The memory706optionally includes one or more storage devices remotely located from the CPU(s)702. The memory706comprises a non-transitory computer readable storage medium. Moreover, in some embodiments, the memory706or the non-transitory computer readable storage medium of the memory706stores the following programs, modules and data structures, or a subset thereof including an optional operating system730and a media relay service module740. In some embodiment, one or more instructions are included in a combination of logic and non-transitory memory. The operating system730includes procedures for handling various basic system services and for performing hardware dependent tasks.

In some embodiments, the scheduling module741is configured to schedule the transmission of downstream data to a bonding group, to receive feedback messages, and to modify the data rate of the downstream data based on the feedback messages (as discussed above in conjunction withFIGS. 1 through 6). To that end, in some embodiments, the scheduling module741includes a set of instructions741aand heuristics and metadata741b. In some embodiments, the feedback module743is configured to determine the data usage of a bonding group, determine the lengths of one or more channels queues of one or more RF channels associated with the bonding group, and to cause a node to modify the data rate of downstream data transmitted to the bonding group (as discussed above in conjunction withFIGS. 1 through 6). To that end, in some embodiments, the feedback module743includes a set of instructions743aand heuristics and metadata743b.

Although the scheduling module741and feedback module743are illustrated as residing on a single computing device, it should be understood that in other embodiments, the scheduling module741and feedback module743may reside on separate computing devices. For example, the scheduling module741may reside on a first computing device and the feedback module743may reside on a second computing device.

Some aspects of the systems and methods described herein can advantageously be implemented using, for example, computer software, hardware, firmware, or any combination of computer software, hardware, and firmware. Computer software can comprise computer executable code stored in a computer readable medium (e.g., non-transitory computer readable medium) that, when executed, performs the functions described herein. In some embodiments, computer-executable code is executed by one or more general purpose computer processors. A skilled artisan will appreciate, in light of this disclosure, that any feature or function that can be implemented using software to be executed on a general purpose computer can also be implemented using a different combination of hardware, software, or firmware. For example, such a module can be implemented completely in hardware using a combination of integrated circuits. Alternatively or additionally, such a feature or function can be implemented completely or partially using specialized computers designed to perform the particular functions described herein rather than by general purpose computers.

Multiple distributed computing devices can be substituted for any one computing device described herein. In such distributed embodiments, the functions of the one computing device are distributed (e.g., over a network) such that some functions are performed on each of the distributed computing devices.

Some embodiments may be described with reference to equations, algorithms, and/or flowchart illustrations. These methods may be implemented using computer program instructions executable on one or more computers. These methods may also be implemented as computer program products either separately, or as a component of an apparatus or system. In this regard, each equation, algorithm, block, or step of a flowchart, and combinations thereof, may be implemented by hardware, firmware, and/or software including one or more computer program instructions embodied in computer-readable program code logic. As will be appreciated, any such computer program instructions may be loaded onto one or more computers, including without limitation a general purpose computer or special purpose computer, or other programmable processing apparatus to produce a machine, such that the computer program instructions which execute on the computer(s) or other programmable processing device(s) implement the functions specified in the equations, algorithms, and/or flowcharts. It will also be understood that each equation, algorithm, and/or block in flowchart illustrations, and combinations thereof, may be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or combinations of special purpose hardware and computer-readable program code logic means.

Furthermore, computer program instructions, such as embodied in computer-readable program code logic, may also be stored in a computer readable memory (e.g., a non-transitory computer readable medium) that can direct one or more computers or other programmable processing devices to function in a particular manner, such that the instructions stored in the computer-readable memory implement the function(s) specified in the block(s) of the flowchart(s). The computer program instructions may also be loaded onto one or more computers or other programmable computing devices to cause a series of operational steps to be performed on the one or more computers or other programmable computing devices to produce a computer-implemented process such that the instructions which execute on the computer or other programmable processing apparatus provide steps for implementing the functions specified in the equation(s), algorithm(s), and/or block(s) of the flowchart(s).

It will also be understood that, although the terms “first,” “second,” etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first contact could be termed a second contact, and, similarly, a second contact could be termed a first contact, which changing the meaning of the description, so long as all occurrences of the “first contact” are renamed consistently and all occurrences of the second contact are renamed consistently. The first contact and the second contact are both contacts, but they are not the same contact. Also as used in the description of the embodiments and the appended claims, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items.