Copyright (c) 2018 by Neels Hofmeyr <neels@hofmeyr.de>
License: CC-BY-SA
OsmoBSC(config-net)# list
...
handover (0|1|default)
handover algorithm (1|2|default)
OsmoBSC(config-net)# list
...
handover (0|1|default)
handover algorithm (1|2|default)
Each item can be set globally and per-BTS
OsmoBSC(config-net)# bts 0
OsmoBSC(config-net-bts)# list
...
handover (0|1|default)
handover algorithm (1|2|default)
OsmoBSC(config-net)# list
...
handover1 window rxlev averaging (<1-10>|default)
handover1 window rxqual averaging (<1-10>|default)
handover1 window rxlev neighbor averaging (<1-10>|default)
handover1 power budget interval (<1-99>|default)
handover1 power budget hysteresis (<0-999>|default)
handover1 maximum distance (<0-9999>|default)
s/handover1/handover2/ plus
handover2 assignment (0|1|default)
handover2 tdma-measurement (full|subset|default)
handover2 min rxlev (<-110--50>|default)
handover2 min rxqual (<0-7>|default)
handover2 afs-bias rxlev (<0-20>|default)
handover2 afs-bias rxqual (<0-7>|default)
handover2 min-free-slots tch/f (<0-9999>|default)
handover2 min-free-slots tch/h (<0-9999>|default)
handover2 max-handovers (<1-9999>|default)
handover2 penalty-time max-distance (<0-99999>|default)
handover2 penalty-time failed-ho (<0-99999>|default)
handover2 penalty-time failed-assignment (<0-99999>|default)
handover2 retries (<0-9>|default)
handover2 congestion-check (disabled|<1-999>|now)
(in case of questions I can’t answer, a listing of the online docs…)
OsmoBSC(config-net)# handover algorithm ?
1 Algorithm 1: trigger handover based on comparing current cell and neighbor RxLev and RxQual, only.
2 Algorithm 2: trigger handover on RxLev/RxQual, and also to balance the load across several cells. Consider available codecs. Prevent repeated handover by penalty timers.
default Use default (1), remove explicit setting on this node
OsmoBSC(config-net)# handover1 window ?
rxlev Received-Level averaging
rxqual Received-Quality averaging
OsmoBSC(config-net)# handover1 window rxlev ?
averaging How many RxLev measurements are used for averaging
neighbor How many Neighbor RxLev measurements are used for averaging
OsmoBSC(config-net)# handover1 window rxlev averaging ?
<1-10> RxLev averaging: Number of values to average over
default Use default (10), remove explicit setting on this node
OsmoBSC(config-net)# handover1 window rxlev neighbor ?
averaging How many Neighbor RxLev measurements are used for averaging
OsmoBSC(config-net)# handover1 window rxlev neighbor averaging ?
<1-10> Neighbor RxLev averaging: Number of values to average over
default Use default (10), remove explicit setting on this node
OsmoBSC(config-net)# handover1 window rxqual ?
averaging How many RxQual measurements are used for averaging
OsmoBSC(config-net)# handover1 window rxqual averaging ?
<1-10> RxQual averaging: Number of values to average over
default Use default (1), remove explicit setting on this node
OsmoBSC(config-net)# handover1 power ?
budget Neighbor cell power triggering
OsmoBSC(config-net)# handover1 power budget ?
interval How often to check for a better cell (SACCH frames)
hysteresis How many dBm stronger must a neighbor be to become a HO candidate
OsmoBSC(config-net)# handover1 power budget interval ?
<1-99> Check for stronger neighbor every N number of SACCH frames
default Use default (6), remove explicit setting on this node
OsmoBSC(config-net)# handover1 power budget hysteresis ?
<0-999> Neighbor's strength difference in dBm
default Use default (3), remove explicit setting on this node
OsmoBSC(config-net)# handover1 maximum ?
distance Maximum Timing-Advance value (i.e. MS distance) before triggering HO
OsmoBSC(config-net)# handover1 maximum distance ?
<0-9999> Maximum Timing-Advance value (i.e. MS distance) before triggering HO
default Use default (9999), remove explicit setting on this node
same again for handover2, plus:
OsmoBSC(config-net)# handover2 assignment ?
0 Disable in-call assignment
1 Enable in-call assignment
default Use default (0), remove explicit setting on this node
OsmoBSC(config-net)# handover2 tdma-measurement ?
full Full set of 102/104 TDMA frames
subset Sub set of 4 TDMA frames (SACCH)
default Use default (subset), remove explicit setting on this node
OsmoBSC(config-net)# handover2 min ?
rxlev How weak may RxLev of an MS become before triggering HO
rxqual How bad may RxQual of an MS become before triggering HO
OsmoBSC(config-net)# handover2 min rxlev ?
<-110--50> minimum RxLev (dBm)
default Use default (-100), remove explicit setting on this node
OsmoBSC(config-net)# handover2 min rxqual ?
<0-7> minimum RxQual (dBm)
default Use default (5), remove explicit setting on this node
OsmoBSC(config-net)# handover2 afs-bias ?
rxlev RxLev improvement bias for AFS over other codecs
rxqual RxQual improvement bias for AFS over other codecs
OsmoBSC(config-net)# handover2 afs-bias rxlev ?
<0-20> Virtual RxLev improvement (dBm)
default Use default (0), remove explicit setting on this node
OsmoBSC(config-net)# handover2 afs-bias rxqual ?
<0-7> Virtual RxQual improvement (dBm)
default Use default (0), remove explicit setting on this node
OsmoBSC(config-net)# handover2 min-free-slots ?
tch/f Minimum free TCH/F timeslots before cell is considered congested
tch/h Minimum free TCH/H timeslots before cell is considered congested
OsmoBSC(config-net)# handover2 min-free-slots tch/f ?
<0-9999> Number of TCH/F slots
default Use default (0), remove explicit setting on this node
OsmoBSC(config-net)# handover2 min-free-slots TCH/F ?
% There is no matched command.
OsmoBSC(config-net)# handover2 min-free-slots tch/h ?
<0-9999> Number of TCH/H slots
default Use default (0), remove explicit setting on this node
OsmoBSC(config-net)# handover2 max-handovers ?
<1-9999> Number
default Use default (9999), remove explicit setting on this node
OsmoBSC(config-net)# handover2 penalty-time ?
max-distance Time to suspend handovers after leaving this cell due to exceeding max distance
failed-ho Time to suspend handovers after handover failure to this cell
failed-assignment Time to suspend handovers after assignment failure in this cell
OsmoBSC(config-net)# handover2 penalty-time max-distance ?
<0-99999> Seconds
default Use default (300), remove explicit setting on this node
OsmoBSC(config-net)# handover2 penalty-time failed-ho ?
<0-99999> Seconds
default Use default (60), remove explicit setting on this node
OsmoBSC(config-net)# handover2 penalty-time failed-assignment ?
<0-99999> Seconds
default Use default (60), remove explicit setting on this node
OsmoBSC(config-net)# handover2 retries ?
<0-9> Number of retries
default Use default (0), remove explicit setting on this node
OsmoBSC(config-net)# handover2 congestion-check ?
disabled Disable congestion checking, do not handover based on cell overload
<1-999> Congestion check interval in seconds (default 10)
now Manually trigger a congestion check to run right now
handover_test.c test_case_23:
/* meas-rep <lchan-nr> <rxlev> <rxqual> <nr-of-neighbors> [<cell-idx> <rxlev> [...]] */
"Story: 'A neighbor is your friend'\n",
"create-bts", "3",
"print",
"Andreas is driving along the coast, on a sunny june afternoon.\n"
"Suddenly he is getting a call from his friend and neighbor Axel.\n"
"\n"
"What happens: Two MS are created, #0 for Axel, #1 for Andreas.",
/* Axel */
"create-ms", "2", "TCH/F", "AMR",
/* andreas */
"create-ms", "0", "TCH/F", "AMR",
"meas-rep", "1", "40","0", "1","0","30",
"expect-no-chan",
"print",
"Axel asks Andreas if he would like to join them for a barbecue.\n"
"Axel's house is right in the neighborhood and the weather is fine.\n"
"Andreas agrees, so he drives to a close store to buy some barbecue\n"
"skewers.\n"
"\n"
"What happens: While driving, a different cell (mounted atop the\n"
"store) becomes better.",
/* drive to bts 1 */
"meas-rep", "1", "20","0", "1","0","35",
"expect-chan", "1", "1",
"ack-chan",
"expect-ho", "0", "1",
"ho-complete",
"print",
"While Andreas is walking into the store, Axel asks, if he could also\n"
"bring some beer. Andreas has problems understanding him: \"I have a\n"
"bad reception here. The cell tower is right atop the store, but poor\n"
"coverage inside. Can you repeat please?\"\n"
"\n"
"What happens: Inside the store the close cell is so bad, that\n"
"handover back to the previous cell is required.",
/* bts 1 becomes bad, so bts 0 helps out */
"meas-rep", "1", "5","0", "1","0","20",
"expect-chan", "0", "1",
"ack-chan",
"expect-ho", "1", "1",
"ho-complete",
"print",
"After Andreas bought skewers and beer, he leaves the store.\n"
"\n"
"What happens: Outside the store the close cell is better again, so\n"
"handover back to the that cell is performed.",
/* bts 1 becomes better again */
"meas-rep", "1", "20","0", "1","0","35",
"expect-chan", "1", "1",
"ack-chan",
"expect-ho", "0", "1",
"ho-complete",
"print",
/* bts 2 becomes better */
"Andreas drives down to the lake where Axel's house is.\n"
"\n"
"What happens: There is a small cell at Axel's house, which becomes\n"
"better, because the current cell has no good comverage at the lake.",
"meas-rep", "1", "14","0", "2","0","2","1","63",
"expect-chan", "2", "2",
"ack-chan",
"expect-ho", "1", "1",
"ho-complete",
"print",
"Andreas wonders why he still has good radio coverage: \"Last time it\n"
"was so bad\". Axel says: \"I installed a pico cell in my house,\n"
"now we can use our mobile phones down here at the lake.\"",
test_case_5:
"TCH/F keeping with FR codec\n\n"
"The MS is using full rate V1 codec, but the better cell is congested\n"
"at TCH/F slots. As the congestion is removed, the handover takes\n"
"place.\n",
"create-bts", "2",
"set-min-free", "1", "TCH/F", "4",
"create-ms", "0", "TCH/F", "FR",
"meas-rep", "0", "20","0", "1","0","30",
"expect-no-chan",
"set-min-free", "1", "TCH/F", "3",
"meas-rep", "0", "20","0", "1","0","30",
"expect-chan", "1", "1",
"ack-chan",
"expect-ho", "0", "1",
"ho-complete",
test_case_7:
"TCH/F to TCH/H changing with AMR codec\n\n"
"The MS is using AMR V3 codec, the better cell is congested at TCH/F\n"
"slots. The handover is performed to non-congested TCH/H slots.\n",
"create-bts", "2",
"set-min-free", "1", "TCH/F", "4",
"create-ms", "0", "TCH/F", "AMR",
"meas-rep", "0", "20","0", "1","0","30",
"expect-chan", "1", "5",
"ack-chan",
"expect-ho", "0", "1",
"ho-complete",