1: Create moving_average, sliding_window, and thresholds global tables in memory.
2: While receiving application id and throughput from Application Director Do
3: Compute moving average of the latest five received throughput and
save them in the moving_average table
4: If next moving average is ready Then
5: Estimate Delay and Throughput out of moving average.
6: Store the estimated QoS values along with application id in the
7: End If
8: If next window of the ten estimated QoS values is ready Then
9: Set forecasted_qos = Linear regression of ten estimated QoS in tn + m.
10: End If
11: If slice state of application id is NOT READY Then
12: Calculate QoS values for scale-up and scale-down thresholds
based on forecasted QoS
13: Store thresholds in the thresholds table along with application id.
14: Spawn a new thread to call the function Get_New_Slice() with
the estimated scale-up QoS values and application’s reliability
from the application-slice mapping table as parameters.
15: Else If slice state of application id is READY Then
16: If forecasted_qos > 0 Then
17: Retrieve corresponding scale_up and scale_down thresholds
from the thresholds table
18: If forecasted_qos ≥ scale_up threshold Or
forecasted_qos < scale-down threshold Then
19: Notify Application Director by sending
EXECUTING_SCALABILITY notification to it.
20: Recalculate scalability thresholds based on forecasted QoS
and update the thresholds table.
21: Spawn a new thread to call the function Trigger-Scalability() with
recalculated scale-up QoS values and IP address of slice as parameters.
22: End If
23: Else If forecasted_qos ≤ 0 Then
24: Spawn a new thread to call the function Release_Slice()
with IP address of slice as parameter.
25: End If
26: End If
27: End While
28: Function Get_New_Slice (arguments: QoS values)
29: Invoke Slice Manager to get a new network slice including QoS values as parameters.
30: After “success” notification from Slice Manager, notify
Application Director by sending GOT_NEW_SLICE notification to it.
31: End Function
32: Function Trigger_Scalability (arguments: QoS values, IP address)
33: Invoke Slice Manager to execute scalability with QoS values and IP address
34: After “success” notification from Slice Manager, notify
Application Director by sending FINISHED_SCALABILITY notification to it.
35: End Function
36: Function Release_Slice (arguments: IP address)
37: Invoke Slice Manager to delete a slice with its IP address as parameter.
38: After “success” notification from Slice Manager, delete the
corresponding entries from the global tables of application-slice
mapping, moving_average, sliding_window, and thresholds.
39: End Function