Presentation is loading. Please wait.

Presentation is loading. Please wait.

Abstract Syntax Notation One ASN.1. Abstract Syntax Notation One  Both the information and communications models need to be specified syntactically and.

Similar presentations


Presentation on theme: "Abstract Syntax Notation One ASN.1. Abstract Syntax Notation One  Both the information and communications models need to be specified syntactically and."— Presentation transcript:

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

29

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

32

33 1000 0000

34 30 0A 1A 04 4A 61 6E 65 51 02 00 80

35

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}


Download ppt "Abstract Syntax Notation One ASN.1. Abstract Syntax Notation One  Both the information and communications models need to be specified syntactically and."

Similar presentations


Ads by Google