Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 1 | == Configuring OsmoPCU |
| 2 | |
| 3 | Contrary to other network elements (like OsmoBSC, OsmoNITB), the |
| 4 | OsmoPCU has a relatively simple minimum configuration. |
| 5 | |
| 6 | This is primarily because most of the PCU configuration happens |
| 7 | indirectly from the BSC, who passes the configuation over A-bis OML via |
| 8 | OsmoBTS and its PCU socket into OsmoPCU. |
| 9 | |
| 10 | A minimal OsmoPCU configuration file is provided below for your reference: |
| 11 | |
| 12 | .Example: Minimal OsmoPCU configuration file (`osmo-pcu.cfg`) |
| 13 | ---- |
| 14 | pcu |
| 15 | flow-control-interval 10 <1> |
| 16 | cs 2 <2> |
| 17 | alloc-algorithm dynamic <3> |
| 18 | alpha 0 <4> |
| 19 | gamma 0 |
| 20 | ---- |
| 21 | <1> send a BSSGP flow-control PDU every 10 seconds |
| 22 | <2> start a TBF with the initial coding scheme 2 |
| 23 | <3> dynamically chose between single-slot or multi-slot TBF allocations |
| 24 | depending on system load |
| 25 | <4> disable MS power control loop |
| 26 | |
| 27 | However, there are plenty of tuning parameters for people interested to |
| 28 | optimize PCU throughput or latency according to their requirements. |
| 29 | |
| 30 | === Configuring the Coding Schemes and Rate Adaption |
| 31 | |
| 32 | The BSC includes a bit-mask of permitted [E]GPRS coding schemes as part |
| 33 | of the A-bis OML configuration. This is passed from the BTS via the PCU |
| 34 | socket into OsmoPCU. |
| 35 | |
| 36 | Some additional parameters can be set as described below. |
| 37 | |
| 38 | ==== Initial Coding Scheme |
| 39 | |
| 40 | You can use the `cs <1-4> [<1-4>]` command at the `pcu` VTY config node |
| 41 | to set the initial GPRS coding scheme to be used. The optional second |
| 42 | value allows to specify a different initial coding scheme for uplink. |
| 43 | |
| 44 | ==== Maximum Coding Scheme |
| 45 | |
| 46 | You can use the `cs max <1-4> [<1-4>]` command at the `pcu` VTY config |
| 47 | node to set the maximum coding scheme that should be used as part of the |
| 48 | rate adaption. |
| 49 | |
| 50 | ==== Rate Adaption Error Thresholds |
| 51 | |
| 52 | You can use the `cs threshold <0-100> <0-100>` command at the `pcu` VTY |
| 53 | config node to determine the upper and lower limit for the error rate |
| 54 | percentage to use in the rate adaption. If the upper threshold is |
| 55 | reached, a lower coding sheme is chosen, and if the lower threshold is |
| 56 | reached, a higher coding scheme is chosen. |
| 57 | |
| 58 | ==== Rate Adation Link Quality Thresholds |
| 59 | |
| 60 | You can use the `cs link-quality-ranges cs1 <0-35> cs2 <0-35> <0-35> cs3 |
| 61 | <0-35> <0-35> cs4 <0-35>` command at the `pcu` VTY config node to tune |
Jonathan Brielmaier | 58721eb | 2016-05-25 15:01:11 +0200 | [diff] [blame] | 62 | the link quality ranges for the respective coding schemes. |
Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 63 | |
| 64 | ==== Data Size based CS downgrade Threshold |
| 65 | |
| 66 | You can use the `cs downgrade-threshold <1-10000>` command at the `pcu` |
| 67 | VTY config node to ask the PCU to down-grade the coding scheme if less |
| 68 | than the specified number of octets are left to be transmitted. |
| 69 | |
| 70 | === Miscellaneous Configuration / Tuning Parameters |
| 71 | |
| 72 | ==== Downlink TBF idle time |
| 73 | |
| 74 | After a down-link TBF is idle (all data in the current LLC downlink |
Philipp | 452b533 | 2017-01-18 12:39:56 +0100 | [diff] [blame] | 75 | queue for the MS has been transmitted), we can keep the TBF established |
Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 76 | for a configurable time. This avoids having to go through a new one or |
| 77 | two phase TBF establishment once the next data for downlink arrives. |
| 78 | |
| 79 | You can use the `dl-tbf-idle-time <1-5000>` to specify that time in |
| 80 | units of milli-seconds. The default is 2 seconds. |
| 81 | |
| 82 | ==== MS idle time |
| 83 | |
| 84 | Using the `ms-idle-time <1-7200>` command at the `pcu` VTY config node |
| 85 | you can configure the number of seconds for which the PCU should keep |
| 86 | the MS data structure alive before releasing it if there are no active |
| 87 | TBF for this MS. |
| 88 | |
| 89 | The OsmoPCU default value is 60 seconds, which is slightly more than |
| 90 | what 3GPP TS 24.008 recommends for T3314 (44s). |
| 91 | |
| 92 | The MS data structure only consumes memory in the PCU and does not |
| 93 | require any resources of the air interface. |
| 94 | |
| 95 | ==== Forcing two-phase access |
| 96 | |
Philipp | 452b533 | 2017-01-18 12:39:56 +0100 | [diff] [blame] | 97 | If the MS is using a single-phase access, you can still force it to |
Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 98 | use a two-phase access using the `two-phase-access` VTY configuration |
| 99 | command at the `pcu` VTY config node. |
| 100 | |
| 101 | === Configuring BSSGP flow control |
| 102 | |
| 103 | BSSGP between SGSN and PCU contains a two-level nested flow control |
| 104 | mechanism: |
| 105 | |
| 106 | . one global flow control instance for the overall (downlink) traffic |
| 107 | from the SGSN to this PCU |
| 108 | . a per-MS flow control instance for each individual MS served by this |
| 109 | PCU |
| 110 | |
| 111 | Each of the flow control instance is implemented as a TBF (token bucket |
| 112 | filter). |
| 113 | |
| 114 | ==== Normal BSSGP Flow Control Tuning parameters |
| 115 | |
| 116 | You can use the following commands at the `pcu` VTY config node to tune |
Jonathan Brielmaier | 58721eb | 2016-05-25 15:01:11 +0200 | [diff] [blame] | 117 | the BSSGP flow control parameters: |
Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 118 | |
| 119 | `flow-control-interval <1-10>`:: |
| 120 | configure the interval (in seconds) between subsequent flow |
| 121 | control PDUs from PCU to SGSN |
| 122 | `flow-control bucket-time <1-65534>`:: |
| 123 | set the target downlink maximum queueing time in centi-seconds. |
| 124 | The PCU will attempt to adjust the advertised bucket size to match this |
| 125 | target. |
| 126 | |
| 127 | ==== Extended BSSGP Flow Control Tuning parameters |
| 128 | |
| 129 | There are some extended flow control related parameters at the `pcu` VTY |
| 130 | config node that override the automatic flow control as specified in the |
| 131 | BSSGP specification. Use them with care! |
| 132 | |
| 133 | `flow-control force-bvc-bucket-size <1-6553500>`:: |
| 134 | force the BVC (global) bucket size to the given number of octets |
| 135 | `flow-control force-bvc-leak-rate <1-6553500>`:: |
| 136 | force the BVC (global) bucket leak rate to the given number of bits/s |
| 137 | `flow-control force-ms-bucket-size <1-6553500>`:: |
| 138 | force the per-MS bucket size to the given number of octets |
| 139 | `flow-control force-ms-leak-rate <1-6553500>`:: |
| 140 | force the per-MS bucket leak rate to the given number of bits/s |
| 141 | |
| 142 | |
| 143 | === Configuring LLC queue |
| 144 | |
| 145 | The downlink LLC queue in the PCU towards the MS can be tuned with a |
| 146 | variety of parameters at the `pcu` VTY config node, depending on your |
| 147 | needs. |
| 148 | |
| 149 | `queue lifetime <1-65534>`:: |
| 150 | Each downlink LLC PDU is assigned a lifetime by the SGSN, which |
| 151 | is respected by the PDU *unless* you use this command to |
| 152 | override the PDU lifetime with a larger value (in centi-seconds) |
| 153 | `queue lifetime infinite`:: |
| 154 | Never drop LLC PDUs, i.e. give them an unlimited lifetime. |
| 155 | `queue hysteresis <1-65535>`:: |
| 156 | When the downlink LLC queue is full, the PCU starts dropping |
| 157 | packets. Using this parameter, we can set the lifetime |
| 158 | hysteresis in centi-seconds, i.e. it will continue discarding |
| 159 | until "lifetime - hysteresis" is reached. |
| 160 | `queue codel`:: |
| 161 | Use the 'CoDel' (Controlled Delay) scheduling algorithm, which |
| 162 | is designed to overcome buffer bloat. It will use a default |
| 163 | interval of 4 seconds. |
| 164 | `queue codel interval <1-1000>`:: |
| 165 | Use the 'CoDel' (Controlled Delay) scheduling algorithm, which |
| 166 | is designed to overcome buffer bloat. Use the specified |
| 167 | interval in centi-seconds. |
| 168 | `queue idle-ack-delay <1-65535>`:: |
| 169 | Delay the request for an ACK after the last downlink LLC frame |
| 170 | by the specified amount of centi-seconds. |
| 171 | |
| 172 | |
| 173 | === Configuring MS power control |
| 174 | |
| 175 | GPRS MS power control works completely different than the close MS power |
| 176 | control loop in circuit-switched GSM. |
| 177 | |
| 178 | Rather than instructing the MS constantly about which transmit power to |
| 179 | use, some parameters are provided to the MS by which the MS-based power |
| 180 | control algorithm is tuned. |
| 181 | |
| 182 | See 3GPP TS 05.08 for further information on the algorithm and the |
| 183 | parameters. |
| 184 | |
| 185 | You can set those parameters at the `pcu` VTY config node as follows: |
| 186 | |
| 187 | `alpha <0-10>`:: |
Jonathan Brielmaier | 58721eb | 2016-05-25 15:01:11 +0200 | [diff] [blame] | 188 | Alpha parameter for MS power control in units of 0.1. |
Harald Welte | 4ff37fe | 2016-02-20 10:56:10 +0100 | [diff] [blame] | 189 | Make sure to set the alpha value at System Information 13 (in |
| 190 | the BSC), too! |
| 191 | `gamma <0-62>`:: |
| 192 | Set the gamma parameter for MS power control in units of dB. |
| 193 | |
| 194 | |
| 195 | === Enabling EGPRS |
| 196 | |
| 197 | If you would like to test the currently (experimental) EGPRS support of |
| 198 | OsmoPCU, you can enable it using the `egprs` command at the `pcu` VTY |
| 199 | config node. |
| 200 | |
| 201 | WARNING: EPGRS functionality is highly experimental at the time of this |
| 202 | writing. Please only use if you actively would like to participate in |
| 203 | the OsmoPCU EGPRS development and/or testing. You will also need an |
| 204 | EGPRS capable OsmoBTS+PHY, which means `osmo-bts-sysmo` or |
| 205 | `osmo-bts-litecell15` with their associated PHY. |