Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -22,6 +22,12 @@ Internal data structure of prepared performance data follows ONF information mod

## Latest Update

### v1.1.1

This release adds changes for bugs, findings and still outstanding items observed during implementation of v1.0.0 and v1.1.0.

Details on changes are found in [DPMDP v1.1.1_spec](https://github.com/openBackhaul/DevicePerformanceManagementDataProcessor/milestone/8).

### v1.1.0

This release adds new functionality and changes inner workings of DPMDP.
Expand Down
2 changes: 1 addition & 1 deletion spec/DevicePerformanceManagementDataProcessor+config.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -1754,7 +1754,7 @@
"profile-name": "function-profile-1-0:PROFILE_NAME_TYPE_FUNCTION_PROFILE",
"function-profile-1-0:function-profile-pac": {
"function-profile-capability": {
"function-name": "p1CalculateUtilization",
"function-name": "p2CalculateUtilization",
"function-description": "Calculates utilization of the aggregated physical resources in a performance data slice",
"parameter-list": [],
"sub-function-list": []
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -1100,11 +1100,11 @@ profile-instances:
string-value: '-1'


# p1CalculateUtilization
# p2CalculateUtilization
- profile-name: 'FunctionProfile'
uuid: 'dpmdp-1-1-0-function-p-500'
capability:
function-name: 'p1CalculateUtilization'
function-name: 'p2CalculateUtilization'
function-description: 'Calculates utilization of the aggregated physical resources in a performance data slice'
parameter-list:
sub-function-list:
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -373,7 +373,6 @@ x-javascript-interface:
required:
- parameters
- historical-performance-data-list
- aggregation-group
- result-cc
properties:
parameters:
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,6 @@ x-javascript-interface:
required:
- parameters
- historical-performance-data-list
- aggregation-group
- result-cc
properties:
parameters:
Expand DownExpand Up@@ -165,7 +164,6 @@ x-javascript-interface:
type: object
required:
- historical-performance-data
- aggregation-group
- result-cc
properties:
historical-performance-data:
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,7 +3,6 @@ iterate-ec-pm-slices:
required:
- parameters
- historical-performance-data-list
- aggregation-group
- result-cc
properties:
parameters:
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
# p1CalculateUtilization

Calculates the utilization of the aggregated physical TX resources in a performance data slice.

Sums up the interval capacity of all AirInterfaces in the aggregation group that is transporting the EthernetContainer.
Divides the totalBytesOutput by the aggregated interval capacity to get the utilization in %.

## Diagram

<p align="center">
<img src="./p1CalculateUtilization.png" alt="p1CalculateUtilization" width="400"/>
</p>

## Interface

Please find a detailed description of the [interface](./interface.yaml).

## Variables

Please find a detailed description of the [variables](./variables.yaml).

## NPM Module

[mw-sdn-p1-calculate-utilization](https://www.npmjs.com/package/mw-sdn-p1-calculate-utilization)
# p1CalculateUtilization

Calculates the utilization of the aggregated physical TX resources in a performance data slice.

Sums up the interval capacity of all AirInterfaces in the aggregation group that is transporting the EthernetContainer.
Divides the totalBytesOutput by the aggregated interval capacity to get the utilization in %.

### Diagram

<p align="center">
<img src="./p1CalculateUtilization.png" alt="p1CalculateUtilization" width="400"/>
</p>


### Interface

Please find a detailed description of the [interface](./interface.yaml).


### Variables

Please find a detailed description of the [variables](./variables.yaml).


### NPM Module

[mw-sdn-p1-calculate-utilization](https://www.npmjs.com/package/mw-sdn-p1-calculate-utilization)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
openapi: 3.0.0
info:
title: p1CalculateUtilization
version: 1.0.0

x-javascript-interface:
p1CalculateUtilization:
summary: 'Calculates utilization of the aggregated physical resources in a performance data slice'
input:
required: true
content:
application/json:
schema:
type: object
required:
- historical-performance-data
- result-cc
properties:
historical-performance-data:
type: object
description: >
'historicalPerformanceData set'
aggregation-group:
type: object
description: >
'aggregationGroup'
result-cc:
type: object
description: >
'resultCc'
output:
success:
description: 'Utilization added'
content:
application/json:
schema:
type: object
required:
- historical-performance-data
properties:
historical-performance-data:
type: object
description: >
'historicalPerformanceData
from [/calculate-utilization/historical-performance-data]'
error:
description: 'Utilization could not be added'
content:
application/json:
schema:
type: string
enum:
- 'historicalPerformanceData not provided'
- 'historicalPerformanceData invalid'
- 'aggregationGroup invalid'
- 'result-cc not provided'
- 'result-cc invalid'
- 'Utilization could not be added'
- 'General processing error'
processing:
calculateTotalAirInterfaceIntervalCapacity:
summary: 'Aggregates the interval capacity of all transporting AirInterfaces'
input:
required: true
content:
application/json:
schema:
required:
- logical-termination-point
- physical-server-ltp-list
- period-end-time
properties:
logical-termination-point:
type: array
description: >
'logicalTerminationPoint list
from [/calculate-utilization/result-cc/logical-termination-point]'
physical-server-ltp-list:
type: array
description: >
'List of UUIDs of transporting PhysicalServerLTPs
from [/calculate-utilization/aggregation-group/physical-server-ltp-list]'
period-end-time:
type: string
description: >
'Period end time of the performance data slice
from [/calculate-utilization/historical-performance-data/period-end-time]'
output:
success:
description: 'totalAirInterfaceIntervalCapacity provided'
content:
application/json:
schema:
properties:
type: object
properties:
total-air-interface-interval-capacity:
type: integer
description: >
'Sum of the intervalCapacity of all AirInterfaces in the aggregation group that is transporting this EthernetContainer in kbps
from [sum of all {[/logical-termination-point={physical-server-ltp-list[*]}/layer-protocol=*/air-interface-2-0:air-interface-pac/air-interface-historical-performances/historical-performance-data-list={$input.period-end-time}/performance-data/interval-capacity}]
with {[/logical-termination-point={physical-server-ltp-list[*]}/layer-protocol=*/air-interface-2-0:air-interface-pac/air-interface-historical-performances/historical-performance-data-list={$input.period-end-time}/granularity-period]}==air-interface-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-15-MIN'
error:
description: 'totalAirInterfaceIntervalCapacity could not be provided'
content:
application/json:
schema:
type: string
enum:
- 'logicalTerminationPoint list not provided'
- 'logicalTerminationPoint list invalid'
- 'physicalServerLtpList not provided'
- 'physicalServerLtpList invalid'
- 'periodEndTime not provided'
- 'periodEndTime invalid'
- 'totalAirInterfaceIntervalCapacity could not be provided'
- 'General processing error'
calculateUtilization:
summary: 'Calculates the utilization'
input:
required: true
content:
application/json:
schema:
required:
- total-bytes-output
- total-air-interface-interval-capacity
- time-period
properties:
total-bytes-output:
type: string
description: >
'totalBytesOutput
from [/calculate-utilization/historical-performance-data/performance-data/total-bytes-output]'
total-air-interface-interval-capacity:
type: integer
description: >
'totalAirInterfaceIntervalCapacity
from [/calculate-utilization/historical-performance-data/performance-data/total-air-interface-interval-capacity]'
time-period:
type: integer
description: >
'Length of the measurement interval in seconds
from [/calculate-utilization/historical-performance-data/performance-data/time-period]'
output:
success:
description: 'utilization provided'
content:
application/json:
schema:
properties:
type: object
properties:
utilization:
type: integer
description: >
'Interval utilization in %
from [ {total-bytes-output}*8 / ( {total-air-interface-interval-capacity}*1000 * {time-period} ) ]'
error:
description: 'utilization could not be provided'
content:
application/json:
schema:
type: string
enum:
- 'totalBytesOutput not provided'
- 'totalBytesOutput invalid'
- 'totalAirInterfaceIntervalCapacity not provided'
- 'totalAirInterfaceIntervalCapacity invalid'
- 'timePeriod not provided'
- 'timePeriod invalid'
- 'utilization could not be provided'
- 'General processing error'

paths:
/:
description: 'no rest path provided by this module'
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,43 @@
@startuml p1CalculateUtilization
skinparam responseMessageBelowArrow true

title
p1CalculateUtilization
end title

participant "p2IterateEcPmSlices\n" as requestor
participant "p1CalculateUtilization\n" as p1CalcUtil


requestor -> p1CalcUtil : { {historical-performance-data},\n{aggregation-group},\n{result-cc},\nuuidOfEthernetContainer }
activate p1CalcUtil

note over p1CalcUtil
IF /historical-performance-data/granularity-period == '15min'
end note

note left p1CalcUtil
ELSE
end note
requestor <-- p1CalcUtil : { {historical-performance-data} }

note over p1CalcUtil
THEN
end note

note over p1CalcUtil
derive [physicalServerLtpList] from
either {aggregationGroup} (if link aggregation)
or {EthernetContainerLtp} (if 1+0 configuration)
end note

loop FOR physicalServerLtpList[*]
note over p1CalcUtil
totalAirInterfaceIntervalCapacity += AirInterfaceIntervalCapacity
end note
end loop

note over p1CalcUtil
utilization = totalBytesOutput / totalAirInterfaceIntervalCapacity
end note

requestor <-- p1CalcUtil : { {historical-performance-data} }
deactivate p1CalcUtil

deactivate requestor

@enduml
@startuml p1CalculateUtilization
skinparam responseMessageBelowArrow true

title
p1CalculateUtilization
end title

participant "p1IterateEcPmSlices\n" as requestor
participant "p1CalculateUtilization\n" as p1CalcUtil


requestor -> p1CalcUtil : { {historical-performance-data},\n{aggregation-group},\n{result-cc} }
activate p1CalcUtil

note over p1CalcUtil
IF /historical-performance-data/granularity-period == '15min'
end note

note left p1CalcUtil
ELSE
end note
requestor <-- p1CalcUtil : { {historical-performance-data} }

note over p1CalcUtil
THEN
end note

loop FOR /aggregation-group/physical-server-ltp-list[*]
note over p1CalcUtil
totalAirInterfaceIntervalCapacity += AirInterfaceIntervalCapacity
end note
end loop

note over p1CalcUtil
utilization = totalBytesOutput / totalAirInterfaceIntervalCapacity
end note

requestor <-- p1CalcUtil : { {historical-performance-data} }
deactivate p1CalcUtil

deactivate requestor

@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading