Project

General

Profile

AoIP OsmoBSCNAT » History » Revision 2

Revision 1 (laforge, 11/22/2021 08:43 AM) → Revision 2/3 (osmith, 12/03/2021 01:05 PM)

h1. AoIP OsmoBSCNAT 

 h2. high-level principle 

 The high-level functional principle of bsc-nat is to be a proxy between many BSCs and a [pool of] MSC. 

 It serves the following high-level goals 
 * all real BSC should appear as one virtual BSC towards the MSC 
 * de-coupling of [non-routed, separate] IP address ranges on Abis/RAN and A/CN 
 ** use osmo-mgw to achieve that for user plane 

 Most of bsc-nat mgw-nat acts as a proxy for connection-oriented SCCP, mapping tuples of 
 * BSC-side SCCP connection (BSC to bsc-nat) 
 * MSC-side SCCP connection (bsc-nat to MSC) 

 One such SCCP connection tuple exists for each concurrently active subscriber 

 h2. Detailed handling 

 h3. SS7/M3UA 

 * separate SCTP associations (M3UA AS/ASP) on RAN and CN side 
 * separate address range (one on RAN and one on CN) side 
 * as no routing is required or desired between both, best approach to use separate "ss7 instances" 

 h3. SCCP 

 * separate address range (one on RAN and one on CN) side 
 * probably best represented by two separate SCCP instances, one for either side 

 h4. MO SCCP connection establishment 

 * every SCCP CR (CONNECT.ind on the user sap) contains a user identity (IMSI, TMSI) 
 * 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. 
 * bsc-nat mgw-nat stores mapping    between connection_id on both sides, as well as reference to BSC / MSC (struct or just PC?) 
 * DATA.ind from RAN is passed to DATA.req on CN 
 * DATA.ind from CN is passed to DATA.req on RAN 

 h4. MT SCCP connection establishment 

 * this happens 
 ** during hand-over when the MSC allocates resources on the target (new) BSS 
 *** detailed handling see BSSMAP HANDOVER REQ 
 ** during LCS 
 *** detailed handling TBD 

 h4. SCCP connection release 

 * if RAN side releases SCCP, CN side must be released 
 * if CN side releases SCCP, RAN side must be released 
 * any MGCP connections/endpoints must be deleted 

 h3. Connectionless BSSMAP 

 h4. RESET 

 * separate RESET procedure to each BSC on RAN side 
 * separate RESET procedure to each MSC on CN side (in pooling there can be multiple) 
 * there's only one global RESET for each pair of nodes 
 * reset can be initiated by either of the two sides 
 * the RESET procedures towards the BSCs and the MSCs are completely independent 
 * until a given peer has gone through the RESET procedure, no other BSSMAP or DTAP can be sent 

 h4. PAGING (BSC<-MSC) 

 * forwarded to BSC[s] based on Cell Identifier List 
 * there can very well be multiple BSCs, so message might need to be multiplied 

 h3. Connection-Oriented BSSMAP 

 h4. ASSIGNMENT CMD (BSC<-MSC) 

 * contains MSC-side IP/port 
 * must trigger CRCX (and MDCX?) to MGW on wildcard EP; will allocate CN-side connection 
 * must trigger CRCX to MGW on same EP for RAN-side connection 
 * references to those endpoints stored in state of SCCP connection 
 * ASSIGNMENT CMD is patched before passing on to BSC, containing IP/Port of RAN-side RTP connection 

 h4. ASSIGNMENT COMPLETE (BSC->MSC) 

 * contains BSC-side IP/port 
 * must trigger MDCX to MGW on RAN-side connection, informing it of BSC IP/port 
 * ASSIGNEMNT COMPLETE is pached before passing to MSC, containing IP/PORT of CN-side RTP connection 

 h4. CLEAR CMD (BSC<-MSC) 

 * issue DLCX on both MGCP connections (if any) 

 h4. HANDOVER REQ (BSC<-MSC) 

 * contains AoIP transport layer address 
 * RTP/MGPC handling similar to ASSIGNMENT CMD 
 * routing to BSC identified by CellIdList 

 h4. HANDOVER REQ ACK (BSC->MSC) 

 * contains AoIP transport layer address 
 * RTP/MGCP handling similar to ASSIGNMENT COMPLETE 

 h4. INTERNAL HANDOVER REQUIRED (BSC->MSC) 

 * contains AoIP transport layer address 
 * TBD 

 h4. HANDOVER PERFORMED (BSC->MSC) 

 * contains possibly different speehc version / coec list 
 * must likely trigger related MDCX to MGW 
 * TBD 

 h4. HANDOVER PERFORMED (BSC->MSC) 

 * contains possibly different speehc version / coec list 
 * must likely trigger related MDCX to MGW 
 * TBD 

 h2. Further Study Required 

 h3.    LCLS implications 

 * ensure existing LCLS with BTS-local loop and BSC-local loop still works 
 * consider whether LCLS with bsc-nat loop is required (likely not) 

 h3. handover 

 * handover between BSCs behind the same bsc-nat 
 ** is seen as "external" handover between BSCs on RAN side, but 
 ** must be translated to be seen as "internal handover" by MSC on CN side 

 h3. MSC pooling 

 * BSCs would be set up without pooling (only one bsc-nat is seen as MSC) 
 * bsc-nat would then implement pooling towards pool of MSCs 
 * routing of most MO connection requests based on TMSI 
 * routing of IMSI connection requests based on round-robin 
 * reuse of BSC code may be possible here. 

 h3. LCS 

 We need to study how to handle location request in this context.
Add picture from clipboard (Maximum size: 48.8 MB)