-<spanid="_ref_i.4"></span><aname="_ref_i.4">[i.4]</a> [INet Framework: ](https://inet.omnetpp.org/)\"An open-source OMNeT++ model suite for wired, wireless and mobile networks\".
-<spanid="_ref_i.5"></span><aname="_ref_i.5">[i.5]</a> [Simu5G: ](https://simu5g.org/)\"Simulator for 5G New Radio Networks\".
-<spanid="_ref_i.6"></span><aname="_ref_i.6">[i.6]</a> [SUMO: ](https://eclipse.dev/sumo/)\"Simulation of Urban MObility\".
-<spanid="_ref_i.7"></span><aname="_ref_i.7">[i.7]</a> [VIENS: ](https://veins.car2x.org/)\"The open source vehicular network simulation framework\".
# 3 Definition of terms, symbols and abbreviations
@@ -89,6 +92,7 @@ For the purposes of the present document, the [following] abbreviations [given i
`gNB gNodeB (5G base station)`
`GIS Geographic Information System`
`IP Inyernet Protocol`
`K8S Kubernetes`
`LTE Long Term Evolution`
`MEC Multi-access Edge Computing`
`POA Point of Access`
@@ -137,7 +141,7 @@ The current network simulation in the ETSI MEC Sandbox [\[i.1\]] combines:
1. Geographic Information System (GIS) Engine: To calculates UE-to-POA distances and signal strength;
2. Network Characteristic Manager: To aggregate network characteristics along paths;
3. Traffic Control (TC) Engine: To apply network characteristics to Kubernetes pods;
3. Traffic Control (TC) Engine: To apply network characteristics to Kubernetes pods [\[i.9\]];
4. TC Sidecar: To measure actual network characteristics from the traffic.
### A.2.2 Components involved in the network simulation
@@ -181,7 +185,7 @@ Too reflect the Signal Strength calculation in the UE network traffic, the curre
- The TC Sidecar (`go-apps/meep-tc-sidecar/`): To applies `tc netem` [\[i.2\]] rules to pod network interfaces;
- The Network Characteristic Manager (`go-packages/meep-net-char-mgr/`): To aggregates network characteristics along network paths
Regarding the implementation, the TC Sidecar component applies the network characteristics using the following linux command:
Regarding the implementation, the TC Sidecar component applies the network characteristics using the following Linux command:
```bash
# TC Sidecar applies Linux traffic control
tc qdisc change dev ifb<id> root netem delay <latency>ms <jitter>ms loss <packetLoss>% rate <throughput>bit
@@ -200,7 +204,7 @@ The latency is set in the scenario configuration files (netChar.latency in milli
- Network Location (POA) level;
- Physical Location (UE/Edge) level.
The linux `tc netem` tool [\[i.2\]] adds delay to packets passing through the IFB interface. The delay is applied per packet. The choice of the distribution (normal, uniform, pareto) affects delay variation.
The Linux `tc netem` tool [\[i.2\]] adds delay to packets passing through the IFB interface. The delay is applied per packet. The choice of the distribution (normal, uniform, pareto) affects delay variation.
Regarding the implementation, the latency is managed by the component meep-tc-sidecar:
```go
@@ -219,7 +223,7 @@ The throughput is set in the scenario configuration files (netChar.throughputDl
- Network Location (POA) level;
- Physical Location (UE/Edge) level.
The linux `tc netem` tool [\[i.2\]] rates limiting restricts bandwidth. It applies it as bit rate limit, converting Mbps to bits per second.
The Linux `tc netem` tool [\[i.2\]] rates limiting restricts bandwidth. It applies it as bit rate limit, converting Mbps to bits per second.
Regarding the implementation, the throughput is managed by the component meep-tc-sidecar:
```go
@@ -268,7 +272,7 @@ The jitter is set in the scenario configuration files (netChar.latencyVariation
- Network Location (POA) level;
- Physical Location (UE/Edge) level.
The linux `tc netem` tool [\[i.2\]] adds random variation to delay:
The Linux `tc netem` tool [\[i.2\]] adds random variation to delay:
- Delay Variation: Maximum jitter in milliseconds;
- Distribution: How jitter is distributed (Normal, Uniform, Pareto, Paretonormal);
- Correlation: Correlation between consecutive packet delays (0-100%).
@@ -312,7 +316,7 @@ The packetLoss is set in the scenario configuration files (netChar.packetLoss in
- Network Location (POA) level;
- Physical Location (UE/Edge) level.
The linux `tc netem` tool [\[i.2\]] randomly drops packets. It is applied per packet independently.
The Linux `tc netem` tool [\[i.2\]] randomly drops packets. It is applied per packet independently.
Regarding the implementation, the jitter is managed by the component meep-tc-sidecar:
```go
@@ -410,8 +414,8 @@ The key points are:
The packetLoss is measured using ICMP ping loss. The key points are:
- Data Source: IFB interface statistics;
- Measurement: Dropped ckets / total packets;
- Calculation: (Dropped ckets / total packets) × 100;
- Measurement: Dropped packets / total packets;
- Calculation: (Dropped packets / total packets) × 100;
- Update Frequency: Periodic (based on IFB stats query interval).
The formula is:
@@ -558,9 +562,9 @@ The fugure below shows a simplified architecture of Simu5G.
- All current scenarios can be simulated in Simu5G/SimuLTE;
- RNIS APIs maintain backward compatibility;
- Simulation performance meets requirements;
- Real-time emulation works for applications;
- System is stable and production-ready.
***
<mark>
The counterpart is a huge changes in the current ETSI MEC Sandbox architecture, and a higher complexity. To support 10 simultaneous connections to the new ETSI MEC Sandbox, a very higher hardware requirements are necessary (CPUs, GPUs & memories).
In addition, two warnings shall be raised regarding performance and the objectives to achieve:
1. A network scenarion containing a lot of PoAs and UEs can drastically reduces the performance of the Simu5G/4G simulators. The objective of 10 simulatanneous conections on the MEC Sandbox could be achieved.
2. Regarding the huge amount of work to be done to replace the current network simulation with Simu5G/SimuLTE simulators [\[i.5\]], the objective of the Task#3 as defined in the STF 707 ToR, could be partially covered. An extension of this STF may be required (or a split with a future STF ?)
1. A network scenario containing a lot of PoAs and UEs can drastically reduce the performance of the Simu5G/4G simulators. The objective of 10 simultaneous connections on the MEC Sandbox could be achieved.
2. Regarding the huge amount of work to be done to replace the current network simulation with Simu5G/SimuLTE simulators [\[i.5\]], the objective of the Task#3 as defined in the STF 707 ToR, could be partially covered. An extension of this STF may be required (or a split with a future STF ?). A list of development steps is proposed in [clause A.4.3](#a43-phase-3-implementation). The 3 first steps are the ones to be achieve during this STF
We also propose to start the task 3 immediately after the acceptance of this feasability study.
</mark>
***
**Note:** In addition, a phase of learning is mandatory before to start the replacement of the current network similation by Simu5G/Simu4G simulators [\[i.5\]].
@@ -655,9 +670,14 @@ The purpose is to learn how Simu5G/SimuLTE simulators are working.
- Publish the network metrics into Redist and InfluxDB.
The HTTP REST API mechanism is too slow to be used. The proposal is to use a TCP connection to retrieve the network metrics.
##### 4.2.2.3.4 Real-Time Emulation Bridge
The Real-Time Emulation Bridge enables real applications to connect to the Simu5G/SimuLTE simulations, allowing them to send and receive packets through the simulated network as if connected to a real 5G/4G radio access network.
Simu5G/Simu4G simulators use TUN (level 3) integration:
- Create TUN interfaces for each UE pod
- Route traffic through simulation
- Apply simulation delays/losses to real traffic
##### 4.2.2.3.4 Geographics Bridge
This component is responsible to extract the position of the UEs to publish them:
- Subscribe to OMNeT++ simulation signals;
- Extract UEs position;
- Publish them into Redist.
The MEC Sandbox GUI will reflects the current positions of the UEs/
##### 4.2.2.3.5 Dockerization
This component is responsible to build a dockerzed version of the components describes above [\[i.8\]].
<mark>**To be refined**</mark>
##### 4.2.2.3.6 Kubernetes support
This component is responsible to automate the creation of a Kubernetes pods [\[i.9\]] to execute the components described above, including network routing.
<mark>**To be refined**</mark>
### A.4.3 Phase 3: Implementation
#### A.4.3.1 Introduction
All the development steps come with test units, documentation and partial validation.
#### A.4.3.1 Create Simu5G Engine Service
<mark>TODO</mark>
#### A.4.3.2 Create network scenario converter
<mark>TODO</mark>
#### 4.3.2 Replace TC-based simulation with Simu5G calls
<mark>TODO</mark>
#### 4.3.3 Modify signal strength calculation to use Simu5G