5GMED project: Multi-technology QoS-aware Gateway
The Multi-technology QoS-aware Gateway (QoS-GW) is a device involved in the 5GMED railways use cases responsible for forwarding end-user device traffic between the train network and the ground network through different mobile Radio Access Networks (RANs) on a per-application basis and according to a set of forwarding policies that take into consideration the QoS requirements of each application.
The main function of the QoS-GW
The QoS-GW provides a means of adaptive per-application policy routing able to dynamically change the RAN used to deliver and receive traffic to/from the ground while providing both IP mobility support and application session continuity. More specifically, the QoS-GW is responsible for:
- Transparently aggregating end-user traffic sent/received to/from the different mobile RANs
- Classifying the raw IP flows processed to derive the forwarding and QoS policies
- Tunneling IP packets through a set of IP/UDP tunnels associated with each RAN
- Integrating the 5GMed slicing framework by supporting both QoS-class-based packet marking, bandwidth limiting, and priority scheduling
- Forwarding packets to the proper next hop associated with the different RANs
The QoS-GW implementation
The QoS-GW implementation consists of two main components: a control plane agent and a data plane module, both implemented in Linux. The control plane agent is implemented as a python application executed in the host machine user space and it is responsible for instantiating and dynamically configuring the QoS-GW data plane according to user-defined policies as well as implementing the signaling mechanisms, like for example the tunnel setup /maintenance and the monitoring of the RAN availability.
The QoS-GW data plane is responsible for the actual packet processing operations, which include the above-mentioned operations: packet classification, encapsulation/decapsulation, marking, and forwarding. This component is implemented within the Linux eBPF framework, which is a packet processing framework integrated within the Linux Kernel network subsystem that allows programmers
- to write small network programs in high-level languages (C, python, rust, etc…)
- to inject the program byte code into the kernel via several entry points called hooks
- to execute the program within the kernel in a sandbox environment
- to interact with the in-kernel program execution at runtime via different interfaces
More specifically, the QoS-GW data plane is implemented at the XDP level. XDP is the lowest possible eBPF hook which is implemented directly into the Network Interface Card (NIC) driver. eBPF programs injected into the XDP hooks still maintain a well-known standard programming interface while providing better performance in terms of throughput, latency, and CPU utilization. Moreover, thanks to its implementation architecture, the QoS-GW is fully virtualizable and can be easily migrated/scaled/distributed, to support a wide range of networking and application scenarios.
The QoS-GW, a fundamental element of the Future Railway Mobile Communication System (FRMCS)
The QoS-GW is meant to provide:
- flexible support for both 3GPP and non-3GPP radio access technologies simultaneously
- differentiation and prioritization of critical applications
- network slicing even with non 5G RANs
- improvement of the reliability and the performance of the network
- application session continuity