Project

General

Profile

Configuring OpenBSC with muiltiple BTS and in-call handover

Prerequisites

It is assumed that you already have a functioning BSC/NITB, and two or more BTS available.

Note that if you are using BTS based on OsmoBTS/OsmoTRX handover requires:

  • osmo-bts package version >= fw-5 (this fix is included)
  • osmo-trx package version >= 0.2.0 (this patch is included)

Example network architecture

In this example we have one system running the BSC/NITB software and two BTS that are built on the OsmoBTS software.

BTS configuration

There are three OsmoBTS parameters in particular which must be correctly configured:

  • bts - BTS number in a config file, always 0 for a BTS configuration file, 0..n for the NITB configuration file
  • band - the band in which the BTS will operate
  • ipa unit-id - each BTS must use a unique value
  • oml remote-ip - this is the BSC IP address

The example configuration that follows is for two BTS both on the GSM900 band.

BTS 0

Find the aforementioned parameters and ensure that they are correctly set.

bts 0
 band GSM900
 ipa unit-id 1801 0
 oml remote-ip 172.30.1.10
 ...

BTS 1

Ensure that the second BTS has a different ipa unit-id configured from the first.

bts 0
 band GSM900
 ipa unit-id 1802 0
 oml remote-ip 172.30.1.10
 ...

BSC configuration

There are a number of BSC/NITB parameters that you must pay particular attention to:

  • BTS _n
    • band - as configured in the BTS
    • base_station_id_code - should be unique in location area
    • ip.access unit_id - as configured in the BTS
    • *trx n
      • arfcn - this must be frequencies that you have a licence for and unique across all neighbouring BTS
  • neighbor-list mode automatic

Configure the first BTS within the BSC/NITB, ensuring that you have set the correct band and ip.access unit_id, and an appropriate arfcn for each TRX.

bts 0
  ...
  band GSM900
  ...
  base_station_id_code 63
  ...
  ip.access unit_id 1801 0
  ...
  neighbor-list mode automatic
  ...
  trx 0
   rf_locked 0
   arfcn 74
   ...
  trx 1
   rf_locked 0
   arfcn 84
   ...

Next configure the second BTS, ensuring that a different base_station_id_code is used this time, once again the correct ip.access unit_id is set, and an appropriate arfcn for each TRX:

bts 1
  ...
  band GSM900
  ...
  base_station_id_code 62
  ...
  ip.access unit_id 1802 0
  ...
  neighbor-list mode automatic
  ...
  trx 0
   rf_locked 0
   arfcn 111
   ...
  trx 1
   rf_locked 0
   arfcn 122
   ...

For details of all the configuration options please see the NITB VTY reference.

Handover

The following parameters must also be configured in order to enable handover:

  • handover 1
    • Enable in-call handover between multiple BTS.
  • handover window rxlev averaging 10
    • The receive level of the serving cell should be averaged over 10 SACCH frames.
  • handover window rxqual averaging 1
    • The receive quality of the serving cell should be averaged over 1 SACCH frame.
  • handover window rxlev neighbor averaging 10
    • The Rx Level of a neighbour cell should be averaged over 10 SACCH frames.
  • handover power budget interval 6
    • Consider performing a power budget (Rx level) handover every 6 SACCH frames.
  • handover power budget hysteresis 3
    • Set hysteresis (prevents continuous handover back and forth) to 3.
  • handover maximum distance 9999
    • When the distance from the BTS is greater than 9999 attempt a distance handover.

These parameters must be set within the network section of the BSC/NITB configuration:

network
 network country code 1
 ...
 handover 1
 handover window rxlev averaging 10
 handover window rxqual averaging 1
 handover window rxlev neighbor averaging 10
 handover power budget interval 6
 handover power budget hysteresis 3
 handover maximum distance 9999

Values can be tuned to modify the behaviour of handover.

Testing handover

To test handover you have two options:

1. Physically move a phone to trigger handover decision.
2. Use "subscriber ID handover BTS_NR" command in the NITB VTY to force handover.

Complete configurations

Complete example configs are included here for reference only and should not be used without modification, unless you happen to have a licence for those particular frequencies.

BTS 0

bts 0
 band GSM900
 ipa unit-id 1801 0
 oml remote-ip 172.30.1.10
 rtp jitter-buffer 0
 paging lifetime 0
 gsmtap-sapi bcch
 gsmtap-sapi ccch
 gsmtap-sapi rach
 gsmtap-sapi agch
 gsmtap-sapi pch
 gsmtap-sapi sdcch
 gsmtap-sapi pacch
 gsmtap-sapi pdtch
 gsmtap-sapi sacch
 fn-advance 20
 ms-power-loop -10
 timing-advance-loop
 trx 0
  rxgain 12
  power 0
 trx 1
  rxgain 12
  power 0

BTS 1

bts 0
 band GSM900
 ipa unit-id 1802 0
 oml remote-ip 172.30.1.10
 rtp jitter-buffer 0
 paging lifetime 0
 gsmtap-sapi bcch
 gsmtap-sapi ccch
 gsmtap-sapi rach
 gsmtap-sapi agch
 gsmtap-sapi pch
 gsmtap-sapi sdcch
 gsmtap-sapi pacch
 gsmtap-sapi pdtch
 gsmtap-sapi sacch
 fn-advance 20
 ms-power-loop -10
 timing-advance-loop
 trx 0
  rxgain 12
  power 0
 trx 1
  rxgain 12
  power 0

OpenBSC NITB

Note that whilst this configuration is for NITB operation, the updates describe above could equally be applied to OpenBSC configured in BSC-only mode and with an external MSC etc.

!
! OpenBSC (UNKNOWN) configuration saved from vty
!!
password foo
!
line vty
 no login
!
e1_input
 e1_line 0 driver ipa
 e1_line 0 port 0
 no e1_line 0 keepalive
network
 network country code 1
 mobile network code 1
 short name Osmocom
 long name Osmocom
 auth policy accept-all
 location updating reject cause 13
 encryption a5 0
 neci 1
 paging any use tch 0
 rrlp mode none
 mm info 1
 handover 1
 handover window rxlev averaging 10
 handover window rxqual averaging 1
 handover window rxlev neighbor averaging 10
 handover power budget interval 6
 handover power budget hysteresis 3
 handover maximum distance 9999
 timer t3101 10
 timer t3103 0
 timer t3105 0
 timer t3107 0
 timer t3109 4
 timer t3111 0
 timer t3113 60
 timer t3115 0
 timer t3117 0
 timer t3119 0
 timer t3122 10
 timer t3141 0
 dtx-used 0
 subscriber-keep-in-ram 0
 bts 0
  type sysmobts
  band GSM900
  cell_identity 0
  location_area_code 1
  base_station_id_code 63
  ms max power 15
  cell reselection hysteresis 4
  rxlev access min 0
  periodic location update 30
  radio-link-timeout 32
  channel allocator ascending
  rach tx integer 9
  rach max transmission 7
  channel-descrption attach 1
  channel-descrption bs-pa-mfrms 5
  channel-descrption bs-ag-blks-res 1
  ip.access unit_id 1801 0
  oml ip.access stream_id 255 line 0
  neighbor-list mode automatic
  gprs mode none
  no force-combined-si
  trx 0
   rf_locked 0
   arfcn 74
   nominal power 23
   max_power_red 0
   rsl e1 tei 0
    timeslot 0
     phys_chan_config CCCH+SDCCH4
     hopping enabled 0
    timeslot 1
     phys_chan_config SDCCH8
     hopping enabled 0
    timeslot 2
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 3
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 4
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 5
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 6
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 7
     phys_chan_config TCH/F
     hopping enabled 0
  trx 1
   rf_locked 0
   arfcn 84
   nominal power 23
   max_power_red 0
   rsl e1 tei 0
    timeslot 0
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 1
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 2
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 3
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 4
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 5
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 6
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 7
     phys_chan_config TCH/F
     hopping enabled 0
 bts 1
  type sysmobts
  band GSM900
  cell_identity 0
  location_area_code 1
  base_station_id_code 62
  ms max power 15
  cell reselection hysteresis 4
  rxlev access min 0
  periodic location update 30
  radio-link-timeout 32
  channel allocator ascending
  rach tx integer 9
  rach max transmission 7
  channel-descrption attach 1
  channel-descrption bs-pa-mfrms 5
  channel-descrption bs-ag-blks-res 1
  ip.access unit_id 1802 0
  oml ip.access stream_id 255 line 0
  neighbor-list mode automatic
  gprs mode none
  no force-combined-si
  trx 0
   rf_locked 0
   arfcn 111
   nominal power 23
   max_power_red 0
   rsl e1 tei 0
    timeslot 0
     phys_chan_config CCCH+SDCCH4
     hopping enabled 0
    timeslot 1
     phys_chan_config SDCCH8
     hopping enabled 0
    timeslot 2
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 3
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 4
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 5
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 6
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 7
     phys_chan_config TCH/F
     hopping enabled 0
  trx 1
   rf_locked 0
   arfcn 122
   nominal power 23
   max_power_red 0
   rsl e1 tei 0
    timeslot 0
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 1
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 2
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 3
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 4
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 5
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 6
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 7
     phys_chan_config TCH/F
     hopping enabled 0