This section first defines a number of used notations and formally states the problem of the two-dimensional downlink burst construction.
3.1. Notations
A two-phase bandwidth allocation is used, as described in Section 2.1. Let Call be the set of all downlink connections, and let L be the number of all downlink connections, i.e., L=|Call|. In addition, let C
i
represent the i th connection after flow scheduling. A
i
and W
i
denote the number of slots allocated by the flow scheduler and the requested bandwidth for C
i
, respectively. Although the flow scheduler estimates A
i
according to the requested bandwidth W
i
, it also considers several other factors when performing this estimation. Thus, the throughput provided by A
i
may be lower than W
i
because the flow scheduler does not allocate sufficient slots in the current downlink subframe. Conversely, the throughput provided by A
i
may exceed W
i
because the burst allocator constructs the burst in an excellent block.
A two-dimensional matrix R represents the used MCSs on different subchannels for each connection in order to investigate the effects of subchannel diversity, where R(i, j) specifies the MCS used by C
i
on the j th subchannel. A downlink subframe is composed of M×N slots, where M is the number of subchannels and N is the number of slots within one subchannel.
A downlink burst can be represented as a rectangle with a height-width pair placed on a starting slot; i.e., a downlink burst B = [(y, x),(h, w)], where (y, x) and (h, w) represent the starting slot and the height-width pair, respectively. Let B
i
be the downlink burst constructed for C
i
. In addition, let NOS
i
and MCS
i
denote the number of occupied slots and the MCS adopted by B
i
, respectively. Th
i
is the throughput achieved by connection C
i
, and its value is min(NOS
i
×MCS
i
,W
i
), where NOS
i
×MCS
i
is the bandwidth that can be supported by B
i
. When the value of NOS
i
×MCS
i
exceeds the requested bandwidth W
i
, connection C
i
only requires W
i
to transmit its data; therefore, the effective throughput is W
i
. All used notations are listed in Table 2.
3.2 Problem and Issues
Problem statement: Given a downlink subframe of M×N slots, the set of Call (all C
i
, W
i
, and A
i
), and the MCS matrix R, construct all B
i
to maximize the overall throughput .
Inefficient bandwidth usage must be eliminated to solve this problem. The following issues must be carefully considered when designing a downlink burst construction algorithm.
1. External fragmentation
A downlink burst with a rectangular shape may cause external fragmentation. External fragmentation refers to the division of available slots into small pieces that cannot meet burst requirements. Figure 3a shows an example of a connection C1 with A1 = 12 slots. The burst B1 cannot be constructed because the free bandwidth was divided into pieces that were too small to accommodate B1, although the total free bandwidth was sufficient for A1.
2. Internal fragmentation
The number of occupied slots, NOS
i
, must equal the allocated number of slots, A
i
, for any connection C
i
. However, the throughput provided by A
i
may exceed W
i
when the burst B
i
is constructed in an optimal block and thus, has an excellent MCSi. This causes internal fragmentation, which means that only some slots within a burst are used to transmit data, and the remaining are wasted. Figure 3b shows an example of internal fragmentation in that C1 only uses ten slots to transmit data, and the remaining two slots are wasted.
3. Optimal block exploration
The SS experiences various levels of SNR on different subchannels resulting from variable noises on each subchannel. The burst must be constructed in its corresponding optimal block, i.e., a block in which a number of continuous subchannels have excellent SNRs, and thus, it can use a satisfactory MCS. Thus, if the burst constructer constructs each burst on its corresponding inferior-quality subchannels and uses a low MCS; the bandwidth is inefficiently used. An example of optimal block exploration is shown in Figure 3c, in which the throughput of C1 is low when B1 is constructed in an inferior block (i.e., subchannels 1, 2, and 3), whereas the throughput is high when B1 is constructed in an optimal block (i.e., subchannels 5 and 6).
4. Best corner-oriented algorithm
BCO not only complies with the downlink burst structure specified in IEEE 802.16 standards, but also considers the issues discussed in Section 3.2. To avoid external fragmentation, BCO maintains all free slots as a continuous area by constructing each burst in the corner. To minimize internal fragmentation, BCO expands the burst by one slot height in steps. At any step, if the throughput of the constructed burst exceeds the requested bandwidth, the burst is large enough and is not further expanded, even when the number of occupied slots is smaller than the number of allocated slots, i.e., NOS
i
<A
i
. To explore an optimal block, BCO constructs a virtual burst in various corners, and subsequently selects the best corner in which the burst provides the largest throughput.
4.1. Definition of corners
BCO avoids external fragmentation by constructing a burst starting from the corner and limiting it by the bounded width and height. The corner, bounded width, and bounded height are formally defined as follows: given the available bandwidth area before constructing the i th burst, the edge set, E
i
, surrounding this area in a counterclockwise order is defined by , where and are the j th horizontal and vertical edges, respectively. The corner, is defined as an available slot, which is the intersection of and left-hand vertical edge of . The corresponding bounded width and height are defined as and , where and denote the lengths of and , respectively. Therefore, constructing a burst in the corner indicates that one of the vertices of the burst lies in , and the width and height of this burst are restricted by and , respectively. Figure 4a demonstrates that three corners are located on slot(0,4), slot(3,0) and slot(7,0) at constructing the i th burst, and their corresponding (height, width) pairs are (3,4), (5,4), and (5,8), respectively. Figure 4b presents an example of constructing burst B
i
in the .
Lemma: Provided with a downlink subframe of M×N slots and number of connections, L, the available bandwidth area is continuous if each downlink burst is constructed in the corner.
Proof: Mathematical induction is applied to prove the claim. For L = 1, which indicates that only one burst is required to be constructed, the free slots are maintained as a continuous area after this burst is constructed in and limited by and .
Suppose that all free slots are maintained as a continuous area when L = s. When L = s + 1, the (s + 1)th burst is constructed in one of the corners (i.e., ) and limited by the corresponding and . Constructing burst in maintains this burst adjacent to other constructed bursts. In addition, limiting the burst by prevents the horizontal division of the continuous free bandwidth area. Conversely, constructing burst in and limiting it by prevent the vertical division of the continuous free bandwidth area. Consequently, the free slots, after constructing the (s + 1)th bursts, are not divided and are, therefore, maintained as a continuous area. Thus, by the mathematical induction, the available bandwidth area is always a continuous area.
4.2. Burst construction
BCO minimizes the internal fragmentation by exploring the optimal height-width pair of the burst constructed in the selected . The optimal height-width pair indicates that the burst with this pair provides the optimal throughput or the smallest area. To obtain the optimal height-width pair, BCO repeatedly constructs a temporary burst, Btmp, with a possible height-width pair and calculates the throughput that this burst can provide. The steps are listed as follows:
Initialization: h = 1// set initial height
Step 1: Determine the width w for h by considering Ai, Wi, and the width .
Step 2: B
tmp
=[(y, x)(h, w)], where . In addition, calculate the throughput of Btmp.
Step 3: Record the optimal burst with the optimal height-width pair obtained thus far.
Step 4: h = h + 1;
If , go to step 1.
When the loop ends, provides the optimal throughput among all Btmp virtually constructed in .
In Step 1, A
i
and W
i
were used to calculate the width when the height was given, to alleviate internal fragmentation. BCO first calculated the width w1, where (w1×h) was equal to the allocated slots A
i
. BCO calculated the width w2 that the throughput provided by the burst (w2×h) to satisfy the requested bandwidth W
i
. Subsequently, BCO used the minimum of w1, w2, and as the width. This is because if w2 is the minimum, constructing a burst with a larger width w1 will exceed the requested bandwidth, resulting in internal fragmentation. In addition, , as the minimum, indicates that the available bandwidth area located in this corner with the height h is insufficient to accommodate a burst with A
i
slots. Therefore, the burst should be shrunk by using as its width. The exact calculations of w1 and w2 are described in the following section.
Furthermore, examining each possible height of a burst can avoid the phenomenon of throughput anomaly. The throughput anomaly indicates that a burst with a large height may anomaly cause lower throughput than a burst with a small height when the burst with a large height uses an inferior MCS. Figure 5 shows an example in which the throughput provided by the burst B(h = 3), referring to the burst with height 3, is considerably lower than that provided by the burst B(h = 2) because B(h = 3) used an inferior MCS, although B(h = 3) is larger than B(h = 2). In this case, a burst with a small height that provides large throughput should be constructed to avoid slot waste.
4.3. Pseudo code of the BCO algorithm
Figure 6 shows the pseudo code of BCO. To construct burst B
i
for each connection C
i
, BCO first uses the FindCorner function to obtain CRList, which contains the corners from the available bandwidth area. The FindCorner function returns the CRList by examining the horizontal and the vertical edges of the available bandwidth area. BCO subsequently explores the optimal corner by virtually constructing the burst in each corner to address the optimal block exploration (line 6-13), i.e., BCO repeatedly invokes the ConstructBurst function to virtually construct a burst in the corner . BCO subsequently compares with to determine which is superior, i.e., which has higher throughput or which occupies the fewer slots under the same obtained throughput. If is superior, BCO sets to . After virtually constructing all and obtaining the best burst , BCO constructs B
i
as .
The ConstructBurst function searches for the optimal height-width pair of the burst constructed in the chosen corner to minimize the internal fragmentation. Initially, the ConstructBurst function records (hmax,wmax) as the bounded height-width pair (line 18). The ConstructBurst function subsequently examines each possible height-width pair in lines 20-27 and returns the burst with the optimal height-width pair. In addition, when determining the width of the Btmp for each height h, w1 is calculated by , where ⌊⌋ denotes the floor function, to ensure that the (w1×h) slots do not exceed the allocated slots (i.e., A
i
). Conversely, w2 is calculated by , where ⌈⌉ denotes the ceil function, to ensure that the burst with (w2×h) satisfies the requested bandwidth requirement (i.e., W
i
). The function FindMCS(i,j,h) calculates the MCS used by the burst located in the corner j with the height h.
BCO evaluates the burst constructed in each corner by the NOSCal, MCSCal, and ThCal functions. The NOSCal(B) calculates the number of occupied slots for a burst B, and MCSCal(i,B) and ThCal(i,B) calculate the used MCS and achieved throughput of a constructed burst B for C
i
, respectively. According to the definitions, for a specific burst, B=[(y,x),(h,w)], where (y,x) is the location of the starting slot and (h,w) is the height-width pair, NOSCal(B) and MCSCal(i,B) return h×w and , respectively, and ThCal(i,B) returns min(NOSCal(B)×MCSCal(i,B),W
i
).
BCO applies a saving variable to efficiently use the unused allocated slots of each burst to improve throughput. This is because the flow scheduler usually allocates the total number of slots of the downlink subframe to each connection, indicating that the sum of all allocated slots equals the total number of slots in the downlink subframe. In this case, even when satisfying the requested bandwidth by fewer slots to avoid internal fragmentation, the saved slots are still not utilized. Therefore, BCO uses saving to record the number of total saved slots to allow subsequent bursts to use the saved slots conserved from the previous bursts. As shown in line 12, the unused slots after constructing B
i
, i.e., A
i
-NOSCal(B
i
), are added to the parameter, saving. Subsequently, the latter connection C
i
+1 has A
i
+1 +saving slots to construct B
i
+1, as shown in line 21. Therefore, each burst not only uses its own allocated slots, but also applies the additional saving slots to fulfill its required bandwidth. The use of this parameter prevents two unfavorable phenomena, as follows: the waste of unused slots internal to the bursts constructed on optimal subchannels and the bandwidth dissatisfaction of connections whose bursts are constructed on inferior subchannels. Thus, this approach enhances the total throughput.
4.4. Time complexity analysis
The time complexity of BCO is calculated as follows: because the FindMCS, NOSCal, MCSCal, and ThCal functions can immediately provide their calculated values, their time complexities are O(1). The FindCorner function executes a loop to examine each subchannel, therefore, this function requires complexity of O(M). The ConstructBurst function requires the complexity of O(s), where s is the average number of loops to evaluate each possible height-width pair. BCO executes the ConstructBurst function t times, where t is the average number of corners, therefore, the required complexity is O(st). Therefore, the time complexity of BCO at constructing the burst for the i th connection is O(M)+O(st)+O(s)+O(1). The time complexity of BCO for all connections is easily obtained as follows:
Because t and s are always less than or equal to M and the average number of occupied slots, u, respectively, the time complexity of BCO becomes
However, the sum of occupied slots for all bursts does not exceed the total number of slots in the downlink subframe, i.e., , therefore, the time complexity of BCO is O(M2N).