author | Marco Miozzo <marco.miozzo@cttc.es> |
Mon, 15 Jul 2013 13:38:53 +0200 | |
changeset 10096 | e7367028d8a6 |
parent 10095 | 77825e6792b2 |
child 10097 | b7d9a6de6e94 |
child 10098 | 6eae0980db76 |
--- a/src/lte/doc/source/lte-testing.rst Wed Jun 26 18:42:17 2013 +0200 +++ b/src/lte/doc/source/lte-testing.rst Mon Jul 15 13:38:53 2013 +0200 @@ -634,13 +634,13 @@ \mathrm{T_{test-1}} = 0.0 \times 1 + 0.77 \times 2 + 0.23 \times 3 = 2.23 - \mathrm{T_{test-2}} = 0.0 \times 1 + 0.9862 \times 2 + 0.0138 \times 3 = 2.0138 + \mathrm{T_{test-2}} = 0.0 \times 1 + 0.995 \times 2 + 0.005 \times 3 = 2.005 The expected throughput is calculted by counting the number of transmission slots available during the simulation (e.g., the number of TTIs) and the size of the TB in the simulation, in detail: .. math:: - \mathrm{Thr_{test-i}} = \frac{TTI_{NUM}}{T_{test-i}} TB_{size} = \left\{ \begin{array}{lll} \dfrac{1000}{2.23}41 = 18375\mbox{ bps} & \mbox{ for test-1} \\ & \\ \dfrac{1000}{2.0138}469 = 236096\mbox{ bps} & \mbox{ for test-2}\end{array} \right. + \mathrm{Thr_{test-i}} = \frac{TTI_{NUM}}{T_{test-i}} TB_{size} = \left\{ \begin{array}{lll} \dfrac{1000}{2.23}41 = 18375\mbox{ bps} & \mbox{ for test-1} \\ & \\ \dfrac{1000}{2.005}597 = 297755\mbox{ bps} & \mbox{ for test-2}\end{array} \right. where :math:`TTI_{NUM}` is the total number of TTIs in 1 second. The test is performed both for Round Robin scheduler. The test passes if the measured throughput matches with the reference throughput within a relative tolerance of 0.1. This tolerance is needed to account for the transient behavior at the beginning of the simulation and the on-fly blocks at the end of the simulation.
--- a/src/lte/model/lte-mi-error-model.cc Wed Jun 26 18:42:17 2013 +0200 +++ b/src/lte/model/lte-mi-error-model.cc Mon Jul 15 13:38:53 2013 +0200 @@ -193,7 +193,7 @@ -1.000, -1.000, 0.01048, // QPSK retx 0.1257, 0.1528, 0.1667, 0.2188, 0.2680, 0.3229, 0.3818, 0.4607, 0.5373, 0.6081, // QPSK 0.07198, 0.16632, 0.3737, // 16 QAM retx - 0.7451, 0.4049, 0.4472, 0.4975, -1.000, -1.000, -1.000, //16QAM + 0.3783, 0.4049, 0.4472, 0.4975, 0.5556, -1.000, -1.000, //16QAM -1.000, -1.000, -1.000, // 64QAM retx -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 // 64QAM }, @@ -202,36 +202,36 @@ -1.000, -1.000, 0.01026, // QPSK retx 0.1224, 0.1497, 0.1638, 0.2139, 0.2636, 0.3195, 0.3768, 0.4520, 0.5269, 0.5963, // QPSK 0.07228, 0.1652, 0.36928, // 16QAM retx - 0.7412, 0.3979, 0.4399, 0.4894, 0.6422, 0.6034, 0.6619, // 16QAM + 0.3754, 0.3979, 0.4399, 0.4894, 0.5464, 0.6034, 0.6619, // 16QAM 0.21138, 0.42448, 0.77898, // 64QAM retx - 0.7538, 0.7743, 0.5627, 0.6089, 0.6577, 0.7049, 0.7508, -1.000, -1.000, -1.000, -1.000, -1.000 //64QAM + 0.50662, 0.52226, 0.5627, 0.6089, 0.6577, 0.7049, 0.7508, -1.000, -1.000, -1.000, -1.000, -1.000 //64QAM }, // CB of 2560 { -1.000, -1.000, 0.01008, // QPSK retx 0.1211, 0.1480, 0.1615, 0.2119, 0.2611, 0.3157, 0.3735, 0.4458, 0.5205, 0.5902, // QPSK 0.0592, 0.15188, 0.36016, // 16 QAM retx - 0.7376, 0.3939, 0.4351, 0.4851, 0.6365, 0.5976, 0.6554, // 16QAM + 0.3729, 0.3939, 0.4351, 0.4851, 0.5416, 0.5976, 0.6554, // 16QAM 0.20886, 0.41926, 0.76674, // 64 QAM retx - 0.7442, 0.7701, 0.5619, 0.6056, 0.6521, 0.6982, 0.7441, 0.7874, 0.8315, 0.8735, 0.9089, 0.9369 // 64QAM + 0.50028, 0.51888, 0.5619, 0.6056, 0.6521, 0.6982, 0.7441, 0.7874, 0.8315, 0.8735, 0.9089, 0.9369 // 64QAM }, // CB of 4032 { -1.000, -1.000, 0.01008, // QPSK retx 0.1208, 0.1477, 0.1612, 0.2112, 0.2606, 0.3153, 0.3728, 0.4441, 0.5185, 0.5882, // QPSK 0.06074, 0.1527, 0.36034, // 16 QAM retx - 0.7349, 0.3921, 0.4338, 0.4871, 0.6535, 0.5940, 0.6527, // 16QAM + 0.3864, 0.3921, 0.4338, 0.4871, 0.5386, 0.5940, 0.6527, // 16QAM 0.2088, 0.41928, 0.76588, // 64QAM retx - 0.7430, 0.7699, 0.5591, 0.6027, 0.6512, 0.6981, 0.7437, 0.7873, 0.8301, 0.8702, 0.9082, 0.9339 // 64QAM + 0.50316, 0.51872, 0.5591, 0.6027, 0.6512, 0.6981, 0.7437, 0.7873, 0.8301, 0.8702, 0.9082, 0.9339 // 64QAM }, // CB of 6144 { -1.000, -1.000, 0.01006, // QPSK retx 0.1207, 0.1474, 0.1612, 0.2111, 0.2605, 0.3153, 0.3726, 0.4439, 0.5193, 0.5882, // QPSK 0.06302, 0.15566, 0.36364, // 16QAM retx - 0.7369, 0.3921, 0.4339, 0.4833, 0.6339, 0.5952, 0.6528, // 16QAM + 0.3724, 0.3921, 0.4339, 0.4833, 0.5407, 0.5952, 0.6528, // 16QAM 0.20874, 0.41872, 0.76562, // 64QAM retx - 0.7420, 0.7664, 0.5600, 0.6027, 0.6494, 0.6948, 0.7407, 0.7842, 0.8284, 0.8692, 0.9058, 0.9325 // 64QAM + 0.49780, 0.51606, 0.5600, 0.6027, 0.6494, 0.6948, 0.7407, 0.7842, 0.8284, 0.8692, 0.9058, 0.9325 // 64QAM }, }; @@ -278,7 +278,7 @@ -1.000, -1.000, 0.00091, // QPSK retx 0.0085, 0.0106, 0.0109, 0.0140, 0.0178, 0.0217, 0.0219, 0.0249, 0.0270, 0.0292, // QPSK 0.00797, 0.01357, 0.0234, // 16QAM retx - 0.0293, 0.0206, 0.0220, 0.0235, 0.0257, -1.000, -1.000, // 16 QAM + 0.0202, 0.0206, 0.0220, 0.0235, 0.0236, -1.000, -1.000, // 16 QAM -1.000, -1.000, -1.000, // 64QAM retx -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000 }, @@ -287,36 +287,36 @@ -1.000, -1.000, 0.00059, // QPSK retx 0.0061, 0.0074, 0.0078, 0.0102, 0.0121, 0.0138, 0.0163, 0.0178, 0.0207, 0.0198, // QPSK 0.00615, 0.01013, 0.01681, // 16QAM retx - 0.0203, 0.0137, 0.0154, 0.0164, 0.0183, 0.0188, 0.0188, // 16QAM + 0.0141, 0.0137, 0.0154, 0.0164, 0.0175, 0.0188, 0.0188, // 16QAM 0.01053, 0.01869, 0.02261, // 64QAM retx - 0.0220, 0.0215, 0.0157, 0.0169, 0.0185, 0.0189, 0.0200, -1.000, -1.000, -1.000, -1.000, -1.000 // 64QAM + 0.01661, 0.01655, 0.0157, 0.0169, 0.0185, 0.0189, 0.0200, -1.000, -1.000, -1.000, -1.000, -1.000 // 64QAM }, // CB of 2560 bits { -1.000, -1.000, 0.00039, // QPSK retx 0.0040, 0.0047, 0.0050, 0.0063, 0.0079, 0.0091, 0.0101, 0.0117, 0.0123, 0.0129, // QPSK 0.00213, 0.00475, 0.00921, // 16QAM retx - 0.0123, 0.0091, 0.0095, 0.0102, 0.0116, 0.0114, 0.0119, // 16QAM + 0.0083, 0.0091, 0.0095, 0.0102, 0.0112, 0.0114, 0.0119, // 16QAM 0.00637, 0.01161, 0.01273, // 64QAM retx - 0.0116, 0.0123, 0.0096, 0.0104, 0.0109, 0.0108, 0.0118, 0.0122, 0.0117, 0.0110, 0.0097, 0.0085 // 64QAM + 0.00951, 0.00943, 0.0096, 0.0104, 0.0109, 0.0108, 0.0118, 0.0122, 0.0117, 0.0110, 0.0097, 0.0085 // 64QAM }, // CB of 4032 bits { -1.000, -1.000, 0.00029, // QPSK retx 0.0032, 0.0038, 0.0039, 0.0051, 0.0063, 0.0072, 0.0079, 0.0084, 0.0100, 0.0106, // QPSK 0.00193, 0.00405, 0.00777, // 16QAM retx - 0.0106, 0.0074, 0.0078, 0.0090, 0.0095, 0.0089, 0.0092, // 16 QAM + 0.0092, 0.0074, 0.0078, 0.0090, 0.0084, 0.0089, 0.0092, // 16 QAM 0.00565, 0.00981, 0.01143, // 64QAM retx - 0.0101, 0.0096, 0.0080, 0.0081, 0.0090, 0.0091, 0.0095, 0.0096, 0.0094, 0.0086, 0.0078, 0.0071 // 64QAM + 0.00795, 0.0080, 0.0080, 0.0081, 0.0090, 0.0091, 0.0095, 0.0096, 0.0094, 0.0086, 0.0078, 0.0071 // 64QAM }, // CB of 6144 bits { -1.000, -1.000, 0.00025, // QPSK retx 0.0025, 0.0032, 0.0032, 0.0042, 0.0054, 0.0059, 0.0064, 0.0073, 0.0081, 0.0076, // QPSK 0.00175, 0.00367, 0.006223, // 16QAM retx - 0.0083, 0.0058, 0.0064, 0.0070, 0.0077, 0.0074, 0.0080, // 16QAM + 0.0056, 0.0058, 0.0064, 0.0070, 0.0068, 0.0074, 0.0080, // 16QAM 0.00437, 0.00785, 0.00873, - 0.0080, 0.0080, 0.0061, 0.0066, 0.0069, 0.0080, 0.0081, 0.0080, 0.0077, 0.0068, 0.0066, 0.0058 // 64QAM + 0.0060, 0.00609, 0.0061, 0.0066, 0.0069, 0.0080, 0.0081, 0.0080, 0.0077, 0.0068, 0.0066, 0.0058 // 64QAM } };
--- a/src/lte/test/lte-test-harq.cc Wed Jun 26 18:42:17 2013 +0200 +++ b/src/lte/test/lte-test-harq.cc Mon Jul 15 13:38:53 2013 +0200 @@ -70,10 +70,10 @@ AddTestCase (new LenaHarqTestCase (2, 4000, 41, 0.17, 18375), TestCase::QUICK); // Tests on DL/UL Data channels (PDSCH, PUSCH) - // MCS 10 TB size of 469 bytes SINR 4 expected throughput 236096 bytes/s + // MCS 12 TB size of 597 bytes SINR 4 expected throughput 297755 bytes/s // TBLER 1st tx 1.0 - // TBLER 2nd tx 0.0138 - AddTestCase (new LenaHarqTestCase (1, 640, 469, 0.02, 236096), TestCase::QUICK); + // TBLER 2nd tx 0.005 + AddTestCase (new LenaHarqTestCase (1, 640, 597, 0.06, 297755), TestCase::QUICK);
--- a/src/lte/test/lte-test-pss-ff-mac-scheduler.cc Wed Jun 26 18:42:17 2013 +0200 +++ b/src/lte/test/lte-test-pss-ff-mac-scheduler.cc Mon Jul 15 13:38:53 2013 +0200 @@ -161,13 +161,13 @@ // Traffic1 info // UDP traffic: payload size = 100 bytes, interval = 1 ms // UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate - // Maximum throughput = 4 / ( 1/2196000 + 1/903000 + 1/775000 + 1/421000 ) = 765051 byte/s - // 132000 * 4 = 528000 < 765051 -> estimated throughput in downlink = 132000 byte/sec + // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s + // 132000 * 4 = 528000 < 1209046 -> estimated throughput in downlink = 132000 byte/sec std::vector<uint16_t> dist1; dist1.push_back (0); // User 0 distance --> MCS 28 - dist1.push_back (4800); // User 1 distance --> MCS 16 - dist1.push_back (6000); // User 2 distance --> MCS 14 - dist1.push_back (10000); // User 3 distance --> MCS 8 + dist1.push_back (4800); // User 1 distance --> MCS 22 + dist1.push_back (6000); // User 2 distance --> MCS 20 + dist1.push_back (10000); // User 3 distance --> MCS 14 std::vector<uint16_t> packetSize1; packetSize1.push_back (100); packetSize1.push_back (100); @@ -183,34 +183,34 @@ // Traffic2 info // UDP traffic: payload size = 200 bytes, interval = 1 ms // UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate - // Maximum throughput = 4 / ( 1/2196000 + 1/903000 + 1/775000 + 1/421000 ) = 765051 byte/s - // 232000 * 4 = 928000 > 765051 -> estimated throughput in downlink = 765051 / 4 = 191263 byte/sec + // Maximum throughput = 4 / ( 1/2196000 + 1/1191000 + 1/1383000 + 1/775000 ) = 1209046 byte/s + // 232000 * 4 = 928000 < 1209046 -> estimated throughput in downlink = 928000 / 4 = 230000 byte/sec std::vector<uint16_t> dist2; dist2.push_back (0); // User 0 distance --> MCS 28 - dist2.push_back (4800); // User 1 distance --> MCS 16 - dist2.push_back (6000); // User 2 distance --> MCS 14 - dist2.push_back (10000); // User 3 distance --> MCS 8 + dist2.push_back (4800); // User 1 distance --> MCS 22 + dist2.push_back (6000); // User 2 distance --> MCS 20 + dist2.push_back (10000); // User 3 distance --> MCS 14 std::vector<uint16_t> packetSize2; packetSize2.push_back (200); packetSize2.push_back (200); packetSize2.push_back (200); packetSize2.push_back (200); std::vector<uint32_t> estThrPssDl2; - estThrPssDl2.push_back (191263); // User 0 estimated TTI throughput from PSS - estThrPssDl2.push_back (191263); // User 1 estimated TTI throughput from PSS - estThrPssDl2.push_back (191263); // User 2 estimated TTI throughput from PSS - estThrPssDl2.push_back (191263); // User 3 estimated TTI throughput from PSS + estThrPssDl2.push_back (230000); // User 0 estimated TTI throughput from PSS + estThrPssDl2.push_back (230000); // User 1 estimated TTI throughput from PSS + estThrPssDl2.push_back (230000); // User 2 estimated TTI throughput from PSS + estThrPssDl2.push_back (230000); // User 3 estimated TTI throughput from PSS AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist2,estThrPssDl2,packetSize2,1,errorModel), TestCase::QUICK); // Test Case 3: heterogeneous flow test in PSS // UDP traffic: payload size = [100,200,300] bytes, interval = 1 ms - // UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> [132000, 232000, 332000] byte/rate - // Maximum throughput = 3 / ( 1/2196000 + 1/903000 + 1/775000 ) = 1051482 byte/s - // 132000 + 232000 + 332000 = 696000 < 1051482 -> estimated throughput in downlink = [132000, 232000, 332000] byte/sec + // UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> [132000, 232000, 332000] byte/rate + // Maximum throughput = 3 / ( 1/2196000 + 1/1191000 + 1/1383000) = 1486569 byte/s + // 132000 + 232000 + 332000 = 696000 < 1486569 -> estimated throughput in downlink = [132000, 232000, 332000] byte/sec std::vector<uint16_t> dist3; dist3.push_back (0); // User 0 distance --> MCS 28 - dist3.push_back (4800); // User 1 distance --> MCS 16 - dist3.push_back (6000); // User 2 distance --> MCS 14 + dist3.push_back (4800); // User 1 distance --> MCS 22 + dist3.push_back (6000); // User 2 distance --> MCS 20 std::vector<uint16_t> packetSize3; packetSize3.push_back (100); packetSize3.push_back (200); @@ -545,7 +545,7 @@ remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1); - LogComponentDisableAll (LOG_LEVEL_ALL); +// LogComponentDisableAll (LOG_LEVEL_ALL); //LogComponentEnable ("LenaTestPssFfMacCheduler", LOG_LEVEL_ALL); lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel")); @@ -676,7 +676,7 @@ // get the lcId uint8_t lcId = 4; dlDataRxed.push_back (rlcStats->GetDlRxData (imsi, lcId)); - NS_LOG_INFO ("\tUser " << i << " dist " << m_dist.at (i) << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / statsDuration << " ref " << m_nUser); + NS_LOG_INFO ("\tUser " << i << " dist " << m_dist.at (i) << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " thr " << (double)dlDataRxed.at (i) / statsDuration << " ref " << m_estThrPssDl.at (i)); } for (int i = 0; i < m_nUser; i++)