Merge plan for the On-Waves branch to master

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/.

Holger Freyther zecke at selfish.org
Thu Mar 25 09:44:50 UTC 2010


Hi,

I have finally an idea on how to go from varpoware "oh I need to merge that" to 
actually merging stuff and started to work on that.

The one goal I have is to create a BSC/MSC split inside our codebase and to 
make MSC functionality only communicate via a given BSC API. This move will 
allow to do some things transparently to the MSC code, it includes automatic 
RLL establishes for SAPI, very early/early assignment will become transparent 
and in the future I can roll out my "subscriber task" scheduler to do stuff 
like SMS submit during a voice call...

Here is my plan on how to get there...

1.) Create a new structure for the MS Connection. This would happen on a GSM 
0808 Complete Layer3 Information message (e.g. CM Service Request, Paging 
Response). The name I picked is total rubish but can easily changed later.

I have embedded this connection into the struct gsm_lchan and moved all MSC 
attributes into this new structure. So right now we have a 1:1 mapping between 
a GSM LCHAN and the Subscriber Connection.

2.) Moved transaction code to work on this new structure instead of the lchan, 
I verified MT-SMS, MO-SMS, MT-Call, MO-Call. So the plan is to remove the 
occurence of GSM LCHAN from the MSC code paths, this will also mean to remove 
direct calls to RSL, RLL, paging.c.

3.) I picked gsm_04_11.c as the first file from the MSC (actually SMSC) code to 
go without the lchan. I have removed the direct call to RSL and placed it 
behind a new GSM0808 DTAP API. This would be the place where we figure out the 
real LCHAN..

This is all working and I can build on top of that until I reach the goal at 
which point I can forward port some of my code from the On Waves branch and 
instead of playing MSC myself, put it into SCCP...


<- now comes the stuff that I want to complete by the end of next month ->

4.) Currently when compiling you see a "BROKEN" warning, this is more that it 
is broken conceptually as the code handles paging and RLL establishment by 
itself. So the idea will be to move my "bssap.c" code to master and handle the 
RLL establishment and paging inside the new BSC API. This would involve 
queuing of messages...

5.) Remove the callback for SMS from abis_rsl.c and create a bsc_api_init with 
callbacks for various things (mostly Create Connection, Clear Request, Data).
At this point the gsm_04_11.c will be free of BSC code.

6.) Move it to gsm_04_08. This will involve adding new commands (resembling 
the GSM 08.08) message names, sharing some callbacks between SAPI=0 and SAPI=3 
and having a dispatch. E.g. later we should have a handler for new connection 
which would run authentication and then dispatch the handling of the 
connection to a task, on task completion close the channel or give it to the 
next task. After this we should magically be able to switch between very 
early/early assignment in the BSC code and the MSC will not recognize this, 
also TCH/H handling with be mostly transparent.


7.) Remove the 1:1 mapping of of GSM LChan to the new struct. Actually the new 
struct should include two lchan's (in case of handover or assignment), I will 
have to figure out on how to marry the handover code with that...

8.) I could rebuild my bsc_msc_ip.c on top of the new BSC API and all I need 
to do is to handle MSC. We could also create a msc_bsc_ip.c which takes these 
SCCP messages and sticks it into the MSC code of ours and we have a MSC.



as usual... any help is more than welcome.

z.




More information about the OpenBSC mailing list