openbsc.git branch sysmocom/iu updated. 0.15.0-442-gf3bcdd2

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Neels Hofmeyr nhofmeyr at sysmocom.de
Fri May 6 18:12:18 UTC 2016


On Wed, May 04, 2016 at 02:37:26PM +0200, Holger Freyther wrote:
> 
> I don't think this belongs into the gsm_subscriber. If you compare this with the architectural change that removed the "subscriber queue" we are going to repeat the same mistake again. The timeout belongs into the logical "operation" and not the subscriber (the object of the logical operation).

I must admit that I haven't fully grokked the master branch aka NITB paging
semantics. I've just taken a closer look. It's quite complex...

Here is how the paging_timeout ended up in gsm_subscriber:

First I wanted to add the paging timeout to a gsm_subscriber_connection, which
obviously doesn't make sense. There is no conn yet when we want to page.

The next thought would be to add the timeout to struct subscr_request.  But
taking a look at subscr_request_conn(), I see that gsm_subscriber has an
is_paging flag, and when a request comes along while we're already paging, it
is just added to the list without launching another paging [1]. So it seems
there is a paging semantic that is separate from the request, that's why
is_paging is in gsm_subscriber I presume, and that's why I put the paging
timeout next to that, but read on.

[1] see subscr_request_conn() on sysmocom/iu, or subscr_request_channel() on master

Now I understand that the libbsc paging is much more than just one paging
request. There's the bts->paging.work_timer that keeps retrying to page as long
as requests exist. It rotates every first request to the back and does another
paging; I don't really understand the part where the "available slots" of 20
are reduced to zero, where the paging_give_credit() is queued with a separate
timeout, which sets the slots back to 20 (20 credits??). Nevertheless, I
understand now that is_paging is not about a single paging, but remembers
whether we can skip kicking off the cascade of paging retries.  Then there's
the separate req->T3113 timer which separately removes each request from the
list of requests waiting for a paging.

I could re-implement this kind of algorithm in libmsc:

* Upon first request, start paging
* Retry paging "indefinitely" while requests are queued ("paging worker")
* Upon second or later request, just add to the queue
* Time out each request separately
* Stop paging once the queue of requests is empty

The current status quo is somewhat simpler:

* Upon first request, send out a single paging request
* Upon second or later request, add to the queue
* If the single paging timed out, discard all requests


If I re-implement the more complex algorithm like in libbsc, I would need a
paging worker in the gsm_subscriber struct, and a timeout per each
subscr_request.

OTOH, if the BSC level already has the paging-retries semantics built-in, then
it makes sense to send out only a single paging request from the MSC level.

It's not as clear cut. osmo-bsc receives a paging request from the MSC, and
does numerous paging retries. But it doesn't store the requests in detail, it
even has the request callbacks set to NULL. All that happens during a paging
response is that a connection to the MSC is initiated. So the knowledge for
various detailed requests is in the MSC, while the paging retries still are in
osmo-bsc.

So it's not trivial to figure out how the various levels should behave. The MSC
should not have the same paging resend logic as the BSC, or if it does then
with a much longer timeout.

It would be interesting to find out whether RNCs resend pagings like our
osmo-bsc.

I would appreciate opinions on how standalone MSC level paging should behave in
detail.

Also, could someone please explain the 20 slots and "give credit" semantics I
mentioned above?

~Neels

-- 
- Neels Hofmeyr <nhofmeyr at sysmocom.de>          http://www.sysmocom.de/
=======================================================================
* sysmocom - systems for mobile communications GmbH
* Alt-Moabit 93
* 10559 Berlin, Germany
* Sitz / Registered office: Berlin, HRB 134158 B
* Geschäftsführer / Managing Directors: Holger Freyther, Harald Welte
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.osmocom.org/pipermail/openbsc/attachments/20160506/492ebaaf/attachment.bin>


More information about the OpenBSC mailing list