Title: ASN'1
1ASN.1 BER
- J. Won-Ki Hong
- Dept. of Computer Science and Engineering
- POSTECH
- Tel 054-279-2244
- Email jwkhong_at_postech.ac.kr
2Table of Contents
- Abstract Syntax Notation One (ASN.1)
- Overview
- Properties Restrictions
- Type and Value Definitions
- ASN.1 Simple Types
- ASN.1 Structured Types
- ASN.1 Macro Definitions
- Basic Encoding Rules (BER)
- Overview
- Tags, Lengths Values
- Encoding Examples
3Overview of ASN.1
- a machine independent data description language
- CCITT (X.208) and ISO (ISO 8824) standard
- define abstract syntax of application data
- define the structure of application and
presentation protocol data units (PDUs) - define SNMP and OSI Management Information Base
(MIB)
4ASN.1 Terminology
- Abstract Syntax
- describes the generic structure of data
- allows data types and values to be defined
- Data Type
- a named set of values -- may be simple or
structured - Encoding
- sequence of octets used to represent a data value
- Encoding Rules
- specifies the mapping from one syntax to another
- Transfer Syntax
- describes how data are actually represented in
terms of bit patterns while in transit
5Abstract Transfer Syntaxes
6ASN.1 Module Definition
- The basic building block of an ASN.1
specification is the module - See Figure B.2 (BNF grammar for ASN.1)
- Modules have the following basic form
- ltmodulereferencegt DEFINITIONS
- BEGIN
- EXPORTS
- IMPORTS
- AssignmentList
- END
Definitions in this module that may be imported
by other modules.
Definitions that are to be imported from other
modules.
Type assignments, value assignments, and macro
definitions that are defined in this module.
7Lexical Conventions
- Comments begin with two hyphens (--) and
terminated either by another set (--) or the
end of line character - Identifiers begin with a letter, and may contain
letters, digits, and hyphens, but may not end
with a hyphen or contain two consecutive hyphens - The type identifier must start with an uppercase
letter - The value identifier must start with a lowercase
letter - Reserved keywords are all uppercase
- Multiple spaces and blank lines can be considered
as a single space
8Categories of ASN.1 Data Types
- Simple (Primitive)
- atomic types, with no components
- Structured
- types with components
- Tagged
- types derived from other types
- Other
- CHOICE and ANY types
- Every ASN.1 data type, with the exception of
CHOICE and ANY types, has an associated TAG,
which consists of a class name and nonnegative
integer tag number
9Classes of TAG
- UNIVERSAL
- Built-in types, application independent types
- See Table B.2
- APPLICATION
- Application specific types
- CONTEXT-SPECIFIC
- limited to a context within an application
- PRIVATE
- defined by users and not covered by any standard
10ASN.1 Simple Types
- INTEGER
- the positive and negative whole numbers,
including zero - OCTET STRING
- a sequence of zero or more octets (8-bit bytes)
- OBJECT IDENTIFIER (OID)
- the set of values associated with information
objects allocated by the standard - NULL
- the single value NULL
- Other ASN.1 simple types include boolean, bit
string, real, enumerated, PrintableString, etc.
11ASN.1 Structured Types
- SET
- a collection of one or more types
- SET OF
- a collection of zero or more occurrences of a
given type - SEQUENCE
- an ordered collection of one or more types
- SEQUENCE OF
- an ordered collection of zero or more occurrences
of a given type - CHOICE
- a list of alternatives
12ASN.1 Example
Informal Description of Personnel Record
- Name James W Hong
- Title Associate Professor
- Employee Number 20292
- Date of Hire May 26, 1995
- Name of Spouse In-Young B Hong
- Number of Children 2
- Child Information
- Name Suk D Hong
- Date of Birth 29 March 1988
- Child Information
- Name Myungdo M Hong
- Date of Birth 10 August 1994
13ASN.1 Description of the Record Structure
- PersonalRecord APPLICATION 0 IMPLICIT SET
- Name,
- title 0 VisibleString,
- number EmployeeNo,
- dateOfHire 1 Date,
- nameOfSpouse 2 Name,
- children 3 IMPLICIT SEQUENCE OF ChildInfo
- DEFAULT
- ChildInfo SET
- Name,
- dateOfBirth 0 Date
- Name APPLICATION 1 IMPLICIT SEQUENCE
- givenName VisibleString,
- initial VisibleString,
- familyName VisibleString
- EmployeeNo APPLICATION 2 IMPLICIT INTEGER
14ASN.1 Description of a Record Value
- givenName James, initial W,
familyName Hong, - title Associate Professor
- number 20292
- dateOfHire 19950526
- nameOfSpouse givenName In-Young, initial
B, - familyName Hong,
- children
- givenName Suk, initial D,
- familyName Hong,
- dateOfBirth 19880329,
- givenName Myungdo, initial M,
- familyName Hong,
- dateOfBirth 19940810
-
15ASN.1 Macro Definitions
- ASN.1 macro notation can be used to extend the
syntax of ASN.1 to define new types and values - a macro definition is expressed in the macro
notation and used to define a set of macro
instances - a macro instance is generated from a macro
definition by substituting values for variables - the macro is used to extend the ASN.1 syntax but
does not extend the encoding
16Macro Definition Format
- ltmacronamegt MACRO
- BEGIN
- TYPE NOTATION ltnew-type-syntaxgt
- VALUE NOTATION ltnew-value-syntaxgt
- ltsupporting-productionsgt
- END
17Macro Definition Example
- OBJECT-TYPE MACRO
- BEGIN
- TYPE NOTATION SYNTAX type (TYPE
ObjectSyntax) - ACCESS Access
- STATUS Status
- VALUE NOTATION value (VALUE ObjectName)
- Access read-only read-write
write-only - not-accessible
- Status mandatory optional
obsolete - END
18Overview of BER
- BER Basic Encoding Rules
- an encoding specification
- CCITT (X.209) and ISO (ISO 8825) standard
- describes a method for encoding values of each
ASN.1 type as a string of octets - based on the use of a type-length-value (TLV)
structure
Type
Value
Length
Fields of a BER encoded ASN.1 value
19BER Type Field
Class
1
2
3
4
5
6
7
8
BIT
Constructed
Most significant
Least significant
Tag number
Description
CLASS
Bit 8
Bit 7
0
Built-in types
0
Universal
SNMP defined types
1
0
Application
Context-Specific
1
0
Used in context
1
Private
1
Not used in the SNMP protocol
20Tag Values for SNMP Types
Tag Number
Tag Value
SNMPv1 protocol
SNMPv2 protocol
ASN.1 Tag
Type
UNIVERSAL 2
INTEGER/Integer32
0x02
0x02
0x04
0x04
UNIVERSAL 4
OCTET STRING
0x05
0x05
UNIVERSAL 5
NULL
OBJECT IDENTIFIER
UNIVERSAL 6
0x06
0x06
SEQUENCE
0x10
0x30
UNIVERSAL 16
IpAddress
APPLICATION 0
0x00
0x40
Counter/Counter32
0x01
0x41
APPLICATION 1
Gauge/Gauge32
0x42
0x02
APPLICATION 2
TimeTicks
APPLICATION 3
0x03
0x43
Opaque
0x04
0x44
APPLICATION 4
Counter64
APPLICATION 6
0x06
0x46
21Encoding Methods
- The TLV structure is recursive for any ASN.1
value that consists of one or more components,
the value portion of its TLV encoding itself
consists of one or more TLV structures - Three methods for encoding an ASN.1 value
- Primitive, definite-length encoding
- Constructed, definite-length encoding
- Constructed, indefinite-length encoding
- The method chosen depends on the ASN.1 type of
the value to be encoded and whether or not the
length of the value is known based on the type
(see Table B.4)
22BER Length Field
- two forms of length field exist
- short form specified in a single octet
- long form specified in multiple octets
1
0
0
0
0
1
0
1
Value
Short/Long form indicator
7559605
Length of length
Length value
23BER Examples - Integers
24BER Example - Octet String
Value of Octet String encoded is EB069937
25BER Example - SEQUENCE
- Message SEQUENCE
- version INTEGER version-1(0) ,
- community OCTET STRING
-
- Given the above definition,
- what is the BER encoding of
- sampleMessage 0, EB069937h ?
26... and its BER encoding is
27Summary
- We have covered a subset of ASN.1 and BER which
are used in SNMP and OSI Management Frameworks - ASN.1 is widely used in defining application data
and protocol data units - BER is widely used in defining transfer syntaxes
- READ
- Stallings, SNMP, SNMPv2, SNMPv3 and RMON 1 and 2,
3rd Edition, Addison-Wesley, Appendix B