AoIP OsmoBSCNAT » History » Version 1
laforge, 11/22/2021 08:43 AM
1 | 1 | laforge | h1. AoIP OsmoBSCNAT |
---|---|---|---|
2 | |||
3 | h2. high-level principle |
||
4 | |||
5 | The high-level functional principle of bsc-nat is to be a proxy between many BSCs and a [pool of] MSC. |
||
6 | |||
7 | It serves the following high-level goals |
||
8 | * all real BSC should appear as one virtual BSC towards the MSC |
||
9 | * de-coupling of [non-routed, separate] IP address ranges on Abis/RAN and A/CN |
||
10 | ** use osmo-mgw to achieve that for user plane |
||
11 | |||
12 | Most of mgw-nat acts as a proxy for connection-oriented SCCP, mapping tuples of |
||
13 | * BSC-side SCCP connection (BSC to bsc-nat) |
||
14 | * MSC-side SCCP connection (bsc-nat to MSC) |
||
15 | |||
16 | One such SCCP connection tuple exists for each concurrently active subscriber |
||
17 | |||
18 | h2. Detailed handling |
||
19 | |||
20 | h3. SS7/M3UA |
||
21 | |||
22 | * separate SCTP associations (M3UA AS/ASP) on RAN and CN side |
||
23 | * separate address range (one on RAN and one on CN) side |
||
24 | * as no routing is required or desired between both, best approach to use separate "ss7 instances" |
||
25 | |||
26 | h3. SCCP |
||
27 | |||
28 | * separate address range (one on RAN and one on CN) side |
||
29 | * probably best represented by two separate SCCP instances, one for either side |
||
30 | |||
31 | h4. MO SCCP connection establishment |
||
32 | |||
33 | * every SCCP CR (CONNECT.ind on the user sap) contains a user identity (IMSI, TMSI) |
||
34 | * based on that user identity, MSC pool member is selected, and data forwarded as CONNECT.req to the SCCP user SAP on the CN side. |
||
35 | * mgw-nat stores mapping between connection_id on both sides, as well as reference to BSC / MSC (struct or just PC?) |
||
36 | * DATA.ind from RAN is passed to DATA.req on CN |
||
37 | * DATA.ind from CN is passed to DATA.req on RAN |
||
38 | |||
39 | h4. MT SCCP connection establishment |
||
40 | |||
41 | * this happens |
||
42 | ** during hand-over when the MSC allocates resources on the target (new) BSS |
||
43 | *** detailed handling see BSSMAP HANDOVER REQ |
||
44 | ** during LCS |
||
45 | *** detailed handling TBD |
||
46 | |||
47 | h4. SCCP connection release |
||
48 | |||
49 | * if RAN side releases SCCP, CN side must be released |
||
50 | * if CN side releases SCCP, RAN side must be released |
||
51 | * any MGCP connections/endpoints must be deleted |
||
52 | |||
53 | h3. Connectionless BSSMAP |
||
54 | |||
55 | h4. RESET |
||
56 | |||
57 | * separate RESET procedure to each BSC on RAN side |
||
58 | * separate RESET procedure to each MSC on CN side (in pooling there can be multiple) |
||
59 | * there's only one global RESET for each pair of nodes |
||
60 | * reset can be initiated by either of the two sides |
||
61 | * the RESET procedures towards the BSCs and the MSCs are completely independent |
||
62 | * until a given peer has gone through the RESET procedure, no other BSSMAP or DTAP can be sent |
||
63 | |||
64 | h4. PAGING (BSC<-MSC) |
||
65 | |||
66 | * forwarded to BSC[s] based on Cell Identifier List |
||
67 | * there can very well be multiple BSCs, so message might need to be multiplied |
||
68 | |||
69 | h3. Connection-Oriented BSSMAP |
||
70 | |||
71 | h4. ASSIGNMENT CMD (BSC<-MSC) |
||
72 | |||
73 | * contains MSC-side IP/port |
||
74 | * must trigger CRCX (and MDCX?) to MGW on wildcard EP; will allocate CN-side connection |
||
75 | * must trigger CRCX to MGW on same EP for RAN-side connection |
||
76 | * references to those endpoints stored in state of SCCP connection |
||
77 | * ASSIGNMENT CMD is patched before passing on to BSC, containing IP/Port of RAN-side RTP connection |
||
78 | |||
79 | h4. ASSIGNMENT COMPLETE (BSC->MSC) |
||
80 | |||
81 | * contains BSC-side IP/port |
||
82 | * must trigger MDCX to MGW on RAN-side connection, informing it of BSC IP/port |
||
83 | * ASSIGNEMNT COMPLETE is pached before passing to MSC, containing IP/PORT of CN-side RTP connection |
||
84 | |||
85 | h4. CLEAR CMD (BSC<-MSC) |
||
86 | |||
87 | * issue DLCX on both MGCP connections (if any) |
||
88 | |||
89 | h4. HANDOVER REQ (BSC<-MSC) |
||
90 | |||
91 | * contains AoIP transport layer address |
||
92 | * RTP/MGPC handling similar to ASSIGNMENT CMD |
||
93 | * routing to BSC identified by CellIdList |
||
94 | |||
95 | h4. HANDOVER REQ ACK (BSC->MSC) |
||
96 | |||
97 | * contains AoIP transport layer address |
||
98 | * RTP/MGCP handling similar to ASSIGNMENT COMPLETE |
||
99 | |||
100 | h4. INTERNAL HANDOVER REQUIRED (BSC->MSC) |
||
101 | |||
102 | * contains AoIP transport layer address |
||
103 | * TBD |
||
104 | |||
105 | h4. HANDOVER PERFORMED (BSC->MSC) |
||
106 | |||
107 | * contains possibly different speehc version / coec list |
||
108 | * must likely trigger related MDCX to MGW |
||
109 | * TBD |
||
110 | |||
111 | h4. HANDOVER PERFORMED (BSC->MSC) |
||
112 | |||
113 | * contains possibly different speehc version / coec list |
||
114 | * must likely trigger related MDCX to MGW |
||
115 | * TBD |
||
116 | |||
117 | h2. Further Study Required |
||
118 | |||
119 | h3. LCLS implications |
||
120 | |||
121 | * ensure existing LCLS with BTS-local loop and BSC-local loop still works |
||
122 | * consider whether LCLS with bsc-nat loop is required (likely not) |
||
123 | |||
124 | h3. handover |
||
125 | |||
126 | * handover between BSCs behind the same bsc-nat |
||
127 | ** is seen as "external" handover between BSCs on RAN side, but |
||
128 | ** must be translated to be seen as "internal handover" by MSC on CN side |
||
129 | |||
130 | h3. MSC pooling |
||
131 | |||
132 | * BSCs would be set up without pooling (only one bsc-nat is seen as MSC) |
||
133 | * bsc-nat would then implement pooling towards pool of MSCs |
||
134 | * routing of most MO connection requests based on TMSI |
||
135 | * routing of IMSI connection requests based on round-robin |
||
136 | * reuse of BSC code may be possible here. |
||
137 | |||
138 | h3. LCS |
||
139 | |||
140 | We need to study how to handle location request in this context. |