JSON API for YateUCN Configuration
YateUCN replaces the MSC/VLR, SGSN, GGSN and GMSC of a 2G network, and the MME,SGW and PGW of a 4G network.
The main request to configure a node is set_node. You will send it multiple times to an UCN server, depending on the type of node you want to configure.

ucn (MSC/VLR, SGSN, GGSN, MME, SGW, PGW)
You can use it to configure all types of settings or you can use specific requests for each features: set_diameter_node, set_mme_sgsn_node, etc.
Request: set_node
This request is used to configure a YateUCN server. It mainly configures the SS7/Diameter settings, but also access points and other information needed for the ps/eps features.
The main parameters are:

node_type: “ucn” / “stp”

ss7
- local – information about the local node (the actual YateUCN server that you are configuring). The information about the local node is organized in:
- common – common settings that will probably be used for all the subnodes. Some of this information are network settings while others are equipment specific
- vlr/sgsn/mme/pgw (only when configuring node_type ucn). You can override some of the common parameters. Ex: set a different gt for the VLR subnode.
- linksets – configure the linksets and links to the STP
- gt_route – configure the GT routes table

access_points – configure the access points that the customers are allowed to use

tunnels – configure the tunnels (GTP) used the the ps/eps service

diameter
- identities – configure local nodes
- listeners – configure the listeners
- connections – configure outgoing connections

s1ap
- common – configure common/default S1AP parameters
- listeners – configure the S1AP listeners

restart – boolean. Whether to restart now and apply settings sent in the same request or previously
{ “node_type”: “ucn” / “stp”,
“ss7”: {
“local”: {
“common”: {
“dialect”: “ITU” / “ANSI”,
“netindicator”: “national” / “reservednational” / “international”,
“pointcode”: NNN, // integer representation, range depends on dialect
“gt”: “NNNNNNNNNN”,
“ip”: [“x.x.x.x” / “xx:xx::xx”], // Local IP address for signaling protocols
“nnsf_node”: NNN, // Node Resource Index for Network Node Selection Function
“nnsf_bits”: N, // Bits used from (P)TMSI for NNSF
“ip_gtp”: “x.x.x.x” / “xx:xx::xx”, // IP address for GTP
“def_smsc”: “NNNNNNNNNN”, // optional GT to use instead of malformed SMSC
“empty_begin”: false / true / 0 / 1, // start SMS delivery with an empty TCAP Begin
},
“vlr”: { // parameters and overrides for UCN/VLR+MSC only
“nnsf_node”: NNN, // optional override
“nnsf_bits”: N, // optional override
},
“sgsn”: { // parameters and overrides for UCN/SGSN only
“nnsf_node”: NNN, // optional override
“nnsf_bits”: N, // optional override
},
“mme”: { // parameters and overrides for UCN/MME only
“identity”: {
“plmns”: [ “NNNNN”, “NNNNNN”, … ], // List of MCCMNC
“tac”: NNN,
“group”: NNN,
“code”: NN, // LTE specific nnsf_node override, must be unique per group, 0 to 255
“name”: “some-name-here”, // optional
},
},
“pgw”: { // parameters and overrides for UCN/PGW only
“ip_gtp_c”: “x.x.x.x” / “xx:xx::xx”, // IP address for GTP-C
“ip_gtp_u”: “x.x.x.x” / “xx:xx::xx”, // IP address for GTP-U
},
},
“linksets”: [
{ “type”: “MTP3” / “M3UA”,
“pointcode”: NNN, // integer representation, range depends on dialect
“route”: [ NNN, NNN, … ], // List of PCs in integer representation to route through this STP
“gt”: [ “NNNNN”, “NNNNN”, … ], // List of GT prefixes to route through this STP, can be just [ “*” ]
“ip”: [“x.x.x.x” / “xx:xx::xx”], // Remote IP address
“aspid”: NNN // only for M3UA
“contexts”: N, N, … // only for M3UA, comma separated list of context numbers
“links”: [
{ “port”: , // port on the adjacent node
“local_ip”: [] // optional local IP address
“local_port”: // optional local port number
},
// … other links if necessary
]
},
// … linkset for the second STP
],
}
“access_points”: [ // only for ucn node
{ “name”: “ap-name-without-dots”,
“tunnel”: “name-of-the-tunnel”, // must match one entry in tunnels – see below
“aliases”: “comma, separated, list, of.other.names”, // optional
“ipv”: “ipv4” / “ipv6” / “ipv4v6” / “ipv4_or_v6” / “ipv6_or_v4”,
“qos”: “xx xx xx”, // optional, 2G/3G specific, hex encoded
“qci”: N, // optional, 4G specific, 1 to 9
“ordered_delivery”: false / true / 0 / 1, // not recommended – advanced setting
“charging”: false / true / 0 / 1,
// Protocol Configuration Options
“primary_dns_ipv4”: “x.x.x.x”, // optional but likely needed
“secondary_dns_ipv4”: “x.x.x.x”, // optional
“primary_dns_ipv6”: “xx:xx::xx”, // optional but likely needed for IPv6 capable APs
“secondary_dns_ipv6”: “xx:xx::xx”, // optional
“p_cscf_ipv4”: “x.x.x.x”, // optional but likely needed for AP “ims”
“p_cscf_ipv6”: “xx:xx::xx”, // optional
“mtu_ipv4”: NNNN, // optional, 552 to 9216
“restart_cdr”:NNNNNNN, // optional, 300 to 2678400 seconds. Interval at which CDRs should be restarted for an active data session
“interim_cdr”:NNNNN // optional, 30 to 86400 seconds. Interval at which interim CDRs should be generated for an active data session
},
// … arbitrary number of APs
],
“tunnels”: [ // only for ucn node
{ “name”: “name-of-the-tunnel”,
“ipv4_gtpu_address”: “x.x.x.x”, // optional
“ipv6_gtpu_address”: “xx:xx::xx”, // optional, but at least one of them should be present
“dscp”: “normal” / “expedited” / … , // search in Socket.cpp for: // DSCP
“dscp_per_qci”: { // optional
“N”: “normal” / “expedited” / … , // N can be 1 to 9
“N”: “normal” / “expedited” / … , // can be repeated multiple times
},
// End user IP allocation pools
“pool_ipv4”: [ // optional
“x.x.x.x-x.x.x.x”,
“x.x.x.x-x.x.x.x”, // can be repeated multiple times
],
“pool_ipv6”: [ // optional
“xx:xx:xx:xx::-xx:xx:xx:xx::”, // only the upper 64 bits can be specified
“xx:xx:xx:xx::-xx:xx:xx:xx::”, // can be repeated multiple times
],
},
// … arbitrary number of tunnels
]
}
Set S1AP example:
“s1ap”: {
“common”: {
“streams”: 5
},
“listeners”: [
{
“local_ip”: “192.168.168.194”,
},
{
“local_ip”: “192.168.168.194”,
“local_port”: 36413,
“streams”: 2,
“payload”: 19,
“dscp”: “expedited”,
“sctp_params”: {
“max_retrans”: 3
}
}
]
}
Request: set_mme_sgsn_node
This request allows configuring of the MME/SGSN node of the YateUCN.
>{
“request” : “set_mme_sgsn_node”,
“node” : “ucn”,
“params” : {
// MME parameters
“identity”: {
“plmns”: [NNNNN, NNNNN, …], // Comma separated array of supported PLMNs in MCCMNC form
“group”: NNNNN, // 0 – 65535
“tac”: NNNNN, // 0 – 65535
“code”: NNN, // 0 -255
“name”: “Name_of_MME” // string
},
“integrity_algos”: “128-EIA1,128-EIA2,128-EIA3”, // Comma separated list of integrity algorithms activated for NAS
“cipher_algos”: “EEA0,128-EEA1,128-EEA2,128-EEA1”, // Comma separated list of encryption algorithms activated for NAS
“enb_cipher_algos”:”EEA0,128-EEA1,128-EEA2,128-EEA1?, // Comma separated list of encryption algorithms to announce to the ENBs
“enb_integrity_algos”:”128-EIA1,128-EIA2,128-EIA3?, // Comma separated list of integrity algorithms to announce to the ENBs
“cs_plmn”:”NNNNN”, // string, optional. PLMN Identity for CS combined attach. Defaults to selected LTE PLMN
“cs_lac”:NNNNN, // integer, 0 – 65533. Location Area Code for CS combined attach
// SGSN parameters
“nnsf_bits”: NN, // integer, 0 – 10. Number of P-TMSI bits allocated for Network Node Selection Function
“nnsf_node”: NNN, // integer, 0 – 225 when SGSN is combined with MME, 0 – (2^nnsf_bits – 1) otherwise. Node index for Network Node Selection Function
// Common MME/SGSN paramters
“restart_cdr”: NNNNNNN, // optional, 300 to 2678400 seconds. Interval at which CDRs should be restarted for an active data session
“interim_cdr”: NNNNN // optional, 30 to 86400 seconds. Interval at which interim CDRs should be generated for an active data session
“local_pdn”: true/false, // Only allow the embedded PGW to provide any PDN connectivity
“extra_params”: { // extra parameters used for configuration
“enb_cipher_algos”:”EEA0,128-EEA1,128-EEA2,128-EEA1?, // Comma separated list of encryption algorithms to announce to the ENBs
“enb_integrity_algos”:”128-EIA1,128-EIA2,128-EIA3?, // Comma separated list of integrity algorithms to announce to the ENBs
},
“gtps”:{ // configure S1 and S5 GTP interfaces
“s1”:[ // configure S1 (RAN-side) GTP interfaces. Array of GTP endpoints that are to be configured. Setting at least one GTP endpoint is mandatory
{
“name”:”ran”, // optional, name of endpoint to be created
“ipv4_gtpu_address” : “x.x.x.x”, // IPv4 address for GTP-u
“ipv4_gtpc_address” : “x.x.x.x”, // IPv4 address for GTP-c. If not provided, it will be the same address as for GTP-u
“ipv6_gtpu_address” : “xx:xx::xx”, // IPv6 address for GTP-u
“ipv6_gtpc_address” : “xx:xx::xx”, // IPv6 address for GTP-c.
“dscp” : “normal” / “expedited” / … , // search in Socket.cpp for: // DSCP
“gtpc_dscp”: “normal” / “expedited” / … , // same as DSCP, overrides “dscp” value for GTP-c
“gtpu_dscp”: “normal” / “expedited” / … // same as DSCP, overrides “dscp” value for GTP-u
},
{
… // other S1 GTP endpoint
}
],
“s5”: [ // configure S5 GTP interfaces. Array of GTP endpoints to be configured. If a remote PGW is used for PDN connectivity, at least one GTP endpoint is mandatory
{
“name”: “core”, // optional, name of endpoint to be created
“ipv4_gtpu_address” : “x.x.x.x”, // IPv4 address for GTP-u
“ipv4_gtpc_address” : “x.x.x.x”, // IPv4 address for GTP-c. If not provided, it will be the same address as for GTP-u
“ipv6_gtpu_address” : “xx:xx::xx”, // IPv6 address for GTP-u
“ipv6_gtpc_address” : “xx:xx::xx”, // IPv6 address for GTP-c.
“dscp” : “normal” / “expedited” / … , // search in Socket.cpp for: // DSCP
“gtpc_dscp”: “normal” / “expedited” / … , // same as DSCP, overrides “dscp” value for GTP-c
“gtpu_dscp”: “normal” / “expedited” / … , // same as DSCP, overrides “dscp” value for GTP-u
“gtpc_v2”:true
},
{
… // other S5 GTP endpoint
}
]
}
}
}
The same configuration can be obtained through the set_node request by putting the all parameters of the params object from the set_mme_sgsn_node in a mme_sgsn object, except for extra_params. See example below:
{
“request” : “set_node”,
“node” : “ucn”,
“params”: {
“mme_sgsn”:{
“identity”: {
“plmns”: [NNNNN, NNNNN, …],
“group”: NNNNN,
“tac”: NNNNN,
…
},
“nnsf_bits”: NN,
“nnsf_node”: NNN,
“restart_cdr”: NNNNNNN,
“interim_cdr”: NNNNN,
“local_pdn”: true/false,
“gtps”:{
“s1”:[
{
“ipv4_gtpu_address” : “x.x.x.x”,
“dscp” : “expedited”
},
{
“name”:”other”,
“ipv4_gtpu_address” : “x.x.x.x”,
“dscp” : “expedited”,
“gtpc_v2”:true
}
],
“s5”: [
{
“ipv4_gtpu_address” : “x.x.x.x”,
“ipv4_gtpc_address” : “x.x.x.x”,
“dscp” : “expedited”
}
]
}
},
“extra_params”:{
“enb_cipher_algos”:”EEA0?,
“enb_integrity_algos:””128-EIA1,128-EIA2”
}
}
}
Request: set_numbers
Only for the UCN node.
{ “type”: “roaming”/”handover”,
“numbers”: [ .. ]
}