blob: e3298b9e959ab8e5ad7fc267ab2096b4986ebbf5 [file] [log] [blame]
// SPDX-FileCopyrightText: 2020 The Magma Authors.
// SPDX-FileCopyrightText: 2022 Open Networking Foundation <support@opennetworking.org>
//
// SPDX-License-Identifier: BSD-3-Clause
syntax = "proto3";
import "orc8r/protos/common.proto";
package magma.mconfig;
option go_package = "magma/lte/cloud/go/protos/mconfig";
// --------------------------------------------------------------------------
// SentryConfig stores the network-wide Sentry.io configuration
// --------------------------------------------------------------------------
message SentryConfig {
// url_python initializes the Sentry Python SDK and sets the remote URL.
// If set to empty string, Sentry Python SDK will not be initialized.
string url_python = 1;
// url_native initializes the Sentry Native SDK for C/C++ and sets the
// remote URL. If set to empty string, Sentry Native SDK will not be
// initialized.
string url_native = 2;
// upload_mme_log decides whether MME service log file (/var/log/mme.log)
// is uploaded along with MME crashreports
bool upload_mme_log = 3;
// sample_rate sets the rate at which Python error events are sampled.
// sample_rate should be a number between 0 (0% of errors sent) and 1 (100%
// of errors sent)
float sample_rate = 4;
}
//------------------------------------------------------------------------------
// EnodebD configs
//------------------------------------------------------------------------------
message EnodebD {
enum CSFBRat {
CSFBRAT_2G = 0;
CSFBRAT_3G = 1;
}
message FDDConfig {
int32 earfcndl = 1;
int32 earfcnul = 2;
}
message TDDConfig {
int32 earfcndl = 1;
// TDD subframe config parameter. See http://niviuk.free.fr/lte_tdd.php
int32 subframe_assignment = 2;
// TDD subframe config parameter. See http://niviuk.free.fr/lte_tdd.php
int32 special_subframe_pattern = 3;
}
message EnodebConfig {
// Device-unique serial ID. Used to identify the eNodeB, and ties the
// config to that device
int32 earfcndl = 1;
int32 subframe_assignment = 2;
int32 special_subframe_pattern = 3;
int32 pci = 4;
bool transmit_enabled = 5;
string device_class = 6;
int32 bandwidth_mhz = 7;
int32 tac = 8;
int32 cell_id = 9;
string ip_address = 10;
}
orc8r.LogLevel log_level = 1;
// Physical cell ID (0-504)
int32 pci = 2;
// Frequency channel number. See niviuk.free.fr/lte_band.php for mapping to
// frequency
int32 earfcndl = 3;
// Bandwidth in MHz, from set {1.4, 3, 5, 10, 15, 20}
int32 bandwidth_mhz = 4;
// Network operator identifier.
string plmnid_list = 5;
// TDD subframe config parameter. See http://niviuk.free.fr/lte_tdd.php
int32 subframe_assignment = 6;
// TDD subframe config parameter. See http://niviuk.free.fr/lte_tdd.php
int32 special_subframe_pattern = 7;
// Enable eNodeB
bool allow_enodeb_transmit = 8;
// Tracking area code. 16-bit
int32 tac = 9;
// RAT type (2G/3G), used by eNB
CSFBRat csfb_rat = 10;
// 2G RAT frequencies /ARFCNs for redirection, used by eNB
repeated int32 arfcn_2g = 11;
TDDConfig tdd_config = 12;
FDDConfig fdd_config = 13;
map<string, EnodebConfig> enb_configs_by_serial = 14;
}
//------------------------------------------------------------------------------
// PipelineD configs
//------------------------------------------------------------------------------
message PipelineD {
enum NetworkServices {
METERING = 0 [deprecated=true]; // deprecated
DPI = 1;
ENFORCEMENT = 2;
}
orc8r.LogLevel log_level = 1;
// Range of IPs allocated to UEs
string ue_ip_block = 2;
// Whether NAT is enabled
bool nat_enabled = 3;
// repeated PolicyRule policy_rules = 5; // Policies have moved to policydb.proto
string default_rule_id = 6; // This should match a rule id in policy_rules
repeated NetworkServices services = 8;
message AllowedGrePeer {
string ip = 1;
uint32 key = 2;
}
repeated AllowedGrePeer allowed_gre_peers = 9;
message IPDRExportDst {
string ip = 1;
uint32 port = 2;
}
IPDRExportDst ipdr_export_dst = 10;
message LiUes {
repeated string imsis = 1;
repeated string msisdns = 2;
repeated string macs = 3;
repeated string ips = 4;
repeated string imeis = 5;
}
LiUes li_ues = 12;
string sgi_management_iface_vlan = 13;
string sgi_management_iface_ip_addr = 14;
string sgi_management_iface_gw = 15;
message HEConfig {
enum EncryptionAlgorithm {
RC4 = 0;
AES256_CBC_HMAC_MD5 = 1;
AES256_ECB_HMAC_MD5 = 2;
GZIPPED_AES256_ECB_SHA1 = 3;
}
enum HashFunction{
MD5 = 0;
HEX = 1;
SHA256 = 2;
}
enum EncodingType {
BASE64 = 0;
HEX2BIN = 1;
}
// enable_header_enrichment is true if header enrichment feature is
// enabled for gateway
bool enable_header_enrichment = 1;
bool enable_encryption = 2;
// encryption/hashing/encoding information for headers
EncryptionAlgorithm encryptionAlgorithm = 3;
HashFunction hashFunction = 4;
EncodingType encodingType = 5;
string encryption_key = 6;
string hmac_key = 7;
}
HEConfig he_config = 17;
// Enables 5G Standalone (SA) at a network level
bool enable5g_features = 18;
string upf_node_identifier = 19;
// SGi management IPv6 address with network mask
string sgi_management_iface_ipv6_addr = 20;
// IPv6 address of SGi management network GW
string sgi_management_iface_ipv6_gw = 21;
// DEPRECATED
reserved 4, 11;
}
//------------------------------------------------------------------------------
// SessionD configs
//------------------------------------------------------------------------------
message SessionD {
orc8r.LogLevel log_level = 1;
// DEPRECATED
// Enable forwarding S6a related requests to Federated GW
bool relay_enabled = 2 [deprecated = true];
WalletExhaustDetection wallet_exhaust_detection = 3;
// Enable relaying Gx/Gy messages via FeG RPC
bool gx_gy_relay_enabled = 4;
// sentry_config stores the Sentry.io configuration for this service
SentryConfig sentry_config = 5;
// Enables 5G Standalone (SA) at a network level
bool enable5g_features = 6;
}
message WalletExhaustDetection {
// Enable the feature where session is terminated on wallet exhaust
bool terminate_on_exhaust = 1;
enum Method {
// If # of Gx Tracked Rules are > 0, then the wallet is still valid
GxTrackedRules = 0;
}
// How wallet exhast is detected on SessionD
Method method = 2;
// How long to wait before terminating a out-of-wallet subscriber on attach
uint32 timeout_ms = 3;
}
//------------------------------------------------------------------------------
// PolicyDB configs
//------------------------------------------------------------------------------
message PolicyDB {
orc8r.LogLevel log_level = 1;
}
//------------------------------------------------------------------------------
// RedirectD configs
//------------------------------------------------------------------------------
message RedirectD {
orc8r.LogLevel log_level = 1;
}
//------------------------------------------------------------------------------
// MobilityD configs
//------------------------------------------------------------------------------
message MobilityD {
// UE allocator type.
enum IpAllocatorType {
IP_POOL = 0;
DHCP = 1;
}
orc8r.LogLevel log_level = 1;
// An IP block is a range of IP addresses specified by a network address and
// a prefix-length of the netmask. For example,
// IPv4 IP block: "192.168.0.0/24"
string ip_block = 2;
// ip allocation type, either dhcp or ip_pool
// default is ip_pool
IpAllocatorType ip_allocator_type = 3;
// Enable Static IP from subscriberDB
bool static_ip_enabled = 4;
// Enable multi APN IP allocation
bool multi_apn_ip_alloc = 5;
// IPv6 block for IPv6 allocator, for example:
// IPv6 IP block: "fdee:5:6c::/48"
string ipv6_block = 10;
// Select ipv6 session prefix allocation type, example:
// "RANDOM", "HASH"
string ipv6_prefix_allocation_type = 11;
}
//------------------------------------------------------------------------------
// MME configs
//------------------------------------------------------------------------------
message MME {
// (0)Turning off NonEPS service, (1)Both CSFB and SMS, (2)only SMS
enum NonEPSServiceControl {
NON_EPS_SERVICE_CONTROL_OFF = 0;
NON_EPS_SERVICE_CONTROL_CSFB_SMS = 1;
NON_EPS_SERVICE_CONTROL_SMS = 2;
NON_EPS_SERVICE_CONTROL_SMS_ORC8R = 3;
}
orc8r.LogLevel log_level = 1;
// Mobile country code
string mcc = 2;
// Mobile network code
string mnc = 3;
// [deprecated] Tracking area code. 16-bit
// Is overrideen by field 15
int32 tac = 4;
// MME group identifier - unique within a PLMN. 16-bit
int32 mme_gid = 5;
// MME code - unique within an MME group. 8-bit
int32 mme_code = 6;
// Enable DNS Caching. Will be filled by DnsD
bool enable_dns_caching = 7;
// DEPRECATED
// Enable credit control tracking with OCS and forwarding S6a related
// requests to Federated GW
bool relay_enabled = 8;
// For indicating one of the four modes
NonEPSServiceControl non_eps_service_control = 9;
// Mobile country code for CSFB
string csfb_mcc = 10;
// Mobile network code for CSFB
string csfb_mnc = 11;
// Location area code. 16-bit
int32 lac = 12;
// If relay_enabled is false, this determines whether cloud subscriberdb
// or local subscriberdb is used for authentication requests.
bool cloud_subscriberdb_enabled = 14;
// The Tracking Area Code of every connected eNodeB needs to be
// registered the MME.
// Overrides field 4 if this is not empty. Field 4 is in the process of
// being deprecated
repeated int32 attached_enodeb_tacs = 15;
// MME relative capacity - capacity within an MME group. 8-bit
int32 mme_relative_capacity = 16;
// DEPRECATED
// Use relay_enabled instead
// bool s6a_relay_enabled = 13;
// Primary DNS server
string dns_primary = 20;
// Secondary DNS server
string dns_secondary = 21;
// Whether NAT is enabled
bool nat_enabled = 22;
// Enable relaying S6a messages via FeG RPC
bool hss_relay_enabled = 23;
// Apn Correction feature
bool enable_apn_correction = 24;
message ApnCorrectionMap {
string imsi_prefix = 1;
string apn_override = 2;
}
repeated ApnCorrectionMap apn_correction_map_list = 25;
// P_CSCF IP address configs
string ipv4_p_cscf_address = 26;
string ipv6_p_cscf_address = 27;
// IPv6 DNS server
string ipv6_dns_address = 30;
// SGW S1U endpoint on AGW
string ipv4_sgw_s1u_addr = 31;
// PLMN restriction configs
message PlmnConfig {
string mcc = 1;
string mnc = 2;
}
repeated PlmnConfig restricted_plmns = 32;
message TacList {
repeated uint32 tac = 1;
}
map<string, TacList> service_area_maps = 33;
FederatedModeMap federated_mode_map = 34;
// IMEI restriction configs
message ImeiConfig {
string tac = 1;
string snr = 2;
}
repeated ImeiConfig restricted_imeis = 35;
// MME congestion control configs
bool congestion_control_enabled = 40;
// sentry_config stores the Sentry.io configuration for this service
SentryConfig sentry_config = 45;
// Enables 5G Standalone (SA) at a network level
bool enable5g_features = 46;
// AMF Slice Service Type (SST)
string default_slice_service_type = 47;
// AMF Slice Descriptor (SD)
string default_slice_differentiator = 48;
// AMF Name
string amf_name = 50;
// AMF Region ID
string amf_region_id = 51;
// AMF Set ID
string amf_set_id = 52;
// AMF pointer
string amf_pointer = 53;
}
message FederatedModeMap {
bool enabled = 1;
repeated ModeMapItem mapping = 2;
}
message ModeMapItem {
enum FederatedMode {
SPGW_SUBSCRIBER = 0; // default mode is HSS + spgw_task
LOCAL_SUBSCRIBER = 1; // will use subscriberDb + policydb
S8_SUBSCRIBER = 2; // will use HSS (feg) + s8_task
}
FederatedMode mode = 1;
string plmn = 2;
string imsi_range = 3;
string apn = 4;
}
//------------------------------------------------------------------------------
// SubscriberDB configs
//------------------------------------------------------------------------------
message SubscriberDB {
orc8r.LogLevel log_level = 1;
// Operator configuration field for LTE
bytes lte_auth_op = 2;
// Authentication management field for LTE
bytes lte_auth_amf = 3;
message SubscriptionProfile {
// Maximum uplink bit rate (AMBR-UL)
uint64 max_ul_bit_rate = 1;
// Maximum downlink bit rate (AMBR-DL)
uint64 max_dl_bit_rate = 2;
}
map<string, SubscriptionProfile> sub_profiles = 4;
// DEPRECATED
// Enable forwarding S6a related requests to Federated GW
bool relay_enabled = 5;
// Enable relaying S6a messages via FeG RPC
bool hss_relay_enabled = 6;
// Interval in seconds between gateway and cloud sync
uint32 sync_interval = 7;
// Enables 5G Standalone (SA) at a network level
bool enable5g_features = 8;
}
//------------------------------------------------------------------------------
// LighttpD configs
//------------------------------------------------------------------------------
message LighttpD {
orc8r.LogLevel log_level = 1;
bool enable_caching = 2;
}
//------------------------------------------------------------------------------
// MonitorD configs
//------------------------------------------------------------------------------
message MonitorD {
orc8r.LogLevel log_level = 1;
int32 polling_interval = 60;
}
//------------------------------------------------------------------------------
// DPID configs
//------------------------------------------------------------------------------
message DPID {
orc8r.LogLevel log_level = 1;
}
//------------------------------------------------------------------------------
// ConnectionD configs
//------------------------------------------------------------------------------
message ConnectionD {
orc8r.LogLevel log_level = 1;
}
//------------------------------------------------------------------------------
// LIAgentD configs
//------------------------------------------------------------------------------
message LIAgentD {
orc8r.LogLevel log_level = 1;
repeated NProbeTask nprobe_tasks = 2;
}
message NProbeTask {
string task_id = 1;
string target_id = 2;
string target_type = 3;
string delivery_type = 4;
uint64 correlation_id = 5;
string domain_id = 6;
}
//------------------------------------------------------------------------------
// DnsD configs
//------------------------------------------------------------------------------
message DnsD {
orc8r.LogLevel log_level = 1;
bool enable_caching = 2;
int32 localTTL = 3;
repeated GatewayDNSConfigRecordsItems records = 4;
bool dhcp_server_enabled = 5;
}
message GatewayDNSConfigRecordsItems {
repeated string a_record = 1;
repeated string aaaa_record = 2;
repeated string cname_record = 3;
string domain = 4;
}
//----------------------------------------------------------------------------
// AgwD configs
//----------------------------------------------------------------------------
message AgwD {
enum LogLevel {
UNSET = 0;
DEBUG = 1;
INFO = 2;
WARN = 3;
ERROR = 4;
}
LogLevel log_level = 1;
string sctpd_downstream_service_target = 2;
string sctpd_upstream_service_target = 3;
string mme_sctpd_downstream_service_target = 4;
string mme_sctpd_upstream_service_target = 5;
}