Outline for today
Download
1 / 55

Outline for today - PowerPoint PPT Presentation


  • 83 Views
  • Uploaded on

Outline for today. Standard Formal Notations for data structures and messages Motivation Abstract Syntax Notation One (ASN.1). Standard Formal Notations for Data Structures and Messages. Protocol Definition.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Outline for today' - alexis-guerrero


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Outline for today
Outline for today

  • Standard Formal Notations for data structures and messages

    • Motivation

    • Abstract Syntax Notation One (ASN.1)

IHA præsentation


Standard formal notations for data structures and messages

Standard Formal Notations for Data Structures and Messages

IHA præsentation


Protocol definition
Protocol Definition

A well-defined set of messages (bit-patterns or - increasingly today - octet strings) each of which carries a defined meaning (semantics), together with the rules governing when a particular message can be sent.

IHA præsentation


Motivation
Motivation

Example – 4 layered protocol stack

Windows CE, Intel,

Protocol implemented in C#

Linux, ARM11,

Protocol implemented in C

IHA præsentation


The problem

a

00000011

00000001

a

00000001

00000011

The problem

Q: Why not just specify the data in a C/C++ structure as below”?

struct {

char code;

int x;

} test;

test.x = 256;

test.code=‘a’

test.code

test.x

test.code

test.x

host 2 format

host 1 format

problem: different data format, storage conventions (endianess)

IHA præsentation


Solutions
Solutions

1. Sender learns receiver’s format. Sender translates into receiver’s format. Sender sends.

  • real-world analogy?

  • pros and cons?

    2. Sender sends. Receiver learns sender’s format. Receiver translate into receiver-local format

  • real-world-analogy

  • pros and cons?

    3. Sender translates host-independent format. Sends. Receiver translates to receiver-local format.

  • real-world analogy?

  • pros and cons?

IHA præsentation


Protocol specification
Protocol Specification

  • Goal/Motivation for specifying messages

  • To have a platform-independent Notation

  • To have language-independent Notation

  • Vendor-independent

  • Internationally-standardised

IHA præsentation


Protocol specification1
Protocol Specification

  • Protocols can be specified in many ways

  • One fundamental distinction is between text-based specifications and binary-based specification.

    • Text-based specification:

      • The "protocol" is defined as a series of lines of ASCII encoded text

    • Binary-based specification:

      • The “protocol” is defined as a string of octets or of bits

IHA præsentation


Abstract syntax notation one asn 1

Abstract Syntax Notation One(ASN.1)

IHA præsentation


Abstract syntax notation one asn 11

Abstract Syntax Notation One (ASN.1)

  • It is an internationally-standardized (ISO standard X.680), vendor-independent, platform-independent and language-independent notation for specifying data-structures at a high level of abstraction

  • It is supported by rules which determine the precise bit-patterns (again platform independent and language-independent) to represent values of these data-structures when they have to be transferred over a computer network, using encodings that are not unnecessarily verbose

  • It is supported by tools available for most platforms and several programming languages that map the ASN.1 notation into data-structure definitions in a computer programming language of choice, and which support the automatic conversion between values of those data-structures in memory and the defined bit-patterns for transfer over a communications line.

IHA præsentation


Abstract syntax notation one asn 12

Abstract Syntax Notation One (ASN.1)

  • The design of some form of data-structure (at about the level of generality of a high-level programming language, and using a defined notation) which is capable of carrying the required semantics. The set of values of this data-structure are called the abstract syntax of the messages or application. We call the notation we use to define this data structure or set of values we the abstract syntax notation for our messages. ASN.1 is just one of many possible abstract syntax notations, but is probably the one most commonly used.

IHA præsentation


Abstract syntax notation one asn 13

Abstract Syntax Notation One (ASN.1)

  • The crafting of a set of rules for encoding messages such that, given any message defined using the abstract syntax notation, the actual bits on the line to carry the semantics of that message are determined by an algorithm specified once and once only (independent of the application). We call such rules encoding rules, and we say that the result of applying them to the set of (abstract syntax) messages for a given application defines a transfer syntax for that application. A transfer syntax is the set of bit-patterns to be used to represent the abstract values in the abstract syntax, with each bit-pattern representing just one abstract value. (In ASN.1, the bit-patterns in a transfer syntax are always a multiple of 8 bits, for easy carriage in a wide range of carrier protocols)

IHA præsentation



Abstract syntax notation one asn 15
Abstract Syntax Notation One (ASN.1)

ASN.1 Specification

Machine A

(C#)

Machine B

(C++)

Step 1. We need a ASN.1 compiler ASN.1 -> C# + ASN.1 -> C++

Step 2. Agree on encoding rules (BER or PER?)

ASN.1 TOOLS ARE AVAILABLE

IHA præsentation


Abstract syntax notation one asn 16

Abstract Syntax Notation One (ASN.1)

ASN.1 Specification

A top-level type definition, supported by other type and value definitions

The Abstract Syntax

Apply a specific ASN.1 Encoding Rule

Abstract values

ASN.1 Encoding Rules

All possible values of this top-level type

ASN.1 Encoding Rules

Values

Bit pattern

Bit pattern

Transfer Syntaxes

IHA præsentation


Abstract syntax notation one asn 17
Abstract Syntax Notation One (ASN.1)

  • ASN.1 is for:

    • Representing data types and structures (abstract syntax)

    • Encoding rules (transfer syntax)

    • ASN.1 is not

      • another programming language

        • No control flow (if-else, while etc.)

        • No pointers

        • Bitwise operators

Let us look at ASN.1 in more details!

IHA præsentation


Asn 1 modules
ASN.1 - Modules

-- ASN1START

EUTRA-RRC-Def DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

….

….

….

….

END

--ASN!STOP

  • Fundamental unit of ASN.1

    • Module

  • Sole purpose to name a collection of type definitions and/or value definitions (assignments)

  • The module constitutes a data specification

Type & value definitions

(assignments)

IHA præsentation


Asn 1 basics
ASN.1 - Basics

  • How do we define types and assign values to them ?

  • The main concept of ASN.1 is that of type

  • Two main ASN.1 build-in types:

    • Basic types

    • Constructed types

IHA præsentation


Asn 1 basic types
ASN.1 – Basic Types

IHA præsentation


Asn 1 constructed types
ASN.1 – Constructed Types

IHA præsentation


Asn 1 type value assignment
ASN.1 – Type & Value Assignment

All ASN.1 assignments use the symbol ”::=”; so do the type assignment:

Married ::= BOOLEAN

Cancel ::= BOOLEAN DEFAULT FALSE

Age ::= INTEGER

ColorType ::= INTEGER

{

red (0)

white (1)

blue (2)

}

Picture ::= BIT STRING

Occupation ::= BIT STRING

{

clerk (1)

editor (2)

}

myMarried Married ::= TRUE

myAge Age ::= 25

myColor ColorType ::= red

myColor ColorType ::= 35

myPicture Picture ::= ’0101011011110’B

myWork Occupation ::= { clerk, editor }

Positions in string

IHA præsentation


Asn 1 type value assignment1
ASN.1 – Type & Value Assignment

f FORM ::= {

name ”Peter”,

age 25,

married TRUE }

c Coordinates ::= {

z 10,

x 5,

y 30 }

c Coordinates ::= {

x 5,

y 30 }

Form ::= SEQUENCE

{

name PrintableString,

age Age,

married Married

}

Coordinates ::= SET

{

x [1] INTEGER,

y [2] INTEGER,

z [3] INTEGER OPTIONAL

}

Maybe present

IHA præsentation


Asn 1 type value assignment2
ASN.1 – Type & Value Assignment

RAT-Type ::= ENUMERATED {

eutra, utra, geran-cs,

geran-ps, cdma2000-1XRTT,

spare3, spare2, spare1, ...}

rat RAT-Type ::= geran-cs

car CarType ::= audi

myAfter Afters ::= dessert ”ice”

CarType ::= ENUMERATED {

audi (0), bmw (1)

scoda (2), citroen(3), ...}

How can the received decode this?

Cheese or dessert string received?

Afters ::= CHOICE{

cheese IA5String,

dessert IA5String

}

SOLUTION:

TAGGING

IHA præsentation


Asn 1 type assignment
ASN.1 – Type Assignment

MeasIdToAddModList ::= SEQUENCE OF MeasIdToAddMod

MeasIdToAddMod ::= SEQUENCE {

measId MeasId,

measObjectId MeasObjectId,

reportConfigId ReportConfigId

}

IHA præsentation


Asn 1 subtyping
ASN.1 – Subtyping

Allows us to customise our types to just the precise values we need –

it can reduce the number of bits-on-the-line and gives clear guidance to

implementors for memory allocation decisions

  • Usage:

  • reduce the range of an integer

  • specify a minimum and/or maximum length of a string

  • specify a min and/or max number of iterations in a SEQUENCE OF or SET OF

HOW?

IHA præsentation


Asn 1 subtyping1
ASN.1 – Subtyping

Reducing the range of an integer:

RRC-TransactionIdentifier ::= INTEGER (0..3)

restricting the range of the integer field to the values 0 to 3

Length of a string:

My-string ::= PrintableString (SIZE (1..10)) FROM (”A”..”Z”))

restict the size of the string between 1 and 10 characters

string can only contain the characters ”A” to ”Z”

IHA præsentation


Asn 1 subtyping2
ASN.1 – Subtyping

Number of iterations in a SEQUENCE OF or SET OF:

UE-CapabilityRAT-ContainerList ::=SEQUENCE (SIZE (0..2)) OF UE-CapRAT-Container

UE-CapRAT-Container ::= SEQUENCE {

rat-Type RAT-Type,

ueCapabilityRAT-Container OCTET STRING

}

Minimum number of iterations is 0 – maximum is 2

IHA præsentation


Asn 1 extensions versioning
ASN.1 – Extensions Versioning

ASN.1 Specification Ver.1

Type ::= SEQUENCE

{

comp1 INTEGER,

comp2 BOOLEAN,

}

ASN.1 Specification Ver.2

Type ::= SEQUENCE

{

comp1 INTEGER,

comp2 BOOLEAN,

comp3 REAL

}

???

IHA præsentation


Asn 1 extensions versioning1
ASN.1 – Extensions & Versioning

ASN.1 Specification Ver.1

Type ::= SEQUENCE

{

comp1 INTEGER,

comp2 BOOLEAN

}

ASN.1 Specification Ver.2

Type ::= SEQUENCE

{

comp1 INTEGER,

comp2 BOOLEAN,

[[ comp3 REAL]],

}

extension marker

(ellipsis)

version brackets

IHA præsentation


Abstract syntax notation one asn 18
Abstract Syntax Notation One (ASN.1)

ASN.1 Encoding Rules

  • Basic Encoding Rule (BER)

  • Packet Encoding Rules (PER)

  • XML Encoding Rules (XER)

IHA præsentation


Asn 1 basic encoding rules
ASN.1 – Basic Encoding Rules

The BER transfer syntax always has the format of a triplet TLV

L

V

T

L

T

L

V

T

L

T

Recursive principle

IHA præsentation


Asn 1 basic encoding rules1
ASN.1 – Basic Encoding Rules

Two formats of the Tag Octets (Primitive or Constructed)

IHA præsentation


Abstract syntax notation one asn 19
Abstract Syntax Notation One (ASN.1)

Example: age INTEGER ::= 5

+

+

Primitive

INTEGER

UNIVERSAL

IHA præsentation


Asn 1 basic encoding rules2
ASN.1 – Basic Encoding Rules

The length octet represents the length of the value (V)

  • The three formats of the length octets

  • Short definite length

  • Long definite length

  • Indefinite length

IHA præsentation


Asn 1 basic encoding rules3
ASN.1 Basic Encoding Rules

Short definite length

0

  • can be used if V part is less than 127 octets

  • V part can be primitive or constructed type

  • short form is identified by encoding bit 8 as zero

IHA præsentation


Asn 1 basic encoding rules4
ASN.1 Basic Encoding Rules

Bit 8 set to one

Long definite length

Following N octets is

Length fields

1

IHA præsentation


Asn 1 basic encoding rules5
ASN.1 – Basic Encoding Rules

Short form

Length of length N = 2

Long form

Options for encoding a length of 5 (1 0 1)

IHA præsentation


Asn 1 basic encoding rules6
ASN.1 – Basic Encoding Rules

Encoding of the V part of the main types

Encoding a BOOLEAN value

The values of

b1 BOOLEAN ::= TRUE

b2 BOOLEAN ::= FALSE

are encoded as

T L V

b1: 01 01 FF

b2: 01 01 00

Encoding an INTEGER value

The values of

i1 INTEGER ::= 72

i2 INTEGER ::= 127

i3 INTEGER ::= 128

are encoded as

T L V

i1: 02 01 4B

i2: 02 01 80

i3: 02 02 0080

IHA præsentation


Asn 1 basic encoding rules7
ASN.1 – Basic Encoding Rules

seq SEQUENCE { age INTEGER,

single BOOLEAN } ::= {age 24,

single TRUE }

is encodes as:

IHA præsentation


Asn 1 tagging
ASN.1 Tagging

  • Why do we need tagging?

  • All ASN.1 types are assigned a default ”tag” (for the ”T” part of encoding)

  • Sometimes use of the default tag would produce ambiguous encoding, for example:

IA5String in both cases

Identification ::= CHOICE {

security_no INTEGER,

work_no INTEGER

}

Afters ::= CHOICE {

cheese IA5String,

dessert IA5String

}

IHA præsentation


Asn 1 tagging1
ASN.1 Tagging

  • A tag is a number between square brackets before a type

Coordinates ::= SET { x [1] INTEGER,

y [2] INTEGER,

z [3] INTEGER OPTIONAL }

Afters ::= CHOICE { cheese [0] IA5String,

dessert [1] IA5String }

IHA præsentation


Asn 1 tagging2
ASN.1 Tagging

  • When we tag, we can

    • Override the current tag (called IMPLICIT tagging)

    • Add a new tag on the front (called EXPLICIT tagging) giving a ”TL TLV” encoding

  • Sometimes explicit tagging is needed to avoid ambiguity, but implicit tagging is more common

IHA præsentation


Asn 1 tagging3
ASN.1 Tagging

  • We can add as many new tags as we like t a type!

  • We say that each value of that type (any type) has associated with it a tag-list

  • Usually the tag-list contains only one or two tags, but … there is no limit

  • In almost all cases, every value in a type has the same tag list

IHA præsentation


Asn 1 tagging4
ASN.1 Tagging

Research-division ::= [1] CHOICE {

product-based [0] NULL,

basic [1] NULL }

”product-based” value

”Research-division” type

[1][0][null] O

”basic” value

[1][1][null] O

IHA præsentation


Asn 1 tagging5
ASN.1 Tagging

  • Tag classes

    • UNIVERSAL (not for users)

    • APPLICATION e.g. [APPLICATION 6]

    • PRIVATE e.g. [PRIVATE 3]

    • Context specific e.g. [2]

IHA præsentation


Asn 1 tagging6
ASN.1 Tagging

  • Tag rules

    • Numbers are non-negative

    • Context specific most common

    • APPLICATION normally used for global types or for top-level messages

    • PRIVATE rarely used

    • UNIVERSAL assigned only by ASN.1

IHA præsentation


Asn 1 tagging7
ASN.1 Tagging

Syntax:

tag type definition

tag IMPLICIT type definition

tag EXPLICIT type definition

Examples:

SpecialEncoding ::= [PRIVATE 8] EXPLICIT BIT STRING

BinaryFile ::= [APPLICATION 3] IMPLICIT OCTET STRING

IHA præsentation


Asn 1 packet encoding rules per
ASN.1 – Packet Encoding Rules (PER)

  • ”Obtain the most compact encoding using encoding rules as simple as possible”

  • 40% - 60% gain compared to BER

  • Appropriate for protocols that need to transfer data at a high rate

    • VoIP

    • Videophone

    • Multimedia

HOW?

IHA præsentation


Asn 1 packet encoding rules
ASN.1 – Packet Encoding Rules

Motivation

Encoding a BOOLEAN value in BER

The values of

b1 BOOLEAN ::= TRUE

b2 BOOLEAN ::= FALSE

are encoded as

T L V

b1: 01 01 FF

b2: 01 01 00

3 octets to send a BOOLEAN

ONLY 1 bit needed

IHA præsentation


Asn 1 packet encoding rules1
ASN.1 – Packet Encoding Rules

  • PER-visible constraints

    • Used by PER to produce less verbose encodings

Example: INTEGER (0..7) encodes into just three bits because the (0..7) constraint is PER-visible

  • No ”T”, no ”L” => efficient coding

  • Same ASN.1 type definition used, same specification

IHA præsentation


Asn 1 developing applications
ASN.1 – Developing Applications

  • Stage 1 – Specification development

  • Stage 2 – Syntax check and compile

  • Stage 3 – Writing your Application

  • Stage 4 – Putting your Application to use

IHA præsentation


Asn 1 developing applications1
ASN.1 – Developing Applications

  • Stage 1 – Specification development

    • Decide on types of messages the application will need

    • Draft a new ASN.1 specification or use an existing one

    • When drafting a new, decide on encoding rules

      • To take advantage subtyping constraindts

    • Have extensibility in mind for future requirements

IHA præsentation


Asn 1 developing applications2
ASN.1 – Developing Applications

  • Stage 2 – Syntax check & compile

    • Use an available ASN.1 Compile

      • Compile to your preferred target language C,C++, C#, Java, Cobol, Pascal…

    • ASN.1 compiler produces data structures and related code for inclusion into the Application

IHA præsentation


Asn 1 developing applications3
ASN.1 – Developing Applications

  • Stage 3 – Write your Application

    • Use the compiled structures in your code

    • Use the vendor (tool) provided runtime library functions/methods like eg. oosEncode() and ossDecode()

IHA præsentation


Asn 1 developing applications4
ASN.1 – Developing Applications

  • Stage 4 – Putting your Application to use

    • Test it and use it

FINISHED – Questions?

IHA præsentation