ASN.1 - The application layer enables specific applications to use the communications subsystems provided by the lower layers. Telcordia’s DC/SOE recommends that the ISO Abstract Syntax Notation One (ASN.1) and the Basic Encoding Rules (BER) be used as the data representation and the data transfer syntax protocols. ASN.1 has no executable statements. Its single function is to define abstract syntaxes only, including the language constructs necessary to define types and values. ASN.1 describes data in a machine- independent manner; this means that there is no dependency on machine architecture (e.g.,16-bit versus 32-bit, etc.). Since ASN.1 is a formal description language, there exists a grammar that defines the rules used to create descriptions. There are no restrictions on the transfer syntax used to represent the values from an abstract syntax defined using ASN.1. Section 3.4.9 lists the ASN.1 message syntax of the message exchanged between the SMS/800 and SCPs.
BER - BER is defined for ASN.1 so that data can be unambiguously transmitted. BER is specified in ISO 8825 and CCITT X.209. BER defines a transfer syntax, containing the rules for encoding values of many different types. BER is sometimes referred to as type- length-value (tlv) encoding.
R8-1
[15] ISO Abstract Syntax Notation One (ASN.1) and Basic Encoding Rules (BER) shall be used as the data representation and data transfer syntax protocol.
Figure 8-1. ASN.1 / BER Process - N/A
Figure 8-2. BER Process
8.1 ASN.1 Message Transfer Syntax
The following ASN.1 message syntax defines the transfer syntax of the messages exchanged between SMS/800 and the SCPs. Each message begins with a header (sequence Y1T1iHdr) as defined by the sequence Y1DcmMsg. Depending on the message code in the Y1T1iHdr, the data application OCTET STRING (data Appl) contains different types of ASN.1 encoded data messages. The following message codes will be supported:
- messageCode==mcommgdy(1), the dataAppl contains nothing
- messageCode==mcommgnt(5), the dataAppl contains nothing
- messageCode==mcommbye(6), the dataAppl contains nothing
- messageCode==mcommerror(9), the dataAppl contains nothing
- messageCode==mUpl(19), the dataAppl contains sequence Y1Upl
Arrangements can be made to eMail the following source ASN.1 code to each SCP user. Note: Embedded in the ASN.1 definitions, are numerous ASN.1 comments. A comment can be identified by the double-dash (--) preceding it. The following example with brief description was extracted from the proposed Y1T1iHdr sequence:
desNodeName OCTET STRING,--CMAP nts char [50]
-The comment begins with the double-dash (--)
-CMAP-This is a signal to ASN.1 compiler to translate the BER OCTET STRING into a ‘C’ data type using the following ‘C’ attributes:
a. nts-actual length of the field could be shorter than maximum length specified by the char[50].
b. char [50]-only up to 50 bytes are allowed in the OCTET STRING.
8.1.1 ASN.1/TCP/IP General Message Format (YIDcmMsg SEQUENCE)
Sequence Y1DcmMsg is the general format of all ASN.1/TCP/IP messages used by the SMS/800. The following is a listing of the proposed encoding:
Y1DcmMsg::=SEQUENCE
{ t1iHdr |
Y1T1iHdr, |
--SMS/800 message Header |
dataAppl |
OCTET STRING |
--encoding application data defined by messageCode |
}
NOTE: YIDcmMsg is always used to encode/decode all SR-4959 TCP messages. For Good Day, Good Night, Good Bye and Error messages, the dataAppl portion will be OCTETS with zero-length in BER.
8.1.2 SMS/800 Transport Header (Y1T1iHdr SEQUENCE)
Y1T1iHdr::=SEQUENCE
{
version INTEGER
{
dcmver(1) --See Note 1
},
priority INTEGER --future usage
messageId OCTET STRING, --CMAP nts char[11]
destNodeName OCTET STRING, --See Note 2
srcNodeName OCTET STRING, --See Note 3
errorCode ErrorCode, --See Note 4
messageCode INTEGER --SMS/800 Message Names
{
mcommgdy(1), --See Note 5
mcommgnt(5), --See Note 6
mcommbye(6), --See Note 7
mcommerror(9), --See Note 8
mUPL(19), --See Note 9
}
} --End of Y1T1iHdr
ErrorCode::=INTEGER--See Note 4
{
mNo Error(0),
mbadSource(1),
mbadDestination(2),
mbadVersion(3),
mcommerror(9)
}
Notes for Y1T1iHdr SEQUENCE:
- This is the SMS/800 message header version number and the allowed value is one (1).
- The receiver of this Y1DcmMsg message (--CMAP nts char[50]).
- The sender of this Y1DcmMsg message (--CMAP nts char[50]).
- Return an error code for an invalid message head
- This is a Good Day message (i.e., connect request) and has no dataAppl.
- This is a Good Night message (i.e., process shutdown notice) and has no dataAppl.
- This is a Good Bye message (i.e., disconnect request) and has no dataAppl.
- An invalid Y1T1iHdr has been received (no dataAppl). See errorCode for details.
- This Y1DcmMdataAppl contains the ASN.1 encoded Y1Upl message.
8.1.3 Transfer Syntax of the ASN.1 UPL Header/UPL Message
The following ASN.1 message syntax defines the transfer syntax of the UPL Header/UPL Message exchanged between the SMS/800 and the SCPs. Each message begins with the header (sequence Y1T1iHDR) as defined by sequence Y1DcmMsg. Depending on the message (i.e., messageCode) in the Y1T1iHdr, the application message (i.e., dataAppl OCTET STRING) contains different types of ASN.1 encoded data messages.
For example:messageCode==mUpl(19)
The dataAppl OCTET STRING of Y1DcmMsg sequence contains Y1Upl sequence.
YlUpl::=SEQUENCE--SMS/800 UPL Header/UPL Message without segmentation
{
uplHeader OCTET STRING, --CMAP char[27] i.e., UPL header data
upl OCTET STRING -- UPL data
}