MME includes S1AP, NAS and MME_APP subcomponents. MME functions include:
- S1AP external Interface with eNB
- S1AP ASN.1 encode/decode
- S1AP Procedures
- NAS external Interface with UE
- NAS message encode/decode
- NAS Procedures
- NAS state-machine for NAS EMM and NAS ESM protocols
- S11 like Interface with unified S-GW & P-GW
- Create and delete PDN Sessions
- Create/modify/delete default and dedicated bearers
- GRPC based S6a like interface towards FedGW
- To get authentication vector and subscriber profile to authenticate and authorize the subscriber
- To register the serving MME-id with HSS
- To receive the HSS initiated subscriber de-registration request
- To send purge request to HSS during UE de-registration
- To receive HSS reset indication
- GRPC based SGs like interface towards FeGW
- To support NON-EPS services for the subscriber ( CS voice and CS-SMS)
- Update serving GW-id for the subscriber to the FeGW
- Statistics to track the number of eNodeBs connected, number of registered UEs, number of connected UEs and number of idle UEs.
- MME APP maintains UE state machine and routes the message to appropriate modules based on UE state, context and received message.
S-PGW Control Plane
S-PGW Control Plane functions include:
- S11 like interface Interface with MME
- Create and delete PDN Sessions
- Create/modify/delete default and dedicate bearers
- Interface with MobilityD to allocate and release IP address for the subscriber during PDN connection establishment and release, respectively
- Interface with Sessiond/PCEF to trigger Gx and Gy session establishment for the subscriber during PDN connection establishment
- Establish and release GTP tunnel during bearer setup and release
Health checker reports 2 kinds of health status:
- Access Gateway specific health which includes:
- Number of allocated_ips
- Number of core_dumps
- Subscriber table
- Generic Health status which includes:
- Gateway - Controller connectivity
- Status for all the running services
- Number of restarts per each service
- Number of errors per each service
- Internet and DNS status
- Kernel version
- Magma version
Mobilityd functions include:
- Interface with orchestrator to receive IP address block during system bring-up.
- Allocate and release IP address for the subscriber on the request from S-PGW Control Plane.
Sessiond / PCEF
Sessiond implements the control plane for the PCEF functionality in Magma. Sessiond is responsible for the lifecycle management of the session state (credit and rules) associated with a user. It interacts with the PCEF datapath through pipelined for L2-L4 and DPId for L4-L7 policies.
Pipelined is the control application that programs the OVS openflow rules. In implementation pipelined is a set of services that are chained together. These services can be chained and enabled/disabled through the REST API. The README (https://github.com/magma/magma/blob/master/README.md) describes the contract in greater detail.
PolicyDB is the service that supports static PCRF rules. This service runs in both the AGW and the orchestrator. Rules managed through the rest API are streamed to the policydb instances on the AGW. Sessiond ensures these policies are implemented as specified.
Subscriberdb is Magma's local version of HSS. Magma uses Subscriberdb to enable LTE data services through one network node like AGW for LTE subscribers. It is deactivated for the deployments that make use of the MNO's HSS. It supports the following two S6a procedures:
- S6a: Authentication Information Request and Answer (AIR/AIA)
- S6a: Update Location Request and Answer (ULR/ULA)
Subscriberdb functions include:
- Interface with Orchestrator to receive subscriber information such as IMSI, secret key (K) , OP, user-profile during system bring-up.
- Generate Authentication vectors using**Milenage Algorithm and share these with MME.
- Share user profile with MME.
OVS - Data path
OVS (http://www.openvswitch.org/) is used to implement basic PCEF functionality for user plane traffic. The control plane applications interacting with OVS are implemented in pipelined.
Enodebd supports management of eNodeB devices that use TR-069 as management interface. This is used for both provisioning the eNodeB and collecting the performance metrics.It suppots followig data models:
- Device Data model : TR-181 and TR-098
- Information Data model : TR-196
Control proxy manages the network transport between the gateways and the controller.
- Control proxy abstract the service addressability, by providing a service registry which maps a user addressable name to its remote IP and port.
- All traffic over HTTP/2, and are encrypted using TLS. The traffic is routed to individual services by encoding the service name in the HTTP/2 :authority: header.
- Individual GRPC calls between a gateway and the controller are multiplexed over the same HTTP/2 connection, and this helps to avoid the connection setup time per RPC call.
Command Line Interfaces
Several services listed above can be configured using CLIs, located under magma/lte/gateway/python/scripts. These are:
- Health Checker: agw_health_cli.py
- Mobilityd: mobility_cli.py
- Sessiond: session_manager_cli.py
- Pipelined: pipelined_cli.py
- PolicyDB: policydb_cli.py
- Subscriberdb: subscriber_cli.py
- Enodebd: enodebd_cli.py
- State Tracing: state_cli.py
Each of these CLIs can be used in the gateway VM:
(python) vagrant@magma-dev:~$ enodebd_cli.py -h
usage: enodebd_cli.py [-h]
Management CLI for Enodebd
-h, --help show this help message and exit
get_parameter Send GetParameterValues message
set_parameter Send SetParameterValues message
config_enodeb Configure eNodeB
reboot_enodeb Reboot eNodeB
get_status Get eNodeB status