Jaringan Telekomunikasi, Sukiswo ST, MT Sukiswo sukiswok@yahoo.com ASN.1 & BER Sukiswo sukiswok@yahoo.com Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT Table 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) Tags, Lengths & Values Encoding Examples Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT Overview 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) Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT ASN.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 Manajemen Jaringan, Sukiswo ST, MT
Abstract & Transfer Syntaxes Jaringan Telekomunikasi, Sukiswo ST, MT Abstract & Transfer Syntaxes Application component data transfer (e.g, TCP, OSI session) Local storage (e.g, MIB) User local mapping user presentation Abstract Syntax (e.g., ASN.1) encoding rules Transfer (e.g., BER) Manajemen Jaringan, Sukiswo ST, MT 4
Manajemen Jaringan, Sukiswo ST, MT ASN.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 <modulereference> 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. Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT Lexical 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 Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT Lexical Conventions 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 Manajemen Jaringan, Sukiswo ST, MT
Categories 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 Manajemen Jaringan, Sukiswo ST, MT
Categories of ASN.1 Data 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 Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT Classes 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 Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT ASN.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. Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT ASN.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 Manajemen Jaringan, Sukiswo ST, MT
Manajemen Jaringan, Sukiswo ST, MT ASN.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 Name: Myungdo M Hong Date of Birth: 10 August 1994 Manajemen Jaringan, Sukiswo ST, MT
ASN.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 { dateOfBirth [0] Date} Name ::= [APPLICATION 1] IMPLICIT SEQUENCE { givenName VisibleString, initial VisibleString, familyName VisibleString} EmployeeNo ::= [APPLICATION 2] IMPLICIT INTEGER Date ::= [APPLICATION 3] IMPLICIT VisibleString Manajemen Jaringan, Sukiswo ST, MT
Jaringan Telekomunikasi, Sukiswo ST, MT ASN.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”, dateOfBirth “19880329”}, { {givenName “Myungdo”, initial “M”, dateOfBirth “19940810”} } Manajemen Jaringan, Sukiswo ST, MT 4
Jaringan Telekomunikasi, Sukiswo ST, MT ASN.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 Manajemen Jaringan, Sukiswo ST, MT 4
Macro Definition Format Jaringan Telekomunikasi, Sukiswo ST, MT Macro Definition Format <macroname> MACRO ::= BEGIN TYPE NOTATION ::= <new-type-syntax> VALUE NOTATION ::= <new-value-syntax> <supporting-productions> END Manajemen Jaringan, Sukiswo ST, MT 4
Macro Definition Example Jaringan Telekomunikasi, Sukiswo ST, MT Macro 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 Manajemen Jaringan, Sukiswo ST, MT 4
Overview of BER Fields of a BER encoded ASN.1 value 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 Length Value Fields of a BER encoded ASN.1 value Manajemen Jaringan, Sukiswo ST, MT
Jaringan Telekomunikasi, Sukiswo ST, MT BER Type Field Class BIT 8 7 6 5 4 3 2 1 Constructed Most significant Least significant Tag number CLASS Bit 8 Bit 7 Description Universal Built-in types Application 1 SNMP defined types Context-Specific 1 Used in context Private 1 1 Not used in the SNMP protocol Manajemen Jaringan, Sukiswo ST, MT 4
Tag Values for SNMP Types Jaringan Telekomunikasi, Sukiswo ST, MT Tag Values for SNMP Types Type SNMPv1 protocol SNMPv2 ASN.1 Tag Tag Number Value INTEGER/Integer32 OCTET STRING NULL OBJECT IDENTIFIER SEQUENCE IpAddress Counter/Counter32 Gauge/Gauge32 TimeTicks Opaque Counter64 UNIVERSAL 2 UNIVERSAL 4 UNIVERSAL 5 UNIVERSAL 6 UNIVERSAL 16 APPLICATION 0 APPLICATION 1 APPLICATION 2 APPLICATION 3 APPLICATION 4 APPLICATION 6 0x02 0x04 0x05 0x06 0x10 0x00 0x01 0x03 0x30 0x40 0x41 0x42 0x43 0x44 0x46 Manajemen Jaringan, Sukiswo ST, MT 4
Manajemen Jaringan, Sukiswo ST, MT Encoding 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) Manajemen Jaringan, Sukiswo ST, MT
Jaringan Telekomunikasi, Sukiswo ST, MT BER Length Field two forms of length field exist: short form: specified in a single octet long form: specified in multiple octets Value = 102 1 Short(0)/Long(1) form indicator Value 1 1 1 1 1 1 Short/Long form indicator = 7559605 Length of length Length value Manajemen Jaringan, Sukiswo ST, MT 4
BER Examples - Integers Jaringan Telekomunikasi, Sukiswo ST, MT BER Examples - Integers 1 Tag Universal 2 Length 1 Value 0 What value was encoded? 1 Tag Universal 2 Length 2 Value (1 of 2) Value (2 of 2) What value was encoded? Manajemen Jaringan, Sukiswo ST, MT 4
BER Example - Octet String Jaringan Telekomunikasi, Sukiswo ST, MT BER Example - Octet String 1 Tag Universal 4 Length 4 1st octet 2nd octet 3rd octet 4th octet Overall Length = 6 Value of Octet String encoded is ‘EB069937’ Manajemen Jaringan, Sukiswo ST, MT 4
Jaringan Telekomunikasi, Sukiswo ST, MT BER Example - SEQUENCE Message ::= SEQUENCE { version INTEGER { version-1(0) }, community OCTET STRING } Given the above definition, what is the BER encoding of sampleMessage ::= { 0, ‘EB069937’h } ? Manajemen Jaringan, Sukiswo ST, MT 4
Jaringan Telekomunikasi, Sukiswo ST, MT ... and its BER encoding is 1 Value (6 of 9) OCTET STRING Value (7 of 9) OCTET STRING Value (8 of 9) OCTET STRING Value (1 of 9) integer Value (2 of 9) integer Value (3 of 9) integer Tag universal 16 Length 9 Value (4 of 9) OCTET STRING Value (5 of 9) OCTET STRING Value (9 of 9) OCTET STRING Manajemen Jaringan, Sukiswo ST, MT 4
Manajemen Jaringan, Sukiswo ST, MT Summary 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 Manajemen Jaringan, Sukiswo ST, MT