Download presentation
Presentation is loading. Please wait.
Published byScarlett Ross Modified over 8 years ago
1
Abstract Syntax Notation One ASN.1
2
Abstract Syntax Notation One Both the information and communications models need to be specified syntactically and semantically. This requires a language that specifies the management protocol in the application layer. This is where Abstract Syntax Notation One (ASN.1) plays a role. ASN.1 is actually more than a syntax; it’s a language that addresses both syntax and semantics Two type of syntax Abstract syntax: set of rules that specify data type and structure for information storage Transfer syntax: set of rules for communicating information between systems ASN.1 is based on the Backus system and uses the formal syntax and grammar of the Backus-Nauer Form (BNF)
3
Backus-Nauer Form (BNF) Definition: ::= Rules: ::= 0|1|2|3|4|5|6|7|8|9 ::= | ::= +|-|x|/ ::= | | Example: 9 is primitive 9 19 is construct of 1 and 9 619 is construct of 6 and 19 (Production)
4
Data Type and Value Assignments ::= BOOLEAN ::= TRUE | FALSE Primitive ASN.1 data types in SNMPv1 INTEGER OCTET STRING OBJECT IDENTIFIER NULL All in Capital letters keywords
5
Type and Value Assignments
6
ASN.1 Data Types Basic Types BOOLEAN, INTEGER, BIT STRING, OCTET STRING, NULL, OBJECT IDENTIFIER, REAL, ENUMERATED, NumericString, PrintableString, IA5String, UTCTime, GeneralizedTime, CharacterString Constructed Types CHOICE SEQUENCE, SEQUENCE OF SET, SET OF
7
Example Married ::= BOOLEAN Age ::= INTEGER Picture ::= BIT STRING Form ::= SEQUENCE { name PrintableString, age Age, married Married, marriage-certificate Picture }
8
Example Payment-method ::= CHOICE { check Check-number, credit-card SEQUENCE { number Card-number, expiry-date Date }
9
Data Type: Example 1 PSET PersonnelRecord ::= SET {Name, titleGraphicString, division CHOICE { marketing[0]SEQUENCE {Sector, Country}, research[1]CHOICE {product-based[0]NULL, basic[1]NULL}, production[2]SEQUENCE {Product-line, Country} } Tag
10
Data Type: Example 2 Trade-message ::= SEQUENCE {invoice-noINTEGER, nameGraphicString, detailsSEQUENCE OF SEQUENCE {part-noINTEGER, quantityINTEGER }, charge REAL, authenticator Security-Type }
11
ASN.1 Module ASN.1 module is a group of assignments person-name Person-Name ::= { first "John", middle "I", last "Smith" } pperson-name module name PPerson-name module
12
Module DEFINITIONS ::= BEGIN ::= … ::= END
13
ASN.1 Keyword Examples CHOICE List of alternatives SEQUENCE Ordered list maker SEQUENCE OF Ordered array of repetitive data SET Unordered list maker SET OF Unordered list of repetitive data INTEGER Any negative or non-negative number NULL A placeholder OCTET STRING String of octets (8-bit bytes) OBJECT IDENTIFIER A sequence of non-negative numbers to uniquely identify an object
14
ASN.1 Symbols SymbolMeaning ::= ::= Defined as | | or, alternative, options of a list - - Signed number -- -- Following the symbol are comments {} {} Start and end of a list [] [] Start and end of a tag () () Start and end of subtype.... Range
15
ASN.1 Data Type Conventions Data Types Convention Example Object nameInitial lowercase lettersysDescr, etherStatsPkts Application data type Initial uppercase letterCounter, IpAddress ModuleInitial uppercase letterPersonnelRecord Macro, MIB moduleAll uppercase lettersRMON-MIB KeywordsAll uppercase lettersINTEGER, BEGIN
16
Data Type: Structure & Tag Structure defines how data type is built Tag uniquely identifies the data type
17
Structure Simple PageNumber ::= INTEGER ChapterNumber ::= INTEGER Structured / Construct BookPageNumber ::= SEQUENCE {ChapterNumber, Separator, PageNumber} Tagged Derived from another type; given a new ID In Fig. 3-14, INTEGER is either universal or application specific Other CHOICE, ANY
18
Structured Type SEQUENCE Ordered list maker SEQUENCE OF Ordered array of repetitive data SET Unordered list maker SET OF Unordered list of repetitive data
19
Tag Tag uniquely identifies a data type classtag Comprises class and tag number Class: Universal Universal - always true Application Application - only in the application used Context-specific Context-specific - specific context in application Private Private - used extensively by commercial vendors
20
Tag Examples BOOLEANUniversal 1 INTEGERUniversal 2 PageNumber[APPLICATION 3] product-based Context-specific under research [0] Counter ::= [APPLICATION 1] INTEGER (0..4294967295)
21
Object Name internet OBJECT IDENTIFIER ::= { iso(1) org(3) dod(6) internet(1) } private OBJECT IDENTIFIER ::= { internet 4 } The object identifier (OID) of internet is 1.3.6.1 The object identifier (OID) of private is 1.3.6.1.4
22
Enumerated Integer IpRouteType ::= INTEGER { other(1), invalid(2), direct(3), indirect(4) }
23
Subtype PageNum ::= INTEGER (0..255) Desc ::= NameDisplayString (SIZE (0..255)) MacAddress ::= OCTET STRING (SIZE (6))
24
Name:John P Smith Title:Director Employee Number51 Date of Hire:17 September 1971 Name of Spouse;Mary T Smith Number of Children2 Child Information NameRalph T Smith Date of Birth11 November 1957 Child Information NameSusan B Jones Date of Birth17 July 1959 Informal description of personnel record
25
PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET { Name, title [0] VisibleString, number EmployeeNumber, dateOfHire [1] Date, nameOfSpouse [2] Name, children [3] IMPLICIT SEQUENCE OF ChildInformation DEFAULT { } } ChildInformation ::= SET { Name, dateOfBirth [0] Date } Name ::= [APPLICATION 1] IMPLICIT SEQUENCE { givenName VisibleString, initial VisibleString, familyName VisibleString } EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER Date ::= [APPLICATION 3] IMPLICIT VisibleString -- YYYYMMDD ASN.1 description of the record structure
26
{ {givenName “ John ”, initial “ T ”, familyName “ Smith ” }, title “ Director ” number “ 51 ” dateOfHire “ 19710917 ” nameOfSpouse{givenName “ Mary ”, initial “ T ”, familyName “ Smith ” }, children { {{givenName “ Ralph ”, initial “ T ”, familyName “ Smith ” }, dateOfBirth “ 19571111 ” }, {{givenName “ Susan ”, initial “ B ”, familyName “ Jones ” } dateOfBirth “ 19590717 ” } ASN.1 description of a record value
27
BER Encoding BER (Basic Encoding Rule) TLV Encoding Structure P/C: Primitive/Construct T: Tag
28
TLV TLV Primitive: Construct: INTEGER SEQUENCE TL TLVTLV V
30
Universal Class Tag Universal 2INTEGER Universal 4OCTET STRING Universal 5NULL Universal 6OBJECT IDENTIFIER Universal 16SEQUENCE / SEQUENCE OF 00 0 00010 02 00 0 00100 04 00 0 00101 05 00 0 00110 06 00 1 10000 30 Binary Hex Tag Tag Name Page 127
31
Tag numbers 31
33
1000 0000
34
30 0A 1A 04 4A 61 6E 65 51 02 00 80
36
Example: SNMP Message Message ::= SEQUENCE { version INTEGER { version-1(0) }, community OCTET STRING, data ANY } 30 02 04 Tag
37
Example: SNMP Message Type 30: SEQUENCE Length 82 01 c0: 448 octets 82: 10000010
38
Type 30: SEQUENCE Length 32: 50 octets
39
Macros MACRO ::= MACRO ::=BEGIN TYPE NOTATION ::= TYPE NOTATION ::= VALUE NOTATION ::= VALUE NOTATION ::= <auxiliaryAssignments>END
40
Macro Example OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::="SYNTAX" type (TYPE ObjectSyntax) TYPE NOTATION ::="SYNTAX" type (TYPE ObjectSyntax) “ACCESS" Access “ACCESS" Access "STATUS" Status "STATUS" Status VALUE NOTATION ::= value (VALUE ObjectName) VALUE NOTATION ::= value (VALUE ObjectName) Access ::= "read-only" | "read-write“ | "write-only | "not-accessible" Access ::= "read-only" | "read-write“ | "write-only | "not-accessible" Status ::= "mandatory” | "optional“ | "obsolete" Status ::= "mandatory” | "optional“ | "obsolete"END
41
Object-Type Example sysName OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) SYNTAX DisplayString (SIZE (0..255)) ACCESS read-write ACCESS read-write STATUS mandatory STATUS mandatory ::= { system 5 }
42
Marco Example 2 CAR MACRO::= BEGIN TYPE NOTATION ::= Brand Engine CarType Year TYPE NOTATION ::= Brand Engine CarType Year VALUE NOTATION ::= value (VALUE OBJECT IDENTIFIER) VALUE NOTATION ::= value (VALUE OBJECT IDENTIFIER) Brand ::= “BRAND” value (PrintableString) Brand ::= “BRAND” value (PrintableString) Engine ::= “CC” Ccs Engine ::= “CC” Ccs Ccs ::= Cc | Ccs”,” Cc Ccs ::= Cc | Ccs”,” Cc Cc ::= value (INTEGER (600..5000)) Cc ::= value (INTEGER (600..5000)) CarType ::= “STYLE” CType CarType ::= “STYLE” CType CType ::= “Sedan” | “Liftback” | “SUV” | “Other” CType ::= “Sedan” | “Liftback” | “SUV” | “Other” Year ::= “YEAR” value (INTEGER) Year ::= “YEAR” value (INTEGER)END
43
Camry CAR BRAND Toyota CC 2000, 2400, 3000 STYLE Sedan YEAR 2006 ::= {toyota 3}
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.