blob: 7c1f17a64ea235fc115dda5d0f8ca465d5409b9d [file] [log] [blame]
llpb3534642023-08-02 09:23:52 -07001Closer Look
2---------------
3
4Before tearing down your Quick Start deployment, there are two
5additional steps you can take to watch Aether in action. The first is
6to bring up the Aether Management Plane (AMP), which includes
7Dashboards showing different aspects of Aether's runtime behavior. The
8second is to enable packet capture, and then run an analysis tool to
9trace the flow of packets into and out of SD-Core.
10
11
12Install AMP
13~~~~~~~~~~~~~~~
14
15The Aether Management Platform (AMP) is implemented by two Kubernetes
16applications: *Runtime Operational Control (ROC)* and a *Monitoring
17Service*.\ [#]_ AMP can be deployed on the same cluster as SD-Core by
18executing the following Make target:
19
20.. code-block::
21
22 $ make aether-amp-install
23
24Once complete, ``kubectl`` will show the ``aether-roc`` and
25``cattle-monitoring-system`` namespaces running in support of these
26two services, respectively, plus new ``atomix`` pods in the
27``kube-system`` namespace. Atomix is the scalable key-value store
28that keeps the ROC data model persistent.
29
Larry Petersondef1b672023-08-07 14:06:24 -070030.. [#] Note that what the implementation calls ROC, `Chapter 6
31 <https://5g.systemsapproach.org/cloud.html>`__ refers to
32 generically as *Service Orchestration*.
llpb3534642023-08-02 09:23:52 -070033
34You can access the dashboards for the two subsystems,
35respectively, at
36
37.. code-block::
38
39 http://<server_ip>:31194
40 http://<server_ip>:30950
41
42The programmatic API underlying the Control Dashboard, which was
Larry Petersondef1b672023-08-07 14:06:24 -070043introduced in `Section 6.4
44<https://5g.systemsapproach.org/cloud.html#connectivity-api>`__, can
45be accessed at ``http://10.76.28.113:31194/aether-roc-api/`` in our
46example deployment (where Aether runs on host ``10.76.28.113``).
llpb3534642023-08-02 09:23:52 -070047
48There is much more to say about the ROC and the Aether API, which we
49return to in the section on Runtime Control. For now, we suggest you
50simply peruse the Control Dashboard by starting with the dropdown menu
51in the upper right corner. For example, selecting `Devices` will show
Larry Petersonc177f982023-08-14 16:54:51 -070052the set of UEs registered with Aether, similar to the screenshot in
53:numref:`Figure %s <fig-roc>`. In an operational setting, these values
54would be entered into the ROC through either the GUI or the underlying
55API. For the Quick Start scenario we're limiting ourselves to in this
56section, these values are loaded from
llpb3534642023-08-02 09:23:52 -070057``deps/amp/5g-roc/templates/roc-5g-models.json``.
58
Larry Petersonc177f982023-08-14 16:54:51 -070059.. _fig-roc:
60.. figure:: figures/ROC-Dashboard.png
61 :width: 700px
62 :align: center
63
64 Screenshot of the ROC dashboard, showing known *Devices*. The
65 dropdown menu on the right lists other available pages.
66
llpb3534642023-08-02 09:23:52 -070067Turning to the Monitoring Dashboard, you will initially see
68Kubernetes-related performance stats. Select the *5G Dashboard* option
Larry Petersonc177f982023-08-14 16:54:51 -070069to display information reported by SD-Core. Similar to :numref:`Figure
70%s <fig-monitor>`, the page shows an active (green) UPF, and once you
71rerun the RAN simulator (gNBsim), some number of active base stations
72and connected devices. The bottom panel shows the UPF throughput,
73which due to gNBsim's focus on stressing the control plane, typically
74shows only minimal activity.
75
76.. _fig-monitor:
77.. figure:: figures/5G-Dashboard.png
78 :width: 700px
79 :align: center
80
81 Screenshot of the monitoring subsystem's 5G dashboard.
llpb3534642023-08-02 09:23:52 -070082
83When you are done experimenting with AMP, type the following
84to tear it down:
85
86.. code-block::
87
88 $ make aether-amp-uninstall
89
90Run Ksniff and Wireshark
91~~~~~~~~~~~~~~~~~~~~~~~~~~~
92
93In addition to the trace output generated by the simulator, a good way
94to understand the inner working of Aether is to use `Ksniff
95<https://github.com/eldadru/ksniff>`__ (a Kubernetes plugin) to
96capture packets and display their headers as they flow into and out of
97the microservices that implement Aether. Output from Ksniff can then
98be fed into `Wireshark <https://www.wireshark.org/>`__.
99
100To install the Ksniff plugin on the server running Aether, you need to
101first install ``krew``, the Kubernetes plugin manager. Instructions on
102doing that can be found `online
103<https://krew.sigs.k8s.io/docs/user-guide/setup/install/>`__. Once
104that's done, you can install Ksniff by typing:
105
106.. code-block::
107
108 $ kubectl krew install sniff
109
110You can then run Ksniff in the context of a specific Kubernetes pod by
111specifying their namespace and instance names, and then redirecting
112the output to Wireshark. If you don't have a desktop environment on
113your Aether server, you can either view the output using a simpler
114packet analyzer, such as `tshark
115<https://www.wireshark.org/docs/man-pages/tshark.html>`__, or by
116redirecting the PCAP output in a file and transfer it a desktop
117machine for viewing in Wireshark.
118
119For example, the following captures and displays traffic into and out
120of the AMF, where you need to substitute the name of the AMP pod
Larry Peterson5d6b3b32023-09-05 15:11:55 -0700121you learned from ``kubectl`` in place of ``amf-5887bbf6c5-pc9g2``.
llpb3534642023-08-02 09:23:52 -0700122
123.. code-block::
124
125 $ kubectl sniff -n omec amf-5887bbf6c5-pc9g2 -o - | tshark -r -
126
127Of course, you'll also need to restart the RAN emulator to generate
128workload for this tool to capture.