Accelerate3g5 -- neels » History » Version 24
neels, 03/16/2017 07:20 PM
1 | 1 | neels | h1. Accelerate3g5 -- neels |
---|---|---|---|
2 | |||
3 | {{>toc}} |
||
4 | |||
5 | h2. Summary |
||
6 | |||
7 | Implement Osmocom 3G support integrated with the new libvlr, so that standard USIMs with full UMTS AKA can be used with the 3G OsmoMSC. |
||
8 | 7 | neels | This is actually a prerequisite for the accelerate3g5 contestants to be able to use their USIMs with the nano3G (without going into reprogramming it). |
9 | 1 | neels | |
10 | 2 | neels | h3. Participants |
11 | |||
12 | 13 | neels | * Neels (email: nhofmeyr@sysmocom.de / jabber: nhofmeyr@im.sysmocom.de ) |
13 | 2 | neels | |
14 | 1 | neels | h2. Details |
15 | |||
16 | For various reasons, the previously integrated HLR functionality is currently being split from OsmoNITB, on the "neels/vlr":http://git.osmocom.org/openbsc/log/?h=neels/vlr branch. UMTS AKA using the Milenage algorithm already works for 2G using that branch, but the "sysmocom/iu":http://git.osmocom.org/openbsc/log/?h=neels/vlr branch still lacks this capability. |
||
17 | |||
18 | Rebase the sysmocom/iu branch onto the neels/vlr branch and resolve all conflicts. Test and verify that 3G works with the sysmoUSIM-SJS1 using Milenage authentication. |
||
19 | |||
20 | 21 | neels | Related issues are: #1595 #1711 #1593 #1965 |
21 | 1 | neels | |
22 | 8 | neels | Work-in-progress is kept on the openbsc.git:neels/iu branch. |
23 | When done, this will become the new sysmocom/iu branch. |
||
24 | |||
25 | 1 | neels | h2. Journal |
26 | |||
27 | _2017-02-28_ |
||
28 | A first @git rebase@ resulted in numerous conflicts. Starting to resolve... |
||
29 | |||
30 | 3 | neels | _2017-03-02_ |
31 | Conflicts have been resolved, but of course the result doesn't compile. |
||
32 | Fixing all the errors, and will then need to test+debug, and also review all patches in detail. |
||
33 | Rate counters and the logging context are at least incomplete, probably more details and corner cases. |
||
34 | 4 | neels | _later_ |
35 | The merged branch compiled. Now the msc_vlr unit tests fail and there are probably still many other errors to resolve. |
||
36 | 3 | neels | |
37 | 14 | neels | _2017-03-03_ |
38 | 15 | neels | Errors fixed, all tests pass, including msc_vlr end-to-end tests. |
39 | 14 | neels | Next up: actual tests with the nano3G, sysmoUSIMs and Galaxy phones. |
40 | |||
41 | 18 | neels | _2017-03-04_ |
42 | The VLR needs to be extended to send CommonID and SecurityModeControl messages. |
||
43 | SecurityModeControl is also called 'integrity protection' ... but is it the same as the Ciphering Mode on GERAN? |
||
44 | If it is not the same, we need new states added to the VLR FSMs. |
||
45 | |||
46 | 19 | neels | _2017-03-04_ |
47 | *The rebased branch works!* |
||
48 | The "openbsc.git:sysmocom/iu":https://git.osmocom.org/openbsc/log/?h=sysmocom/iu branch now contains the libvlr and is capable of full UMTS authentication using OsmoHLR. |
||
49 | |||
50 | 24 | neels | _2017-03-16_ |
51 | Polished (and squashed) up the vlr and 3G branches, and verified again that everything works. |
||
52 | I renamed the branches from neels/vlr to *vlr_2G* and sysmocom/iu to *vlr_3G*, |
||
53 | conveying a more official air. They mark the future of the Osmocom core network. |
||
54 | |||
55 | 1 | neels | h2. Conclusions |
56 | |||
57 | 9 | neels | * I thought that GERAN means exactly A-interface and UTRAN means Iu-interface. But there's also GERAN-over-Iu. |
58 | 10 | neels | RAN is the radio technology, so GERAN _does_ mean 2G BTS, but A and Iu are just the interfaces that these can be controlled over. |
59 | 1 | neels | An MSC may employ an Iu interface to talk to both GERAN and UTRAN radio technology infrastructure. |
60 | 10 | neels | See the new enum ran_type: so far OsmoMSC will support RAN_UTRAN_IU. We hope to add RAN_GERAN_A soon. There are no plans in sight to add RAN_GERAN_IU. |
61 | The traditional OsmoNITB is BSC and MSC welded together, so it's more like GERAN over Abis. |
||
62 | 16 | neels | GSM is the traditional name for 2G, GERAN means "GSM EDGE Radio Access Network", so it bascially is GSM + EDGE. |
63 | UTRAN is the "Universal Terrestrial Radio Access Network" and basically means 3G, while the U lends itself to assuming it means UMTS, which I guess is not far from the truth. |
||
64 | Wikipedia has nice articles and diagrams on these. |
||
65 | 5 | neels | |
66 | 9 | neels | * And I thought that UMTS means 3G means UTRAN, but UMTS is "just" the R99 (Release 1999) extension of the protocols. |
67 | 17 | neels | UMTS is used in 3G/UTRAN, yes, but for example UMTS Authentication can be negotiated over 2G networks. I know now because I implemented it for OsmoNITB. |
68 | 9 | neels | As soon as the MSC says it is R99 capable in the SI3 MSCR bit and the MS is operated with a USIM which "replies" that it is R99 capable in the Classmark IEs sent during Location Updating, CM Service Request and Paging requests, both sides can/will authenticate using UMTS mutual authentication -- another prerequisite of course is that the HLR has UMTS authentication keys stored for this USIM. |
69 | 5 | neels | |
70 | 20 | neels | * The VLR still contained some faults: |
71 | ** The VLR must not send a CM Service Accept when it also sent a SecurityModeControl / Ciphering Mode Command. |
||
72 | A Ciphering is an implicit CM Service Accept and sending both confuses the MS. |
||
73 | ** The VLR must always do authentication as soon as is_utran == true. |
||
74 | |||
75 | 23 | neels | * -sysmoUSIM-SJS1 will work only from SQN=32 onwards.- (#1965-13) |
76 | 20 | neels | |
77 | *This project is basically done.* |
||
78 | Further code cleanup may or may not be documented here. |