Project

General

Profile

Feature #2282

uplink multi-slot allocations

Added by laforge almost 4 years ago. Updated 2 months ago.

Status:
Resolved
Priority:
High
Assignee:
Target version:
-
Start date:
05/22/2017
Due date:
% Done:

100%

Spec Reference:

Description

we currently have multi-slot allocations only in downlink, which works for "web browsing" and related applications. Howver, particularly in M2M, quite often the applications are upload-centric, and thus single-slot allocations in uplink are insufficient. Let's extend the code base with support for uplink multi-slot allocations


Related issues

Related to OsmoPCU - Bug #1775: LC15: No PDCH allocation across two TRXResolved07/12/2016

Associated revisions

Revision a52d8393 (diff)
Added by max over 3 years ago

Expand bit pretty-printer

Add OSMO_BIT_PRINT_EX() which is like OSMO_BIT_PRINT() but allows to
specify character to be printed for set bits. It's useful to print bytes
used as mask where set bit has particular semantics - for example TS
mask in OsmoPCU.

Change-Id: I72528bc1e376134c5a7b6e7a50c48e38c3f48b0a
Related: OS#2282

Revision d2487e11 (diff)
Added by Pau Espin Pedrol 3 months ago

Support uplink multi-slot alloctions

Before this patch, allocate_usf() was implemented to only allocate 1 USF
per TBF, regardless of the available ul_slot mask.

As a result, only 1 slot at max was allocated to any TBF. That's a pity
because usual multislot classes like 12 support up to 2 UL slots per TBF
(in common TS with DL).

This patch reworks allocate_usf() to allocate as many UL multislots as
possible (given mslot class, current USF availability, TFI availability,
related DL TBF slots for the same MS, etc.).

As a result, it can be seen that AllocTest results change substantially
and maximum concurrent TBF allocation drops under some conditions.
That happens because due to more USFs being reserved (because each TBF
has now more UL slots reserved). Hence now USF exhaustion becomes the
usual limitation factor as per the number of concurrent TBFs than can be
handled per TRX (as opposed to TFIs previously).

Some of the biggest limitations in test appear though because really
high end multislot classes are used, which can consume high volumes of
UL slots (USFs), and which are probably not the most extended devices in
the field.

This USF exhaustion situation can be improved in the future by
parametrizing (VTY command?) the maximum amount of UL slots that a TBF
can reserve, making for instance a default value of 2, meaning usual
classes can gather up 2 UL timelosts at a time while forbidding high-end
hungry classes to gather up to 8 UL timeslots.

Another approach would be to dynamically limit the amount of allowed
reservable UL timeslots based on current USF reservation load.

Related: OS#2282
Change-Id: Id97cc6e3b769511b591b1694549e0dac55227c43

Revision ed2afa3b (diff)
Added by Pau Espin Pedrol 3 months ago

Support uplink multi-slot allocations

Before this patch, allocate_usf() was implemented to only allocate 1 USF
per TBF, regardless of the available ul_slot mask.

As a result, only 1 slot at max was allocated to any TBF. That's a pity
because usual multislot classes like 12 support up to 2 UL slots per TBF
(in common TS with DL).

This patch reworks allocate_usf() to allocate as many UL multislots as
possible (given mslot class, current USF availability, TFI availability,
related DL TBF slots for the same MS, etc.).

As a result, it can be seen that AllocTest results change substantially
and maximum concurrent TBF allocation drops under some conditions.
That happens due to more USFs being reserved (because each TBF has now
more UL slots reserved). Hence now USF exhaustion becomes the usual
limitation factor as per the number of concurrent TBFs than can be
handled per TRX (as opposed to TFIs previously).

Some of the biggest limitations in test appear though because really
high end multislot classes are used, which can consume high volumes of
UL slots (USFs), and which are probably not the most extended devices in
the field.

Moreover, in general the curren timeslot allocator for a given
multislot class will in general try to optimize the DL side gathering
most of the possible timeslots there. That means, for instance on ms
class 12 (4 Tx, 4Rx, 5 Sum), 4 DL slots and 1 UL slot will still be
selected. But in the case where only 3 PDCHs are available, then with
this new multi-slot UL support a TBF will reserve 3 DL slots and 2 UL
slots, while before this patch it would only taken 1 UL slot instead of
2.

This USF exhaustion situation can be improved in the future by
parametrizing (VTY command?) the maximum amount of UL slots that a TBF
can reserve, making for instance a default value of 2, meaning usual
classes can gather up 2 UL timelosts at a time while forbidding high-end
hungry classes to gather up to 8 UL timeslots.

Another approach would be to dynamically limit the amount of allowed
reservable UL timeslots based on current USF reservation load.

Related: OS#2282
Change-Id: Id97cc6e3b769511b591b1694549e0dac55227c43

Revision 4e1c9adb (diff)
Added by pespin 3 months ago

bts: Count TBF TS allocation failure

Related: OS#2282
Change-Id: I0696bf77364bd31b96c00614a58ce66809683d1c

History

#1 Updated by laforge almost 4 years ago

  • Assignee changed from sysmocom to msuraev
  • Priority changed from Low to High

#2 Updated by laforge over 3 years ago

  • Tracker changed from Bug to Feature

#3 Updated by msuraev over 3 years ago

  • Related to Bug #1775: LC15: No PDCH allocation across two TRX added

#4 Updated by msuraev over 3 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 10

Prerequisite patch with code clenup/restructure/documentation has been sent for review in gerrit 3760, 3807.

#5 Updated by msuraev over 3 years ago

  • % Done changed from 10 to 20

Currently under review in gerrit: 3929, 3930, 3931, 3932, 3760, 3895, 3905, 3906, 3913, 3914, 3920.
The code requires serious refactoring and is unsufficiently covered by tests hence the size of patch series.

#6 Updated by msuraev over 3 years ago

  • Status changed from In Progress to Stalled

Needs to incorporate review feedback and re-submit.

#7 Updated by msuraev over 3 years ago

Related patch series 4634-4636, 4072 is under review. Once it's merged, the previous patch set will be re-based on top of it and resubmitted.

#8 Updated by msuraev over 3 years ago

Gerrit 4634 and 4635 were merged. Gerrit 4636 is waiting for review. Gerrit 4955, 4957, 4958, 4960 were sent for review based on current feedback; 4072 is rebased on top of 4958.

#9 Updated by msuraev over 3 years ago

  • Status changed from Stalled to In Progress

Patch series partially merged, the rest is rebased on top of it, more tests added.

#10 Updated by msuraev about 3 years ago

  • Status changed from In Progress to Stalled

Remaining patches under review gerrit 3895, 4086, 3929, 3932 are cosmetic only and can be dropped.

#11 Updated by laforge about 3 years ago

  • Assignee changed from msuraev to sysmocom

#12 Updated by laforge over 2 years ago

#13 Updated by laforge over 2 years ago

#14 Updated by laforge about 2 years ago

  • Assignee changed from sysmocom to lynxis

#15 Updated by lynxis almost 2 years ago

  • Status changed from Stalled to In Progress

#16 Updated by laforge over 1 year ago

  • Assignee changed from lynxis to sysmocom

#17 Updated by laforge about 1 year ago

  • Assignee changed from sysmocom to pespin

#18 Updated by laforge 11 months ago

  • Status changed from In Progress to Stalled

what is the status here? It looks like msuraev got some infrastructure/generalization patches merged, but no work has been done on the actual multi-slot uplink allocation, right?

#19 Updated by pespin 11 months ago

Right, I didn't do any work related on this yet.

#20 Updated by pespin 8 months ago

For reference, we still don't support UL multi-slot allocation yet, we do only for DL.

Related bits to be found in alloc_algorithm_b(), there in UL TBF code branch a call to allocate_usf() forces the initially selected TS set down into a single TS.

I guess support for it requires improving that part.

#21 Updated by pespin 8 months ago

Related:

commit 5f494b8415ff4e5c9bf323ea7bc8326ad423c7ae
Author: Jacob Erlbeck <jerlbeck@sysmocom.de>
Date:   Wed Jul 1 13:10:41 2015 +0200

    alloc: Only reserve 1 UL slot with algorithm B

    Since currently the algorithm B will only allocate a single UL slot
    and will have to stick to it (first common TS), the other possible UL
    slots will not be allocated while the reservation is kept.

    This commit adds code to update the reserved set of UL slots to only
    reserve the single common TS when the UL TBF is allocated.

    Interestingly this leads to fewer allocated TBF in some cases due to
    USF exhaustion. This will be improved by the following commit "alloc:
    Skip common TS without free USF".

    Sponsored-by: On-Waves ehf

Also half related, a fix introduced in UL TBF recently:
https://gerrit.osmocom.org/c/osmo-pcu/+/20254 Fix crash accessing NULL tbf->pdch[first_ts]

#22 Updated by pespin 7 months ago

For reference, DL multislot TBF allocation (not UL TBF, which this task talks about) is tested and working (with some constraints in some scenarios where 4 PDCHS are allocated instead of 8) here:
remote: https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20947 pcu: Introduce test TC_dl_multislot_tbf_ms_class_from_sgsn
remote: https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20967 pcu: Introduce test TC_dl_multislot_tbf_ms_class_from_2phase

#23 Updated by pespin 6 months ago

Test triggering and validating multi-slot UL TBF allocation:

https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20983 pcu: Introduce test TC_ul_multislot_tbf_ms_class_from_2phase

MS class 18 should trigger allocation of 8 PDCHs but only 1 is allocated. It simply demonstrate what we already know: UL multislot TBF is not working (it is explicitly disabled so far in the code).

#24 Updated by pespin 6 months ago

From "EGPRS – Design Details & System Engineering" slide number 30:

Note: Physically, it is not possible to allocate more than two timeslots to a mobile station in uplink direction when using dynamic allocation. This is a serious
performance limitation for GPRS and EGPRS, in particular for symmetric applications (e.g. e-mail transfer).

#25 Updated by pespin 3 months ago

pespin wrote:

From "EGPRS – Design Details & System Engineering" slide number 30:

Note: Physically, it is not possible to allocate more than two timeslots to a mobile station in uplink direction when using dynamic allocation. This is a serious
performance limitation for GPRS and EGPRS, in particular for symmetric applications (e.g. e-mail transfer).

Explanation can be found here:

Let us take the example of a class 12 MS, which is defined by:

A maximum number of four receive time slots per TDMA frame;

A maximum number of four transmit time slots per TDMA frame;

A total number of transmit and receive time slots per TDMA frame less than or equal to five.

The network cannot allocate four uplink PDCHs to a MS multislot class 12 with the dynamic allocation. Indeed, the MS must decode the USF fields on the four associated downlink PDCHs. This means that the MS would have to receive on four time slots to be able to transmit on four time slots. That gives a total number of eight received and transmit time slots, which is not compliant with a multislot class 12 MS. In the case of extended dynamic allocation, the network can allocate four uplink PDCHs without exceeding a total number of five receive and transmit time slots.

#26 Updated by pespin 3 months ago

  • Status changed from Stalled to Feedback
  • % Done changed from 20 to 90

It should be implemented here:
https://gerrit.osmocom.org/c/osmo-pcu/+/23031

I looked at unit tests and tested it locally on my local setup and everything looks fine as far as I can see.

It also makes PCU_Tests.TC_ul_multislot_tbf_ms_class_from_2phase pass for first time.

See commit description regarding possible improvements on USF exhaustion.

#27 Updated by pespin 2 months ago

  • Status changed from Feedback to Resolved
  • % Done changed from 90 to 100

Patches have been merged.

I also submitted some more patches adding counters to detect TFI/USF exhaustion in order to track this change in behavior (UL multislot endig up more easily in USF exhaustion):
https://gerrit.osmocom.org/c/osmo-pcu/+/23110

If we see this is really a problem in setups in the field with lots of MS, we can add a VTY param to limit maximum amount of timeslots that can be assigned to a UL TBF. This way for instance using value "2" there, MS can allocate up to 2 TS (USF) to speed up uplink, but avoid high class MS gathering up to 8 TS on a single UL TBF.

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)