decode_3gpp_access_network_info

The decode_3gpp_access_network_info operation decodes the Access-Network-Information AVP value as defined in RFC-7315 and 3GPP TS 24.229.

Access-Network-Information Fields

You must specify a <prefix> in answers to the decode_3gpp_access_network_info create_config.info questions. The name of the input field <prefix>Info must end with Info. For example, in the following selective update, the input field is AccessNetworkInfo. The <prefix> is AccessNetwork.

SelectiveUpdate:DiameterGateway:Input:Element <element>:Operation <op>:Decode3gppAccessNetworkInfo:What is the field's name?<selection>:AccessNetworkInfo

Note: MtxDiamAccessNetworkData is a pre-defined MDC containing fields necessary for decode_3gpp_access_network_info, with:
  • input field = AccessNetworkInfo
  • output fields = AccessNetwork<suffix>
Access-Network-Information AVP Fields lists the Access-Network-Information fields for decode_3gpp_access_network_info decoding. The fields are set if they are listed.
Table 1. Access-Network-Information AVP Fields
Field Type Description
<prefix>InfoAsString String Copies the BLOB field to a STRING field up to the first null character or if none found. Adds one to the end of the BLOB.
<prefix>Type String This is the access-type / access-class field from the Diameter 3GPP-Access-Network-Information AVP. The following access-type values are supported:
  • 3GPP-UTRAN-FDD
  • 3GPP-UTRAN-TDD
  • 3GPP-E-UTRAN-FDD
  • 3GPP-E-UTRAN-TDD
  • 3GPP-E-UTRAN-ProSe-UNR
  • 3GPP-GERAN
  • 3GPP-NR-FDD
  • 3GPP-NR-TDD

For more information, see Access Type Concatenation and Access Class Concatenation.

<prefix>InfoType String This is the access-info field from the Diameter 3GPP-Access-Network-Information AVP.
<prefix>MccMnc String This is the combined MCC and MNC fields from the Diameter 3GPP-Access-Network-Information AVP.
<prefix>Mcc Unsigned int32 This is the MCC field from the Diameter 3GPP-Access-Network-Information AVP.
<prefix>MccAsString String This is the MCC field from the Diameter 3GPP-Access-Network-Information AVP.
<prefix>Mnc Unsigned int32 This is the MNC field from the Diameter 3GPP-Access-Network-Information AVP.
<prefix>MncAsString String This is the MNC field from the Diameter 3GPP-Access-Network-Information AVP.
<prefix>Tac Unsigned int32 This is the TAC (Tracking Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. For example, 36863.
<prefix>TacAsDecimalAsciiString String This is the TAC (Tracking Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. This is the value as a decimal number encoded as an ASCII string. This is a decimal ASCII string. For example, "36863".
<prefix>TacAsString String This is the TAC (Tracking Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. This is copied from the AccessNetworkInfo field with no interpretation of the data. This is a hexadecimal ASCII string. For example, "8fff".
<prefix>Eci Unsigned int64 This is the ECI (E-UTRAN Cell Identifier) field from the Diameter 3GPP-Access-Network-Information AVP. For example, 155198.
<prefix>EciAsDecimalAsciiString String This is the ECI (E-UTRAN Cell Identifier) field from the Diameter 3GPP-Access-Network-Information AVP. Converts ASCII Decimal to String. This is the value as a decimal number encoded as an ASCII string. For example, "155198".
<prefix>EciAsString String This is the ECI (E-UTRAN Cell Identifier) field from the Diameter 3GPP-Access-Network-Information AVP. This is copied from the AccessNetworkInfo field with no interpretation of the data. This is a hexadecimal ASCII string. For example, "0025e3e".
<prefix>ENodeB Unsigned int64 This is the eNodeB of the ECI (E-UTRAN Cell Identifier) field from the Diameter 3GPP-Access-Network-Information AVP. This is ECI >> 8. For example, 606.
<prefix>ENodeBAsDecimalAsciiString String This is the eNodeB of the ECI (E-UTRAN Cell Identifier) field from the Diameter 3GPP-Access-Network-Information AVP. This is ECI >> 8. Converts ASCII Decimal to String. This is the value as a decimal number encoded as an ASCII string. For example, "606".
<prefix>ENodeBAsString String This is the eNodeB of the ECI (E-UTRAN Cell Identifier) field from the Diameter 3GPP-Access-Network-Information AVP. This is ECI >> 8. This is copied from the AccessNetworkInfo field with no interpretation of the data. This is a hexadecimal ASCII string. For example, "0025e".
<prefix>Lac Unsigned int32 This is the LAC (Location Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. For example: 10702.
<prefix>LacAsDecimalAsciiString String This is the LAC (Location Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. This is the <prefix>Lac field value as a decimal number encoded as an ASCII string. For example: "10702".
<prefix>LacAsString String This is the LAC (Location Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. This is copied from the AccessNetworkInfo field with no interpretation of the data. For example: "29CE".
<prefix>Nci Unsigned int64 This is the NCI (NR Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. For example: 6037.
<prefix>NciAsDecimalAsciiString String This is the NCI (NR Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. This is the <prefix>Nci field value as a decimal number encoded as an ASCII string. For example: "6037".
<prefix>NciAsString String This is the NCI (NR Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. This is copied from the AccessNetworkInfo field with no interpretation of the data. For example: "1795".
<prefix>UmtsCi Unsigned int64 This is the UMTS CI (UMTS Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. For example: 176803839.
<prefix>UmtsCiAsDecimalAsciiString String This is the UMTS CI (UMTS Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. This is the <prefix>UmtsCi field value as a decimal number encoded as an ASCII string. For example: "176803839".
<prefix>UmtsCiAsString String This is the UMTS CI (UMTS Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. This is copied from the AccessNetworkInfo field with no interpretation of the data. For example: "A89CFFF".
<prefix>Ci Unsigned int32 This is the CI (Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. For example: 486.
<prefix>CiAsDecimalAsciiString String This is the CI (Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. This is the <prefix>Ci field value as a decimal number encoded as an ASCII string. For example: "486".
<prefix>CiAsString String This is the CI (Cell Identity) field from the Diameter 3GPP-Access-Network-Information AVP. This is copied from the AccessNetworkInfo field with no interpretation of the data. For example: "01e6".
<prefix>Sac Unsigned int32 This is the Sac (Service Area Code) field from the Diameter 3GPP-Access-Network-Information AVP.
<prefix>SacAsString String This is the Sac (Service Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. This is the <prefix>Sac field value as a decimal number encoded as an ASCII string.
<prefix>SacAsDecimalAsciiString String This is the Sac (Service Area Code) field from the Diameter 3GPP-Access-Network-Information AVP. This is copied from the AccessNetworkInfo field with no interpretation of the data.

Message Types

The message types include:
  • 3GPP2
  • 3GPP2-1X
  • 3GPP2-1X-Femto
  • 3GPP2-1X-HRPD
  • 3GPP2-UMB
  • 3GPP-E-UTRAN
  • 3GPP-E-UTRAN-FDD
  • 3GPP-E-UTRAN-ProSe-UNR
  • 3GPP-E-UTRAN-TDD
  • 3GPP-GAN
  • 3GPP-GERAN
  • 3GPP-HSPA
  • 3GPP-NR
  • 3GPP-NR-FDD
  • 3GPP-NR-TDD
  • 3GPP-UTRAN
  • 3GPP-UTRAN-FDD
  • 3GPP-UTRAN-TDD
  • 3GPP-WLAN
  • ADSL
  • ADSL2
  • ADSL2+
  • DOCSIS
  • DVB-RCS2
  • GPON
  • G.SHDSL
  • GSTN
  • HDSL
  • HDSL2
  • IDSL
  • IEEE-802.11
  • IEEE-802.11a
  • IEEE-802.11b
  • IEEE-802.11g
  • IEEE-802.11n
  • IEEE-802.3
  • IEEE-802.3a
  • IEEE-802.3ab
  • IEEE-802.3ae
  • IEEE-802.3ah
  • IEEE-802.3ak
  • IEEE-802.3an
  • IEEE-802.3aq
  • IEEE-802.3e
  • IEEE-802.3i
  • IEEE-802.3j
  • IEEE-802.3u
  • IEEE-802.3y
  • IEEE-802.3z
  • RADSL
  • SDSL
  • untrusted-non-3GPP-VIRTUAL-EPC
  • VDSL
  • VIRTUAL-no-PS
  • WLAN-no-PS
  • xDSL
  • XGPON1

The 3gppAccessNetworkInfo field includes values such as the utran-cell-id-3gpp parameter and can be decoded to add individual values in specific fields. The string value is defined to be a semi-colon (;) separated list of keyword expressions. A keyword expression can be a keyword or it can be keyword=value. The first keyword in the string is called the message type. Each keyword that has a value can be mapped to an MDC field of a STRING type. Each keyword that does not have a value can be mapped to an MDC field of a BOOL type.

If the string is 3GPP-E-UTRAN-FDD;utran-cell-id-3gpp=3114809000002583e;network-provided, then:
  • The message type is 3GPP-E-UTRAN-FDD.
  • The keyword utran-cell-id-3gpp has a value 3114809000002583e.
  • The keyword network-provided does not have a value.
Example Field Results lists the results for the example BLOB, 3GPP-E-UTRAN-FDD;utran-cell-id-3gpp=3114809000002583e.
Table 2. Example Field Results
Field Type Result
<prefix>InfoAsString String 3GPP-E-UTRAN-FDD;utran-cell-id-3gpp=3114809000002583e
<prefix>Type String 3GPP-E-UTRAN-FDD
<prefix>InfoType String utran-cell-id-3gpp
<prefix>MccMnc String 311480
<prefix>Mcc Unsigned int32 311
<prefix>MccAsString String 311
<prefix>Mnc Unsigned int32 480
<prefix>MncAsString String 480
<prefix>Tac Unsigned int32 36864
<prefix>TacAsString String 9000
<prefix>Eci Unsigned int64 153662
<prefix>EciAsString String 002583e
<prefix>ENodeB Unsigned int64 600 (This is ECI >> 8.)
<prefix>ENodeBAsString String 00258 (This is ECI >> 8.)

Access Type Concatenation

The code looks for the specified parameter name based upon the access type and decodes its value. The format of the parameter name values is defined in 3GPP TS 24.229 and differs based upon the access-type / access-class field. Access Type Concatenation describes how concatenation is determined according to the access-type.
Table 3. Access Type Concatenation
Access Type Parameter Name Concatenation
3GPP-UTRAN-FDD utran-cell-id-3gpp MCC,MNC,LAC,UMTS_CI
3GPP-UTRAN-TDD utran-cell-id-3gpp MCC,MNC,LAC,UMTS_CI
3GPP-E-UTRAN-FDD utran-cell-id-3gpp MCC,MNC,TAC,ECI
3GPP-E-UTRAN-TDD utran-cell-id-3gpp MCC,MNC,TAC,ECI
3GPP-E-UTRAN-ProSe-UNR utran-cell-id-3gpp MCC,MNC,ECI
3GPP-NR-FDD utran-cell-id-3gpp MCC,MNC,TAC6,NCI
3GPP-NR-TDD utran-cell-id-3gpp MCC,MNC,TAC6,NCI
3GPP-GERAN cgi-3gpp MCC,MNC,LAC,CI
3GPP-UTRAN-FDD utran-sai-3gpp MCC, MNC,LAC,SAC
3GPP-UTRAN utran-sai-3gpp MCC, MNC,LAC,SAC
3GPP-HSPA utran-sai-3gpp MCC, MNC,LAC,SAC

Access Class Concatenation

Access Class Concatenation describes how concatenation is determined according to the access-class.
Table 4. Access Class Concatenation
Access Type Parameter Name Concatenation
3GPP-E-UTRAN utran-cell-id-3gpp MCC,MNC,TAC,ECI
3GPP-NR utran-cell-id-3gpp MCC,MNC,TAC6,NCI

Access Type Parts

Access Type Parts describes the parts concatenated in Access Type Concatenation and Access Class Concatenation. Each part in a concatenation has 1 or 2 possible number of digits. For example, MCC has 3 decimal digits and MNC has 2 or 3 decimal digits.
Table 5. Access Type Parts
Name # of Digits
MCC 3 decimal digits
MNC 2 or 3 decimal digits
LAC (Location Area Code) 4 hexadecimal digits
UMTS_CI (UMTS Cell Identity) 7 hexadecimal digits
TAC (Tracking Area Code) 4 or 6 hexadecimal digits
TAC6 (TAC - Tracking Area Code) 6 hexadecimal digits
ECI (E-UTRAN Cell Identity) 7 hexadecimal digits
NCI (NR Cell Identity 9 hexadecimal digits
CI (Cell Identity) 4 hexadecimal digits
SAC (Service Area Code) 4 hexadecimal digits

Total Digits

Depending on which parts are in a concatenation and their number of digits, an access type can have multiple possible total digits. For example, 3GPP-NR-FDD Concatenation Total Digits Example shows some possible total digit values for the concatenation of 3GPP-NR-FDD.
Table 6. 3GPP-NR-FDD Concatenation Total Digits Example
Part Total Digits
MCC — 3 digits MCC — 3 digits
MNC — 2 or 3 digits MCC,MNC — 5 or 6 digits
TAC6 — 6 digits MCC,MNC,TAC6 — 11 or 12 digits
NCI — 9 digits MCC,MNC,TAC6,NCI — 20 or 21 digits

Keywords and Field Names

Keywords and Field Names lists the defined keywords and their associated fields.
Table 7. Keywords and Field Names
Keyword Field Name
cgi-3gpp AccessNetworkCgi3gpp
ci-3gpp2 AccessNetworkCi3gpp2
ci-3gpp2-femto AccessNetworkCi3gpp2Femto
dsl-location AccessNetworkDslLocation
dvb-rcs2-node-id AccessNetworkDvbRcs2NodeId
eth-location AccessNetworkEthLocation
fiber-location AccessNetworkFiberLocation
gstn-location AccessNetworkGstnLocation
i-wlan-node-id AccessNetworkIWlanNodeId
local-time-zone AccessNetworkLocalTimeZone
network-provided AccessNetworkNetworkProvided
operator-specific-GI AccessNetworkOperatorSpecificGeographicalId
orig-utran-cid AccessNetworkSourceUtranCellId
ue-ip AccessNetworkUeIpAddress
ue-port AccessNetworkUePort
utran-cell-id-3gpp AccessNetworkUtranCellId3gpp
utran-sai-3gpp AccessNetworkUtranSai3gpp

Each message type can have its own list of keywords and it can also copy the keywords of a previously-defined message type. A message type of "common" has been defined and all the keywords have been defined in the "common" message type. All other message types copy the "common" message type.

You can add and delete keywords and add, delete, and modify the message types with create_config.py. Answer y to the following question and then answer the remaining questions:
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to modify this parser (y/n)?y 

Answers to the following questions specify new keywords for a given message type, whose contents are to be copied into fields with the naming convention <prefix><suffix>:

SelectiveUpdate:Parser:3gppAccessNetworkInfo:Add:<new message type>:What keywords and their field name suffixes do you want to add?<keyword1>,<suffix1>;<keyword2>,<suffix2>

SelectiveUpdate:Parser:3gppAccessNetworkInfo:Modify:<message type>:What keywords and their field name suffixes do you want to add?<keyword1>,<suffix1>;<keyword2>,<suffix2>

For example:
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to modify this parser (y/n)?y
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to allow a missing cell ID (y/n)?y
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to ignore parsing errors (y/n)?y
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to ignore unknown message types and keywords (y/n)?y
SelectiveUpdate:Parser:3gppAccessNetworkInfo:What message types do you want to delete?3GPP2-1X-Femto;3GPP-GAN
SelectiveUpdate:Parser:3gppAccessNetworkInfo:What message types do you want to modify?common;3GPP-E-UTRAN
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Modify:common:What keywords do you want to delete?dsl-location
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Modify:common:What keywords and their field name suffixes do you want to add?man,Man;woman,Woman
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Modify:3GPP-E-UTRAN:What keywords do you want to delete?
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Modify:3GPP-E-UTRAN:What keywords and their field name suffixes do you want to add?dog,Dog;cat,Cat
SelectiveUpdate:Parser:3gppAccessNetworkInfo:What message types do you want to add?5GPP;6GPP
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Add:5GPP:What existing message type do you want copy?common
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Add:5GPP:What keywords and their field name suffixes do you want to add?mouse,Mouse;snake,Snake
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Add:6GPP:What existing message type do you want copy?common
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Add:6GPP:What keywords and their field name suffixes do you want to add?lion,Lion;tiger,Tiger 
For example, to add the keyword daylight-saving-time as a STRING, configure the selective update as follows:
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Modify:3GPP-E-UTRAN:What keywords and their field name suffixes do you want to add?daylight-saving-time,Extra1AsString
When you add a new keyword,fieldname, the selective update parser looks for AccessNetworkFieldName in the MDC to store the field value. The MtxDiamAccessNetworkData MDC has the following spare fields that you can use when adding keywords:
Field Name Type
AccessNetworkExtra1AsDecimal DECIMAL
AccessNetworkExtra1AsInt32 INT32
AccessNetworkExtra1AsInt64 INT64
AccessNetworkExtra1AsString STRING
AccessNetworkExtra1AsUInt32 UINT32
AccessNetworkExtra1AsUInt64 UINT64
AccessNetworkExtra1Bool BOOLEAN
AccessNetworkExtra2AsDecimal DECIMAL
AccessNetworkExtra2AsInt32 INT32
AccessNetworkExtra2AsInt64 INT64
AccessNetworkExtra2AsString STRING
AccessNetworkExtra2AsUInt32 UINT32
AccessNetworkExtra2AsUInt64 UINT64
AccessNetworkExtra2Bool BOOLEAN

In these fields, the <suffix> is Extra1AsDecimal, Extra1AsInt32, and so forth.

Important: Decoding more than once into the same output field causes the following error to be logged and decoding to fail:
DataContainer::set: Field is already set. Multiple sets are not allowed. Descriptor=<MDC>, Field key=<Key>

Parsing Configuration

You can configure MATRIXX to accept a message with an empty cell ID by answering y to the following questions:
  • SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to modify this parser (y/n)?y 
  • SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to allow a missing cell ID (y/n)?y
If the inbound message into Diameter Gateway has a message type that is unknown or a keyword within a type that is unknown, the gateway returns an error. Answer y to the following question to ignore unrecognized types or keywords.
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to ignore unknown message types and keywords (y/n)?
To ignore all Diameter Gateway parsing errors, answer y to the following question:
SelectiveUpdate:Parser:3gppAccessNetworkInfo:Do you want to ignore parsing errors (y/n)?

If the output field(s) do not exist in the MDC, an error is logged and decoding continues. For example:

MdcSelectiveUpdateParser::setFieldKeys: Unable to create a field key for <prefix><suffix>. Passed field name=<prefix>Info, expected suffix=Info, replacing suffix=<suffix>. MDC Descriptor name=<MDC>
Output fields must be on the same hierarchical level. For example:
Container:
    <prefix>Info
    <prefix>InfoAsString
    <prefix>Type
    ... 
    <prefix>NewField
You cannot decode into an extended NewField such as this:
Container:
    <prefix>NewField
Base Container:
    <prefix>Info
    <prefix>InfoAsString
    <prefix>Type
    ...