blob: 9f3c8e7bb823a85a7d7d97c28fc45ef7688a99ab [file] [log] [blame]
Larry Petersondef1b672023-08-07 14:06:24 -07001Physical RAN
2---------------
llpb3534642023-08-02 09:23:52 -07003
4We are now ready to replace the emulated RAN with physical gNBs and
5real UEs. You will need to edit ``hosts.ini`` to reflect the Aether
6cluster you want to support, where just a single server is sufficient
7and there is no reason to include nodes in the ``[gnbsim_nodes]`` set.
Larry Peterson5dc197c2023-10-02 14:31:06 -07008
9In addition to the server(s) in your cluster, bringing up a physical
10RAN requires the following hardware:
11
12* One or more 5G small cell radios (e.g., MOSO CANOPY 5G INDOOR SMALL CELL).
Larry Petersoncebca8d2023-10-26 07:24:27 -070013* One or more 5G-capable UEs (e.g., unlocked Motorola Moto G 5G).
Larry Peterson5dc197c2023-10-02 14:31:06 -070014* A SIM reader/writer and associated software (e.g., OYEITIMES MCR3516).
Larry Petersoncebca8d2023-10-26 07:24:27 -070015* A set of programmable SIM cards (blank cards likely included with reader/writer).
Larry Peterson5dc197c2023-10-02 14:31:06 -070016
17There are multiple options for each component, but finding a
18combination that works together can be challenging. This section makes
19several recommendations based on working end-to-end systems. For
20simplicity, we pared the above list back to a single example for each
21item, but these should not be interpreted as the only possibility.
22
Larry Petersoncebca8d2023-10-26 07:24:27 -070023Note also that our example relies on the availability of spectrum in
24the CBRS band, which is available in the United States. Spectrum
25options are likely to be different in other countries.
26
Larry Peterson5dc197c2023-10-02 14:31:06 -070027.. admonition:: Troubleshooting Hint
28
29 We are tracking community experience with different hardware in the
30 ``#aether-onramp`` channel of the `ONF Workspace
Larry Peterson9abaff02023-10-19 09:02:50 -070031 <https://onf-community.slack.com/>`__, with summaries of different
32 combinations people have tried reported in the OnRamp
33 `Troubleshooting Wiki Page
34 <https://github.com/opennetworkinglab/aether-onramp/wiki/Troubleshooting>`__.
Larry Peterson5dc197c2023-10-02 14:31:06 -070035
Larry Peterson782fec32023-10-09 12:30:57 -070036This blueprint assumes you start with a variant of ``vars/main.yml``
37customized for running physical 5G radios. This is easy to do:
llpb3534642023-08-02 09:23:52 -070038
39.. code-block::
40
41 $ cd vars
42 $ cp main-gNB.yml main.yml
43
Larry Petersoncebca8d2023-10-26 07:24:27 -070044This section focuses on bringing up a single gNB, and assumes that gNB
45is on the same L2 network as the Aether cluster. In our running
46example, this implies both are on subnet ``10.76.28.0/24``.
llpb3534642023-08-02 09:23:52 -070047
Larry Peterson8b1ed832023-08-29 12:06:06 -070048.. admonition:: Troubleshooting Hint
49
Larry Petersoncebca8d2023-10-26 07:24:27 -070050 Be aware that enterprise and campus networks have been known to
51 filter packets in ways that impact gNB-to-Core connectivity.
52 Fortunately, physical gNBs connect to SD-Core (both the AMF in the
53 control plane and the UPF in the user plane) in exactly the same way
54 as external instances of gNBsim. Going through the process of
55 bringing up gNBsim in a second server, as described in the previous
56 section, is a good way to validate that your Core is "gNB-ready".
Larry Peterson8b1ed832023-08-29 12:06:06 -070057
llpb3534642023-08-02 09:23:52 -070058Modify Configuration
59~~~~~~~~~~~~~~~~~~~~~~~~
60
61Modify the ``core`` section of ``vars/main.yml`` to match the
62following, substituting your local details for ``ens18`` and
63``10.76.28.113``. Of particular note, setting ``ran_subnet`` to the
64empty string indicates that the gNB is connected to the same physical
65L2 network as your Aether cluster, and the new ``values_file`` is
66tailored for a physical RAN rather than the emulated RAN we've been
67using.
68
69.. code-block::
70
71 core:
72 standalone: "true"
73 data_iface: ens18
74 values_file: "deps/5gc/roles/core/templates/radio-5g-values.yaml"
75 ran_subnet: ""
76 helm:
77 chart_ref: aether/sd-core
78 chart_version: 0.12.6
79 upf:
80 ip_prefix: "192.168.252.0/24"
81 amf:
82 ip: "10.76.28.113"
83
84
85Prepare UEs
86~~~~~~~~~~~~
87
Larry Petersond3294df2023-09-13 10:35:38 -040088When selecting UEs to connect to Aether, be aware that not all phones
89support the CBRS frequency bands that Aether uses. For band n78,
90Aether is known to work with recent iPhones (11 and greater), Google
91Pixel phones (4 and greater), OnePlus phones, and Moto G 5G
92phones. For band n48, Aether is known to work with Moto G 5G and
93OnePlus phones; Pixel 7 phones are purported to work as well. Another
94option is to use a 5G dongle connected to a Raspberry Pi as a
95demonstration UE. This makes it easier to run diagnostic tests from
96the UE. For example, we have used `APAL's 5G dongle
97<https://www.apaltec.com/dongle/>`__ with Aether.
98
llpb3534642023-08-02 09:23:52 -0700995G-connected devices must have a SIM card, which you are responsible
Larry Peterson5dc197c2023-10-02 14:31:06 -0700100for programming and inserting. You will need a SIM card writer, such
101as the *OYEITIMES MCR3516* (available on Amazon), which comes with
102five blank cards. You will need to set the PLMN identifier
103(constructed from a valid MCC/MNC pair), the IMSI, and two secret keys
104for each SIM card. As working examples, we have used two different
105PLMN ids: ``315010`` constructed from MCC=315 (US) and MNC=010 (CBRS),
106and ``00101`` constructed from MCC=001 (TEST) and MNC=01 (TEST). You
107should use whatever values are appropriate for your local environment,
108where we use the following as a running example throughout this
109section:
llpb3534642023-08-02 09:23:52 -0700110
111* IMSI: each one is unique, matching pattern ``315010*********`` (up to 15 digits)
112* OPc: ``69d5c2eb2e2e624750541d3bbc692ba5``
113* Key: ``000102030405060708090a0b0c0d0e0f``
114
Larry Peterson505d4b32023-08-21 14:39:45 -0700115Note that the actual config files distributed with OnRamp have IMSIs
116constructed using PLMN id ``00101``. Both sets of examples are taken
Larry Peterson5d6b3b32023-09-05 15:11:55 -0700117from working deployments (``315010`` for a 4G/eNB and ``00101`` for a
1185G/gNB), so in principle either should work as a model you can emulate
119in your deployment. As a practical matter, however, it is certainly
120easiest (and safest) to start with the existing code.
Larry Peterson505d4b32023-08-21 14:39:45 -0700121
Larry Petersond3294df2023-09-13 10:35:38 -0400122After inserting the SIM card into the device and powering it up, log
Larry Peterson077f5882023-09-20 16:14:30 -0700123into the phone, select ``Network Settings > SIMs`` and create a new
124*Access Point Name (APN)*, configured as shown in :numref:`Figure %s
125<fig-apn>`. The entry name (``TEST SIM`` in the example) is arbitrary
126and the MCC/MNC pair is set automatically based on the newly inserted
127SIM card. The important value is the APN, which is set to
128``internet``. This value corresponds to variable ``dnn`` (*Data
129Network Name*) defined in
130``deps/5gc/roles/core/templates/radio-5g-values.yaml``. Loosely
131speaking, the role the APN plays in the mobile network is similar to
132the role an SSID plays in a WiFi network.
133
134.. _fig-apn:
135.. figure:: figures/Slide26.png
136 :width: 400px
137 :align: center
138
139 Configure an Access Point Name (APN) for the new SIM card on the UE.
llpb3534642023-08-02 09:23:52 -0700140
141Finally, modify the ``subscribers`` block of the
142``omec-sub-provision`` section in file
143``deps/5gc/roles/core/templates/radio-5g-values.yaml`` to record the IMSI,
144OPc, and Key values configured onto your SIM cards. The block also
145defines a sequence number that is intended to thwart replay
146attacks. For example, the following code block adds IMSIs between
147``315010999912301`` and ``315010999912310``:
148
149.. code-block::
150
151 subscribers:
152 - ueId-start: "315010999912301"
153 ueId-end: "315010999912310"
154 plmnId: "315010"
155 opc: "69d5c2eb2e2e624750541d3bbc692ba5"
156 key: "000102030405060708090a0b0c0d0e0f"
157 sequenceNumber: 135
158
159Further down in the same ``omec-sub-provision`` section you will find
160two other blocks that also need to be edited. The first,
161``device-groups``, assigns IMSIs to *Device Groups*. You will need to
162reenter the individual IMSIs from the ``subscribers`` block that will
163be part of the device-group:
164
165.. code-block::
166
167 device-groups:
168 - name: "5g-user-group1"
169 imsis:
170 - "315010999912301"
171 - "315010999912302"
172 - "315010999912303"
173
174The second block, ``network-slices``, sets various parameters
175associated with the *Slices* that connect device groups to
176applications. Here, you will need to reenter the PLMN information,
177with the other slice parameters remaining unchanged (for now):
178
179.. code-block::
180
181 plmn:
182 mcc: "315"
183 mnc: "010"
184
185Aether supports multiple *Device Groups* and *Slices*, but the data
186entered here is purposely minimal; it's just enough to bring up and
187debug the installation. Over the lifetime of a running system,
188information about *Device Groups* and *Slices* (and the other
189abstractions they build upon) should be entered via the ROC, as
190described the section on Runtime Control. When you get to that point,
191Ansible variable ``standalone`` in ``vars/main.yml`` (which
192corresponds to the override value assigned to
193``provision-network-slice`` in ``radio-5g-values.yaml``) should be set
194to ``false``. Doing so causes the ``device-groups`` and
195``network-slices`` blocks of ``radio-5g-values.yaml`` to be
196ignored. The ``subscribers`` block is always required to configure
197SD-Core.
198
199
200Bring Up Aether
201~~~~~~~~~~~~~~~~~~~~~
202
203You are now ready to bring Aether on-line. We assume a fresh install
Larry Petersondef1b672023-08-07 14:06:24 -0700204by typing the following:
llpb3534642023-08-02 09:23:52 -0700205
206.. code-block::
207
208 $ make aether-k8s-install
209 $ make aether-5gc-install
210
211You can verify the installation by running ``kubectl`` just as you did
212in earlier stages. Note that we postpone bringing up the AMP until
213later so as to have fewer moving parts to debug.
214
215
216gNodeB Setup
217~~~~~~~~~~~~~~~~~~~~
218
219Once the SD-Core is up and running, we are ready to bring up the
220physical gNB. The details of how to do this depend on the specific
221device you are using, but we identify the main issues you need to
Larry Peterson5d6b3b32023-09-05 15:11:55 -0700222address using SERCOMM's 5G femto cell (as distributed by MosoLabs) as
223an example. That particular device uses either the n48 or n78 band and
Larry Petersond3294df2023-09-13 10:35:38 -0400224is on the ONF MarketPlace, where you can also find a User's Guide that
225gives detailed instructions about configuring the gNB.
llpb3534642023-08-02 09:23:52 -0700226
227.. _reading_sercomm:
228.. admonition:: Further Reading
229
Larry Peterson5d6b3b32023-09-05 15:11:55 -0700230 `MOSO CANOPY 5G INDOOR SMALL CELL
231 <https://opennetworking.org/products/moso-canopy-5g-indoor-small-cell/>`__.
232
233.. admonition:: Troubleshooting Hint
234
235 The product data sheet shows support for frequency bands
236 n78/n48/n77, but individual devices do not necessarily support all
237 three. For example, we have experience with an n78 device and an n48
Larry Peterson5dc197c2023-10-02 14:31:06 -0700238 device, with the latter (n48) becoming the preferred band (due in
239 part to less risk of interfering with Radio Altimeters). For n48,
240 PLMN id ``00101`` is currently recommended.
llpb3534642023-08-02 09:23:52 -0700241
242For the purposes of the following description, we assume the gNB is
243assigned IP address ``10.76.28.187``, which per our running example,
244is on the same L2 network as our Aether server (``10.76.28.113``).
Larry Petersondef1b672023-08-07 14:06:24 -0700245:numref:`Figure %s <fig-sercomm>` shows a screenshot of the SERCOMM
llpb3534642023-08-02 09:23:52 -0700246gNB management dashboard, which we reference in the instructions that
247follow:
248
249.. _fig-sercomm:
250.. figure:: figures/Sercomm.png
251 :width: 500px
252 :align: center
253
254 Management dashboard on the Sercomm gNB, showing the dropdown
255 ``Settings`` menu overlayed on the ``NR Cell Configuration`` page
256 (which shows default radio settings).
257
258
2591. **Connect to Management Interface.** Start by connecting a laptop
260 directly to the LAN port on the small cell, pointing your laptop's
261 web browser at the device's management page
262 (``https://10.10.10.189``). You will need to assign your laptop an
263 IP address on the same subnet (e.g., ``10.10.10.100``). Once
264 connected, log in with the credentials provided by the vendor.
265
2662. **Configure WAN.** Visit the ``Settings > WAN`` page to configure
267 how the small cell connects to the Internet via its WAN port,
268 either dynamically using DHCP or statically by setting the device's
269 IP address (``10.76.28.187``) and default gateway (``10.76.28.1``).
270
2713. **Access Remote Management.** Once on the Internet, it should be
272 possible to reach the management dashboard without being directly
273 connected to the LAN port (``https://10.76.28.187``).
274
2754. **Connect GPS.** Connect the small cell's GPS antenna to the GPS
276 port, and place the antenna so it has line-of-site to the sky
277 (i.e., place it in a window). The ``Status`` page of the management
278 dashboard should report its latitude, longitude, and fix time.
279
2805. **Spectrum Access System.** One reason the radio needs GPS is so it
281 can report its location to a Spectrum Access System (SAS), a
282 requirement in the US to coordinate access to the CBRS Spectrum in
283 the 3.5 GHz band. For example, the production deployment of Aether
284 uses the `Google SAS portal
285 <https://cloud.google.com/spectrum-access-system/docs/overview>`__,
286 which the small cell can be configured to query periodically. To do
287 so, visit the ``Settings > SAS`` page. Acquiring the credentials
288 needed to access the SAS requires you go through a certification
289 process, but as a practical matter, it may be possible to test an
290 isolated/low-power femto cell indoors before completing that
291 process. Consult with your local network administrator.
292
2936. **Configure Radio Parameters.** Visit the ``Settings > NR Cell
294 Configuration`` page (shown in the figure) to set parameters that
295 control the radio. It should be sufficient to use the default
296 settings when getting started.
297
2987. **Configure the PLMN.** Visit the ``Settings > 5GC`` page to set
299 the PLMN identifier on the small cell (``00101``) to match the
300 MCC/MNC values (``001`` / ``01`` ) specified in the Core.
301
3028. **Connect to Aether Control Plane.** Also on the ``Settings > 5GC``
303 page, define the AMF Address to be the IP address of your Aether
304 server (e.g., ``10.76.28.113``). Aether's SD-Core is configured to
305 expose the corresponding AMF via a well-known port, so the server's
306 IP address is sufficient to establish connectivity. The ``Status``
307 page of the management dashboard should confirm that control
308 interface is established.
309
3109. **Connect to Aether User Plane.** As described in an earlier
311 section, the Aether User Plane (UPF) is running at IP address
312 ``192.168.252.3``. Connecting to that address requires installing a
313 route to subnet ``192.168.252.0/24``. How you install this route is
314 device and site-dependent. If the small cell provides a means to
315 install static routes, then a route to destination
316 ``192.168.252.0/24`` via gateway ``10.76.28.113`` (the server
317 hosting Aether) will work. If the small cell does not allow static
318 routes (as is the case for the SERCOMM gNB), then ``10.76.28.113``
319 can be installed as the default gateway, but doing so requires that
320 your server also be configured to forward IP packets on to the
321 Internet.
322
Larry Petersond3294df2023-09-13 10:35:38 -0400323.. admonition:: Troubleshooting Hint
324
325 For the SERCOMM gNB, if you elect to enable GPS, then ``Setting >
326 Sync_Settings > Sync_Mode`` should be set to ``TIME``. With GPS and
327 PTP disabled, ``Setting > Sync_Settings > Sync_Mode`` should be set
328 to ``FREE_RUNNING``.
329
330.. admonition:: Troubleshooting Hint
331
332 For the SERCOMM gNB, we recommend the following when the gNB's
333 addresses is acquired via DHCP, assuming that address is unlikely to
334 change. When configuring the WAN (via the LAN), start with DHCP
335 enabled. Note the IP address the gNB has been assigned, and then
336 after disconnecting from the LAN, connect to the GUI via this
337 address. You will be on the same L2 subnet as the Aether server,
338 which you should be able to ping using the gNBs diagnostic tool.
339 The default gateway DHCP returns does not know how to route data
340 packets to the UPF. To fix this, modify the WAN settings to use a
341 static IP, with the DHCP-provided IP used as the gNB's static
342 address. Then set the default gateway to the IP address of your
343 Aether server.
344
llpb3534642023-08-02 09:23:52 -0700345Run Diagnostics
346~~~~~~~~~~~~~~~~~
347
348Successfully connecting a UE to the Internet is not a straightforward
349exercise. It involves configuring the UE, gNB, and SD-Core software in
350a consistent way; establishing SCTP-based control plane (N2) and
351GTP-based user plane (N3) connections between the base station and
352Mobile Core; and traversing multiple IP subnets along the end-to-end
353path.
354
355The UE and gNB provide limited diagnostic tools. For example, it's
356possible to run ``ping`` and ``traceroute`` from both. You can also
357run the ``ksniff`` tool described in the Networking section, but the
358most helpful packet traces you can capture are shown in the following
359commands. You can run these on the Aether server, where we use our
360example ``ens18`` interface for illustrative purposes:
361
362.. code-block::
363
364 $ sudo tcpdump -i any sctp -w sctp-test.pcap
365 $ sudo tcpdump -i ens18 port 2152 -w gtp-outside.pcap
366 $ sudo tcpdump -i access port 2152 -w gtp-inside.pcap
367 $ sudo tcpdump -i core net 172.250.0.0/16 -w n6-inside.pcap
368 $ sudo tcpdump -i ens18 net 172.250.0.0/16 -w n6-outside.pcap
369
370The first trace, saved in file ``sctp.pcap``, captures SCTP packets
371sent to establish the control path between the base station and the
372Mobile Core (i.e., N2 messages). Toggling "Mobile Data" on the UE,
373for example by turning Airplane Mode off and on, will generate the
374relevant control plane traffic.
375
376The second and third traces, saved in files ``gtp-outside.pcap`` and
377``gtp-inside.pcap``, respectively, capture GTP packets (tunneled
378through port ``2152`` ) on the RAN side of the UPF. Setting the
379interface to ``ens18`` corresponds to "outside" the UPF and setting
380the interface to ``access`` corresponds to "inside" the UPF. Running
381``ping`` from the UE will generate the relevant user plane (N3) traffic.
382
383Similarly, the fourth and fifth traces, saved in files
384``n6-inside.pcap`` and ``n6-outside.pcap``, respectively, capture IP
385packets on the Internet side of the UPF (which is known as the **N6**
386interface in 3GPP). In these two tests, ``net 172.250.0.0/16``
387corresponds to the IP addresses assigned to UEs by the SMF. Running
388``ping`` from the UE will generate the relevant user plane traffic.
389
390If the ``gtp-outside.pcap`` has packets and the ``gtp-inside.pcap``
391is empty (no packets captured), you may run the following commands
392to make sure packets are forwarded from the ``ens18`` interface
393to the ``access`` interface and vice versa:
394
395.. code-block::
396
397 $ sudo iptables -A FORWARD -i ens18 -o access -j ACCEPT
398 $ sudo iptables -A FORWARD -i access -o ens18 -j ACCEPT
Larry Petersondef1b672023-08-07 14:06:24 -0700399
400Support for eNBs
401~~~~~~~~~~~~~~~~~~
402
403Aether OnRamp is geared towards 5G, but it does support physical eNBs,
404including 4G-based versions of both SD-Core and AMP. It does not
Larry Peterson782fec32023-10-09 12:30:57 -0700405support an emulated 4G RAN. The 4G blueprint uses all the same Ansible
406machinery outlined in earlier sections, but starts with a variant of
Larry Petersondef1b672023-08-07 14:06:24 -0700407``vars/main.yml`` customized for running physical 4G radios:
408
409.. code-block::
410
411 $ cd vars
412 $ cp main-eNB.yml main.yml
413
414Assuming that starting point, the following outlines the key
415differences from the 5G case:
416
4171. There is a 4G-specific repo, which you can find in ``deps/4gc``.
418
4192. The ``core`` section of ``vars/main.yml`` specifies a 4G-specific values file:
420
421 ``values_file: "deps/4gc/roles/core/templates/radio-4g-values.yaml"``
422
4233. The ``amp`` section of ``vars/main.yml`` specifies that 4G-specific
424 models and dashboards get loaded into the ROC and Monitoring
425 services, respectively:
426
427 ``roc_models: "deps/amp/roles/roc-load/templates/roc-4g-models.json"``
428
429 ``monitor_dashboard: "deps/amp/roles/monitor-load/templates/4g-monitor"``
430
4314. You need to edit two files with details for the 4G SIM cards you
432 use. One is the 4G-specific values file used to configure SD-Core:
433
434 ``deps/4gc/roles/core/templates/radio-4g-values.yaml``
435
436 The other is the 4G-specific Models file used to bootstrap ROC:
437
438 ``deps/amp/roles/roc-load/templates/radio-4g-models.json``
439
4405. There are 4G-specific Make targets for SD-Core (e.g., ``make
441 aether-4gc-install`` and ``make aether-4gc-uninstall``), but the
442 Make targets for AMP (e.g., ``make aether-amp-install`` and ``make
443 aether-amp-uninstall``) work unchanged in both 4G and 5G.
444
445The Quick Start and Emulated RAN (gNBsim) deployments are for 5G only,
446but revisiting the other sectionssubstituting the above for their 5G
447counterpartsserves as a guide for deploying a 4G version of Aether.
448Note that the network is configured in exactly the same way for both
4494G and 5G. This is because SD-Core's implementation of the UPF is used
450in both cases.