The present embodiments relate generally to communication systems, and specifically to bandwidth allocation in networks that use time-division multiple access (TDMA).
A system in which a master device is coupled to multiple slave devices may be implemented using a Time-Division Multiple Access (TDMA) protocol, such that access to the medium coupling the devices is time-multiplexed among the devices. For example, the master device receives reports from respective slave devices that specify how much traffic is queued for transmission in the respective slave devices. The master device then dynamically allocates bandwidth among the slave devices based in part on the reports. There is a need for efficient and effective dynamic bandwidth allocation techniques.
The present embodiments are illustrated by way of example and are not intended to be limited by the figures of the accompanying drawings.
Like reference numerals refer to corresponding parts throughout the drawings and specification.
Embodiments are disclosed in which bandwidth is dynamically allocated among devices partially based on credits assigned to the devices and partially in a manner independent of the credits.
In some embodiments, a master device coupled to multiple slave devices in a system performs a method of allocating bandwidth. In the method, credits are assigned to each device of a plurality of devices in the system. Bandwidth is allocated among the plurality of devices for high-priority traffic, regardless of the credits. After allocating bandwidth for high-priority traffic, bandwidth is allocated among the plurality of devices based on the credits. A transmission schedule is generated for the plurality of devices based on the allocated bandwidth.
In some embodiments, a master device is to be coupled to a plurality of slave devices in a system. The master device includes a scheduler to assign credits to each device of a plurality of devices in the system; to allocate bandwidth among the plurality of devices for high-priority traffic, regardless of the credits; to allocate bandwidth among the plurality of devices based on the credits, after allocating bandwidth for high-priority traffic; and to generate a transmission schedule for the plurality of devices based on the allocated bandwidth. The master device also includes a physical-layer device (PHY) to transmit the transmission schedule.
In some embodiments, a non-transitory computer-readable storage medium stores one or more programs configured to be executed by a master device in a system comprising the master device and a plurality of slave devices. The one or more programs include instructions to assign credits to each device of a plurality of devices in the system; instructions to allocate bandwidth among the plurality of devices for high-priority traffic, regardless of the credits; instructions to allocate bandwidth among the plurality of devices based on the credits, after allocating bandwidth for high-priority traffic; and instructions to generate a transmission schedule for the plurality of devices based on the allocated bandwidth.
In some embodiments, a system includes a master device coupled to a plurality of slave devices. The master device includes a scheduler to assign credits to each device of a plurality of devices in the system; to allocate bandwidth among the plurality of devices for high-priority traffic, regardless of the credits; to allocate bandwidth among the plurality of devices based on the credits, after allocating bandwidth for high-priority traffic; and to generate a transmission schedule for the plurality of devices based on the allocated bandwidth. The master device further includes a PHY to transmit the transmission schedule to the plurality of slave devices. The plurality of slave devices is configured to transmit in accordance with the transmission schedule.
In the following description, numerous specific details are set forth such as examples of specific components, circuits, and processes to provide a thorough understanding of the present disclosure. Also, in the following description and for purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the present embodiments. However, it will be apparent to one skilled in the art that these specific details may not be required to practice the present embodiments. In other instances, well-known circuits and devices are shown in block diagram form to avoid obscuring the present disclosure. The term “coupled” as used herein means connected directly to or connected through one or more intervening components or circuits. Any of the signals provided over various buses described herein may be time-multiplexed with other signals and provided over one or more common buses. Additionally, the interconnection between circuit elements or software blocks may be shown as buses or as single signal lines. Each of the buses may alternatively be a single signal line, and each of the single signal lines may alternatively be buses, and a single line or bus might represent any one or more of a myriad of physical or logical mechanisms for communication between components. The present embodiments are not to be construed as limited to specific examples described herein but rather to include within their scope all embodiments defined by the appended claims.
Access to the medium (e.g., the coax links of the cable plant 130) that couples that devices 110 and 120-1 through 120-N is time-multiplexed using a Time-Division Multiple Access (TDMA) protocol. In some embodiments, the master device 110 periodically broadcasts a medium access schedule (also referred to as a channel access schedule) to all slave devices 120-1 through 120-N. For example, the channel access schedule is periodically broadcast in a message called a beacon message or simply a beacon. The channel access schedule assigns dedicated time slots to respective slave devices 120, such that a respective slave device 120 may transmit during its dedicated time slot and not during time slots assigned to other slave devices 120. A scheduler in the master device 110 determines the amount of medium access for each slave device 120 (or each group of slave devices 120), based for example on the service level agreements (SLAs) between end users associated with respective slave devices 120 and the service provider (e.g., cable operator) who controls the master device 110. The service level agreements specify amounts of bandwidth available to the slave devices 120. For example, a service level agreement may specify an assured bandwidth, which is an amount of bandwidth guaranteed to a slave device 120, and a peak bandwidth, which is greater than or equal to the peak bandwidth and is a maximum amount of bandwidth for a slave device 120. The scheduler constructs the channel access schedule based on the determined amounts of medium access for the slave devices 120.
The period between broadcasts of successive channel access schedules (e.g., the period from the beginning of a beacon message to the beginning of the next beacon message) is called a beacon period.
Each beacon period 202 further includes upstream time slots 208 and downstream time slots 210. The time slots 208 and 210 are allocated in accordance with a time-division multiple access (TDMA) protocol. Respective upstream time slots 208 are assigned to respective slave devices 120 for upstream transmissions to the master device 110. These assignments are based at least in part on the reported status of transmission queues in the slave devices 120. (These assignments may be further based on service level agreements and on the modulation and coding schemes used for respective links, as specified by respective tone maps.) For example, a slave device 120 may have multiple queues (e.g., low-priority queue 324 and high-priority queue 326,
Downstream time slots 210 are allocated for downstream transmissions by the master device 110. The downstream time slots 210 may include time slots for unicast transmissions to specific slave devices 120 as well as a time slot for broadcasts to all of the slave devices 120-1 through 120-N. The downstream time slots 210 may be allocated based at least in part on downstream traffic queued in the master device 110, and also based on service level agreements and the modulation and coding schemes used for respective links, as specified by respective tone maps. Because the downstream time slots 210 are allocated to the master device 110, the slave devices 120 do not transmit during the downstream time slots 210.
The lengths (i.e., durations) of the time slots 204, 206, 208, and/or 210 are variable, as shown for the time slots 208-1, 208-2, and 208-M in
In each beacon period 202 (e.g., during respective upstream time slots 208), the slave devices 120-1 through 120-N report their amounts of queued upstream traffic to the master device 110 so that the master device 110 can create an appropriate channel access schedule for a subsequent (e.g., the next) beacon period 202. The amount of queued upstream traffic for a respective slave device 120 may include the amount of low-priority traffic queued for upstream transmission in the slave device 120 and the amount of high-priority traffic queued for upstream transmission in the slave device 120. The channel access schedule for the subsequent (e.g., next) beacon period 202 assigns upstream time slots 208 based at least in part on the reported amounts of queued upstream traffic.
The TDMA MAC 322 of the slave device 320 includes a low-priority queue 324 to store low-priority traffic (e.g., low-priority packets) for subsequent upstream transmission to the master device 302 and a high-priority queue 326 to store high-priority traffic (e.g., high-priority packets) for subsequent upstream transmission to the master device 302. The terms low-priority and high-priority as used herein are used with respect to each other: low-priority traffic has lower priority than high-priority traffic, and vice versa. In some embodiments, there are multiple types of high-priority traffic. For example, the high-priority traffic may include Voice-over-Internet-Protocol (VoIP) traffic and non-VoIP traffic. The TDMA MAC 322 also includes a report module 328 that monitors the status (e.g., the length, and thus the amount queued traffic) of the queues 324 and 326 and prepares reports for transmission to the master device 302 that report the status of the queues 324 and 326. The slave device 320 transmits these reports to the master device 302 during upstream time slots 208 (
The TDMA MAC 310 of the master device 302 includes a low-priority queue 312 to store low-priority downstream traffic for subsequent transmission and a high-priority queue 314 to store high-priority downstream traffic for subsequent transmission. In some embodiments, the TDMA MAC 310 includes a separate low-priority queue 312 and high-priority queue 314 for each slave device 320.
The DBA scheduler 304 of the master device 302 includes a queue length table 306 to track the status of the queues 324 and 326 as reported by the slave devices 320 and also to track the status of the queues 312 and 314 in the master device 302. The DBA scheduler 304 also includes a credit table 308 to track credits assigned to respective devices (e.g., respective slave devices 320 and/or the master device 302) in the system 300. These credits are used to implement service level agreements. For example, the credits include assured credits and peak credits, which correspond respectively to the assured bandwidth and peak bandwidth specified in the service level agreements.
In the method 400, the DBA scheduler 304 assigns (404) assured credits and peak credits to each of a plurality of devices in the system 300. The plurality of devices to which the credits are assigned include active slave devices 320 (e.g., slave devices 320 that are turned on and have completed an association and authentication process with the master device 302) and may also include the master device 302. An example of credit assignment 404 is provided below in the method 500 of
The DBA scheduler 304 allocates (406) bandwidth for overhead associated with operation of the system 300. An example of overhead bandwidth allocation 406 is provided below in the method 600 of
The DBA scheduler 304 allocates (408) bandwidth for high-priority traffic, regardless of the credits assigned in the operation 404. The assured credits and peak credits thus do not limit the amount of bandwidth allocated in the operation 408, although credits (e.g., assured credits) may be consumed, such that the credits (e.g., the assured credits) for a respective device are reduced by the amount of bandwidth allocated to the respective device for high-priority traffic. In some embodiments, high-priority traffic includes multiple types of traffic and the operation 408 is performed for a first type of high-priority traffic (e.g., for VoIP traffic). An example of the allocation 408 of bandwidth for high-priority traffic is provided below in the method 700 of
After allocating (408) bandwidth for high-priority traffic, the DBA scheduler 304 allocates bandwidth among the plurality of devices based on the credits assigned in the operation 404. For example, the DBA scheduler 304 allocates (410) bandwidth based on the assured credits and then allocates (412) bandwidth based on the peak credits. An example of the allocation 410 of bandwidth based on the assured credits is provided below in the method 800 of
After allocating (412) bandwidth based on the peak credits, the DBA scheduler 304 allocates (414) remaining bandwidth. For example, bandwidth is allocated among respective devices that have queued traffic for which bandwidth has not already been allocated in previous operations of the method 400. Any remaining bandwidth is divided (e.g., equally) among the plurality of devices. An example of allocating bandwidth among respective devices that have queued traffic for which bandwidth has not previously been allocated is provided below in the method 1000 of
Once the bandwidth allocation is complete, the DBA scheduler 304 generates (416) a transmission schedule. Examples of generating a transmission schedule are provided below in the method 1100 of
The method 400 is repeated periodically. For example, the operations 406-418 are performed in each beacon period 202 (
In some embodiments, the method 400 is performed repeatedly during a single time period (e.g., a single beacon period 202,
In the method 500, a variable R1 is set equal to the current number of assured credits for a device (or group of devices) and a variable R2 is set equal to the current number of peak credits for the device (502). A number of assured credits P1 and a number of peak credits P2 corresponding to a credit period are calculated (504). In some embodiments, the credits have units corresponding to a number of symbols. To calculate P1 and P2, the assured bandwidth and peak bandwidth as specified in the service level agreement for a device or group of devices (e.g., with units of kbps) are multiplied by the duration of the credit period. The resulting numbers of bits are then converted to corresponding numbers of OFDM symbols (e.g., in accordance with the relevant tone map).
A determination is made (506) as to whether R1 is positive. If R1 is positive (506-Yes), the number of assured credits is set equal to P1 and the number of peak credits is set equal to R1 plus P2 (508), such that unused assured credits from a previous credit period are converted to peak credits, and the number of assured credits is capped at P1. If R1 is negative or zero (506-No), the number of assured credits is set equal to R1 plus P1 and the number of peak credits is set equal to P2 (510). The device thus may have fewer than P1 assured credits if the device consumed an excessive number of assured credits (e.g., during the operation 408,
The credit table 308 (
The available bandwidth is set (602) equal to a maximum available bandwidth for the system 300. Bandwidth is allocated for switching between transmitting and receiving in the master device 302 (e.g., for a time gap associated with this switching; this gap is sometimes referred to as the last revisal gap). Each time bandwidth is allocated in the method 600, the available bandwidth is reduced accordingly. A variable n is set equal to zero. The variable n is used to index devices.
A determination is made (604) if n is less than the number of active devices (e.g., the number of active slave devices 320 plus the master device 302). The number of active devices is sometimes referred to as the number of active links. If n is not less than the number of active devices (604-No), then a warning is issued (616) if the available bandwidth is less than zero, which would mean that not enough bandwidth is available for system overhead, and the method 600 ends.
If n is less than the number of active devices (604-Yes), then a determination is made (606) if device n is a slave device 320. If it is (606-Yes), then bandwidth is allocated (608) for a reporting message to be transmitted by the device n. The reporting message reports the status of queues (e.g., low-priority queue 324 and high-priority queue 326,
Bandwidth is allocated (610) for control packets. In some embodiments, the control packets are Management Message Entries (MME) as defined, for example, in accordance with HomePlug AV/IEEE1901 standard and bandwidth is allocated for them if an MME PHY block in a respective device is set valid.
Bandwidth is allocated (612) for sounding if sounding is to be performed (e.g., as specified by a sounding flag in a respective device being set valid). The sounding process involves transmitting known data between the master device 302 and a slave device 320 and using the known data to estimate channel characteristics. A tone map specifying modulation and coding schemes for respective carriers is generated based on the estimated channel characteristics. Sounding may be performed separately for upstream and downstream transmissions between a master device 302 and slave device 320; bandwidth is allocated accordingly.
The variable n is incremented (“n++”) (614) such that it now indexes another device, and the method 600 returns to operation 604. The method 600 continues until bandwidth for system operation overhead for all active devices has been allocated. The allocated bandwidth for system operation overhead thus includes bandwidth for control packets (e.g., MME bandwidth), bandwidth for reporting messages from slave devices 320, bandwidth for switching time, and/or bandwidth for sounding.
The variable n is set (702) equal to a variable “High Priority Index,” which is used to index devices in the system 300. A determination is made (704) if the available bandwidth is greater than zero. If not, (704-No), High Priority Index is set (720) equal to n and the method 700 ends. Setting High Priority Index equal to n in this situation ensures that the method 700 will begin with device n in the next iteration (e.g., in the next beacon period 202,
If the available bandwidth is greater than zero (704-Yes), then a determination is made (706) as to whether the length of the high-priority queue 326 or 314 (
The minimum of the requested bandwidth for device n and the available bandwidth is allocated (710) to device n. The available bandwidth is updated (i.e., reduced) (712) accordingly. Assured credits for device n are consumed (712): the number of assured credits for device n is reduced by an amount corresponding to the allocated bandwidth. The allocation 710 of bandwidth for high-priority traffic thus is done regardless of credits: a lack of available credits does not prevent or limit the allocation 710. However, the allocation 710 consumes assured credits and thus may limit bandwidth allocated to the device n for other types of traffic. The number of assured credits for device n may become negative based on the consumption 712.
The high-priority queue length for device n, as tracked by the DBA scheduler 304 in the queue length table 306, is updated (i.e., reduced) (714) according to the bandwidth allocation 710. The variable n is incremented (716); if the incremented value of n equals the number of active devices, n is reset to zero, such that n wraps around. A determination is made (718) if n equals the High Priority Index. If no (718-no), the method 700 has not been completed for every active device and the method 700 returns to operation 704. If yes (718-yes), the method 700 has been completed for every active device, and the High Priority Index is set (720) equal to n, such that the method 700 will begin with the device n during a subsequent iteration.
The variable n is set (802) equal to a variable “Assured Index,” which is used to index devices in the system 300. A determination is made (804) if the available bandwidth is greater than zero. If not, (804-No), the Assured Index is set (820) equal to n and the method 800 ends. Setting the Assured Index equal to n in this situation ensures that the method 800 will begin with device n in the next iteration (e.g., in the next beacon period 202,
If the available bandwidth is greater than zero (804-Yes), then a determination is made (806) as to whether both the length of a queue (e.g., a high-priority queue 326 or 314, or alternatively a low-priority queue 324 or 312,
The minimum of the requested bandwidth for device n and the available bandwidth is allocated (810) to device n. The available bandwidth is updated (i.e., reduced) (812) accordingly. Assured credits for device n are consumed (812): the number of assured credits for device n is reduced by an amount corresponding to the allocated bandwidth.
The relevant queue length for device n, as tracked by the DBA scheduler 304 in the queue length table 306, is updated (i.e., reduced) (814) according to the bandwidth allocation 810. The variable n is incremented (816); if the incremented value of n equals the number of active devices, n is reset to zero, such that n wraps around. A determination is made (818) if n equals the Assured Index. If no (818-no), the method 800 has not been completed for every active device and the method 800 returns to operation 804. If yes (818-yes), the method 800 has been completed for every active device, and the Assured Index is set (820) equal to n, such that the method 800 will begin with the device n during a subsequent iteration.
The variable n is set (902) equal to a variable “Peak Index,” which is used to index devices in the system 300. A determination is made (904) if the available bandwidth is greater than zero. If not, (904-No), the Peak Index is set (920) equal to n and the method 900 ends. Setting the Peak Index equal to n in this situation ensures that the method 900 will begin with device n in the next iteration (e.g., in the next beacon period 202,
If the available bandwidth is greater than zero (904-Yes), then a determination is made (906) as to whether both the length of a queue (e.g., a high-priority queue 326 or 314, or alternatively a low-priority queue 324 or 312,
The minimum of the requested bandwidth for device n and the available bandwidth is allocated (910) to device n. The available bandwidth is updated (i.e., reduced) (912) accordingly. Peak credits for device n are consumed (912): the number of peak credits for device n is reduced by an amount corresponding to the allocated bandwidth.
The relevant queue length for device n, as tracked by the DBA scheduler 304 in the queue length table 306, is updated (i.e., reduced) (914) according to the bandwidth allocation 910. The variable n is incremented (916); if the incremented value of n equals the number of active devices, n is reset to zero, such that n wraps around. A determination is made (918) if n equals the Peak Index. If no (918-no), the method 900 has not been completed for every active device and the method 900 returns to operation 904. If yes (918-yes), the method 900 has been completed for every active device, and the Peak Index is set (920) equal to n, such that the method 900 will begin with the device n during a subsequent iteration.
If any available bandwidth remains after performance of the methods 600, 700, 800, and 900 (
The variable n is set (1002) equal to a variable “Remaining Index,” which is used to index devices in the system 300. A determination is made (1004) if the available bandwidth is greater than zero. If not, (1004-No), the Remaining Index is set (1020) equal to n and the method 1000 ends. Setting the Remaining Index equal to n in this situation ensures that the method 1000 will begin with device n in the next iteration (e.g., in the next beacon period 202,
If the available bandwidth is greater than zero (1004-Yes), then a determination is made (1006) as to whether the length of a queue (e.g., a high-priority queue 326 or 314, or a low-priority queue 324 or 312,
The minimum of the requested bandwidth for device n and the available bandwidth is allocated (1010) to device n. The available bandwidth is updated (i.e., reduced) (1012) accordingly. The allocation 1010 is done regardless of the numbers of assured and peak credits for the device n and no credits are consumed.
The relevant queue length for device n, as tracked by the DBA scheduler 304 in the queue length table 306, is updated (i.e., reduced) (1014) according to the bandwidth allocation 1010. The variable n is incremented (1016); if the incremented value of n equals the number of active devices, n is reset to zero, such that n wraps around. A determination is made (1018) if n equals the Remaining Index. If no (1018-no), the method 1000 has not been completed for every active device and the method 1000 returns to operation 1004. If yes (1018-yes), the method 1000 has been completed for every active device, and the Remaining Index is set (1020) equal to n, such that the method 1000 will begin with the device n during a subsequent iteration.
The remaining available bandwidth is averaged (1052) among the active devices. For example, the available bandwidth is divided evenly among the active devices, such that the average available bandwidth equals the available bandwidth divided by the number of active devices. Each active device is allocated the average available bandwidth.
After allocation of the average available bandwidth to the devices, some available bandwidth may remain due to round-off when averaging. To allocate this remaining bandwidth, the variable n is set (1054) equal to a variable “Average Remaining Index,” which is used to index devices in the system 300. A determination is made (1056) if the available bandwidth is greater than zero, and thus if there is any available bandwidth that remains due to round-off. If not, (1056-No), the Average Remaining Index is set (1062) equal to n and the method 1050 ends.
If the available bandwidth is greater than zero (1056-Yes), then the available bandwidth is allocated (1058) to device n. The variable n is incremented (1060); if the incremented value of n equals the number of active devices, n is reset to zero, such that n wraps around. The Average Remaining Index is set (1062) equal to n, such that a different device will receive the bandwidth remaining due to round-off during the next iteration of the method 1050. The remaining bandwidth, if any, allocated in the operation 1058 is thus allocated in a round-robin manner for successive iterations of the method 1050.
Bandwidth allocated in the method 1050 may be used, for example, by packets that are queued up after slave devices 320 transmit their queue status reports, but before the beginning of corresponding time slots. The method 1050 thus reduces latency.
Once all bandwidth has been allocated among the active devices during the methods 600, 700, 800, 900, 1000, and/or 1050 (
A variable “Slot Index,” which is used to index time slots, is set (1102) equal to zero and the variable n is set (1104) equal to zero. A determination is made (1106) as to whether the device n has been allocated bandwidth. If no (1106-no), the method 1100 jumps to the operation 1112, described below, and no time slot is assigned to the device n. If yes (1106-yes), the Slot Index is associated (1108) with device n, thus assigning the time slot indexed by Slot Index to device n. The Slot Index is then incremented. The variable n is incremented (1110). A determination is made (1112) if n equals the number of active devices. If no (1112-no), the method 1100 has not been completed for every active device and the method 1100 returns to operation 1106. If yes (1112-yes), time slots have been assigned to every active device that was allocated bandwidth.
A first time slot, for which the Slot Index equals zero, is associated (1152) with a first device (device 0, i.e., n=0), such that device 0 is assigned the first time slot. The Slot Index is then set to one. The variable n is set (1154) equal to a variable “Scheduling Index,” which is used to index devices. A determination is made (1156) as to whether the device n has been allocated bandwidth and whether n is not equal to zero (“n!=0”). If both conditions are not satisfied (1156-no), the method 1150 skips to the operation 1162, described below, and no time slot is assigned to the device n. If both conditions are satisfied (1156-Yes), the Slot Index is associated (1158) with the device n, such that the device n is assigned the corresponding time slot.
The variable n is incremented (1160). If the incremented value of n equals the number of active devices, n is reset to zero, such that n wraps around. A determination is made (1162) if n equals the Scheduling Index. If no (1162-no), the method 1150 has not been completed for every active device and the method 1150 returns to operation 1156. If yes (1162-yes), the method 1150 has been completed for every active device. The variable n is incremented (1164) and the Scheduling Index is then set (1064) equal to n. As a result, with the exception of the first device, the order in which devices are assigned time slots varies for different beacon periods 202. Varying this order averages out latencies for the various devices, whereas the fixed order of the method 1100 (
While the method 400 (
The method 400 allows service level agreements that specify multiple types of bandwidth (e.g., assured bandwidth and peak bandwidth) to be implemented with flexibility. The method 400 honors Quality of Service based on different priority levels while avoiding wasting unused bandwidth. If some devices do not require bandwidth during a time period, other devices may use the unrequired bandwidth.
In some embodiments, the TDMA MAC 310 and/or DBA scheduler 304 (
In some embodiments, the TDMA MAC 322 (
While the memories 1204 (
In the foregoing specification, the present embodiments have been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/CN2012/083688 | 10/29/2012 | WO | 00 |