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/gerrit-log@lists.osmocom.org/.
Neels Hofmeyr gerrit-no-reply at lists.osmocom.orgNeels Hofmeyr has uploaded this change for review. ( https://gerrit.osmocom.org/9674 Change subject: bsc: inter-BSC HO: add TC_ho_out_of_this_bsc, TC_ho_into_this_bsc ...................................................................... bsc: inter-BSC HO: add TC_ho_out_of_this_bsc, TC_ho_into_this_bsc Change-Id: Id22852d4be7f127d827e7a8beeec55db27c07f03 --- M bsc/BSC_Tests.ttcn M bsc/osmo-bsc.cfg 2 files changed, 330 insertions(+), 36 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/74/9674/1 diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 0107091..ca7b275 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -33,6 +33,8 @@ import from RSL_Types all; import from RSL_Emulation all; import from MGCP_Emulation all; +import from MGCP_Templates all; +import from MGCP_Types all; import from Osmocom_CTRL_Functions all; import from Osmocom_CTRL_Types all; @@ -43,6 +45,7 @@ import from MobileL3_CommonIE_Types all; import from MobileL3_Types all; +import from MobileL3_RRM_Types all; import from L3_Templates all; import from GSM_RR_Types all; @@ -2067,41 +2070,6 @@ f_vty_ss_action("handover " & int2str(new_bts_nr), bts_nr, trx_nr, chan_nr); } -/* intra-BSC hand-over between BTS0 and BTS1 */ -private function f_tc_ho_int(charstring id) runs on MSC_ConnHdlr { - g_pars := valueof(t_def_TestHdlrPars); - var template PDU_BSSAP exp_compl := f_gen_exp_compl(); - var PDU_BSSAP ass_cmd := f_gen_ass_req(); - const OCT8 kc := '0001020304050607'O; - - ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); - ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR})); - - f_establish_fully(ass_cmd, exp_compl); - - var HandoverState hs := { - rr_ho_cmpl_seen := false, - handover_done := false, - old_chan_nr := - - }; - /* issue hand-over command on VTY */ - f_vty_handover(0, 0, g_chan_nr, 1); - /* temporarily suspend DChan processing on BTS1 to avoid race with RSLEM_register */ - f_rslem_suspend(RSL1_PROC); - alt { - [] as_handover(hs); - /* FIXME: somehow determine that the hand-over has completed, by MGCP MDCX? */ - } -} - -testcase TC_ho_int() runs on test_CT { - var MSC_ConnHdlr vc_conn; - f_init(2, true); - f_sleep(1.0); - vc_conn := f_start_handler(refers(f_tc_ho_int)); - vc_conn.done; -} - /* OS#3041: Open and close N connections in a normal fashion, and expect no * BSSMAP Reset just because of that. */ testcase TC_bssap_rlsd_does_not_cause_bssmap_reset() runs on test_CT { @@ -2481,6 +2449,327 @@ * is the info correct on delayed PCU (re)connect? */ + +/*********************************************************************** + * Handover + ***********************************************************************/ + +/* intra-BSC hand-over between BTS0 and BTS1 */ +private function f_tc_ho_int(charstring id) runs on MSC_ConnHdlr { + g_pars := valueof(t_def_TestHdlrPars); + var template PDU_BSSAP exp_compl := f_gen_exp_compl(); + var PDU_BSSAP ass_cmd := f_gen_ass_req(); + const OCT8 kc := '0001020304050607'O; + + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); + ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR})); + + f_establish_fully(ass_cmd, exp_compl); + + var HandoverState hs := { + rr_ho_cmpl_seen := false, + handover_done := false, + old_chan_nr := - + }; + /* issue hand-over command on VTY */ + f_vty_handover(0, 0, g_chan_nr, 1); + /* temporarily suspend DChan processing on BTS1 to avoid race with RSLEM_register */ + f_rslem_suspend(RSL1_PROC); + alt { + [] as_handover(hs); + /* FIXME: somehow determine that the hand-over has completed, by MGCP MDCX? */ + } +} + +testcase TC_ho_int() runs on test_CT { + var MSC_ConnHdlr vc_conn; + f_init(2, true); + f_sleep(1.0); + vc_conn := f_start_handler(refers(f_tc_ho_int)); + vc_conn.done; +} + +template PDU_BSSAP tr_BSSMAP_HandoverRequired modifies tr_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverRequired := { + messageType := '11'O + } + } + } +} + +template PDU_BSSAP ts_BSSMAP_HandoverCommand(octetstring layer3info) modifies ts_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverCommand := { + messageType := '13'O, + layer3Information := { + elementIdentifier := '17'O, + lengthIndicator := 0, + layer3info := layer3info + }, + cellIdentifier := omit, + newBSSToOldBSSInfo := omit, + talkerPriority := omit + } + } + } +} + +template PDU_ML3_NW_MS ts_RR_HandoverCommand := { + discriminator := '0110'B, + tiOrSkip := { + skipIndicator := '0000'B + }, + msgs := { + rrm := { + handoverCommand := { + messageType := '00101011'B, + cellDescription := { + bcc := '001'B, + ncc := '010'B, + BCCHArfcn_HighPart := '11'B, + BCCHArfcn_LowPart := '04'O + }, + channelDescription2 := { + timeslotNumber := '110'B, + channelTypeandTDMAOffset := '00001'B, + octet3 := '00'O, + octet4 := '09'O + }, + handoverReference := { + handoverReferenceValue := '00'O + }, + powerCommandAndAccesstype := { + powerlevel := '00000'B, + fPC_EP := '0'B, + ePC_Mode := '0'B, + aTC := '0'B + }, + synchronizationIndication := omit, + frequencyShortListAfterTime := omit, + frequencyListAfterTime := omit, + cellChannelDescription := omit, + multislotAllocation := omit, + modeOfChannelSet1 := omit, + modeOfChannelSet2 := omit, + modeOfChannelSet3 := omit, + modeOfChannelSet4 := omit, + modeOfChannelSet5 := omit, + modeOfChannelSet6 := omit, + modeOfChannelSet7 := omit, + modeOfChannelSet8 := omit, + descrOf2ndCh_at := omit, + modeOf2ndChannel := omit, + frequencyChannelSequence_at := omit, + mobileAllocation_at := omit, + startingTime := omit, + timeDifference := omit, + timingAdvance := omit, + frequencyShortListBeforeTime := omit, + frequencyListBeforeTime := omit, + descrOf1stCh_bt := omit, + descrOf2ndCh_bt := omit, + frequencyChannelSequence_bt := omit, + mobileAllocation_bt := omit, + cipherModeSetting := omit, + vGCS_TargetModeIndication := omit, + multiRateConfiguration := omit, + dynamicARFCN_Mapping := omit, + vGCS_Ciphering_Parameters := omit, + dedicatedServiceInformation := omit, + pLMNIndex := omit, + extendedTSCSet_afterTime := omit, + extendedTSCSet_beforeTime := omit + } + } + } +} + +private function f_tc_ho_out_of_this_bsc(charstring id) runs on MSC_ConnHdlr { + g_pars := valueof(t_def_TestHdlrPars); + var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, ?); + var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342)); + var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); + var PDU_ML3_NW_MS rr_ho_cmd; + var octetstring rr_ho_cmd_enc; + var myBSSMAP_Cause cause_val := GSM0808_CAUSE_HANDOVER_SUCCESSFUL; + var BssmapCause cause := enum2int(cause_val); + var RSL_Message rsl_ho_cmd; + var RSL_IE_Body rsl_ho_cmd_l3; + var MgcpCommand mgcp; + + ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); + ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR})); + + f_establish_fully(ass_cmd, exp_compl); + + f_vty_transceive(BSCVTY, "handover any to arfcn 123 bsic any"); + + BSSAP.receive(tr_BSSMAP_HandoverRequired); + + f_sleep(0.5); + /* The MSC negotiates Handover Request and Handover Request Ack with + * the other BSS and comes back with a BSSMAP Handover Command + * containing an RR Handover Command coming from the target BSS... */ + + rr_ho_cmd := valueof(ts_RR_HandoverCommand); + log("Remote cell's RR Handover Command passed through as L3 Info: ", rr_ho_cmd); + rr_ho_cmd_enc := enc_PDU_ML3_NW_MS(rr_ho_cmd); + log("Remote cell's RR Handover Command passed through as L3 Info, encoded: ", rr_ho_cmd_enc); + BSSAP.send(ts_BSSMAP_HandoverCommand(rr_ho_cmd_enc)); + + /* expect the Handover Command to go out on RR */ + RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, ?)) -> value rsl_ho_cmd; + log("RSL Data Req went out to first BTS: ", rsl_ho_cmd); + if (not f_rsl_find_ie(rsl_ho_cmd, RSL_IE_L3_INFO, rsl_ho_cmd_l3)) { + log("RSL message contains no L3 Info IE, expected RR Handover Command"); + setverdict(fail); + } else { + log("Found L3 Info: ", rsl_ho_cmd_l3); + if (rsl_ho_cmd_l3.l3_info.payload != rr_ho_cmd_enc) { + log("FAIL: the BSC sent out a different L3 Info, not matching the RR Handover Command the other BSS forwarded."); + setverdict(fail); + } else { + log("Success: the BSC sent out the same RR Handover Command the other BSS forwarded."); + setverdict(pass); + } + } + + /* When the other BSS has reported a completed handover, this side is + * torn down. */ + + BSSAP.send(ts_BSSMAP_ClearCommand(cause)); + + /* Expecting MGCP to DLCX the endpoint's two connections: towards BTS and towards MSC */ + interleave { + [] BSSAP.receive(tr_BSSMAP_ClearComplete); + [] MGCP.receive(tr_DLCX()) -> value mgcp { + log("Got first DLCX: ", mgcp); + } + [] MGCP.receive(tr_DLCX()) -> value mgcp { + log("Got second DLCX: ", mgcp); + } + } + setverdict(pass); + f_sleep(1.0); +} +testcase TC_ho_out_of_this_bsc() runs on test_CT { + var MSC_ConnHdlr vc_conn; + + f_init(1, true); + f_sleep(1.0); + + vc_conn := f_start_handler(refers(f_tc_ho_out_of_this_bsc)); + vc_conn.done; +} + +template PDU_BSSAP ts_BSSMAP_HandoverRequest( + template BSSMAP_IE_CellIdentifier cell_id_target := ts_CellID_LAC_CI(1, 0), + template BSSMAP_IE_CellIdentifier cell_id_source := ts_CellID_LAC_CI(1, 1), + template BSSMAP_IE_AoIP_TransportLayerAddress aoip_tla := ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342) + ) +modifies ts_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverRequest := { + messageType := '10'O, + channelType := valueof(ts_BSSMAP_IE_ChannelType), + encryptionInformation := + valueof(ts_BSSMAP_IE_EncrInfo('0000000000000000'O,'01'O)), + classmarkInformationType := { + classmarkInformationType1 := { + elementIdentifier := '1D'O, + rf_PowerCapability := '000'B, + a5_1 := '0'B, + esind := '0'B, + revisionLevel := '10'B, + spare1_1 := '0'B + } + }, + cellIdentifierSource := cell_id_source, + priority := omit, + circuitIdentityCode := omit, + downLinkDTX_Flag := omit, + cellIdentifierTarget := cell_id_target, + interferenceBandToBeUsed := omit, + cause := omit, + classmarkInformationType3 := omit, + currentChannelType1 := omit, + speechVersion := omit, + groupCallReference := omit, + talkerFlag := omit, + configurationEvolutionIndication := omit, + chosenEncryptionAlgorithm := omit, + oldToNewBSSInfo := omit, + lSAInformation := omit, + lSAAccessControlSuppression := omit, + serviceHandover := omit, + iMSI_bssmap := omit, + sourceToTargetRNCTransparentInfo := omit, + sourceToTargetRNCTransparentInfoCDMA := omit, + sNAAccessInformation := omit, + talkerPriority := omit, + aoIPTransportLayer := aoip_tla, + codecList := omit, + callIdentifier := omit, + kC128 := omit, + globalCallReference := omit, + lCLS_Configuration := omit, + connectionStatusControl := omit + } + } + } +} + +template PDU_BSSAP tr_BSSMAP_HandoverRequestAcknowledge(octetstring layer3info) +modifies tr_BSSAP_BSSMAP := { + pdu := { + bssmap := { + handoverRequestAck := { + messageType := '12'O, + layer3Information := { + elementIdentifier := '17'O, + lengthIndicator := 0, + layer3info := layer3info + } + } + } + } +} + +private function f_tc_ho_into_this_bsc(charstring id) runs on MSC_ConnHdlr { + var BSSAP_N_DATA_ind rx_di; + + BSSAP.send(ts_BSSAP_CONNECT_req(g_bssap.sccp_addr_peer, g_bssap.sccp_addr_own, 2342, + ts_BSSMAP_HandoverRequest())); + BSSAP.receive(tr_BSSAP_CONNECT_cfm(2342, omit)); + + BSSAP.receive(tr_BSSAP_DATA_ind(2342, tr_BSSMAP_HandoverRequestAcknowledge('1234'O))); + + alt { + [] BSSAP.receive(tr_BSSAP_DATA_ind(2342, tr_BSSMAP_ClearRequest)) -> value rx_di { + var BssmapCause cause := bit2int(rx_di.userData.pdu.bssmap.clearRequest.cause.causeValue); + BSSAP.send(ts_BSSAP_DATA_req(2342, ts_BSSMAP_ClearCommand(cause))); + repeat; + } + [] BSSAP.receive(tr_BSSAP_DATA_ind(2342, tr_BSSMAP_ClearComplete)); + } + + setverdict(pass); +} + +testcase TC_ho_into_this_bsc() runs on test_CT { + var MSC_ConnHdlr vc_conn; + + f_init(1, true); + f_sleep(1.0); + + vc_conn := f_start_handler(refers(f_tc_ho_into_this_bsc)); + vc_conn.done; +} + control { /* CTRL interface testing */ execute( TC_ctrl_msc_connection_status() ); @@ -2566,7 +2855,6 @@ execute( TC_unsol_ho_fail() ); execute( TC_err_82_short_msg() ); execute( TC_err_84_unknown_msg() ); - execute( TC_ho_int() ); execute( TC_bssap_rlsd_does_not_cause_bssmap_reset() ); execute( TC_bssmap_clear_does_not_cause_bssmap_reset() ); @@ -2577,6 +2865,10 @@ execute( TC_dyn_pdch_osmo_act_deact() ); execute( TC_dyn_pdch_osmo_act_nack() ); + execute( TC_ho_int() ); + execute( TC_ho_out_of_this_bsc() ); + execute( TC_ho_into_this_bsc() ); + /* at bottom as they might crash OsmoBSC before OS#3182 is fixed */ execute( TC_early_conn_fail() ); execute( TC_late_conn_fail() ); diff --git a/bsc/osmo-bsc.cfg b/bsc/osmo-bsc.cfg index 1ccef09..b2409a5 100644 --- a/bsc/osmo-bsc.cfg +++ b/bsc/osmo-bsc.cfg @@ -88,6 +88,8 @@ early-classmark-sending forbidden ip.access unit_id 1234 0 oml ip.access stream_id 255 line 0 + # remote-BSS neighbor: + neighbor add lac 99 arfcn 123 bsic any neighbor-list mode manual-si5 neighbor-list add arfcn 100 neighbor-list add arfcn 200 -- To view, visit https://gerrit.osmocom.org/9674 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Id22852d4be7f127d827e7a8beeec55db27c07f03 Gerrit-Change-Number: 9674 Gerrit-PatchSet: 1 Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180618/b95e932c/attachment.htm>