[[operating]]
== Operating osmo-epdg

The osmo-epdg requires to run on Linux.
osmo-epdg has been tested and developed with Debian 12.
Linux kernel and/or erlang/OTP from Debian 11 are known to cause problems.

=== Linux requirements

The osmo-epdg is using the following Linux subsystems:

* nftables (soft)
* IP policy routing (soft)
* ESP user-plane (soft)
* GTP user-plane (hard)

Soft dependencies can be changed by configuration.
Hard dependencies are required and can't be changed without code changes.

The user-plane is configured in the default configuration to use nftables and
policy routing to ensure the traffic from UEs will only flow between the GTP network
interface and ESP encrypted tunnels.

strongSwan will use the kernel ESP subsystem to encrypt, decrypt and route traffic.
strongSwan can be configured to replace the kernel ESP subsystem with a user space
imeplementation, which comes with a performance impact.

osmo-epdg/erlang is using the GTP subsystem to de- and encapsulate. It only supports using
the kernel subsystem.

=== EPC requirements

The osmo-epdg was tested and developed against open5gs and requires version 2.7.1 or newer.

==== HSS

When a UE connects it requests an APN via SWu. By default the UE will request
the APN "ims". The subscriber entry must allow connections to the requested APN to succeed.

==== PGW

The osmo-epdg/erlang expects the PGW to support S2b and S6b.
An UE will request attributes via IKEv2 which are translated into Additional PCO (APCO) in GTP on the S2b
reference point. The PGW should support Additional PCO via S2b.
open5gs supports Additional PCO since 2.7.1.

osmo-epdg only supports S2b over GTP.
