1 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
2 ' Copyright 2023 O-RAN-SC Projects NONRTRIC, SIM, OAM
3 ' This work is licensed under a Creative Commons Attribution 4.0 International License.
4 ' SPDX-License-Identifier: CC-BY-4.0
5 ' https://creativecommons.org/licenses/by/4.0/deed.en
7 @startuml o-ran-sc-i-pm-streaming-sequence
8 title Performance Data Streaming
9 autonumber 1 1 "<b>[00]"
12 box "App layer" #LightBlue
13 participant "rApp" as rApp
16 box "NONRTRIC" #GoldenRod
17 participant "Information Coordinator Service (DME)" as dmeICS #Green
19 box "NONRTRIC RAN PM" #gold
20 participant "PM (File) Collector" as pmDFC #Green
21 participant "PM Data Converter" as pmConvert #Green
22 participant "PM Data Producer (Streamed)" as pmProducer #Green
23 participant "PM Data Influx Producer/Consumer" as pmInflux #Green
24 database "PM Datastore (S3)" as pmDb #Green
25 database "PM Datastore (InfluxDB)" as pmDbInflux #Green
29 participant "Message Router / Kafka" as mr
30 participant "OAM PM Coordination" as pmCoord
31 participant "PM (Stream) Collector" as pmCollectStream #LightGreen
32 participant "VES Collector" as ves
33 participant "OAM Controller" as sdnr
36 box "Network Topology Simulation" #LightPink
37 participant "NetworkFunction\n2401 NTSims" as nf
38 participant "PM File\nCreator Sim" as pmFileCreator #Green
41 box "Simulation" #LightBlue
42 participant "PM Trigger App" as trigger
46 nf -> ves : <<HTTP/TLS>> VES pnfRegistration <O1>
47 ves -> mr : forward VES pnfRegistration
48 mr -> sdnr : grep VES pnfRegistration
49 sdnr -> sdnr : create Mount Point
50 sdnr -> nf : <<NETCONF/TLS>> establish connection <O1-CM>
51 sdnr -> mr : Connected!
52 mr -> pmCoord : Connection to NF established
54 == Stream-based PM JOB Configuration ==
55 alt Unmanaged PM jobs on NFs
56 rApp -> sdnr : configure PM data streaming subscription <R1-OAM(tbc)>
57 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
58 else Managed PM jobs on NFs
59 rApp -> pmCoord : configure PM data streaming subscription <R1-OAM(tbc)>
60 pmCoord -> pmCoord : analyze subscription
61 pmCoord -> sdnr : PM Job Creation
62 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
64 nf -> sdnr : PM Job Created\nincludes http target for stream establishment <O1-CM (O1-PM?)>
65 sdnr -> pmCoord : PM Job Created
67 == PM Data Streaming ==
69 nf -> pmCollectStream : <<HTTP/TLS>> establish Streaming Connection \nincludes mapping from streamId to jobId <O1-PM>
70 pmCollectStream -> nf : <<HTTP/TLS>> Connection Established returns ConnectionId (wss:url) <O1-PM>
71 trigger -> sdnr : <<RESTCONF/TLS>> Trigger PM stream (Periodic?),\nwhen UEs are entering, leaving the cell <SIM>
72 note left of nf : PM reporting happens continuously/periodicly, not triggered by specific events ?
73 loop while PM job is active in NF
74 sdnr -> nf : <<NETCONF/TLS>> trigger <SIM>
75 note left of nf : PM reporting happens continuously/periodicly. Not sure what is this trigger ?
76 nf -> pmCollectStream : <<WebSocket>> report PM data via stream unit (wss:url) <O1-PM?>
77 pmCollectStream -> pmDb : store pm data (XML or GPB)
78 pmCollectStream -> mr : PM Data (raw) available
81 == File-based PM Job Configuration ==
83 alt Unmanaged PM jobs on NFs
84 rApp -> sdnr : configure file-based PM data subscription <R1-OAM(tbc)>
85 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
86 else Managed PM jobs on NFs
87 rApp -> pmCoord : configure file-based PM data subscription <R1-OAM(tbc)>
88 pmCoord -> pmCoord : analyze subscription
89 pmCoord -> sdnr : PM Job Creation
90 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
91 nf -> sdnr : PM Job Created <O1-CM (O1-PM?)>
92 sdnr -> pmCoord : PM Job Created
95 == PM Data File Collection ==
97 loop while PM job is active in NF
98 nf -> ves : File-Ready <O1-PM>
99 ves -> mr : File-Ready
100 mr -> pmDFC : File-Ready
101 pmDFC -> nf : <<(S)FTP/FTPS/SCP/TLS>> Collect/Transfer File <O1-PM>
102 pmDFC -> pmDb : store pm data (XML)
103 pmDFC -> mr : PM Data (raw) available
106 == PM Data Convertion (Common) ==
108 loop while PM Job is active in NF
109 mr -> pmConvert : PM Data (raw) available
110 pmConvert -> pmDb : Collect raw (XML? GPB?) PM Data
111 pmConvert -> pmConvert : Covert PM data to JSON
112 pmConvert -> pmDb : Store pm data (json)
113 pmConvert -> mr : PM Data (json) available
116 == DME Data Producers & Consumers (Common) ==
118 loop while PM Job is active in NF
119 mr -> pmConvert : PM Data (raw) available
120 pmConvert -> pmDb : Collect raw (XML? GPB?) PM Data
121 pmConvert -> pmConvert : Covert PM data to JSON
122 pmConvert -> pmDb : Store pm data (json)
123 pmConvert -> mr : PM Data (json) available
126 == DME Data Producers & Consumers <<R1 DME>>==
127 loop while PM Job is active in NF
129 opt RAN PM Data (R1-PM 'streamed ranpm' datatype) is streamed to rApp
130 note over pmProducer, dmeICS : Init RAN PM Data Producer registration with DME (DME Producer)
131 pmProducer -> dmeICS : Register data 'streamed ranpm' type (if not already registered)
132 pmProducer -> dmeICS : Register as 'streamed ranpm' producder
133 note over rApp, dmeICS : rApp creates 'streamed ranpm' subscription (DME Consumer)
134 rApp -> dmeICS : Register data 'streamed ranpm' type (if not already registered)
135 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
137 note over rApp, pmProducer : DME coordinates between DME Producer/Consumer
138 dmeICS -> pmProducer : Job/subscription created - includes job parameters
139 loop while data available / continuous
140 pmProducer -> pmDb : retrieve appropriate pm data (json)
141 pmProducer -[#Blue]> mr : data: (type : 'streamed ranpm')
142 mr -[#Blue]> rApp: data : (type : 'streamed ranpm')
143 opt wait for new data
144 mr -> pmProducer : PM Data (json) available
151 opt RAN PM Data (R1-PM 'stored ranpm' datatype) is produced by influxDB producer
152 note over pmInflux, dmeICS : Init RAN PM Data Producer registration with DME (DME Producer)
153 pmInflux -> dmeICS : Register data 'stored ranpm' type (if not already registered)
154 group #a0a0a090 <color #red>TBC</color>
155 pmInflux -> dmeICS : Register as 'stored ranpm' producder
156 note over rApp, dmeICS : rApp creates 'stored ranpm' subscription (DME Consumer)
157 rApp -> dmeICS : Register data 'stored ranpm' type (if not already registered)
158 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
161 note over rApp, pmProducer : DME coordinates between DME Producer/Consumer
162 dmeICS -> pmProducer : Job/subscription created - includes job parameters
164 loop while data available / continuous
165 pmInflux -> pmDb : retrieve appropriate pm data (json)
166 pmInflux -> pmDbInflux : store appropriate pm data (json)
167 pmInflux -> mr : data available: (type : 'stored ranpm')
168 opt wait for new data
169 mr -> pmProducer : PM Data (json) available
172 deactivate pmproducer
176 group #a0a0a090 <color #red>TBC</color>
177 ' Currently AIMLFMW does not act as a DME consumer to read the InfluxDB. It reads it direct
178 ' According to the 'current' specs that is fine - AIMLFW is not an 'rApp'
179 ' Howeever, as the Disaggregated SMo work prgressed it will need to use DME.
180 opt RAN PM Data (R1-PM 'stored ranpm' datatype) is consumed by rApp from influxDB producer
181 group #a0a0a090 <color #red>TBC</color>
182 note over rApp, dmeICS : rApp creates 'stored ranpm' subscription (DME Consumer)
183 rApp -> dmeICS : Register data 'stored ranpm' type (if not already registered)
184 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
187 loop while data available / continuous
188 rApp -> pmDbInflux : retrieve appropriate pm data (json)
189 opt wait for new data
190 mr -> rApp : data available: (type : 'stored ranpm')
199 ' What happens when PM job on NF is removed? (And How?)
200 ' Should DME job be automatically removed?
204 right footer Copyright 2023 O-RAN-SC Projects NONRTRIC, SIM, OAM\lThis work is licensed under a Creative Commons Attribution 4.0\l International License.\lSPDX-License-Identifier: CC-BY-4.0\n2023-09-21 | o-ran-sc.org oam project | Thanks to PlantUML!
206 skinparam backgroundColor #fefefe
207 'skinparam handwritten true
208 skinparam roundcorner 15