2nd RINASim Webinar

29
RINASim MECHANISMS AND POLICIES Vladimír Veselý and Marcel Marek Brno University of Technology, Czech Republic vesely [email protected] University of Oslo, Norway [email protected] @ictpristine Webinar, 27 th February 2017 1

Transcript of 2nd RINASim Webinar

Page 1: 2nd RINASim Webinar

RINASim● MECHANISMS AND POLICIES

● Vladimír Veselý and Marcel MarekBrno University of Technology, Czech Republic

[email protected] of Oslo, Norway

[email protected]@ictpristine Webinar, 27th February 2017 1

Page 2: 2nd RINASim Webinar

Agenda

1) Introduction

2) Mechanism and Policy framework

3) Demonstrations

Flow Allocator

EFCP

4) Conclusion

@ictpristine Webinar, 27th February 2017 2

Page 3: 2nd RINASim Webinar

@ictpristine Webinar, 27th February 2017 3

1) Introduction

Current state

Page 4: 2nd RINASim Webinar

Status Quo

February 2017 release

GitHub repository https://github.com/kvetak/RINA/releases/tag/February2017

CDAP API

OMNeT++ 5.1 technical candidate compatibility

Code refactoring

@ictpristine Webinar, 27th February 2017 4

Page 5: 2nd RINASim Webinar

Virtual Machine

Out-of-the box virtual machine

OMNeT++ 5.0 with the newest RINASim

Download fromhttp://nes.fit.vutbr.cz/ivesely/vm/RINASim.zip

OVA appliance of MintLinux created on VMWareWorkstation

…should work also on VirtualBox and Qemu

Custom highlighter of code syntax

@ictpristine Webinar, 27th February 2017 5

Page 6: 2nd RINASim Webinar

Reporting Issues

Report on https://github.com/kvetak/RINA/issues

Resolution rate will improve…hopefully

@ictpristine Webinar, 27th February 2017 6

Page 7: 2nd RINASim Webinar

@ictpristine Webinar, 27th February 2017 7

2) Mechanism and Policy

Design notesA long road from idea/spec towards FSMCoding conventions

Page 8: 2nd RINASim Webinar

Difference

Mechanism

Fixed

Cannot be changed

E.g., error checking on data-link layer

Policy

Flexible

Can be negotiated

E.g., CRC-32, CRC-64, Vitrebi

@ictpristine Webinar, 27th February 2017 8

Page 9: 2nd RINASim Webinar

Explicit vs. Implicit Policies

RINA specs cover explicit policies

data processing (e.g., how is PDU handled by EFCP and RMT)

control processing (e.g., flow allocation and deallocation procedures)

Implicit policies

do not have strict placeholder

variable inputs and outputs

E.g., routing or secured enrollment

@ictpristine Webinar, 27th February 2017 9

Page 10: 2nd RINASim Webinar

Defining Policy

Policy is (a set of) algorithm(s)

Properties

Deterministic

Closed control (beaware of recursion)

Finite (avoid state explosion)

Known inputs and outputs

Description

Formal: finite-state machines

Implementation: C++ class

@ictpristine Webinar, 27th February 2017 10

Page 11: 2nd RINASim Webinar

FA

@ictpristine Webinar, 27th February 2017 11

Allocate Request

M_CREATE(flow)

Deallocate Request

NewFlowRequestPolicy

Null

Is malformed? Create FAI

true

/ send negative allocate response

false

FAI successfully created

/ pass allocate request to FAI

Map QoS to

RA s Qos-cubes

Has resources to

honor QoS?Has access rights?

true truepolicy succeeded

/ return positive result

policy failed

/ return negative result

false false

Is dst AP local?

Create FAI

hopCount == 0

FAI successfully created

/ pass allocate request to FAI

false

/ hopCount--

truefalse

/ forward M_CREATE(flow)

true

/ send negative M_CREATE_R(flow)

/ pass deallocate request to FAI

policy invoked

Page 12: 2nd RINASim Webinar

FAI

@ictpristine Webinar, 27th February 2017 12

Allocate Request

Degenerate Data Transfer

M_CREATE_R(flow)

AllocateRetryPolicy

AllocateNotifyPolicy

Instantiated

Is dst AP local?Is policy

acceptable?Create EFCPI Create bindings

false

/ invoke NewFlowRequestPolicy

true

/ pass allocate request

to dst AP

false

/ invoke AllocateNotifyPolicy

true

bindings successfully created

/ send M_CREATE(flow)

&& invoke AllocateNotifyPolicy

EFCPI successfully created

Is response positive?Establish IPC

between local APsCreate bindings

false

/ invoke AllocateNotifyPolicy

bindings successfully created

/ invoke AllocateNotifyPolicy

establishment successful

Is response positive? Create bindingstrue

false

/ invoke AllocateRetryPolicy

bindings successfully created

/ invoke AllocateNotifyPolicy

Flow Allocation Failed

Flow Allocated

receive allocate response

from dst AP

Is policy

acceptable?

false

/ invoke AllocateNotifyPolicy

true

true

/ invoke NewFlowRequestPolicy

receive M_CREATE_R(flow)

numOfCreReq

<=

MaxCreReqRetries

false

/ invoke AllocateNotifyPolicy

true

/ send M_CREATE(flow)

policy invoked

/ numOfCreReq++

timer expired

/ invoke AllocateRetryPolicy

policy evaluation requested

receive allocate request

wa

iting for M

_CR

EA

TE

_R(flow

)

wa

iting for M

_CR

EA

TE

_R(flow

)

allocation succeeded

allocation failed

false

true

/ send positive allocate response

policy invokedIs positive

allocate response

criteria met?

false

/ send negative allocate response

allocation failed

allocation succeeded

policy evaluation requested

policy evaluation requested

policy evaluation requested

policy evaluation requested

M_CREATE(flow)

Allocation Response

Instantiated

Is policy

acceptable?

receive M_CREATE(flow)

/ invoke NewFlowRequestPolicy

false

/ send negative

M_CREATE_R(flow)

Is response positive? Create EFCPI Create bindings

bindings successfully created

/ send positive

M_CREATE_R(flow)

EFCPI successfully created

Flow Allocated

receive allocate response

true

true

/ pass allocation request

false

/ send negative

M_CREATE_R(flow)

allocation succeeded

wa

iting for allocate re

sponse

allocation failed

Deallocate Submit

M_DELETE(flow)

M_DELETE_R(flow)

SeqRollOverPolicy

receive deallocate submit

Delete bindings

bindings successfully deleted

/ send M_DELETE(flow)

/ send deallocate deliver

Delete bindings

bindings successfully deleted

/ send M_DELETE_R(flow)

receive M_DELETE_R(flow)

|| timer expired

Deinstantiated

Flow Deallocated

after 2×MPL

/ deinstantiate FAI

Create EFCPI

bindings successfully changedsequence numbers threshold reached

Change bindings

EFCPI successfully created

Flow Allocated

Page 13: 2nd RINASim Webinar

RINASim Parts

Core

folder /src

static librinasimcore.a

library linked to…

Policies

folder /policies

dynamic librinasim.dll

library

@ictpristine Webinar, 27th February 2017 13

Page 14: 2nd RINASim Webinar

Usual Design

1) NED module interface

2) Base class

optionally with implicit policy action

3) Policy implementation

inheriting all necessary things from base

4) Policy binding

with scenario setup in omnetpp.ini file

@ictpristine Webinar, 27th February 2017 14

Page 15: 2nd RINASim Webinar

1) NED Module Interface

@ictpristine Webinar, 27th February 2017 15

Page 16: 2nd RINASim Webinar

2) Base class

Optionally may contain default policy action

Not an C++ abstract class in that case

Every policy has bool run()

method

@ictpristine Webinar, 27th February 2017 16

Page 17: 2nd RINASim Webinar

3) Policy Implementation

NED file

header file C++ file

@ictpristine Webinar, 27th February 2017 17

Page 18: 2nd RINASim Webinar

4) Policy Binding

Default value somewhere in parent NED file

Override in omnetpp.ini

@ictpristine Webinar, 27th February 2017 18

Page 19: 2nd RINASim Webinar

@ictpristine Webinar, 27th February 2017 19

3) Demonstrations

FAEFCP

Page 20: 2nd RINASim Webinar

Flow Object

@ictpristine Webinar, 27th February 2017 20

Page 21: 2nd RINASim Webinar

FA: Demo

/examples/Webinars/FAPolicyTest

@ictpristine Webinar, 27th February 2017 21

Page 22: 2nd RINASim Webinar

EFCP: Congestion Demo

@ictpristine Webinar, 27th February 2017 22

/examples/Webinars/EFCPPolicyTest

Page 23: 2nd RINASim Webinar

EFCP: Congestion Demo

@ictpristine Webinar, 27th February 2017 23

Page 24: 2nd RINASim Webinar

@ictpristine Webinar, 27th February 2017 24

4) Conclusion

Final remarksOpen call

Page 25: 2nd RINASim Webinar

Need Help?

Check the official webpage

Visit https://rinasim.omnetpp.org

Skype group chat

skype:?chat&blob=-bdq6qH_uDXIlbRk_4_XwqZyplfXPl4IzCq4P-S0BrsttjgPR8CNJKV9-Yyn1TYopaYZD2g3bIC_Yv0C

https://join.skype.com/B9Tt5aTPd0nC

Sign to mailing-list [email protected]

Use http://www.fit.vutbr.cz/mailman/listinfo/rinasim

@ictpristine Webinar, 27th February 2017 25

Page 26: 2nd RINASim Webinar

Team

RINASim is a joint work of following people Vladimír Veselý (@kvetak)

Marcel Marek (@screw)

Kamil Jeřábek (@kjerabek)

Tomáš Hykel (@thykel)

Sergio Leon Gaixas (@gaixas1)

Peyman Teymoori (@peyman-t)

Ehsan Elahi (@ehsanzahoor)

Kewin Rausch (@kewinrausch)

Fatma Hrizi (@fatmahrizi)

Kleber Leal (@kaleal)

Green marked individual are usually willing to

deal with your RINASim troubles

@ictpristine Webinar, 27th February 2017 26

Page 27: 2nd RINASim Webinar

Problems for Today and Tomorrow

1) Add more source code comments

2) Improve Doxygendocumentation

3) Create real data-link layer simulation modules

4) Extend RIB functionality

@ictpristine Webinar, 27th February 2017 27

Page 28: 2nd RINASim Webinar

Topics for Other Webinars

What did we not covered?

Results gathering and analysis

Are you interested about work of others?

Suggest your topic…

@ictpristine Webinar, 27th February 2017 28

Page 29: 2nd RINASim Webinar

RINASim

● Thank you!Good morning / Good night

@ictpristine Webinar, 27th February 2017 29