alloc: Add 'dynamic' allocation algorithm

The idea behind this meta algorithm is to automatically select one of
the other algorithms based on the system state. Basically algorithm B
will be selected if the PDCH usage is low to improve throughput and
latency. Algorithm A will be selected to support more concurrent MS.

This commit adds a first simple state-less version of this algorithm
that always tries B first and only if that fails A is tried
afterwards.

The following VTY command is added to the 'pcu' node:

 - alloc-algorithm dynamic

Ticket: #1934
Sponsored-by: On-Waves ehf
This commit is contained in:
Jacob Erlbeck 2015-07-14 13:31:48 +02:00
parent 40da3e17e5
commit 400ec02e8a
6 changed files with 1741 additions and 3 deletions

View File

@ -104,6 +104,11 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts,
struct GprsMs *ms,
struct gprs_rlcmac_tbf *tbf, uint32_t cust, uint8_t single,
int use_trx);
int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts,
struct GprsMs *ms,
struct gprs_rlcmac_tbf *tbf, uint32_t cust, uint8_t single,
int use_trx);
#ifdef __cplusplus
}
#endif

View File

@ -996,3 +996,26 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts,
return 0;
}
/* Slot Allocation: Algorithm dynamic
*
* This meta algorithm automatically selects on of the other algorithms based
* on the current system state.
*
* The goal is to support as many MS and TBF as possible. On low usage, the
* goal is to provide the highest possible bandwidth per MS.
*
*/
int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts,
GprsMs *ms_, struct gprs_rlcmac_tbf *tbf_,
uint32_t cust, uint8_t single, int use_trx)
{
int rc;
rc = alloc_algorithm_b(bts, ms_, tbf_, cust, single, use_trx);
if (rc >= 0)
return rc;
rc = alloc_algorithm_a(bts, ms_, tbf_, cust, single, use_trx);
return rc;
}

View File

@ -120,6 +120,8 @@ static int config_write_pcu(struct vty *vty)
vty_out(vty, " alloc-algorithm a%s", VTY_NEWLINE);
if (bts->alloc_algorithm == alloc_algorithm_b)
vty_out(vty, " alloc-algorithm b%s", VTY_NEWLINE);
if (bts->alloc_algorithm == alloc_algorithm_dynamic)
vty_out(vty, " alloc-algorithm dynamic%s", VTY_NEWLINE);
if (bts->force_two_phase)
vty_out(vty, " two-phase-access%s", VTY_NEWLINE);
vty_out(vty, " alpha %d%s", bts->alpha, VTY_NEWLINE);
@ -447,10 +449,12 @@ DEFUN(cfg_pcu_no_queue_idle_ack_delay,
DEFUN(cfg_pcu_alloc,
cfg_pcu_alloc_cmd,
"alloc-algorithm (a|b)",
"alloc-algorithm (a|b|dynamic)",
"Select slot allocation algorithm to use when assigning timeslots on "
"PACCH\nSingle slot is assigned only\nMultiple slots are assigned for "
"semi-duplex operation")
"PACCH\n"
"Single slot is assigned only\n"
"Multiple slots are assigned for semi-duplex operation\n"
"Dynamically select the algorithm based on the system state\n")
{
struct gprs_rlcmac_bts *bts = bts_main_data();
@ -461,6 +465,9 @@ DEFUN(cfg_pcu_alloc,
case 'b':
bts->alloc_algorithm = alloc_algorithm_b;
break;
default:
bts->alloc_algorithm = alloc_algorithm_dynamic;
break;
}
return CMD_SUCCESS;

View File

@ -707,37 +707,50 @@ static void test_successive_allocation()
32, "algorithm B class 1-12 (UL and DL)");
test_successive_allocation(alloc_algorithm_b, 1, 29, TEST_MODE_UL_AND_DL,
32, "algorithm B class 1-29 (UL and DL)");
test_successive_allocation(alloc_algorithm_dynamic, 1, 29, TEST_MODE_UL_AND_DL,
35, "algorithm dynamic class 1-29 (UL and DL)");
test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_DL_AND_UL,
35, "algorithm A (DL and UL)");
test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_DL_AND_UL,
32, "algorithm B class 10 (DL and UL)");
test_successive_allocation(alloc_algorithm_dynamic, 10, 10, TEST_MODE_DL_AND_UL,
32, "algorithm dynamic class 10 (DL and UL)");
test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_DL_AFTER_UL,
160, "algorithm A (DL after UL)");
test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_DL_AFTER_UL,
32, "algorithm B class 10 (DL after UL)");
test_successive_allocation(alloc_algorithm_dynamic, 10, 10, TEST_MODE_DL_AFTER_UL,
63, "algorithm dynamic class 10 (DL after UL)");
test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_UL_AFTER_DL,
35, "algorithm A (UL after DL)");
test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_UL_AFTER_DL,
32, "algorithm B class 10 (UL after DL)");
test_successive_allocation(alloc_algorithm_dynamic, 10, 10, TEST_MODE_UL_AFTER_DL,
35, "algorithm dynamic class 10 (UL after DL)");
test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_UL_ONLY,
35, "algorithm A (UL only)");
test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_UL_ONLY,
32, "algorithm B class 10 (UL only)");
test_successive_allocation(alloc_algorithm_dynamic, 10, 10, TEST_MODE_UL_ONLY,
35, "algorithm dynamic class 10 (UL only)");
test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_DL_ONLY,
160, "algorithm A (DL ONLY)");
test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_DL_ONLY,
32, "algorithm B class 10 (DL ONLY)");
test_successive_allocation(alloc_algorithm_dynamic, 10, 10, TEST_MODE_DL_ONLY,
101, "algorithm dynamic class 10 (DL ONLY)");
}
static void test_many_connections()
{
test_many_connections(alloc_algorithm_a, 160, "algorithm A");
test_many_connections(alloc_algorithm_b, 32, "algorithm B");
test_many_connections(alloc_algorithm_dynamic, 121, "algorithm dynamic");
}
int main(int argc, char **argv)

File diff suppressed because it is too large Load Diff

View File

@ -8761,6 +8761,43 @@ Going to test assignment with many TBF, algorithm B class 1-29 (UL and DL)
TBF[30] class 2 reserves ......DC
TBF[31] class 3 reserves ....DC..
Successfully allocated 32 UL TBFs
Going to test assignment with many TBF, algorithm dynamic class 1-29 (UL and DL)
TBF[0] class 1 reserves ...C....
TBF[1] class 2 reserves ....DC..
TBF[2] class 3 reserves ......DC
TBF[3] class 4 reserves ...DCD..
TBF[4] class 5 reserves ......CD
TBF[5] class 6 reserves ...CD...
TBF[6] class 7 reserves .....CD.
TBF[7] class 8 reserves ....DDCD
TBF[8] class 9 reserves ...DCD..
TBF[9] class 10 reserves .....DDC
TBF[10] class 11 reserves ...DCD..
TBF[11] class 12 reserves .....DCD
TBF[12] class 13 reserves ...CDD..
TBF[13] class 14 reserves ....DCDD
TBF[14] class 15 reserves ...DDDDC
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...DCDDD
TBF[17] class 18 reserves ...DDCDD
TBF[18] class 19 reserves .....DCD
TBF[19] class 20 reserves ...DCD..
TBF[20] class 21 reserves .....DDC
TBF[21] class 22 reserves ...DDC..
TBF[22] class 23 reserves .....DCD
TBF[23] class 24 reserves ...DCD..
TBF[24] class 25 reserves .....DDC
TBF[25] class 26 reserves ...DDC..
TBF[26] class 27 reserves .....DCD
TBF[27] class 28 reserves ...DCD..
TBF[28] class 29 reserves .....DDC
TBF[29] class 1 reserves ...C....
TBF[30] class 2 reserves ......DC
TBF[31] class 3 reserves ....DC..
TBF[1] class 4 reserves ...C....
TBF[2] class 5 reserves ...C....
TBF[0] class 6 reserves ......C.
Successfully allocated 35 UL TBFs
Going to test assignment with many TBF, algorithm A (DL and UL)
TBF[0] class 1 reserves ...C....
TBF[0] class 1 reserves ....C...
@ -8832,6 +8869,40 @@ Going to test assignment with many TBF, algorithm B class 10 (DL and UL)
TBF[30] class 10 reserves .....DDC
TBF[31] class 10 reserves ...CD...
Successfully allocated 32 UL TBFs
Going to test assignment with many TBF, algorithm dynamic class 10 (DL and UL)
TBF[0] class 10 reserves ...DDCD.
TBF[1] class 10 reserves .....DCD
TBF[2] class 10 reserves ...DCD..
TBF[3] class 10 reserves .....DCD
TBF[4] class 10 reserves ...DCD..
TBF[5] class 10 reserves .....DCD
TBF[6] class 10 reserves ...DCD..
TBF[7] class 10 reserves .....DCD
TBF[8] class 10 reserves ...DCD..
TBF[9] class 10 reserves .....DCD
TBF[10] class 10 reserves ...DCD..
TBF[11] class 10 reserves .....DCD
TBF[12] class 10 reserves ...DCD..
TBF[13] class 10 reserves .....DCD
TBF[14] class 10 reserves ...DCD..
TBF[15] class 10 reserves ...DDCD.
TBF[16] class 10 reserves ...DDCD.
TBF[17] class 10 reserves ...DDCD.
TBF[18] class 10 reserves ...DDCD.
TBF[19] class 10 reserves ...DDCD.
TBF[20] class 10 reserves ...DDCD.
TBF[21] class 10 reserves .....DDC
TBF[22] class 10 reserves .....DDC
TBF[23] class 10 reserves .....DDC
TBF[24] class 10 reserves .....DDC
TBF[25] class 10 reserves .....DDC
TBF[26] class 10 reserves ...CD...
TBF[27] class 10 reserves .....DDC
TBF[28] class 10 reserves ...CD...
TBF[29] class 10 reserves ...CD...
TBF[30] class 10 reserves .....DDC
TBF[31] class 10 reserves ...CD...
Successfully allocated 32 UL TBFs
Going to test assignment with many TBF, algorithm A (DL after UL)
TBF[0] class 1 reserves ...C....
TBF[0] class 1 reserves ....C...
@ -9028,6 +9099,71 @@ Going to test assignment with many TBF, algorithm B class 10 (DL after UL)
TBF[30] class 10 reserves ...DCD..
TBF[31] class 10 reserves .....DCD
Successfully allocated 32 UL TBFs
Going to test assignment with many TBF, algorithm dynamic class 10 (DL after UL)
TBF[0] class 10 reserves ...DDCD.
TBF[1] class 10 reserves .....DCD
TBF[2] class 10 reserves ...DCD..
TBF[3] class 10 reserves .....DCD
TBF[4] class 10 reserves ...DCD..
TBF[5] class 10 reserves .....DCD
TBF[6] class 10 reserves ...DCD..
TBF[7] class 10 reserves .....DCD
TBF[8] class 10 reserves ...DCD..
TBF[9] class 10 reserves .....DCD
TBF[10] class 10 reserves ...DCD..
TBF[11] class 10 reserves .....DCD
TBF[12] class 10 reserves ...DCD..
TBF[13] class 10 reserves .....DCD
TBF[14] class 10 reserves ...DCD..
TBF[15] class 10 reserves .....DCD
TBF[16] class 10 reserves ...DCD..
TBF[17] class 10 reserves .....DCD
TBF[18] class 10 reserves ...DCD..
TBF[19] class 10 reserves .....DCD
TBF[20] class 10 reserves ...DCD..
TBF[21] class 10 reserves .....DCD
TBF[22] class 10 reserves ...DCD..
TBF[23] class 10 reserves .....DCD
TBF[24] class 10 reserves ...DCD..
TBF[25] class 10 reserves .....DCD
TBF[26] class 10 reserves ...DCD..
TBF[27] class 10 reserves .....DCD
TBF[28] class 10 reserves ...DCD..
TBF[29] class 10 reserves .....DCD
TBF[30] class 10 reserves ...DCD..
TBF[31] class 10 reserves .....DCD
TBF[1] class 10 reserves ...C....
TBF[1] class 10 reserves ....C...
TBF[2] class 10 reserves ......C.
TBF[3] class 10 reserves ....C...
TBF[4] class 10 reserves ......C.
TBF[5] class 10 reserves ....C...
TBF[6] class 10 reserves ......C.
TBF[7] class 10 reserves ....C...
TBF[8] class 10 reserves ......C.
TBF[9] class 10 reserves ....C...
TBF[10] class 10 reserves ......C.
TBF[11] class 10 reserves ....C...
TBF[12] class 10 reserves ......C.
TBF[13] class 10 reserves ....C...
TBF[14] class 10 reserves ......C.
TBF[15] class 10 reserves ....C...
TBF[16] class 10 reserves ......C.
TBF[17] class 10 reserves ....C...
TBF[18] class 10 reserves ......C.
TBF[19] class 10 reserves ....C...
TBF[20] class 10 reserves ......C.
TBF[21] class 10 reserves ....C...
TBF[22] class 10 reserves ......C.
TBF[23] class 10 reserves ....C...
TBF[24] class 10 reserves ......C.
TBF[25] class 10 reserves ....C...
TBF[26] class 10 reserves ......C.
TBF[27] class 10 reserves ....C...
TBF[28] class 10 reserves ......C.
TBF[29] class 10 reserves ....C...
TBF[30] class 10 reserves ......C.
Successfully allocated 63 UL TBFs
Going to test assignment with many TBF, algorithm A (UL after DL)
TBF[0] class 1 reserves ...U....
TBF[0] class 1 reserves ....U...
@ -9099,6 +9235,43 @@ Going to test assignment with many TBF, algorithm B class 10 (UL after DL)
TBF[30] class 10 reserves .......U
TBF[31] class 10 reserves ...U....
Successfully allocated 32 UL TBFs
Going to test assignment with many TBF, algorithm dynamic class 10 (UL after DL)
TBF[0] class 10 reserves .....U..
TBF[1] class 10 reserves ......U.
TBF[2] class 10 reserves ....U...
TBF[3] class 10 reserves ......U.
TBF[4] class 10 reserves ....U...
TBF[5] class 10 reserves ......U.
TBF[6] class 10 reserves ....U...
TBF[7] class 10 reserves ......U.
TBF[8] class 10 reserves ....U...
TBF[9] class 10 reserves ......U.
TBF[10] class 10 reserves ....U...
TBF[11] class 10 reserves ......U.
TBF[12] class 10 reserves ....U...
TBF[13] class 10 reserves ......U.
TBF[14] class 10 reserves ....U...
TBF[15] class 10 reserves .....U..
TBF[16] class 10 reserves .....U..
TBF[17] class 10 reserves .....U..
TBF[18] class 10 reserves .....U..
TBF[19] class 10 reserves .....U..
TBF[20] class 10 reserves .....U..
TBF[21] class 10 reserves .......U
TBF[22] class 10 reserves .......U
TBF[23] class 10 reserves .......U
TBF[24] class 10 reserves .......U
TBF[25] class 10 reserves .......U
TBF[26] class 10 reserves ...U....
TBF[27] class 10 reserves .......U
TBF[28] class 10 reserves ...U....
TBF[29] class 10 reserves ...U....
TBF[30] class 10 reserves .......U
TBF[31] class 10 reserves ...U....
TBF[0] class 10 reserves ...U....
TBF[1] class 10 reserves ...U....
TBF[2] class 10 reserves ...U....
Successfully allocated 35 UL TBFs
Going to test assignment with many TBF, algorithm A (UL only)
TBF[0] class 1 reserves ...U....
TBF[0] class 1 reserves ....U...
@ -9170,6 +9343,43 @@ Going to test assignment with many TBF, algorithm B class 10 (UL only)
TBF[30] class 10 reserves ...U....
TBF[31] class 10 reserves ...U....
Successfully allocated 32 UL TBFs
Going to test assignment with many TBF, algorithm dynamic class 10 (UL only)
TBF[0] class 10 reserves .....U..
TBF[1] class 10 reserves ......U.
TBF[2] class 10 reserves ....U...
TBF[3] class 10 reserves .......U
TBF[4] class 10 reserves ....U...
TBF[5] class 10 reserves ......U.
TBF[6] class 10 reserves .....U..
TBF[7] class 10 reserves .......U
TBF[8] class 10 reserves ....U...
TBF[9] class 10 reserves ......U.
TBF[10] class 10 reserves .....U..
TBF[11] class 10 reserves .......U
TBF[12] class 10 reserves ....U...
TBF[13] class 10 reserves ......U.
TBF[14] class 10 reserves .....U..
TBF[15] class 10 reserves .......U
TBF[16] class 10 reserves ....U...
TBF[17] class 10 reserves ......U.
TBF[18] class 10 reserves .....U..
TBF[19] class 10 reserves .......U
TBF[20] class 10 reserves ....U...
TBF[21] class 10 reserves ......U.
TBF[22] class 10 reserves .....U..
TBF[23] class 10 reserves .......U
TBF[24] class 10 reserves ....U...
TBF[25] class 10 reserves ......U.
TBF[26] class 10 reserves .....U..
TBF[27] class 10 reserves ...U....
TBF[28] class 10 reserves .......U
TBF[29] class 10 reserves ...U....
TBF[30] class 10 reserves ...U....
TBF[31] class 10 reserves ...U....
TBF[0] class 10 reserves ...U....
TBF[1] class 10 reserves ...U....
TBF[2] class 10 reserves ...U....
Successfully allocated 35 UL TBFs
Going to test assignment with many TBF, algorithm A (DL ONLY)
TBF[0] class 1 reserves ...C....
TBF[0] class 1 reserves ....C...
@ -9366,6 +9576,109 @@ Going to test assignment with many TBF, algorithm B class 10 (DL ONLY)
TBF[30] class 10 reserves ...CD...
TBF[31] class 10 reserves ...CD...
Successfully allocated 32 UL TBFs
Going to test assignment with many TBF, algorithm dynamic class 10 (DL ONLY)
TBF[0] class 10 reserves ...DDCD.
TBF[1] class 10 reserves .....DCD
TBF[2] class 10 reserves ...DCD..
TBF[3] class 10 reserves .....DCD
TBF[4] class 10 reserves ...DCD..
TBF[5] class 10 reserves .....DCD
TBF[6] class 10 reserves ...DCD..
TBF[7] class 10 reserves .....DCD
TBF[8] class 10 reserves ...DCD..
TBF[9] class 10 reserves .....DCD
TBF[10] class 10 reserves ...DCD..
TBF[11] class 10 reserves .....DCD
TBF[12] class 10 reserves ...DCD..
TBF[13] class 10 reserves .....DCD
TBF[14] class 10 reserves ...DCD..
TBF[15] class 10 reserves .....DCD
TBF[16] class 10 reserves ...DCD..
TBF[17] class 10 reserves .....DCD
TBF[18] class 10 reserves ...DCD..
TBF[19] class 10 reserves .....DCD
TBF[20] class 10 reserves ...DCD..
TBF[21] class 10 reserves .....DCD
TBF[22] class 10 reserves ...CD...
TBF[23] class 10 reserves .....DCD
TBF[24] class 10 reserves ...CD...
TBF[25] class 10 reserves ...CD...
TBF[26] class 10 reserves .....DCD
TBF[27] class 10 reserves ...CD...
TBF[28] class 10 reserves ....DCD.
TBF[29] class 10 reserves .....DCD
TBF[30] class 10 reserves ...CD...
TBF[31] class 10 reserves ...CD...
TBF[1] class 10 reserves ...C....
TBF[3] class 10 reserves ...C....
TBF[5] class 10 reserves ...C....
TBF[0] class 10 reserves .......C
TBF[7] class 10 reserves ...C....
TBF[2] class 10 reserves .......C
TBF[9] class 10 reserves ...C....
TBF[2] class 10 reserves ......C.
TBF[4] class 10 reserves .......C
TBF[11] class 10 reserves ...C....
TBF[4] class 10 reserves ......C.
TBF[1] class 10 reserves ....C...
TBF[6] class 10 reserves .......C
TBF[13] class 10 reserves ...C....
TBF[6] class 10 reserves ......C.
TBF[3] class 10 reserves ....C...
TBF[8] class 10 reserves .......C
TBF[15] class 10 reserves ...C....
TBF[8] class 10 reserves ......C.
TBF[5] class 10 reserves ....C...
TBF[22] class 10 reserves .....C..
TBF[10] class 10 reserves .......C
TBF[17] class 10 reserves ...C....
TBF[10] class 10 reserves ......C.
TBF[7] class 10 reserves ....C...
TBF[24] class 10 reserves .....C..
TBF[12] class 10 reserves .......C
TBF[19] class 10 reserves ...C....
TBF[12] class 10 reserves ......C.
TBF[9] class 10 reserves ....C...
TBF[25] class 10 reserves .....C..
TBF[14] class 10 reserves .......C
TBF[21] class 10 reserves ...C....
TBF[14] class 10 reserves ......C.
TBF[11] class 10 reserves ....C...
TBF[27] class 10 reserves .....C..
TBF[16] class 10 reserves .......C
TBF[23] class 10 reserves ...C....
TBF[16] class 10 reserves ......C.
TBF[13] class 10 reserves ....C...
TBF[30] class 10 reserves .....C..
TBF[18] class 10 reserves .......C
TBF[26] class 10 reserves ...C....
TBF[18] class 10 reserves ......C.
TBF[15] class 10 reserves ....C...
TBF[31] class 10 reserves .....C..
TBF[20] class 10 reserves .......C
TBF[28] class 10 reserves ...C....
TBF[20] class 10 reserves ......C.
TBF[17] class 10 reserves ....C...
TBF[22] class 10 reserves .......C
TBF[29] class 10 reserves ...C....
TBF[22] class 10 reserves ......C.
TBF[19] class 10 reserves ....C...
TBF[24] class 10 reserves .......C
TBF[24] class 10 reserves ......C.
TBF[21] class 10 reserves ....C...
TBF[25] class 10 reserves .......C
TBF[25] class 10 reserves ......C.
TBF[23] class 10 reserves ....C...
TBF[27] class 10 reserves .......C
TBF[27] class 10 reserves ......C.
TBF[26] class 10 reserves ....C...
TBF[28] class 10 reserves .......C
TBF[30] class 10 reserves ......C.
TBF[29] class 10 reserves ....C...
TBF[30] class 10 reserves .......C
TBF[31] class 10 reserves ......C.
TBF[31] class 10 reserves .......C
Successfully allocated 101 UL TBFs
Going to test assignment with many connections, algorithm A
TBF[0] class 1 reserves ...C....
TBF[0] class 2 reserves ....C...
@ -10005,3 +10318,312 @@ Going to test assignment with many connections, algorithm B
TBF[30] class 2 reserves ......DC
TBF[31] class 3 reserves ......DC
Successfully allocated 32 TBFs
Going to test assignment with many connections, algorithm dynamic
TBF[0] class 1 reserves ...C....
TBF[1] class 2 reserves ....DC..
TBF[2] class 3 reserves ......DC
TBF[3] class 4 reserves ...DCD..
TBF[4] class 5 reserves ......CD
TBF[5] class 6 reserves ...CD...
TBF[6] class 7 reserves .....CD.
TBF[7] class 8 reserves ....DDCD
TBF[8] class 9 reserves ...DCD..
TBF[9] class 10 reserves .....DCD
TBF[10] class 11 reserves ...DCD..
TBF[11] class 12 reserves .....DCD
TBF[12] class 13 reserves ...CDD..
TBF[13] class 14 reserves ....CDDD
TBF[14] class 15 reserves ...CDDDD
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...CDDDD
TBF[17] class 18 reserves ...CDDDD
TBF[18] class 19 reserves .....DCD
TBF[19] class 20 reserves ...DCD..
TBF[20] class 21 reserves .....DCD
TBF[21] class 22 reserves ...DCD..
TBF[22] class 23 reserves .....DCD
TBF[23] class 24 reserves ...DCD..
TBF[24] class 25 reserves .....DCD
TBF[25] class 26 reserves ...DCD..
TBF[26] class 27 reserves .....DCD
TBF[27] class 28 reserves ...DCD..
TBF[28] class 29 reserves .....DCD
TBF[29] class 1 reserves .......C
TBF[30] class 2 reserves ......DC
TBF[31] class 3 reserves ......DC
TBF[0] class 4 reserves .....C..
TBF[1] class 5 reserves ...C....
TBF[2] class 6 reserves ...C....
TBF[4] class 7 reserves ...C....
TBF[2] class 8 reserves .....C..
TBF[0] class 9 reserves ....C...
TBF[2] class 10 reserves ....C...
TBF[4] class 11 reserves ....C...
TBF[0] class 12 reserves ......C.
TBF[4] class 13 reserves .....C..
TBF[6] class 14 reserves ....C...
TBF[6] class 15 reserves ...C....
TBF[7] class 16 reserves ...C....
TBF[9] class 17 reserves ...C....
TBF[11] class 18 reserves ...C....
TBF[1] class 19 reserves ......C.
TBF[3] class 20 reserves ......C.
TBF[5] class 21 reserves ......C.
TBF[8] class 22 reserves ......C.
TBF[9] class 23 reserves ....C...
TBF[10] class 24 reserves ......C.
TBF[11] class 25 reserves ....C...
TBF[12] class 26 reserves ......C.
TBF[18] class 27 reserves ....C...
TBF[19] class 28 reserves ......C.
TBF[20] class 29 reserves ....C...
TBF[0] class 1 reserves .......C
TBF[1] class 2 reserves .......C
TBF[3] class 3 reserves .......C
TBF[5] class 4 reserves .....C..
TBF[21] class 5 reserves ......C.
TBF[23] class 6 reserves ......C.
TBF[22] class 7 reserves ....C...
TBF[29] class 8 reserves .....C..
TBF[24] class 9 reserves ....C...
TBF[26] class 10 reserves ....C...
TBF[28] class 11 reserves ....C...
TBF[25] class 12 reserves ......C.
TBF[30] class 13 reserves .....C..
TBF[29] class 14 reserves ....C...
TBF[13] class 15 reserves ...C....
TBF[18] class 16 reserves ...C....
TBF[20] class 17 reserves ...C....
TBF[22] class 18 reserves ...C....
TBF[27] class 19 reserves ......C.
TBF[29] class 20 reserves ......C.
TBF[0] class 1 reserves ...C....
TBF[1] class 2 reserves ....DC..
TBF[2] class 3 reserves ......DC
TBF[3] class 4 reserves ...DCD..
TBF[4] class 5 reserves ......CD
TBF[5] class 6 reserves ...CD...
TBF[6] class 7 reserves .....CD.
TBF[7] class 8 reserves ....DDCD
TBF[8] class 9 reserves ...DCD..
TBF[9] class 10 reserves .....DCD
TBF[10] class 11 reserves ...DCD..
TBF[11] class 12 reserves .....DCD
TBF[12] class 13 reserves ...CDD..
TBF[13] class 14 reserves ....CDDD
TBF[14] class 15 reserves ...CDDDD
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...CDDDD
TBF[17] class 18 reserves ...CDDDD
TBF[18] class 19 reserves .....DCD
TBF[19] class 20 reserves ...DCD..
TBF[20] class 21 reserves .....DCD
TBF[21] class 22 reserves ...DCD..
TBF[22] class 23 reserves .....DCD
TBF[23] class 24 reserves ...DCD..
TBF[0] class 1 reserves ...C....
TBF[1] class 2 reserves .....C..
TBF[2] class 3 reserves .......C
TBF[1] class 4 reserves ....C...
TBF[2] class 5 reserves ......C.
TBF[3] class 6 reserves ...C....
TBF[3] class 7 reserves .....C..
TBF[4] class 8 reserves ......C.
TBF[3] class 9 reserves ....C...
TBF[6] class 10 reserves ......C.
TBF[5] class 11 reserves ....C...
TBF[7] class 12 reserves ......C.
TBF[5] class 13 reserves ...C....
TBF[7] class 14 reserves ....C...
TBF[14] class 15 reserves ...CDDDD
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...CDDDD
TBF[17] class 18 reserves ...CDDDD
TBF[9] class 19 reserves ......C.
TBF[8] class 20 reserves ....C...
TBF[11] class 21 reserves ......C.
TBF[10] class 22 reserves ....C...
TBF[13] class 23 reserves ......C.
TBF[12] class 24 reserves ....C...
TBF[18] class 25 reserves ......C.
TBF[13] class 26 reserves ....C...
TBF[20] class 27 reserves ......C.
TBF[19] class 28 reserves ....C...
TBF[22] class 29 reserves ......C.
TBF[4] class 1 reserves .......C
TBF[5] class 2 reserves .......C
TBF[31] class 3 reserves ......DC
TBF[0] class 4 reserves .....C..
TBF[1] class 5 reserves ...C....
TBF[2] class 6 reserves ...C....
TBF[4] class 7 reserves ...C....
TBF[2] class 8 reserves .....C..
TBF[0] class 9 reserves ....C...
TBF[2] class 10 reserves ....C...
TBF[4] class 11 reserves ....C...
TBF[0] class 12 reserves ......C.
TBF[4] class 13 reserves .....C..
TBF[6] class 14 reserves ....C...
TBF[6] class 15 reserves ...C....
TBF[7] class 16 reserves ...C....
TBF[8] class 17 reserves ...C....
TBF[9] class 18 reserves ...C....
TBF[1] class 19 reserves ......C.
TBF[3] class 20 reserves ......C.
TBF[5] class 21 reserves ......C.
TBF[8] class 22 reserves ......C.
TBF[9] class 23 reserves ....C...
TBF[10] class 24 reserves ......C.
TBF[11] class 25 reserves ....C...
TBF[12] class 26 reserves ......C.
TBF[18] class 27 reserves ....C...
TBF[19] class 28 reserves ......C.
TBF[20] class 29 reserves ....C...
TBF[0] class 1 reserves .......C
TBF[1] class 2 reserves .......C
TBF[3] class 3 reserves .......C
TBF[5] class 4 reserves .....C..
TBF[21] class 5 reserves ......C.
TBF[23] class 6 reserves ......C.
TBF[21] class 7 reserves ....C...
TBF[6] class 8 reserves .....C..
TBF[24] class 9 reserves ....C...
TBF[26] class 10 reserves ....C...
TBF[28] class 11 reserves ....C...
TBF[25] class 12 reserves ......C.
TBF[30] class 13 reserves .....C..
TBF[22] class 14 reserves ....C...
TBF[10] class 15 reserves ...C....
TBF[11] class 16 reserves ...C....
TBF[12] class 17 reserves ...C....
TBF[13] class 18 reserves ...C....
TBF[27] class 19 reserves ......C.
TBF[29] class 20 reserves ......C.
TBF[24] class 21 reserves ......C.
TBF[26] class 22 reserves ......C.
TBF[28] class 23 reserves ......C.
TBF[23] class 24 reserves ....C...
TBF[30] class 25 reserves ......C.
TBF[25] class 26 reserves ....C...
TBF[6] class 1 reserves .......C
TBF[1] class 2 reserves .....C..
TBF[2] class 3 reserves .......C
TBF[7] class 4 reserves .....C..
TBF[7] class 5 reserves .......C
TBF[8] class 6 reserves .....C..
TBF[3] class 7 reserves .....C..
TBF[8] class 8 reserves .......C
TBF[9] class 9 reserves .....C..
TBF[9] class 10 reserves .......C
TBF[10] class 11 reserves .....C..
TBF[10] class 12 reserves .......C
TBF[11] class 13 reserves .....C..
TBF[11] class 14 reserves .......C
TBF[14] class 15 reserves ...CDDDD
TBF[15] class 16 reserves ...CDDDD
TBF[16] class 17 reserves ...CDDDD
TBF[17] class 18 reserves ...CDDDD
TBF[0] class 19 reserves ...C....
TBF[3] class 20 reserves ...C....
TBF[5] class 21 reserves ...C....
TBF[12] class 22 reserves .....C..
TBF[12] class 23 reserves .......C
TBF[18] class 24 reserves ...C....
TBF[13] class 25 reserves .....C..
TBF[13] class 26 reserves .......C
TBF[19] class 27 reserves ...C....
TBF[1] class 28 reserves ....C...
TBF[18] class 29 reserves .....C..
TBF[4] class 1 reserves .......C
TBF[5] class 2 reserves .......C
TBF[31] class 3 reserves ......DC
TBF[0] class 4 reserves .....C..
TBF[1] class 5 reserves ...C....
TBF[2] class 6 reserves ...C....
TBF[4] class 7 reserves ...C....
TBF[2] class 8 reserves .....C..
TBF[0] class 9 reserves ....C...
TBF[2] class 10 reserves ....C...
TBF[3] class 11 reserves ....C...
TBF[18] class 12 reserves .......C
TBF[4] class 13 reserves .....C..
TBF[4] class 14 reserves ....C...
TBF[6] class 15 reserves ...C....
TBF[7] class 16 reserves ...C....
TBF[8] class 17 reserves ...C....
TBF[9] class 18 reserves ...C....
TBF[0] class 19 reserves ......C.
TBF[1] class 20 reserves ......C.
TBF[2] class 21 reserves ......C.
TBF[3] class 22 reserves ......C.
TBF[5] class 23 reserves ....C...
TBF[4] class 24 reserves ......C.
TBF[6] class 25 reserves ....C...
TBF[5] class 26 reserves ......C.
TBF[7] class 27 reserves ....C...
TBF[6] class 28 reserves ......C.
TBF[20] class 29 reserves ...DCD..
TBF[0] class 1 reserves .......C
TBF[1] class 2 reserves .......C
TBF[3] class 3 reserves .......C
TBF[8] class 4 reserves ....C...
TBF[7] class 5 reserves ......C.
TBF[8] class 6 reserves ......C.
TBF[21] class 7 reserves ....CD..
TBF[5] class 8 reserves .....C..
TBF[9] class 9 reserves ....C...
TBF[10] class 10 reserves ....C...
TBF[11] class 11 reserves ....C...
TBF[9] class 12 reserves ......C.
TBF[6] class 13 reserves .....C..
TBF[22] class 14 reserves ....CDDD
TBF[10] class 15 reserves ...C....
TBF[11] class 16 reserves ...C....
TBF[12] class 17 reserves ...C....
TBF[13] class 18 reserves ...C....
TBF[27] class 19 reserves ....DDCD
TBF[29] class 20 reserves .....DCD
TBF[24] class 21 reserves ....DCD.
TBF[26] class 22 reserves .....DCD
TBF[28] class 23 reserves ....DCD.
TBF[23] class 24 reserves ...DCD..
TBF[30] class 25 reserves .....DCD
TBF[25] class 26 reserves ...CD...
TBF[10] class 27 reserves ......C.
TBF[21] class 28 reserves ...C....
TBF[12] class 29 reserves ....C...
TBF[11] class 1 reserves ......C.
TBF[22] class 2 reserves ...C....
TBF[13] class 3 reserves ....C...
TBF[12] class 4 reserves ......C.
TBF[24] class 5 reserves ...C....
TBF[18] class 6 reserves ....C...
TBF[13] class 7 reserves ......C.
TBF[19] class 8 reserves .......C
TBF[26] class 9 reserves ...C....
TBF[19] class 10 reserves ....C...
TBF[18] class 11 reserves ......C.
TBF[20] class 12 reserves .......C
TBF[27] class 13 reserves ...C....
TBF[26] class 14 reserves ....C...
TBF[19] class 15 reserves ......C.
TBF[21] class 16 reserves .......C
TBF[28] class 17 reserves ...C....
TBF[19] class 18 reserves .....C..
TBF[29] class 19 reserves ....C...
TBF[20] class 20 reserves ......C.
TBF[23] class 21 reserves .......C
TBF[29] class 22 reserves ...C....
TBF[25] class 23 reserves .....C..
TBF[30] class 24 reserves ....C...
TBF[21] class 25 reserves ......C.
TBF[24] class 26 reserves .......C
TBF[30] class 27 reserves ...C....
TBF[31] class 28 reserves .....C..
TBF[31] class 29 reserves ....C...
TBF[23] class 1 reserves ......C.
TBF[25] class 2 reserves .......C
TBF[31] class 3 reserves ...C....
TBF[25] class 4 reserves ......C.
TBF[28] class 5 reserves .......C
Successfully allocated 121 TBFs