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
9 Performance Measurement Data flows
10 stream based and 3GPP xml file based
14 autonumber 1 1 "<b>[00]"
17 skinparam backgroundColor #fefefe
18 skinparam roundcorner 15
20 skinparam participant {
21 BackgroundColor<< NONRTRIC >> green
22 FontColor<< NONRTRIC >> #eeeeee
26 BackgroundColor<< NONRTRIC >> green
27 FontColor<< NONRTRIC >> green
31 ' the sequence diagram
32 box "App layer" #LightBlue
33 participant "rApp" as rApp
36 box "NONRTRIC" #GoldenRod
37 participant "Information Coordinator Service (DME)" as dmeICS << NONRTRIC >>
40 box "NONRTRIC RAN PM" #gold
41 participant "PM (File) Collector" as pmDFC << NONRTRIC >>
42 participant "PM Data Converter" as pmConvert << NONRTRIC >>
43 participant "PM Data Producer (Streamed)" as pmProducer << NONRTRIC >>
44 participant "PM Data Influx Producer/Consumer" as pmInflux << NONRTRIC >>
45 database "PM Datastore (S3)" as pmDb << NONRTRIC >>
46 database "PM Datastore (InfluxDB)" as pmDbInflux << NONRTRIC >>
50 participant "Message Router / Kafka" as mr
51 participant "PM Coordination" as pmCoord
52 participant "PM (Stream) Collector" as pmCollectStream #LightGreen
53 participant "VES Collector" as ves
54 participant "OAM Controller" as sdnr
57 box "Network Topology Simulation" #LightPink
58 participant "NetworkFunction\nNTSims" as nf
59 participant "PM File\nCreator Sim" as pmFileCreator << NONRTRIC >>
62 box "Simulation" #LightBlue
63 participant "PM Trigger App" as trigger
67 nf -> ves : <<HTTP/TLS>> VES pnfRegistration <O1>
68 ves -> mr : forward VES pnfRegistration
69 mr -> sdnr : grep VES pnfRegistration
70 sdnr -> sdnr : create Mount Point
71 sdnr -> nf : <<NETCONF/TLS>> establish connection <O1-CM>
72 sdnr -> mr : Connected!
73 mr -> pmCoord : Connection to NF established
75 == Stream-based PM JOB Configuration ==
76 alt Unmanaged PM jobs on NFs
77 rApp -> sdnr : configure PM data streaming subscription <R1-OAM(tbc)>
78 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
79 else Managed PM jobs on NFs
80 rApp -> pmCoord : configure PM data streaming subscription <R1-OAM(tbc)>
81 pmCoord -> pmCoord : analyze subscription
82 pmCoord -> sdnr : PM Job Creation
83 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
85 nf -> sdnr : PM Job Created\nincludes http target for stream establishment <O1-CM>
86 sdnr -> pmCoord : PM Job Created
88 == PM Data Streaming ==
90 nf -> pmCollectStream : <<HTTP/TLS>> establish Streaming Connection \nincludes mapping from streamId to jobId <O1-PM>
91 pmCollectStream -> nf : <<HTTP/TLS>> Connection Established returns ConnectionId (wss:url) <O1-PM>
92 trigger -> sdnr : <<RESTCONF/TLS>> Trigger PM stream (Periodic?),\nwhen UEs are entering, leaving the cell <SIM>
93 note left of nf : PM reporting happens continuously/periodically, not triggered by specific events ?
94 loop while PM job is active in NF
95 sdnr -> nf : <<NETCONF/TLS>> trigger <SIM>
96 note left of nf : PM reporting happens continuously/periodically. Not sure what is this trigger ?
97 nf -> pmCollectStream : <<WebSocket>> report PM data via stream unit (wss:url) <O1-PM>
98 pmCollectStream -> pmDb : store pm data (3GPP-XMLformat)
99 pmCollectStream -> mr : PM Data (raw) available
102 == File-based PM Job Configuration ==
104 alt Unmanaged PM jobs on NFs
105 rApp -> sdnr : configure file-based PM data subscription <R1-OAM(tbc)>
106 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
107 else Managed PM jobs on NFs
108 rApp -> pmCoord : configure file-based PM data subscription <R1-OAM(tbc)>
109 pmCoord -> pmCoord : analyze subscription
110 pmCoord -> sdnr : PM Job Creation
111 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
112 nf -> sdnr : PM Job Created <O1-CM>
113 sdnr -> pmCoord : PM Job Created
116 == PM Data File Collection ==
118 loop while PM job is active in NF
119 nf -> ves : File-Ready <O1-PM>
120 ves -> mr : File-Ready
121 mr -> pmDFC : File-Ready
122 pmDFC -> nf : <<(S)FTP/FTPS/SCP/TLS>> Collect/Transfer File <O1-PM>
123 pmDFC -> pmDb : store pm data (XML)
124 pmDFC -> mr : PM Data (raw) available
127 == PM Data Convertion (Common) ==
129 loop while PM Job is active in NF
130 mr -> pmConvert : PM Data (raw) available
131 pmConvert -> pmDb : Collect raw (3GPP-XMLformat) PM Data
132 pmConvert -> pmConvert : Covert PM data to JSON
133 pmConvert -> pmDb : Store pm data (json)
134 pmConvert -> mr : PM Data (json) available
137 == DME Data Producers & Consumers (Common) ==
139 loop while PM Job is active in NF
140 mr -> pmConvert : PM Data (raw) available
141 pmConvert -> pmDb : Collect raw (3GPP-XML format) PM Data
142 pmConvert -> pmConvert : Covert PM data to JSON
143 pmConvert -> pmDb : Store pm data (json)
144 pmConvert -> mr : PM Data (json) available
147 == DME Data Producers & Consumers <<R1 DME>>==
148 loop while PM Job is active in NF
150 opt RAN PM Data (R1-PM 'streamed ranpm' datatype) is streamed to rApp
151 note over pmProducer, dmeICS : Init RAN PM Data Producer registration with DME (DME Producer)
152 pmProducer -> dmeICS : Register data 'streamed ranpm' type (if not already registered)
153 pmProducer -> dmeICS : Register as 'streamed ranpm' producder
154 note over rApp, dmeICS : rApp creates 'streamed ranpm' subscription (DME Consumer)
155 rApp -> dmeICS : Register data 'streamed ranpm' type (if not already registered)
156 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
158 note over rApp, pmProducer : DME coordinates between DME Producer/Consumer
159 dmeICS -> pmProducer : Job/subscription created - includes job parameters
160 loop while data available / continuous
161 pmProducer -> pmDb : retrieve appropriate pm data (json)
162 pmProducer -[#Blue]> mr : data: (type : 'streamed ranpm')
163 mr -[#Blue]> rApp: data : (type : 'streamed ranpm')
164 opt wait for new data
165 mr -> pmProducer : PM Data (json) available
172 opt RAN PM Data (R1-PM 'stored ranpm' datatype) is produced by influxDB producer
173 note over pmInflux, dmeICS : Init RAN PM Data Producer registration with DME (DME Producer)
174 pmInflux -> dmeICS : Register data 'stored ranpm' type (if not already registered)
175 group #a0a0a090 <color #red>TBC</color>
176 pmInflux -> dmeICS : Register as 'stored ranpm' producder
177 note over rApp, dmeICS : rApp creates 'stored ranpm' subscription (DME Consumer)
178 rApp -> dmeICS : Register data 'stored ranpm' type (if not already registered)
179 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
182 note over rApp, pmProducer : DME coordinates between DME Producer/Consumer
183 dmeICS -> pmProducer : Job/subscription created - includes job parameters
185 loop while data available / continuous
186 pmInflux -> pmDb : retrieve appropriate pm data (json)
187 pmInflux -> pmDbInflux : store appropriate pm data (json)
188 pmInflux -> mr : data available: (type : 'stored ranpm')
189 opt wait for new data
190 mr -> pmProducer : PM Data (json) available
193 deactivate pmProducer
197 group #a0a0a090 <color #red>TBC</color>
198 ' Currently AIMLFMW does not act as a DME consumer to read the InfluxDB. It reads it direct
199 ' According to the 'current' specs that is fine - AIMLFW is not an 'rApp'
200 ' However, as the Disaggregated SMo work progressed it will need to use DME.
201 opt RAN PM Data (R1-PM 'stored ranpm' datatype) is consumed by rApp from influxDB producer
202 group #a0a0a090 <color #red>TBC</color>
203 note over rApp, dmeICS : rApp creates 'stored ranpm' subscription (DME Consumer)
204 rApp -> dmeICS : Register data 'stored ranpm' type (if not already registered)
205 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
208 loop while data available / continuous
209 rApp -> pmDbInflux : retrieve appropriate pm data (json)
210 opt wait for new data
211 mr -> rApp : data available: (type : 'stored ranpm')
220 ' What happens when PM job on NF is removed? (And How?)
221 ' Should DME job be automatically removed?
223 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!