Ericsson RBS2000 GPRS » History » Version 9
dexter, 04/04/2023 09:58 AM
1 | 1 | laforge | h1. Ericsson RBS2000 GPRS |
---|---|---|---|
2 | |||
3 | 4 | laforge | {{>toc}} |
4 | |||
5 | 9 | dexter | This page collects some information regarding Ericsson RBS2000 GPRS support. This page is intended as an addition to |
6 | the [[OsmoBSC:]] and [[OsmoPCU:]] user manual. |
||
7 | 1 | laforge | |
8 | 9 | dexter | h1. Test setup |
9 | 1 | laforge | |
10 | 9 | dexter | In the following we describe a minimal test setup that can be used for development or evaluation. The core network side |
11 | of the test network is made of standard Osmocom components with standard configurations, which we will not discuss any |
||
12 | further here. (For more information in core components, see [[Cellular Network Infrastructure:]]). The RAN network side |
||
13 | consists of an Ericsson RBS BTS that is connected to [[OsmoBSC:]]. [[OsmoMGW:]] and [[OsmoPCU:]] run in co-location to |
||
14 | OsmoBSC. In the following we will focus on the configuration of OsmoPCU and OsmoBSC (in co-location). |
||
15 | 1 | laforge | |
16 | 9 | dexter | {{graphviz_link() |
17 | digraph G { |
||
18 | rankdir = LR; |
||
19 | subgraph cluster_RAN { |
||
20 | BTS [label="Ericsson RBS"]; |
||
21 | BSC [label="OsmoBSC", color=red,]; |
||
22 | MGW_RAN [label="OsmoMGW"]; |
||
23 | PCU [color=red, label="OsmoPCU"]; |
||
24 | label = "RAN"; |
||
25 | |||
26 | { rank=same MGW_RAN PCU BSC } |
||
27 | } |
||
28 | subgraph cluster_CN { |
||
29 | MSC [label="OsmoMSC"]; |
||
30 | MGW_CN [label="OsmoMGW"]; |
||
31 | SGSN [label="OsmoSGSN"]; |
||
32 | label = "CN"; |
||
33 | } |
||
34 | BTS -> BSC [label="Abis/E1"]; |
||
35 | BTS -> PCU [label="TRAU/E1"]; |
||
36 | BTS -> MGW_RAN [label="TRAU/E1"]; |
||
37 | |||
38 | MGW_RAN -> MGW_CN [label="RTP"]; |
||
39 | BSC -> MSC [label="AoIP"]; |
||
40 | PCU -> SGSN [label="Gb"]; |
||
41 | BSC -> MGW_RAN [label="MGCP"]; |
||
42 | BSC -> PCU [label="pcu_sock"]; |
||
43 | } |
||
44 | }} |
||
45 | |||
46 | h2. Differences to IP based Osmocom RAN |
||
47 | |||
48 | An Osmocom RAN is usually built using IP based base stations with integrated PCU. In those BTSs the PCU runs in |
||
49 | co-location to the BTS process. Also all connections towards the BTS are IP based. When using Ericsson RBS2000/RBS6000 |
||
50 | base stations the connection towards the BTS is E1/TDM based. Also those BTSs do not include an integrated PCU, so the |
||
51 | PCU must run in co-location to the BSC. This is the fundamental architectural difference in the RAN setup that has to |
||
52 | be taken into account. |
||
53 | |||
54 | h2. BSC configuration |
||
55 | |||
56 | h3. E1 line |
||
57 | |||
58 | The link towards the BTS is an E1 line. The configuration is straight forward but it should be pointed out that the |
||
59 | E1 line number (0 in this example) must be consistent with the E1 line configuration of the PCU. The reason for this |
||
60 | is that the line number is used to identify lines on the BSC and the PCU side, so they must match up. |
||
61 | |||
62 | <pre> |
||
63 | e1_input |
||
64 | e1_line 0 driver dahdi |
||
65 | e1_line 0 port 2 |
||
66 | </pre> |
||
67 | |||
68 | h3. Interface switch (IS) |
||
69 | |||
70 | For GPRS/EGPRS an Ericsson RBS2000/RBS6000 provides two interfaces. The first and older interface is a classic 16kbps |
||
71 | subslot based interface and supports only classic GPRS with CS1 and CS2. The second and more recent interface uses |
||
72 | full 64kbps E1 timeslots and offers full EGPRS support. Even though OsmoPCU and OsmoBSC support both interfaces, we |
||
73 | we will only focus on the 64kbps interface here. |
||
74 | |||
75 | The exact BTS type we use is a DUG 20 01, with an RRUS 02 B3 TRU. In the attached config file we configure the Interface |
||
76 | switch (IS) so that it points at the 64kbps interface TRU (first TRX only). |
||
77 | |||
78 | <pre> |
||
79 | bts 0 |
||
80 | is-connection-list add 4 712 36 |
||
81 | </pre> |
||
82 | |||
83 | (For details on the IS configuration, see section "Configuring Ericsson RBS Interface Switch (IS)" in OsmoBSC User Manual) |
||
84 | |||
85 | h3. Channels |
||
86 | |||
87 | The BTS is configured to provide 5 TCH/F voice channels and one PDCH channel. The timeslot |
||
88 | number of the PDCH is randomly chosen. The PDCH channel is configured as TCH/F_TCH/H_SDCCH8_PDCH. This means that it is a |
||
89 | dynamic channel (osmocom style). This is due to the fact that the channel configuration in an Ericsson BTS is ipso facto |
||
90 | dynamic. The exact type of the channel is decided during channel activation. |
||
91 | |||
92 | <pre> |
||
93 | trx 0 |
||
94 | rf_locked 0 |
||
95 | arfcn 875 |
||
96 | nominal power 42 |
||
97 | max_power_red 12 |
||
98 | rsl e1 line 0 timeslot 1 sub-slot full |
||
99 | rsl e1 tei 0 |
||
100 | timeslot 0 |
||
101 | phys_chan_config CCCH |
||
102 | hopping enabled 0 |
||
103 | e1 line 0 timeslot 1 sub-slot full |
||
104 | timeslot 1 |
||
105 | phys_chan_config SDCCH8 |
||
106 | hopping enabled 0 |
||
107 | e1 line 0 timeslot 3 sub-slot full |
||
108 | timeslot 2 |
||
109 | phys_chan_config TCH/F |
||
110 | hopping enabled 0 |
||
111 | e1 line 0 timeslot 4 sub-slot full |
||
112 | timeslot 3 |
||
113 | phys_chan_config TCH/F |
||
114 | hopping enabled 0 |
||
115 | e1 line 0 timeslot 5 sub-slot full |
||
116 | timeslot 4 |
||
117 | phys_chan_config TCH/F_TCH/H_SDCCH8_PDCH |
||
118 | hopping enabled 0 |
||
119 | e1 line 0 timeslot 6 sub-slot full |
||
120 | timeslot 5 |
||
121 | phys_chan_config TCH/F |
||
122 | hopping enabled 0 |
||
123 | e1 line 0 timeslot 7 sub-slot full |
||
124 | timeslot 6 |
||
125 | phys_chan_config TCH/F |
||
126 | hopping enabled 0 |
||
127 | e1 line 0 timeslot 8 sub-slot full |
||
128 | timeslot 7 |
||
129 | phys_chan_config TCH/F |
||
130 | hopping enabled 0 |
||
131 | e1 line 0 timeslot 9 sub-slot full |
||
132 | </pre> |
||
133 | |||
134 | Since we make use of the 64kbps TRU interface. We must configure the sub-slots to use the full bandwidth of the E1 |
||
135 | timeslot. The timeslots carrying voice traffic will still use an 16kbps I.460 timeslot, which is always the first |
||
136 | subslot. The remaining three subslots remain unused. This is to be compatible to existing MGWs that will naturally |
||
137 | use a 16kbps for voice. In this configuration OsmoMGW will be instructed by OsmoBSC accordingly. There is no |
||
138 | specific configuration in OsmoMGW required. |
||
139 | |||
140 | h3. PCU socket |
||
141 | |||
142 | When the PCU is co-located with the BTS it communicates directly with the BTS to handle channel requests, pagings, |
||
143 | and channel assignments. In the BSC co-located configuration, the PCU communicates with the BSC in the same way. It is |
||
144 | now the BSC's task to report channel requests and execute the paging requests and channel assignments ordered by the |
||
145 | PCU. The interface is the same Unix domain socket interface that is used in the BTS co-located configuration. It is |
||
146 | configured under the network node using the pcu-socket option. |
||
147 | |||
148 | <pre> |
||
149 | network |
||
150 | pcu-socket /tmp/pcu_bts |
||
151 | </pre> |
||
152 | |||
153 | Since only one PCU instance runs in co-location to the BSC the PCU will serve multiple BTSs at a time. (Similar to an |
||
154 | MGW that also may serve multiple BTSs at once). OsmoPCU should be capable to serve multiple BTS at a time but the |
||
155 | current implementation (March 2023) has not seen much testing in this particular configuration yet, so it is likely |
||
156 | that there are still problems that require fixing. |
||
157 | |||
158 | |||
159 | h2. PCU configuration |
||
160 | |||
161 | h3. E1 line |
||
162 | |||
163 | Since OsmoBSC and OsmoPCU use the E1 implementation provided by libosmo-abis, the E1 configuration is exactly the |
||
164 | the same as in the BSC. Since (as mentioned above) the e1_line number is used to identify the E1 line through the |
||
165 | PCU socket interface, the E1 line number must match the E1 line number configured in the BSC. |
||
166 | |||
167 | <pre> |
||
168 | e1_input |
||
169 | e1_line 0 driver dahdi |
||
170 | e1_line 0 port 2 |
||
171 | </pre> |
||
172 | |||
173 | h3. PCU Parameter |
||
174 | |||
175 | In the PCU itself no other parameters have to be configured. The configuration details (GPRS parameter, E1 timeslot, |
||
176 | E1 subslot etc.) are provided by the BSC through the PCU socket interface. |
||
177 | |||
178 | h3. Example configuration |
||
179 | |||
180 | The attached file (e1_egprs_testnetwork.tar) contains the OsmoBSC and OsmoBSC configuration files discussed above |
||
181 | along with all config files from all other network components. The files can be used as a starting point to reproduce |
||
182 | a working EGPRS setup using an Ericsson RBS2000/RBS6000 base station. |
||
183 | |||
184 | h1. Technical details |
||
185 | |||
186 | 1 | laforge | h2. PDCH timeslot configuration |
187 | |||
188 | It seems that in OM2000 all TCH (/F, /H, PDCH) are configued with a Combination "8", and no differentiation is made |
||
189 | |||
190 | 9 | dexter | The actual activation of the channel is expected via RSL. So it's analogous to a RSL CHAN ACT for TCH/H or TCH/F, but |
191 | we also do this for a PDCH. In order to do so, we send a RSL CHAN ACT with Channel Number 0b11000 + the timeslot |
||
192 | number. Deactivation works the same way. |
||
193 | 1 | laforge | |
194 | h2. GPRS RACH requests |
||
195 | |||
196 | 9 | dexter | The BSC must identify the GPRS RACH requests (similar to osmo-bts currently) and pass them into the PCU. This could |
197 | be done using the same pcu socket interface that already exists. |
||
198 | 1 | laforge | |
199 | 2 | laforge | h2. GPRS paging |
200 | |||
201 | 9 | dexter | Thre's a RSL "Packet Paging Indication IE" (IEI = 0xF3) that the BSC can include when sending a paging request to the |
202 | BTS. It's currently not clear what this is used for and why it is required. |
||
203 | 2 | laforge | |
204 | h2. TRAU frames |
||
205 | |||
206 | 9 | dexter | Classic GSM TRAU frames (for circuit switched voice) are transmitted on 16kBps sub-slots and are 39 octets (312 bits) |
207 | long. They thus occur every 19.5ms. Four 16kbps sub-slots are multiplexed into a 64kbps E1 slots. For more information |
||
208 | see 3GPP TS 48.060. |
||
209 | 1 | laforge | |
210 | 3 | laforge | Ericsson also introduces 64kbps TRAU frames (for higher EGPRS coding schemes). |
211 | |||
212 | 9 | dexter | The Synchronization of TRAU frames is based on a 16-bit all-zero field at the beginning of each TRAU frame (called the |
213 | T0 bits) followed by a single 1 bit (called the T1 bit). |
||
214 | 7 | dexter | |
215 | A detailed description the TRAU frame format can also be found in the libosmo-abis code: |
||
216 | See also: https://gitea.osmocom.org/osmocom/libosmo-abis/src/branch/master/src/trau/trau_pcu_ericsson.c |
||
217 | 3 | laforge | |
218 | |||
219 | h3. 16kBps sub-slots |
||
220 | |||
221 | h4. PCU-DATA.ind |
||
222 | |||
223 | This frame can be used by a CS-1 or CS-2 frame transmitted by the PCU, i.e. downlink. |
||
224 | |||
225 | |T|17|T0*16,T1*1|Sync Word| |
||
226 | |C|8|C1..C8|Control Bits (Frame Type, Time adjustmentValue,Uplink Frame Error)| |
||
227 | |PC|1|PC|Parity (C1..C8)| |
||
228 | |E|16|E1..E16|Codec Control, Uplink Channel Mode, Power Control| |
||
229 | |PE|1|PE|Parity (E1..E16)| |
||
230 | |D|273|D1..D273|Data bits| |
||
231 | |TA|4|TA1..TA4|Time Alignment| |
||
232 | |||
233 | h4. CCU-DATA.ind |
||
234 | |||
235 | This frame can be used by a CS-1 or CS-2 frame transmitted by the CCU, i.e. uplink. |
||
236 | |||
237 | h3. 64kBps slots |
||
238 | |||
239 | h4. PCU-DATA-64.ind |
||
240 | |||
241 | |T|65|T0*64,T1*1|Sync Word| |
||
242 | |D|48|D1..D48|Data bits| |
||
243 | |C|8|C1..C8|Control Bits| |
||
244 | |PC|1|PC|Parity (C1..C8)| |
||
245 | |E|36|E1..E36|| |
||
246 | |PE|1|Parity (E1..E36)| |
||
247 | |S|21|S1..S21|| |
||
248 | |D|1132|D1..D1132|Data bits| |
||
249 | |TA|16|TA1..TA16|Time Alignment bits| |
||
250 | |Total|1328| |
||
251 | |||
252 | h4. PCU-DATA-MCS9.ind |
||
253 | 1 | laforge | |
254 | |T|17|T0*16,T1*1|Sync Word| |
||
255 | 3 | laforge | |D|48|D1..D48|Data bits| |
256 | |C|8|C1..C8|Control Bits| |
||
257 | |PC|1|PC|Parity (C1..C8)| |
||
258 | |E|9|E1..E9|| |
||
259 | |PE|1|Parity (E1..E36)| |
||
260 | |D|1172|D49..D1228|Data bits| |
||
261 | |TA|16|TA1..TA16|Time Alignment bits| |
||
262 | |Total|1272| |
||
263 | |||
264 | h4. CCU-DATA-64.ind |
||
265 | |||
266 | |T|65|T0*64,T1*1|Sync Word| |
||
267 | |C|7|C1..C7|Control bits (FT, TAV)| |
||
268 | |PC|1|PC|Parity (C1..C7)| |
||
269 | 9 | dexter | |E|57|E1..E57|DBE, Codec Status, Receiver Level, Access Delay Deviation, Block Quality Measurement, Block Status Report, |
270 | Spare, MEAN_BEP, CV_BEP, Header Quality, Data Block Quality| |
||
271 | 3 | laforge | |PE|1|PE|Parity (E1..E57)| |
272 | |S|3|S1..S3|Spare (set to 1)| |
||
273 | |D|1138|D1..D1138|Data bits| |
||
274 | |TA|8|TA1..TA8|Time Alignment bits| |
||
275 | |Total|1280| |
||
276 | |||
277 | h4. CCU-DATA-MCS9.ind |
||
278 | |||
279 | |T|17|T0*16,T1*1|Sync Word| |
||
280 | |D|48|D1..D48|Data bits| |
||
281 | |C|7|C1..C7|Control bits| |
||
282 | |PC|1|PC|Parity (C1..C7)| |
||
283 | |E|23|E1..E23|| |
||
284 | |PE|1|PE|Parity (E1..E23)| |
||
285 | |S|2|Spare| |
||
286 | |D|1165|D49..D1221|Data bits| |
||
287 | |TA|8|Time Alignment bits| |
||
288 | |Total|1272| |
||
289 | |||
290 | h4. CCU-SYNC-64.ind |
||
291 | |||
292 | Sent from CCU to PCU (uplink) |
||
293 | |||
294 | |T|17|T0*16+T1*1|Sync Word| |
||
295 | |C|8|C1..C8|Control bits (FT, TAV, DFE)| |
||
296 | |PC|1|PC|Parity (C1..C8)| |
||
297 | |E|1|E1|DBE (DownlinkBlockError)| |
||
298 | |PE|1|PE|Parity (E1)| |
||
299 | |D|44|D1..D44|Data bits| |
||
300 | |T|1|T1|| |
||
301 | |D|55|D45..D99|Data bits| |
||
302 | |T|1|T1|| |
||
303 | |D|1079|D100..D1178|Data bits (DPSEQ, DaFNu, DaFNd)| |
||
304 | |TA|8|TA1..TA8|Time Alignment bits| |
||
305 | |Total|1216| |
||
306 | |||
307 | h4. PCU-SYNC-64.ind |
||
308 | |||
309 | |T|65|T0*64+T1*1|Sync Word| |
||
310 | |C|8|C1..C8|Control| |
||
311 | |PC|1|Parity (C1..C8)| |
||
312 | |D|54|D1..D53|Data bits| |
||
313 | |T|1|T1|| |
||
314 | |D|63||Data bits| |
||
315 | |T|1|T1|| |
||
316 | |D|1071|..D1172|Data bits| |
||
317 | |TA|16|TA1..TA16|Time Alignment bits| |
||
318 | |Total|1280| |
||
319 | 5 | laforge | |
320 | 6 | laforge | h2. Trau Procedures |
321 | |||
322 | h3. SYNC procedure |
||
323 | |||
324 | Whenever the uplink is idle, the CCU is sending CCU-SYNC.ind towards the PCU. This frame includes: |
||
325 | * Time Adjustment Value |
||
326 | ** 00: no change |
||
327 | ** 01: delay 250us |
||
328 | ** 10: advance 250us |
||
329 | * Downlink Frame Error: Set to '0' in case the CCU receives bad downlink frames from the PCU |
||
330 | ** once we send valid frames in downlink, the bit should change to '1' |
||
331 | * Downlink Block Error: Set to '0' when a downlink block was not transmitted |
||
332 | * DPSEQ: ? |
||
333 | * afn_ul: Adjusted Frame Number Upliink |
||
334 | * afn_dl: Adjusted Frame Number Downlink |
||
335 | |||
336 | 8 | dexter | Whenever the downlink is idle, the PCU is sending PCU-SYNC.ind towards the CCU. This frame includes: |
337 | 6 | laforge | * Time Adjustment Value (see above) |
338 | * Uplink Frame Error: Set to '0' in case the PCU receives bad uplink frames from the CCU |
||
339 | * DPSEQ: PCU-internal counter which probably gets echo'ed back in uplink DPSEQ for the PCU to measure RTT? |
||
340 | 1 | laforge | * optional dss, dfn_u, dfn_ss, dfn_d and dls fields, ignored by PCU. |
341 | 8 | dexter | |
342 | A detailed description of the synchronization procedure can be found in the libosmo-abis code: |
||
343 | https://gitea.osmocom.org/osmocom/libosmo-abis/src/branch/master/include/osmocom/trau/trau_pcu_ericsson.h |