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