blob: dab94ad9c3eb71f9b9623f79d05d4931afd8df44 [file] [log] [blame]
Martin Skorupski9ba50192023-09-22 10:37:26 +02001'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Martin Skorupskif700afb2023-09-22 11:08:38 +02002' Copyright 2023 O-RAN-SC Projects NONRTRIC, SIM, OAM
Martin Skorupski9ba50192023-09-22 10:37:26 +02003' 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
6
7@startuml o-ran-sc-i-pm-streaming-sequence
Martin Skorupski8797bdf2023-09-22 11:20:35 +02008title
9 Performance Measurement Data flows
10 stream based and 3GPP xml file based
11end title
12
13' format
Martin Skorupski9ba50192023-09-22 10:37:26 +020014autonumber 1 1 "<b>[00]"
Martin Skorupskif700afb2023-09-22 11:08:38 +020015hide unlinked
Martin Skorupski8797bdf2023-09-22 11:20:35 +020016hide stereotype
17skinparam backgroundColor #fefefe
18skinparam roundcorner 15
Martin Skorupski9ba50192023-09-22 10:37:26 +020019
Martin Skorupski8797bdf2023-09-22 11:20:35 +020020skinparam participant {
21 BackgroundColor<< NONRTRIC >> green
22 FontColor<< NONRTRIC >> #eeeeee
23}
24
25skinparam database {
26 BackgroundColor<< NONRTRIC >> green
27 FontColor<< NONRTRIC >> green
28}
29' end format
30
31' the sequence diagram
Martin Skorupskid94f1e12023-09-22 12:42:24 +020032box "User Space" #LightBlue
33 actor "User" as user
34end box
35
Martin Skorupski9ba50192023-09-22 10:37:26 +020036box "App layer" #LightBlue
Martin Skorupskid94f1e12023-09-22 12:42:24 +020037 participant "rApp" as rApp
Martin Skorupski9ba50192023-09-22 10:37:26 +020038end box
39
Martin Skorupskif700afb2023-09-22 11:08:38 +020040box "NONRTRIC" #GoldenRod
Martin Skorupski8797bdf2023-09-22 11:20:35 +020041 participant "Information Coordinator Service (DME)" as dmeICS << NONRTRIC >>
Martin Skorupskif700afb2023-09-22 11:08:38 +020042end box
Martin Skorupski8797bdf2023-09-22 11:20:35 +020043
Martin Skorupskif700afb2023-09-22 11:08:38 +020044box "NONRTRIC RAN PM" #gold
Martin Skorupski8797bdf2023-09-22 11:20:35 +020045 participant "PM (File) Collector" as pmDFC << NONRTRIC >>
46 participant "PM Data Converter" as pmConvert << NONRTRIC >>
47 participant "PM Data Producer (Streamed)" as pmProducer << NONRTRIC >>
48 participant "PM Data Influx Producer/Consumer" as pmInflux << NONRTRIC >>
Martin Skorupskid94f1e12023-09-22 12:42:24 +020049end box
50
51box "SMO Common" #gold
52 participant "Topology Service" as topo
53 participant "Message Router / Kafka" as mr
Martin Skorupski8797bdf2023-09-22 11:20:35 +020054 database "PM Datastore (S3)" as pmDb << NONRTRIC >>
55 database "PM Datastore (InfluxDB)" as pmDbInflux << NONRTRIC >>
Martin Skorupskif700afb2023-09-22 11:08:38 +020056end box
57
Martin Skorupski9ba50192023-09-22 10:37:26 +020058box "SMO OAM" #gold
Martin Skorupski8797bdf2023-09-22 11:20:35 +020059 participant "PM Coordination" as pmCoord
Martin Skorupskid94f1e12023-09-22 12:42:24 +020060 participant "PM Collector" as pmCollectStream
Martin Skorupski9ba50192023-09-22 10:37:26 +020061 participant "VES Collector" as ves
Martin Skorupski9ba50192023-09-22 10:37:26 +020062 participant "OAM Controller" as sdnr
63end box
64
Martin Skorupskid94f1e12023-09-22 12:42:24 +020065box "SMO O-Cloud" #gold
66 participant "Deployment Management Service" as dms
67end box
68
69box "Network" #LightPink
Martin Skorupski8797bdf2023-09-22 11:20:35 +020070 participant "NetworkFunction\nNTSims" as nf
71 participant "PM File\nCreator Sim" as pmFileCreator << NONRTRIC >>
Martin Skorupski9ba50192023-09-22 10:37:26 +020072end box
73
Martin Skorupskid94f1e12023-09-22 12:42:24 +020074box "Simulation" #LightPink
75 database "Network PM" as netPm
76 participant "Data Generation" as simData
77 participant "UE Location Generation" as trigger
Martin Skorupski9ba50192023-09-22 10:37:26 +020078end box
79
80== init ==
Martin Skorupskid94f1e12023-09-22 12:42:24 +020081
82user -> topo : provide (RAN) topology
83dms -> topo : RESTCONF GET ietf-network-topology
84dms <- topo : ietf-network-topology
85loop for all nodes in the topology
86 dms -> nf : Create simulated network function <O2>
87end loop
88simData -> topo : RESTCONF GET ietf-network-topology
89simData <- topo : ietf-network-topology
90
91== onboarding ==
92
Martin Skorupskif700afb2023-09-22 11:08:38 +020093nf -> ves : <<HTTP/TLS>> VES pnfRegistration <O1>
94ves -> mr : forward VES pnfRegistration
95mr -> sdnr : grep VES pnfRegistration
96sdnr -> sdnr : create Mount Point
97sdnr -> nf : <<NETCONF/TLS>> establish connection <O1-CM>
98sdnr -> mr : Connected!
99mr -> pmCoord : Connection to NF established
Martin Skorupski9ba50192023-09-22 10:37:26 +0200100
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200101== PM Data Generation ==
102
103loop at least every second
104 trigger -> simData : send geo location for each UE
105 simData -> simData : UE perform cell selection
106 simData -> simData : Generator throughput data \nand RSRQ (PM values)
107 simData -> netPm : Store PM values per UE \nand timestamp
108 simData -> simData : aggregate data per nrDuCell
109 simData -> netPm : Store PM values per nrDuCell \nand timestamp
110 simData -> simData : aggregate data per O-RAN RU
111 simData -> netPm : Store PM values per O-RAN RU \nand timestamp
112 simData -> simData : aggregate data per O-RAN DU
113 simData -> netPm : Store PM values per O-RAN DU \nand timestamp
114end loop
115
Martin Skorupskif700afb2023-09-22 11:08:38 +0200116== Stream-based PM JOB Configuration ==
117alt Unmanaged PM jobs on NFs
118 rApp -> sdnr : configure PM data streaming subscription <R1-OAM(tbc)>
119 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
120else Managed PM jobs on NFs
121 rApp -> pmCoord : configure PM data streaming subscription <R1-OAM(tbc)>
122 pmCoord -> pmCoord : analyze subscription
123 pmCoord -> sdnr : PM Job Creation
124 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
125end
Martin Skorupski8797bdf2023-09-22 11:20:35 +0200126nf -> sdnr : PM Job Created\nincludes http target for stream establishment <O1-CM>
Martin Skorupskif700afb2023-09-22 11:08:38 +0200127sdnr -> pmCoord : PM Job Created
Martin Skorupski9ba50192023-09-22 10:37:26 +0200128
129== PM Data Streaming ==
130
Martin Skorupskif700afb2023-09-22 11:08:38 +0200131nf -> pmCollectStream : <<HTTP/TLS>> establish Streaming Connection \nincludes mapping from streamId to jobId <O1-PM>
132pmCollectStream -> nf : <<HTTP/TLS>> Connection Established returns ConnectionId (wss:url) <O1-PM>
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200133
134loop while performance job is active
135 nf -> netPm : request data based on PM-Job
136 netPm -> nf : send data
137 nf -> nf : convert simulated PM Data into GPB
Martin Skorupski8797bdf2023-09-22 11:20:35 +0200138 nf -> pmCollectStream : <<WebSocket>> report PM data via stream unit (wss:url) <O1-PM>
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200139 pmCollectStream -> pmCollectStream : convert GPB into 3GPP-xml format
140 pmCollectStream -> pmDb : store PM Data (3GPP-XMLformat)
141 pmCollectStream -> mr : PM Data (raw) available\n{jobId,sender,pm-database-query-command}
Martin Skorupski9ba50192023-09-22 10:37:26 +0200142end
143
Martin Skorupskif700afb2023-09-22 11:08:38 +0200144== File-based PM Job Configuration ==
145
146alt Unmanaged PM jobs on NFs
147 rApp -> sdnr : configure file-based PM data subscription <R1-OAM(tbc)>
148 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
149else Managed PM jobs on NFs
150 rApp -> pmCoord : configure file-based PM data subscription <R1-OAM(tbc)>
151 pmCoord -> pmCoord : analyze subscription
152 pmCoord -> sdnr : PM Job Creation
153 sdnr -> nf : <<NETCONF/TLS>> PM Job Creation <O1-CM>
Martin Skorupski8797bdf2023-09-22 11:20:35 +0200154 nf -> sdnr : PM Job Created <O1-CM>
Martin Skorupskif700afb2023-09-22 11:08:38 +0200155 sdnr -> pmCoord : PM Job Created
156end
157
158== PM Data File Collection ==
159
160loop while PM job is active in NF
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200161 nf -> netPm : request data based on PM-Job
162 netPm -> nf : send data
163 nf -> nf : store simulated PM Data as 3GPP-XML file
Martin Skorupskif700afb2023-09-22 11:08:38 +0200164 nf -> ves : File-Ready <O1-PM>
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200165 ves -> mr : File-Ready
166 mr -> pmDFC : File-Ready
Martin Skorupskif700afb2023-09-22 11:08:38 +0200167 pmDFC -> nf : <<(S)FTP/FTPS/SCP/TLS>> Collect/Transfer File <O1-PM>
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200168 pmDFC -> pmDb : store PM Data (3GPP-XML format)
Martin Skorupskif700afb2023-09-22 11:08:38 +0200169 pmDFC -> mr : PM Data (raw) available
170end
171
Martin Skorupski3bf6d6f2023-09-22 11:29:57 +0200172== PM Data Conversion (Common) ==
Martin Skorupskif700afb2023-09-22 11:08:38 +0200173
174loop while PM Job is active in NF
175 mr -> pmConvert : PM Data (raw) available
Martin Skorupski8797bdf2023-09-22 11:20:35 +0200176 pmConvert -> pmDb : Collect raw (3GPP-XML format) PM Data
Martin Skorupskif700afb2023-09-22 11:08:38 +0200177 pmConvert -> pmConvert : Covert PM data to JSON
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200178 pmConvert -> pmDb : Store PM Data (json)
Martin Skorupskif700afb2023-09-22 11:08:38 +0200179 pmConvert -> mr : PM Data (json) available
180end
181
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200182' == DME Data Producers & Consumers (Common) ==
183'
184' loop while PM Job is active in NF
185' mr -> pmConvert : PM Data (raw) available
186' pmConvert -> pmDb : Collect raw (3GPP-XML format) PM Data
187' pmConvert -> pmConvert : Covert PM data to JSON
188' pmConvert -> pmDb : Store PM Data (json)
189' pmConvert -> mr : PM Data (json) available
190'end
191
192
Martin Skorupskif700afb2023-09-22 11:08:38 +0200193== DME Data Producers & Consumers <<R1 DME>>==
194loop while PM Job is active in NF
195
196 opt RAN PM Data (R1-PM 'streamed ranpm' datatype) is streamed to rApp
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200197 note over pmProducer, dmeICS : Init RAN PM Data Producer registration with DME (DME Producer)
Martin Skorupskif700afb2023-09-22 11:08:38 +0200198 pmProducer -> dmeICS : Register data 'streamed ranpm' type (if not already registered)
Martin Skorupski3bf6d6f2023-09-22 11:29:57 +0200199 pmProducer -> dmeICS : Register as 'streamed ranpm' producer
Martin Skorupskif700afb2023-09-22 11:08:38 +0200200 note over rApp, dmeICS : rApp creates 'streamed ranpm' subscription (DME Consumer)
201 rApp -> dmeICS : Register data 'streamed ranpm' type (if not already registered)
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200202 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
Martin Skorupskif700afb2023-09-22 11:08:38 +0200203 activate rApp
204 note over rApp, pmProducer : DME coordinates between DME Producer/Consumer
205 dmeICS -> pmProducer : Job/subscription created - includes job parameters
206 loop while data available / continuous
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200207 pmProducer -> pmDb : retrieve appropriate PM Data (json)
Martin Skorupskif700afb2023-09-22 11:08:38 +0200208 pmProducer -[#Blue]> mr : data: (type : 'streamed ranpm')
209 mr -[#Blue]> rApp: data : (type : 'streamed ranpm')
210 opt wait for new data
211 mr -> pmProducer : PM Data (json) available
212 end
213 end loop
214 deactivate rApp
215 end opt
216
Martin Skorupskif700afb2023-09-22 11:08:38 +0200217 opt RAN PM Data (R1-PM 'stored ranpm' datatype) is produced by influxDB producer
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200218 note over pmInflux, dmeICS : Init RAN PM Data Producer registration with DME (DME Producer)
Martin Skorupskif700afb2023-09-22 11:08:38 +0200219 pmInflux -> dmeICS : Register data 'stored ranpm' type (if not already registered)
220 group #a0a0a090 <color #red>TBC</color>
Martin Skorupski3bf6d6f2023-09-22 11:29:57 +0200221 pmInflux -> dmeICS : Register as 'stored ranpm' producer
Martin Skorupskif700afb2023-09-22 11:08:38 +0200222 note over rApp, dmeICS : rApp creates 'stored ranpm' subscription (DME Consumer)
223 rApp -> dmeICS : Register data 'stored ranpm' type (if not already registered)
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200224 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
Martin Skorupskif700afb2023-09-22 11:08:38 +0200225 activate rApp
226 end group
227 note over rApp, pmProducer : DME coordinates between DME Producer/Consumer
228 dmeICS -> pmProducer : Job/subscription created - includes job parameters
Martin Skorupski8797bdf2023-09-22 11:20:35 +0200229 activate pmProducer
Martin Skorupskif700afb2023-09-22 11:08:38 +0200230 loop while data available / continuous
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200231 pmInflux -> pmDb : retrieve appropriate PM Data (json)
232 pmInflux -> pmDbInflux : store appropriate PM Data (json)
Martin Skorupskif700afb2023-09-22 11:08:38 +0200233 pmInflux -> mr : data available: (type : 'stored ranpm')
234 opt wait for new data
235 mr -> pmProducer : PM Data (json) available
236 end
237 end loop
Martin Skorupski8797bdf2023-09-22 11:20:35 +0200238 deactivate pmProducer
Martin Skorupskif700afb2023-09-22 11:08:38 +0200239 deactivate rApp
240 end opt
241
242 group #a0a0a090 <color #red>TBC</color>
Martin Skorupski3bf6d6f2023-09-22 11:29:57 +0200243 ' Currently AIMLFW does not act as a DME consumer to read the InfluxDB. It reads it direct
Martin Skorupskif700afb2023-09-22 11:08:38 +0200244 ' According to the 'current' specs that is fine - AIMLFW is not an 'rApp'
Martin Skorupski8797bdf2023-09-22 11:20:35 +0200245 ' However, as the Disaggregated SMo work progressed it will need to use DME.
Martin Skorupskif700afb2023-09-22 11:08:38 +0200246 opt RAN PM Data (R1-PM 'stored ranpm' datatype) is consumed by rApp from influxDB producer
247 group #a0a0a090 <color #red>TBC</color>
248 note over rApp, dmeICS : rApp creates 'stored ranpm' subscription (DME Consumer)
249 rApp -> dmeICS : Register data 'stored ranpm' type (if not already registered)
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200250 rApp -> dmeICS : Create subscription/job for 'streamed ranpm' data
Martin Skorupskif700afb2023-09-22 11:08:38 +0200251 activate rApp
252 end group
253 loop while data available / continuous
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200254 rApp -> pmDbInflux : retrieve appropriate PM Data (json)
Martin Skorupskif700afb2023-09-22 11:08:38 +0200255 opt wait for new data
256 mr -> rApp : data available: (type : 'stored ranpm')
257 end
258 end loop
259 deactivate rApp
260 end opt
261 end group
262
263end loop
264
265' What happens when PM job on NF is removed? (And How?)
Martin Skorupskid94f1e12023-09-22 12:42:24 +0200266' draft: The SMO wont be informed about new measurements no ves file ready or no pm-stream based on the PM job.
267' The PM Job can be deactivated (admin-state to locked) or removed via NETCONF operation defined in 3GPP yang modules -> O1.
268
269' Should DME job be automatically removed?
270' draft: Here we should start developing an answer 😊
271' The DME job does it depend on the PM job or does it control the PM job?
272
Martin Skorupskif700afb2023-09-22 11:08:38 +0200273
Martin Skorupskif700afb2023-09-22 11:08:38 +0200274right 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!
Martin Skorupski9ba50192023-09-22 10:37:26 +0200275
Martin Skorupski9ba50192023-09-22 10:37:26 +0200276@enduml