RINA Detailed Overview and Implementation Discussions

Transcription

RINA Detailed Overview and Implementation Discussions
The Pouzin Society RINA Detailed Overview and
Implementation Discussions
RINA Workshop. Barcelona, January 22-24 2013
RINA Workshop
Overview
The Pouzin Society •  Distributed Applications
–  Naming, Flows, Application API
–  Common Application Connection Establishment and CDAP
–  SDU Protection
•  The DIF and the IPC Process
– 
– 
– 
– 
– 
– 
– 
– 
Block Diagram (Reference vs. Implementation Architecture)
RIB and RIB operations
Enrollment
Flow Allocation
Transport protocol: EFCP, DTP, DTCP
Relaying and Multiplexing: RMT
Routing and Forwarding
Resource Allocation
•  Shim DIF
–  Internet/IP/TCP/UDP use with RINA
•  IDD
•  Misc. topics: Network Mgt., Security, …
•  Demo storyboard
•  RINAband
2
The Pouzin Society DISTRIBUTED APPLICATIONS Naming, Flows and Applica;on API 3 Distributed applications
Appl. Process A 1
Local handle to a par?cular instance of a communica?on Applica?on protocol Applica?on connec?on flow Medium that enables applica?ons to communicate The Pouzin Society Appl. Process B 8
Local handle to a par?cular instance of a communica?on •  For A and B to communicate, they need:
–  A means to identify each other -> Application process naming
–  A medium that provides a communication service -> Flows
–  A way to indicate the communication medium that they want resources to
be allocated for a particular communication to take place, with certain
quality requirements -> Communication medium API
–  A shared domain of discourse -> Objects
–  Optionally verify who are they talking to (authenticate), negotiate what
protocol is going to be used to carry the data they will exchange, and
what concrete encoding is to be used -> Application connection
–  A method to carry their discourse (objects)-> Application protocol
4
Distributed applications in the Internet
App name not exis?ng, use IP address or Domain name 1
Well known port (the handle is no longer local) Many: HTTP, SMTP, FTP, Telnet, RTP, SNMP, SSH, XMPP, … Applica?on connec?on (not a generic mechanism, par?ally provided through different protocols) App name not exis?ng, use IP address or Domain name TCP connec?on or UDP flow Medium that enables applica?ons to communicate •  For A and B to communicate, they need:
The Pouzin Society 8
Well-­‐known port, the handle is no longer local –  Application process naming: No names for applications, IP addresses and
ports is all what we have (URLs are pathnames to the applications)
–  Flows: Only 2 types; TCP (some variants) or UDP, each of them with fixed
characteristics
–  Communication medium API: Need to know to what PoA and port an
application is attached to in order to allocate a flow, no means to express
desired properties of the flow
–  Objects: Vary depending on the application protocol used
–  Application connection: Applications have to know in advance which
application protocol is going to be used; authentication is done through
separate protocols.
–  Application protocol: Many protocols and encodings, tailored to different
purposes
5
Distributed applications in RINA
Applica?on names Local handle (portId) 8
0
CDAP Applica?on connec?on (generic mechanism, different authen?ca?on policies) The Pouzin Society Applica?on names Flows can have different QoS characteris?cs Medium that enables applica?ons to communicate 8
Local handle (portId) •  For A and B to communicate, they need:
–  Application process naming: Complete application naming theory, no
communication medium internal addresses are exposed to apps.
–  Flows: Flows can have a myriad of characteristics, tailored to different
application requirements.
–  Communication medium API: Request allocation of flows to other
applications by name; request desired properties for each flow
–  Objects: Each application decides on their contents and encoding
–  Application connection: Generic application connection establishment
procedure, where different authentication policies can be plugged in
–  Application protocol: A single application protocol that can have multiple
encodings: CDAP
6
RINA API
The Pouzin Society •  The RINA API needs to be different in many ways from
conventional Internet operations (usually “sockets”)
–  Application flows connect named Applications, not addresses/ports
–  RINA takes responsibility for locating the destination of a flow request,
whereas current practice is to use macro-for-the-address mapping (e.g.,
DNS) and then use the absolute address returned plus a “known port”
•  RINA Applications are “registered” in order to be found by their name
–  Applications can be reached at multiple points (AE’s, more later)
–  Applications can reject a request for a flow before it is created and then
authenticate the requestor before establishing a connection
–  RINA allows a flexible specification of the requested quality/properties of
a flow
–  RINA transport occurs in application-defined units (“Service Data Units”
or SDUs) vs. a stream of unstructured bytes that force applications to do
their own delimiting into meaningful units
•  Current API’s don’t provide access to the full set of RINA benefits
–  Though it is not strictly necessary to have a common cross-system API for
RINA, it would still be a Good Thing to have, as sockets was for IP
7
Naming – Points to Remember
The Pouzin Society •  The Internet does not name applications
–  The Internet doesn’t really name nodes/applications –
everything addressable is accessed using “absolute
addresses” (IP addresses, ports) to reach it
–  DNS is a name-to-number mapping, but applications contact
other applications using the absolute addresses returned
•  There is no virtual addressing (NAT is arguably a step toward it, but
interacts in complex ways with DNS)
•  RINA is different
–  Applications are named
•  There can be multiple simultaneous executing instances of an
application, so they must be distinguished. The “application
instance” is an integral part of the application name.
•  An application may contain multiple “Application Entities” (next
slide)
–  Applications do not know “addresses” of each other, only names
8
Application naming
The Pouzin Society •  The Application Process Model
–  Application Process Name: the name of the app
–  Application Process Instance: to differentiate specific
instances of the same app
–  Application Entity Name: part of the application
concerned with communication. Associated to a subset
of all the existing application objects
–  Application Entity Instance: refers to a particular
instantiation of an application entity (that is a particular
instance of a communication associated to a concrete
instantiation of an application protocol and a set of
objects)
Application
Application
Entity
Application
Entity
Gmail Server applica?on instance 2 DRDA AE Instance 1 Browser Applica?on Instance 1 Gmail Server Applica?on HTTP AE Instance 1 HTTP AE Instance 9 Instance 1 TCP connec?on HTTP AE Instance 4 Gmail app Instance 1 Public Internet TCP connec?on HTTP AE Instance 2 TCP connec?on DRDA AE Private Network Instance 2 DRDA AE Instance 1 TCP connec?on DB Server DRDA AE applica?on Instance 4 instance 1 9
Flows
The Pouzin Society •  Instantiation of a communication service between applications
–  A flow is locally identified by an app through the use of a port-id
–  Flows transport well defined units of application data (SDUs, Service Data
Units)
•  A flow has some externally visible properties:
–  Bandwidth related
• 
• 
• 
• 
– 
– 
– 
– 
– 
– 
Average bandwidth
Average SDU bandwidth
Peak BW duration
Peak SDU BW duration
Undetected Bit Error Rate
Partial Delivery of SDUs allowed?
In order delivery of SDUs required?
Maximum allowable gap between SDUs?
Maximum delay
Maximum jitter
10
The IPC API
The Pouzin Society • 
Presents the service provided by a DIF: a communication flow between
applications, with certain quality attributes.
• 
6 operations:
• 
• 
• 
• 
• 
• 
• 
portId _allocateFlow(destAppName, List<QoSParams>)
void _write(portId, sdu)
sdu _read(portId)
void _deallocate(portId)
void _registerApp(appName, List<difName>)
void _unregisterApp(appName, List<difName>)
QoSParams are defined in a technology-agnostic way
•  Bandwidth-related, delay, jitter, in-order-delivery, loss rates, …
• 
Aid to adoption: faux sockets API.
• 
• 
Presents the sockets API to the applications, but internally maps the calls to the IPC API
Current applications can be deployed in RINA networks untouched, but won’t enjoy all
RINA features
11
IPC API Implementation
i2CAT/TSSG Prototype: General design
• 
The Pouzin Society Design goal: Portability to multiple Operating Systems (take advantage of
Java)
Java Applica;on Sockets API Na?ve RINA API RINA App Library Local TCP connec;ons IPC Manager IPC Process 1 IPC Process 2 • 
The RINA Library is part of the application, and provides both a Sockets and
a Native RINA API (can be part of the same library or create two packages).
• 
The IPC Manager is the point of entry to the “RINA stack” running on the
computer. It hosts the IPC processes, manages its lifecycle (creation,
deletion) and acts as a broker between the RINA library and the IPC
Processes.
• 
Local TCP connections are the means of communication between Apps
(running the RINA Library) and the IPC Manager.
• 
Use of blocking I/O: one thread per each TCP connection
12
IPC API Implementation
i2CAT/TSSG Prototype: behavior of a “client” RINA application
IPC Manager RINA App Library Flow Alloca0on The Pouzin Society Open a new socket Send CDAP M_CREATE Message with an FlowService object Send CDAP M_CREATE_R Message with the FlowService object Map App Name to DIF, find IPC Process that is member of the DIF, invoke allocateFlow Data transfer Send delimited SDU (byte[]) to deliver data Keep data in buffer un;l read by the app, or no;fy app Flow Dealloca0on Close socket (on response message or ;mer) Send delimited SDU[] to deliver data Close socket Close socket Cause the IPC process to transfer the data over the flow Cause the IPC Process to unallocate the flow Received delete flow request 13
IPC API Implementation
i2CAT/TSSG Prototype: behavior of a “server” RINA application (I)
The Pouzin Society IPC Manager RINA App Library App registra0on Start a new Server Socket at port X. Listen for incoming requests Open a new socket Send CDAP M_START Message with a AppRegistra;on object Update IDD table and related flow allocator directorie(s). RegisterApp contains Source App naming info, op;onal list of DIF names and socket number Send CDAP M_START_R Message (success or not, reason) Flow alloca0on (for each new incoming flow request) Start a new thread for the flow. Decide if accept connec;on Open a new socket to port X Incoming Flow alloca;on request, if des;na;on app is registered, open a new socket Send CDAP M_CREATE Message with a FlowService object Send CDAP M_CREATE_R Message with the FlowService object Cause the IPC process to send the allocate response back 14
IPC API Implementation
i2CAT/TSSG Prototype: behavior of a “server” RINA application (II)
IPC Manager RINA App Library Data transfer The Pouzin Society Delimited SDU to write data (byte[]) Keep data in buffer un;l read by the app, or no;fy app Delimited SDU to read data (byte[]) Flow Dealloca0on socket closed Socket close Close socket, stop thread Cause the IPC process to transfer the data over the flow Incoming Flow dealloca;on request, Cause the IPC process to send the deallocate response back App unregistra0on Close socket On ;mer or directly: close socket, close serversocket Close socket Update IDD table and related IPC Process directorie(s) On ;mer, if not already closed, close socket 15
The Pouzin Society DISTRIBUTED APPLICATIONS Common Applica;on Establishment Phase and CDAP 16 CACEP
Common Application Connection Establishment Phase
The Pouzin Society   Once applica;on processes have a communica;on flow between them, they have to set up an applica0on connec0on before being able to exchange any further informa;on.   The applica;on connec;on allows the two communica;ng apps to:  
 
Exchange naming informa;on with its apposite, op;onally authen0ca0ng it Agree on an applica;on protocol and/or syntax version for the applica;on data exchange phase 1) 2) Appl. Process A M_CONNECT (srcName, destName, creden?als, proto, syntax version) 1 flow 3) Appl. Process A Appl. Process A N+1 DIF 2 Op?onal messages exchanging authen?ca?on informa?on N flow DIF M_CONNECT_R (result, reason, op?ons) flow Appl. Process B Appl. Process B DIF 4) Appl. Process B Appl. Process A Applica?on data transfer phase, processes exchange data using an applica?on protocol flow DIF Appl. Process B CDAP
The Pouzin Society •  The Common Distributed Application Protocol (CDAP) is the
application protocol used by IPC Processes to exchange shared
state (IPC Processes are Application Processes)
•  It is also recommended for all RINA applications to use for
exchanging shared state (when anything but an amorphous
flow of bytes is needed), legacy aps can use whatever they
want to use
•  The CDAP Specification defines the complete set of operations
and messages, as well as their fields
–  Connection establishment (Connect, Disconnect, authentication)
–  Object operations: create, delete, read, write, start, stop
•  The set of objects and meaning of operations is not dictated by
CDAP proper – that is an application concern
–  IPC Processes are applications, and manipulate a set of objects, but
none of them are dictated by CDAP
•  Messages can be encoded in any agreed-upon way
–  As long as the applications agree, e.g., via CACEP exchange
–  We currently use GPB, have experimented with JSON
18
CDAP operates on objects
The Pouzin Society •  All objects CDAP operates on have the following attributes:
–  ObjectClass
•  Class (data type and representation) of an object
–  ObjectName
•  A identifier of an object, unique within the objects of the same class
–  ObjectInstance
•  An alias of objectClass + objectName, uniquely identifies an object
–  ObjectValue
•  The actual value of the object, encoded as desired by the application
•  All CDAP operations can be applied two modifiers: scope/filter;
which enables CDAP operations to affect multiple objects that
form a hierarchy with a single message:
–  Scope: An integer indicating how many levels below the selected object
the operation has to be applied.
–  Filter:
A predicate function that evaluates if the operation should be
applied to each individual object within the scope.
19
CDAP, AEs and the OIB/RIB
The Pouzin Society •  All the objects an Application Process knows about are locally
“stored” in the Object Information Base/Resource Information
Base.
–  The RIB may be an actual database, or just a logical representation of all the
information known by an application process.
•  In RINA there’s only a single application protocol: CDAP. Then
why are there different AEs?
–  Each AE is able to operate on a subset of the RIB
Applica?on Process 2 Applica?on Process 1 AE type 1 Instance 1 OIB/RIB CDAP AE type 1 Instance 1 AE type 2 Instance 1 OIB/RIB Applica?on Process 3 CDAP AE type 2 Instance 1 OIB/RIB 20
CDAP Implementation
The Pouzin Society •  CDAP messages comprise a sequence of 1 or more fields
–  The one always-present field is the message type
•  Each field has an identifying name or numeric tag
(depending on encoding), and a value
•  The field names or tag values (for GPB encoding), value
types, and presence/absence of particular fields in CDAP
messages of each type is defined in the CDAP
Specification
•  One supported type for an object value is an embedded
message, not understood by CDAP itself, but transported
unchanged to the apposite
–  The message declarations for IPC Process object values are not
part of CDAP, but part of the IPC Process Object Dictionary
definition. Other applications define their own object types
21
CDAP Implementation (cont.)
The Pouzin Society •  For Google Protocol Buffers (GPB) syntax, a freely-available
compiler can produce code in several languages to
construct a valid CDAP message and to access the fields
of one: https://developers.google.com/protocol-buffers/
–  .proto files describe the field values and types
–  GPB is being used because of its simplicity, compact
representation, support (Google uses it heavily), a freelyavailable high-quality tool, a simple definition language, and
general acceptance by the developer community
–  XML, ASN.1, JSON, or other representations would also work as a
concrete syntax to encode CDAP messages
•  i2CAT’s implementation uses Java code produced by the
Google protoc GPB compiler
•  TRIA’s implementation uses a table-driven
generator that also accepts/generates JSON
parser/
22
Example Message Definition
The Pouzin Society message qosCube_t{ //a QoS cube specification
required uint32 qosId = 1;
//Identifies the QoS cube
optional string name = 2;
// A human-readable name for the QoS cube
optional uint64 averageBandwidth = 3;
//in bytes/s, a value of 0 indicates 'don't care'
optional uint64 averageSDUBandwidth = 4;
//in bytes/s, a value of 0 indicates 'don't care'
optional uint32 peakBandwidthDuration = 5;
//in ms, a value of 0 indicates 'don't care'
optional uint32 peakSDUBandwidthDuration = 6;
//in ms, a value of 0 indicates 'don't care'
optional double undetectedBitErrorRate = 7;
//a value of 0 indicates 'don`t care'
optional bool partialDelivery = 8;
//indicates if partial delivery of SDUs is allowed
or not
optional bool order = 9;
//indicates if SDUs have to be delivered in order
optional int32 maxAllowableGapSdu = 10;
//indicates the maximum gap allowed in SDUs,
a gap of N SDUs is considered the same as all SDUs delivered. A value of -1 indicates 'Any'
optional uint32 delay = 11;
//in milliseconds, indicates the maximum delay
allowed in this flow. A value of 0 indicates don't care
optional uint32 jitter = 12;
//in milliseconds, indicates indicates the
maximum jitter allowed in this flow. A value of 0 indicates don't care
}
23
The Pouzin Society DISTRIBUTED APPLICATIONS SDU Protec;on 24 SDU Protection
The Pouzin Society •  Applications may have different
communication mediums they use
levels
of
trust
in
the
–  Need for a way to protect the SDUs they send through the flows
App B App A SDUs 1
2
flow Medium that enables applica?ons to communicate App A Unprotected SDUs • 
Can
perform
the
following
(configurable through policies)
Protected SDUs flow • 
• 
• 
• 
Encryption (Integrity and confidentiality)
Compression
Error detection (CRCs, FECs)
Time To Live
functions
inbound SDUs 1
SDU Protection module protects outgoing SDUs
and unprotects incoming SDUs
outbound SDUs SDU Protec?on module • 
25
The Pouzin Society IPC PROCESS Block diagram, architecture reference vs. implementa;on 26 Levels of Abstraction
(Abstraction is Invariance)
The Pouzin Society Invariant
Service Definitions
Protocols
Procedures
Policies
Implementation
Variable
Decreasing Levels of Abstraction
Reference Model
IPC Process
The Pouzin Society •  The IPC Process is an entity that provides IPC services for
applications running on the same system
–  It is an application, and uses RINA application operations to do
everything it does
–  It may or may not be an “OS Process”
–  There is no set model for how to implement it, and there can be
very different implementations – based on OS, scale, and many
other concerns
–  In some implementations, it will become part of the OS, just as IP
networking is now
–  In some implementations, it will operate as “middleware”, atop
the OS and its normal networking layer
•  All IPC Processes do similar things – WHAT they do is
described in the Reference Architecture, but there are
many feasible Implementation Architectures for HOW
those functions get done. We’ll examine a few today
28
Block Diagram (Reference Arch.)
The Pouzin Society •  You’ve seen the RINA Reference Architecture (RA)
partitioning of the IPC Process
–  This describes the basic mechanisms and what
communicate among themselves to perform the
functionality ascribed to an IPC Process
they
total
•  Implementers use the RA as a guide to create an
Implementation Architecture
–  Driven by their particular requirements, implementation target,
and end-use
•  Language, use of OS features, flow of control approach, etc., can
all be different – but they all need to implement the RA
–  Modules may be different, but ALL RA functions will be present in
a complete implementation, and will communicate with the
same functions as they do in the RA
–  There can also be multiple different implementations of the
same Implementation Architecture (e.g., ports to different OS’s)
29
Block Diagram (Reference Arch.)
Applica?on Specific Tasks System (Host) System (Router) Appl. Process Other Mgt. Tasks IPC Mgt. Tasks Mul?pl
exing SDU Protec?
on IPC Resource Mgt. Mgmt Agemt Inter DIF Directory Appl. Process Mgmt Agemt DIF IPC Process DIF DIF IPC Process IPC Process System (Host) IPC Process IPC Process IPC Process The Pouzin Society Mgmt Agemt IPC Process IPC API Data Transfer Data Transfer Data Transfer Data Transfer Relaying and Mul?plexing State Vector State State VVector ector SDU Delimi?ng Layer Management Data Transfer Control Transmission ontrol Transmission CC
ontrol Transmission Control Retransmission Retransmission Retransmission Control Control Control Flow Control Flow Control Flow Control CACEP Enrollment RIB Daemon Authen?ca?on Flow Alloca?on RIB CDAP Parser/
Generator Resource Alloca?on SDU Protec?on Forwarding Table Generator (Rou?ng) Increasing ?mescale (func?ons performed less oden) and complexity 30
The Pouzin Society TRIA IMPLEMENTATION 31 Overall Goals and Approach
The Pouzin Society •  Provide a framework to test and debug the new protocols
–  Use a single-threaded state machine model to simplify locking
and increase repeatability
–  Operate entirely at user (application) level for easier debugging
•  Anticipate the desire to move some portions (which ones
were as yet unknown) into the OS kernel eventually
–  Coded in C
–  Memory/buffering/time-management operations similar to those
available inside the UNIX/Linux OS
•  Anticipate future porting to multiple targets
–  Use standard POSIX/UNIX capabilities common on all or most
platforms, avoid extensions that impair portability
–  Test on MacOS (Mach-based UNIX) and Linux
–  Test on large and small systems (Intel and ARM-based)
32
Major Parts of the Implementation
The Pouzin Society •  Infrastructure
–  Main program, select (event) loop, state machine framework, file
management, non-blocking I/O, delimiting, pseudo-files (internal IPC,
Shim DIF), memory and message pools, timers, startup/shutdown,
configuration parsing, logging and debug utilities, GPB and JSON utilities
•  CDAP
–  Table-driven CDAP msg. parse/build, connection state machine
•  RIB
–  Node allocation, lookup, RIB Daemon operations on nodes
–  Object Manager mechanism for operations on objects
•  IPC Process
–  Per-DIF management (RIB Daemon, enrollment, startup), FA, FAI, DTP/
DTCP, Network Management client interface, Shim DIF, routing, IPC
Process-specific Object Managers
•  RINA native API Library
•  Tests, including RINABAND
33
High-­‐Level Block Diagram UNIX/Linux Processes The Pouzin Society IDD Applica?on NetMgr App. User Applica?on RINA API RINA API RINA API Authen;ca;on Database UNIX/Linux Process NetMgr Agent/ Directory Server RIB Data Base Rou?ng Computa?on Logger Per-­‐DIF Manager Flow Al. Instances Flow Allocator EFCP Instances RMT (N-­‐1)DIF Flows SHIM DIF Device Driver file RINA API (N-­‐1) FAI socket IPCMGR Process I/O Device RINA DIF 34 The Pouzin Society I2CAT/TSSG IMPLEMENTATION 35 Overall Goals and Approach
The Pouzin Society •  Provide an open source initial RINA implementation that can be
used for education and quick prototyping – as well as to
exercise and improve the RINA specs.
–  Easy to develop, OS-independent language: Java
–  Code structured to be modular and extendable: Use OSGi as a
component framework (Eclipse Virgo Implementation)
–  Portable to different operating systems: only use Java OS-dependent
features available in most OSs (sockets)
•  Enable to setup relatively complex scenarios with few hardware
resources
–  Use the TINOS protocol experimentation framework –developed by
TSSG- in order to be able to emulate multiple “hardware” within the
same Java process.
•  i2CAT/TSSG’s RINA implementation is part of the TINOS project, as
one of the “protocol stacks” available.
–  Reuse of TINOS compile/build infrastructure
–  Maximize synergies between both projects: single
community (hosted at github)
–  Integration with TINOS will be easier (not done yet)
development
36
Major Parts of the Implementation
The Pouzin Society •  Infrastructure
–  VIRGO OSGi core (handles the lifecycle of the different components –
bundles in OSGi parlance), single thread pool, blocking I/O,
configuration parsing (JSON library), sockets, Google Guava library
(Java has no unsigned types, thanks!), Google Java GPB
implementation, Java timers, delimiting, object encoding/decoding
•  IPC Manager
–  RINA-side of the IPC API, IPC Process Lifecycle Management, will host
management agent and IDD (not implemented yet), console service
(local administration)
•  “Normal IPC Process”
–  RIB, RIB Daemon, CDAP Parser/generator, Enrollment task, Flow Allocator,
Resource Allocator, EFCP, RMT, SDU Protection
•  Shim IPC Process for IP Layers
–  Setup and management of TCP and UDP flows as per the shim DIF spec
•  RINA Application Library
–  Native RINA API and faux sockets API
•  Test applications
–  RINABand, Echo server & client, simple chat application
37
General design (I)
RINA Lib RINA Lib For the registra?on, local TCP connec?on to port 32771 Listen for local TCP connec?ons at port 32766 For each flow to service applica?on 1, local TCP connec?on to port X IPC Manager Applica?on Service Console Service IPC Process Lifecycle Management (“IRM”) IDD NOTE: Could be mul0ple “systems” within the same Java VM once fully integrated with TINOS Local administra?on Listen for local TCP connec?ons at port X (dynamically assigned) Listen for local TCP connec?ons at port 32771 OS Process (Java VM instan0a0on) OS Process (Java VM instan0a0on) Server Applica?on 1 Client Applica?on 1 For each flow, local TCP connec?on to port 32771 The Pouzin Society IPC Service Normal IPC Process Components Delimiter Encoder CDAP Session Manager GPB parser Enrollment Task RIB Daemon EFCP Virgo OSGi Kernel IPC Service RMT Resource Allocator Flow Allocator Shim IPC Process for IP Flow Allocator SDU Protec?on Listen for TCP connec?ons and UDP datagrams at IPa:portb Flows to/from other shim IPC Processes 38
General design (II)
The Pouzin Society 39
Why TINOS?
Larger experimentation scenarios with less infrastructure
The Pouzin Society DIF DIF DIF Shim
k) S stac
IP (O
Link Data Java Virtual Machine Data Link Shim DIF Shim DIF IP (Jnode) IP (Jnode) Data Link Java Virtual Machine Data Link Data Link Java Virtual Machine LAN • 
With TINOS multiple nodes can be created within
the same Java JVM, with different network
connectivity with each other and other JVMs
(TINOS uses adapted IP stack from JNode and
XMPP for this)
DIF Shim DIF
IP (JNode
Data Link Shim DIF Shim DIF IP (Jnode) IP (Jnode) Data Link
) XMPP netw
ork Data Link Data Link Data Link Data Link Data Link Java Virtual Machine 40
The Pouzin Society ALTERNATIVE IMPLEMENTATIONS Some Implementa;on Architectures with Interes;ng Proper;es 41 RINA in the OS Kernel
The Pouzin Society •  Make RINA a “native” networking API
–  New/Extended OS system calls provide full RINA capability
–  Move (at least) DTP/DTCP into the OS kernel for speed
App App IPC Process-­‐ Applica;on Space OS Kernel New/Extended OS API Calls DTP/DTCP RMT Network Device 1 Flow State Forwarding Table Network Device 2 “Network Device” Might be a Shim DIF or a RINA DIF 42
RINA Split Between H/W and S/W
The Pouzin Society •  RINA RMT/DTP performed in hardware
–  Software still does DTCP and remainder of IPC Process fn’s
–  Transiting PDUs need not be processed by software
IPC Process-­‐ App App Applica;on Space OS Kernel Hardware/Firmware New/Extended OS API Calls DTP DTCP RMT Network Interface 1 Flow State Forwarding Table Network Interface 2 43
The Pouzin Society IPC PROCESS (CONTINUED) RIB and RIB opera;ons 44 RIB and RIB Operations
The Pouzin Society •  The Resource Information Base (RIB) is a virtual object
database
–  Each AE projects a view over the underlying objects
–  The RIB holds the shared state of the communication
instances between applications
•  The IPC Processes communicate by exchanging
operations on RIB objects
–  The only operations are:
create, delete, read, write, start, and stop
–  These operations cause objects to perform appropriate
actions (defined in an object dictionary)
–  There is a particular tree of RIB objects defined for IPC Process
use (any other application can define its own tree)
45
A Few Thoughts on the RIB Daemon
•  A generalization of Event Management and Routing Update
–  Elsewhere (circa 1988) I said Event Management is the
hypothalamus of network management and looks like this:
To Other Management Applica;ons Add/Delete
Subscription
Filter control
Subscription
Service
Logging
Rcv
Events
Subscript
Def
File
The Pouzin Society A Few Thoughts on the RIB Daemon
• 
The Pouzin Society Generalizing routing update adds a capability for managing periodic
and/or event driven a data distribution and replication strategy.
To Other Management Applica;ons Add/Delete
Subscription
Filter control
Subscription
Service
Does this imply an opportunity for a journaling RIB for some data? Logging
Rcv
Events
Subscript
Def
File
Write Subscrip;ons Replica;on Op;mizer A Few Thoughts on the RIB Daemon
The Pouzin Society •  So re-arranging and re-labeling for our current problem.
Add/Delete
Subscriptions
From Tasks
To Reques;ng Tasks Event Subscrip;ons Reads and Writes to an actual store or to other tasks or task data structures, e.g. DT-­‐state vector. An opportunity for a journaling RIB for some data? Subscription
Service
Write Subscrip;ons Logging
CDAP
Processing
Incoming CDAP PDUSs Subscript
Def
File
Replica;on Op;mizer RIB Implementation
The Pouzin Society •  Our protocol exchanges refer to objects by name and/or
object-id (a number)
–  We haven’t started using object-id’s yet, but the intent was to
make the protocol exchanges more compact
–  We will standardize the object names/id’s that need to be the
same for consistent RINA implementations through PSOC
•  The RIB appears as a tree-structured database with
objects at its leaf nodes. Leaves are named with the full
absolute pathname from the root to the leaf.
•  We operate on an object by sending the operation and
the operand object’s name/id (and a value, if
appropriate)
–  The reference model has a “RIB Daemon” that performs the
operation; in practice, this may be subsumed into other entities
49
Naming conventions for IPC Processes
The Pouzin Society •  Application names:
–  Can be whatever, probably would be useful to give some
kind of indication of its physical location (to facilitate
management, for no other purposes).
•  Application instances:
–  Not used in principle, since in normal operation there should
be no need to connect to a concrete instance of an
application process (default to 1).
•  Two Application Entities:
–  Management AE: Flows established to/from here are used to
establish application connections to neighboring IPC
Processes and exchange layer management information
using CDAP.
–  Data Transfer AE: Flows established to/from here are used by
the RMT to transport “data transfer SDUs”.
50
Current tree of objects
The Pouzin Society /daf/management/opera?onalstatus /daf/management/naming/applica?onprocessname /daf/management/naming /daf/management/naming/address /daf/management /daf/management/naming/whatevercastnames /daf / /daf/management/neighbors /dif/ipc /dif/ipc/datatransfer /dif/ipc/datatransfer/constants /dif /dif/management/flowallocator /dif/management /dif/resourcealloca?on /dif/management/flowallocator/qoscubes /dif/management/flowallocator/directoryforwardingtableentries /dif/resourcealloca?on/flowallocator /dif/resourcealloca?on/nminus1flowmanager /dif/resourcealloca?on/flowallocator/flows /dif/resourcealloca?on/nminus1flowmanager/nminus1flows /dif/resourcealloca?on/pduforwardingtable 51
The Pouzin Society IPC PROCESS Enrollment 52 Enrollment
The Pouzin Society •  Enrollment is the process by which an IPC Process
communicates with another IPC Process to join a DIF
–  And acquires enough information to start operating as a member of
the DIF
–  After enrollment, the newly-enrolled IPC Process is able to create
and accept flows between it and other IPC Processes in the DIF
•  Enrollment on the Internet
–  For TCP/IP mostly inexistent or by ad-hoc/manual means (DHCP
provides a bit of the required functionality)
–  In IEEE 802.11 the procedure for joining a network is almost identical
to what RINA predicts. The BSSID is a DIF-name.
–  Similarly, there is enrollment in 802.1q (VLANs).
–  Done independently, confirmation of the theory.
53
Start at the Beginning
Joining a DIF
The Pouzin Society IPC Process B is a member of a DIF beta Establish conn authen;cate Ini;aliza;on informa;on DIF Management DIF Management IPC Process A wants to join DIF of which B is a member. (N-­‐1)-­‐DIF • 
A Wants to join DIF beta of which B is a member. First it needs to establish communication with beta. So A’s
DIF Management task using DIF A’s IPC Manager (not shown) does an allocate(beta, as good QoS as it can
get).The name beta is a whatevercast name for the set containing the addresses of all members of beta that
the rule returns the address of an IPC Process with a common (N-1)-DIF. The whatevernme is resolved by the
(N-1)-DIF.
• 
The Allocate creates a flow between A and B. They exchange CDAP connect requests, followed by
whatever authentication is required to establish an application connection between A and B. Actually
between A and beta. B is acting as an agent or representative for beta.
• 
Then A and B exchange initialization information. Primarily B is telling A what its DIF internal name (address) is
and populating A’s RIB with the current information on the DIF. We will come back to this.
54
A is now a member of beta
IPC Management RIB Daemon Applica;on Connec;on IPC Management A RIB Daemon The Pouzin Society B (N-­‐1)-­‐DIF • 
There is now an application connection between the IPC management components of A
and B.
–  All connections between members of a DAF are managed by their IPC management
component.
–  Any management component can send on the flows managed by IPC.
–  All incoming PDUs are delivered to the RIB Daemon.
–  The RIB Daemon is a subscription service, essentially a generalization of both routing
update and event management. When any CDAP PDU arrives, it is logged and
distributed to the tasks that have subscribed to be notified.
–  The Flow Allocator subscribes to Create/Delete Flow Req. (The Flow Allocator will
update the RIB after processing the request.)
55
Enrollment Exchange
The Pouzin Society •  There are several enrollment situations that IPC
Processes encounter when connecting, for example:
–  An IPC Process that is not enrolled connects to an IPC Process
that is not enrolled in a DIF – the two form a DIF
–  An IPC Process that is not enrolled connects to an IPC Process
that is already enrolled in a DIF – it joins the DIF
–  An IPC Process that is enrolled makes a connection to a
neighbor that is enrolled – they now have a new route for
flows
•  An IPC Process can be in either role, as initiator or
target
•  The information exchanged in some cases can be
reduced to minimize enrollment time
56
Enrollment Procedure I
The Pouzin Society •  When the New Member receives the M_Connect Response, the New Member
copies Current_Address to Saved_Address, it sends
–   M_Start Enrollment(address, Address_expiration_time, other data about New
Member)
•  /* The New Member is telling the Existing Member what it knows. Primarily
this is derived from the address (NULL or not), and the expiration life-time of
the address if non-NULL. Since addresses are generally assigned for hours or
minutes, tight time synchronization is not required. (Even for DIFs with fast
turnover, fairly long assignment times are still prudent.)*/
•  The Member sends
–   M_Start_R Enrollment(address (potentially different), Application Process
Name, Current_Address, Address_Expiration).
Enrollment Procedure II
The Pouzin Society •  Using the information, provided by the New Member, the Existing Member
sends
–   M_Create (zero or more) to initialize the Static and Near Static information
required. When finished and the New Member has sent all necessary
–   M_Create_Rs
•  The Existing Member sends a
–   M_Stop Enrollment (Immediate:Boolean)
•  The New Member may Read any additional information not provided by the
Existing Member.
–   M_Read (zero or more)
–   M_Stop_R Enrollment
•  If the Immediate Boolean is True, the New Member is free to transition to the
Operational state.
•  If the Boolean Immediate is False, then the New Member can not transition to
the Operational state until an M_Start Operation is received.
Enrollment Procedure III
The Pouzin Society •  The New Member is free to Read any information not provided by the
Existing Member. Once these are completed, the Existing Member sends:
–   M_Start Operation
•  The New Member sends
–   M_Start_R Operation
•  Invoke RIB Update of dynamic information which will cause others to send
data to the New Member.
Example Message Sequence
Skipping Application connection setup (CACEP)
• 
The Pouzin Society One IPC process is a member of a DIF, another one is not
Joining IPC Process Member IPC Process M_START (Enrollment_Info_object{address=null}) 1 M_START_R (ok, Enrollment_Info_object{address=25}) 4 Got a posi?ve response and an address. Wait for STOP Enrollment response, RIB Daemon processes the M_CREATE messages 3 M_CREATE (DIF_info1) 5 … M_CREATE (DIF_infoN) The joining IPC Process has no 2 address, not a member of the DIF. Assign a valid address and reply Send DIF sta?c info (whatevercast 4 names, data transfer constants, qos cubes, supported policy sets) and dynamic info (neighbours, directory forwarding table entries) through a series of M_CREATE messages 5 8 12 Check if I got enough data to start. If more info is required send M_READ requests on specific objects (not the case). I’m Enrolled! Now, if I have a DIF in common with one or more of the neighbors (I’m mul?homed) I could enroll with them as well (next slide) Ignore if started earlier, or start now (consider enrolled now) 6 M_STOP (Enrollment{allowed_to_start_early=true}) 7 Once all the informa?on is sent, send stop enrollment request (informing the enrollee has to wait for START opera?on request) and wait for response M_STOP_R (ok) 9 M_START (opera?onalStatus) 11 10 Got STOP response. He’s enrolled! Send M_START message (no answer required) 60
Example Message Sequence
Skipping Application connection setup (CACEP)
• 
The Pouzin Society Both IPC Processes are members of the same DIF
Joining IPC Process Member IPC Process also a member M_START (Enrollment_Info_object{address=25}) 1 M_START_R (ok, Enrollment_Info_object{address=25}) 4 Got a posi?ve response and my address is s?ll valid. Wait for M_STOP enrollment request, RIB Daemon processes the M_CREATE messages 3 M_CREATE (DIF_info1) 5 The joining IPC Process has a valid 2 address, he is a member of the DIF. Reply Send DIFs dynamic info only 4 (neighbours, directory forwarding table entries) through a series of M_CREATE messages … M_CREATE (DIF_infoN) 5 6 8 12 Check if I got enough data to start. If more info is required send M_READ requests on specific objects (not the case). The member I’ve talked to is now my neighbor! Ignore if started earlier, or start now (consider enrolled now) Once all the informa?on is sent, send stop enrollment request M_STOP (Enrollment{allowed_to_start_early=true}) 7 M_STOP_R (ok) 9 M_START (opera?onalStatus) 11 10 Got STOP response. He’s my neighbor! Send start message, no response required 61
The Pouzin Society IPC PROCESS Flow Alloca;on 62 Flow Allocator
The Pouzin Society Allocate(Dest-Appl-Name, QoS parameters)
Flow
Allocator
Dir
Forwarding
Table
Local
Dir Cache
•  When Application Process generates an Allocate request, the
Flow Allocator creates a flow allocator instance to manage each
new flow.
•  The Instance is responsible
deallocating the ports
for
managing
the
flow
and
–  DTP/DTCP instances are deleted automatically after 2MPL with no
traffic,
•  When it is given an Allocate Request it does the following:
63
Details of the Allocation Data Flow: I
The Pouzin Society Allocate(dest-­‐appl, desired_flow_proper;es) Appl-­‐names Next Place Create Flow(dest-­‐appl, stuff) FAI Subscribe Create/delete Flow objects Directory Forwarding Table RIB Daemon EFCP IPC/RMT • 
Upon initialization, the FA subscribes to create/delete flow objects.
• 
The FAI is handed an allocate request. After determining that it is well formed it must find the
destination application.
• 
It consults the Directory Forwarding Table (dotted arrow). The table maps the dest-appl in the
request to a Next Place to look for it (IPC Process @)
• 
That points to either a nearest neighbor management flow (if it is multihomed there will be more
than one) or a connection allocated that does not go to a nearest neighbor, but uses the data
transfer AE. This connection was created by the management task and is available to all tasks
within the IPC Process.
64
Details of the Allocation Data Flow: II
The Pouzin Society Appl-­‐names Next Place FA RIB Daemon Create Flow(dest-­‐appl, stuff) Create Flow(dest-­‐appl, stuff) Directory Forwarding Table EFCP IPC/RMT • 
When a Create Flow Request arrives, the RIB Daemon forwards it to the FAI for
inspection.
• 
If the FA determines that dest-appl is not here, then it consults the Directory
forwarding table as before to determine where to send it next.
• 
If dest-appl is here, then . . .
65
Details of the Allocation Data Flow: III
The Pouzin Society Allocate Indicate Dest Appl Allocate Confirm Read/Write Appl-­‐names Next Place Create Flow Resp FAI RIB Daemon Create Flow Req(dest-­‐appl, stuff) Directory Forwarding Table EFCP IPC/RMT • 
• 
• 
• 
• 
When the Create Flow Req arrives it is passed to the Flow Allocator.
The Flow Allocator looks it up in the table and determines that dest-appl is here. It
determines whether or not the requestor has access to dest-appl.If it does,
then dest-appl is instantiated if necessary, and given an allocate indicate.
It responds with an allocate confirm, if positive then data transfer can commence.
In either case or earlier of access was denied, a Create Flow Resp is sent back with the
appropriate response.
66
Implementation of the Flow Allocator
Application registration and DirectoryForwardingTable
The Pouzin Society •  DirectoryForwardingTable maps ApNames to the @ of IPC processes
where they are currently registered.
–  Updated by local application registration events (through IPC API)
–  Updated by remote application registration events (through remote CDAP
messages processed by the RIB Daemon)
–  Updated by timers (to discard stale entries)
•  Distributed database, several strategies for implementation (the
larger the DIF, the more complex it becomes)
–  Compromise between load of messages to update the database vs. the
timeliness of the data in each DB
–  Fully replicated vs. partially replicated
•  Current implementation: simple, only for small DIFs.
–  Fully replicated Database (all the IPC Processes know about all the registered
applications in the DIF)
–  Each time a local application registers/unregister, the FA sends CDAP M_CREATE
message to all its nearest neighbors
–  Each time a new mapping is learned (from a remote update), if the value of that
mapping changed, the FA sends CDAP M_CREATE message to all its nearest
neighbors – except for the one that notified the update 67
Implementation of the Flow Allocator
i2CAT: Management of flows and Interaction with EFCP
Appl. Process Allocate Response(result) 9 2 Flow Allocator 2 Create FAI FAI alloca?on_requested(srcApName) Allocate Request (destAPName, QoS Params) 1 IPC Process Map request into policies, see if is feasible. Search dest app. at the directory. Create DTP/DTCP 2 instance DTP/
DTCP The Pouzin Society M_CREATE(Flow object) 3 8 M_CREATE_R(Flow object) DIF • 
When the flow has been established, 1
incoming and 1 outgoing queue are
allocated at the layer boundary by the
FAI
• 
Also, a new EFCP StateVector for the
connection (1 per flow right now) is
instantiated at the DataTransferAE; as well
as 2 queues for queuing PDUs to/from the
RMT
5 Check access 4 control and policies to see if flow is feasible Appl. Process alloca?on_response
6 (result) IPC Process Flow Allocator 7 Create DTP/DTCP 4 Create FAI instance DTP/
DTCP FAI 68
The Pouzin Society IPC PROCESS Transport protocol: EFCP 69 EFCP: Error and Flow Control Protocol
State Vector
Data Transfer
Protocol
The Pouzin Society Data Transfer
Control
•  Based on delta-t with mechanism and policy separated.
–  Naturally cleaves into Data Transfer and Data Transfer Control
•  Data Transfer consists of tightly bound mechanisms
–  Roughly similar to IP+UDP
•  Data Transfer Control, if present, consists of loosely bound mechanisms.
–  Flow control and retransmission (ack) control
•  One or more instances per flow; policies driven by the QoS
parameters.
–  The Flow Allocator translates the QoS parameters into suitable policies.
–  In parallel, might be used for things like p2p [sic] do.
–  Used serially, avoids the need for a separate security connection as in IPsec.
•  Comes in several syntactic flavors based on the length of (address,
connection-endpoint-id and sequence number)
•  Addresses: 8, 16, 32, 64, 128, variable.
•  CEP-id: 8, 16, 32, 64
•  Sequence: 4, 8, 16, 32, 64
70
EFCP: separation of port allocation from
synchronization
The Pouzin Society Port-id
Connection
Endpoint
Port Allocation (FA dialogue, IPC Process management)
Synchronization (EFCP state machines, data transfer)
Connection
•  Separating port allocation from synchronization – unlike TCP- has
interesting security implications – more on this later.
•  Port Allocation state is created/deleted based on explicit requests
• 
• 
Local applications through the IPC API (allocate/deallocate flows)
Remote CREATE/DELETE Flow requests from other IPC Processes
•  Synchronization state is refreshed every time a DTP/DTCP packet is
sent/received
• 
If no packet is received after a certain amount of time state is discarded
71
Intro to Delta-T
Timer-based connection management
The Pouzin Society •  All connections exist all the time, the protocol just needs to keep
caches of the state for those that have carried traffic recently
–  When a PDU is received for a certain connectionId, the state of the
connection is refreshed
–  After a certain amount of time with no traffic, the state is discarded
•  What amount of time with no traffic is necessary to be able to
safely discard the send/receive state and ensure that:
–  No packets from a previous connection are accepted in a new
connection
–  The receiving side doesn’t close until it has received all the
retransmissions of the sending site and can unambiguously respond
to them
–  A sending side must not close until it has received an Ack for all its
transmitted data or allowed time for an Ack of its final retransmission
to return before reporting a giveup failure.
72
Intro to Delta-T (II)
Timer-based connection management
• 
• 
Receiver Sender PDU 1
MPL A PDU 1 AC
PDU 2
R PDU 2
PDU 2
• 
• 
K • 
• 
The Pouzin Society MPL: Max time to traverse a network
A: Max time the receiver will wait
before sending an acknowledge
R: Max time a sender will keep
retransmitting a packet
deltaT = MPL + A + R
• 
Watson showed that send state can
be safely discarded after a period of
3deltaT with no traffic, and receive
state can be discarded after a
period of 2deltaT with no traffic
No SYNs are FYNs are necessary (compared to TCP) -> simpler, more robust
Implication of Watson’s results:
•  If MPL cannot be bound, then there is no way to have a reliable data
transport, therefore it cannot be IPC
73
Data Transfer Protocol (DTP)
• 
Notice that the flow is a straight
shot, very little processing and
if there is anything to do, it is
moved to the side. The most
complex thing DTP does is
reassembly and ordering.
• 
If there is a DTCP instance for
this flow: InboundQ
Delimit SDU
Reassmb/SeqQ
Sequencing/
Strip
Delimiting
Fragment/
Concatenate
Reassembly/
Separation
Sequence/
Address
The Pouzin Society CRC
– 
ClsdWinQ
– 
RexmsnQ
DTCP
PDUs
RMT
CRC
• 
If the flow control window closes,
PDUs are shunted to the flow controlQ.
If the flow does retransmission, a copy
of the PDU is put on the rexmsnQ. These PDUs are now DTCP’s
responsibility to send when
appropriate.
74
Data Transfer PDU Contents
The Pouzin Society •  Version: 8 Bit (optionally used, absent in current prototypes)
•  Destination-Address: Addr-Length
•  Source-Address: Addr-Length
•  Flow-id: Struct
–  QoS-id: 8 Bit
–  Destination-CEP-id: Port-id-Length
–  Source-CEP-id: Port-id-length
•  PDUType: 8 bits
•  Flags: 8 bits
•  PDU-Length: LengthLength
•  SequenceNumber: SequenceNumberlength
•  Sequence User-Data{DelimitedSDU* | SDUFrag}
75
DTP PDU Parsing Example (DEMO)
The Pouzin Society int policy = dtc.EFCPEncodingPolicyType;
switch ( policy ) {
case PDUVERSION_DEMOPROFILE:
NEXT16(destAddr);
NEXT16(srcAddr);
NEXT16(destCEPID);
NEXT16(srcCEPID);
NEXT8(qosID);
NEXT8(pduType);
NEXT8(flags);
NEXT32(pduSeqNumber);
break;
76
DTP Policies
The Pouzin Society • 
UnknownFlowPolicy – When a PDU arrives for a Data Transfer Flow
terminating in this IPC-Process and there is no active DTSV, this policy
consults the ResourceAllocator to determine what to do.
• 
SDUReassemblyTimer Policy – this policy is used when fragments of an SDU
are being reassembled and all of the fragments to complete the SDU have
not arrived. Typical behavior would be to discard all PDUs associated with
the SDU being reassembled.
• 
SDUGapTimer Policy – this policy is used when the SDUGapTimer expires and
PDUs have not been received to a sequence of SDUs with no gaps greater
thanMaxGapAllowed. Typically, the action would be to signal an error or
abort the flow.
• 
ClsdWindPolicy - This policy determines what to do if the PDU should not be
passed to the RMT.
• 
MaxPDUSize – The maximum size in bytes of a PDU in this DIF.
• 
MaxFlowPDUSize – The maximum size in bytes of a PDU on this Flow.
• 
SeqRollOverThres – The value at which a new flow is created and assigned
to this Port-id to support data integrity.
• 
MaxGapAllowed – The maximum gap in SDUs that can be delivered to the
(N)-DIF port without compromising the requested QoS.
77
Data Transfer Control Protocol
The Pouzin Society •  For flows with retransmission (acks) and/
or flow control, a DTP flow requires a
DTCP companion.
DT-SV
DTCP
DTP
Rexmsn
Ctl
•  DTCP controls flow volume, the RMT
controls combined flow rate of (N-1)flows.
Flow Ctl
–  Congestion Control is provided by (N-1)-flows
Re-xmsn Q
Flow Control Q
RMT
Data Flow
•  Notice no explicit synchronization. This is
enforced by the bounds on the 3 timers
Watson
found
are
necessary:
Retransmission Control bounds two of
them: RTT and retries. Max PDU Lifetime is
bounded by PDUProtection (TTL) or the
propagation time on a (N-1)-DIF that
does not relay, e.g. a wire.
Control Flow
78
DTCP Policies
General policies & parameters
The Pouzin Society •  TA – Maximum time an ack is delayed before sending
•  TG – Maximum time to exhaust retries.
•  TimeUnit – for rate based flow control, i.e. # of PDUs
sent per TimeUnit
•  FlowInitPolicy – Data Transfer Control initialization
policy
•  SVUpdatePolicy – Updates the State Vector on arrival
of a TransferPDU
•  LostControlPDUPolicy – What to do if a Control PDU is
lost?
79
DTCP Policies
Retransmission control
The Pouzin Society •  RTTEstimator Policy – the algorithm for estimating RTT
- what to do when a
Retransmission Timer Expires, if the action is not retransmit
all PDUs with sequence numbers less than this.
•  RetransmissionTimerExpiryPolicy
•  ReceiverRetransmission Policy - This policy is executed by
the receiver to determine when to positively or negatively
ack PDUs.
•  SenderAck Policy - provides some discretion on when PDUs
may be deleted from the ReTransmissionQ. This is useful for
multicast and similar situations where one might want to
delay discarding PDUs from the retransmission queue.
•  SenderAckList Policy - similar to the previous one for
selective ack
80
DTCP Policies
Flow control
The Pouzin Society •  InitialCredit Policy - sets the initial amount of credit on the
flow.
•  InitialRate Policy - sets the initial sending rate to be allowed
on the flow.
•  ReceivingFlowControlPolicy - on receipt of a Transfer PDU
can update the flow control allocations.
•  UpdateCredit Policy – determines how to update the
Credit field, i.e. whether the value is absolute or relative to
the sequence number.
•  FlowControlOverrun Policy - what action to take if the
credit or rate has been exceeded.
•  ReconcileFlowConflict Policy - when both Credit and Rate
based flow control are in use and they disagree on
whether the PM can send or receive data.
81
The Pouzin Society IPC PROCESS Relaying and Mul;plexing Task 82 Relaying and Multiplexing Task
The Pouzin Society PDUs from
EFCP & (N-1)DIF flows
Forwarding Table
Queues
(N-1)-DIF A
(N-1)-DIF B
Ports
•  Outbound this is the first queuing we must hit and even here it may not be necessary (see
below).
•  DTP flows are classed by the QoS-id part of the connection-id, RMT policy determines the
servicing of the queues, for each PDU consulting the forwarding table and posting it to the
proper (N-1)-port.
– 
Because PDUs are complete formed, RMT need not distinguish locally generated PDUs from
those that arrived on an (N-1)-port.
•  The natural structure of the 3 kinds of boxes is such to limit the number of (N-1)-ports.
83
RMT Implementation Issues
The Pouzin Society •  RMT is the main place where QoS policies operate
•  Multiplexing requires flow control, buffering, and policies
for how to manage queue space and I/O bandwidth
–  RMT may discard inbound PDUs it has no place for
–  RMT uses a policy to decide which outbound flow’s data will be
sent when it can next send a PDU to an (N-1)Flow
•  A primary input to this decision is the QoS cube of the flow
–  Various flow control methods to push back to the application
may be used to prevent having to discard outbound data
•  For example, don’t take an outbound PDU from a flow until the
destination (N-1)Flow is known to be able to accept it
•  RMT accesses the Forwarding Table to chose the (N-1)Flow
to send a PDU over
•  The RMT also may receive a PDU from an (N-1)Flow that
needs forwarding, refer to the Forwarding Table, and
place it on an outbound (N-1)Flow
–  This also has flow control/resource management implications
84
The Pouzin Society IPC PROCESS Rou;ng and forwarding 85 Routing and Forwarding
The Pouzin Society •  When a local application generates an outbound
PDU for a remote application, RMT locates the
appropriate outbound (N-1)DIF flow by using the lastknown address for the destination application
–  This uses the “forwarding table”, a mapping of address+QoS
to a specific (N-1)DIF flow. This is in general a many-to-many
mapping.
•  The forwarding table is also used to determine which
outbound flow to use to forward a PDU going to a
destination other than the current IPC Process
•  The forwarding table can be computed in the same
way it’s usually done – periodic recomputation,
based on neighbor and link performance updates
86
Routing and Forwarding
The Pouzin Society •  DTP PDUs with non-local destination transit thru RMT
•  Route update messages maintain forwarding table
PDUs from
EFCP & (N-1)DIF flows
Forwarding Table
Compute Forwarding Table Queues
(N-1)-DIF A
DTP PDU (N-1)-DIF B
Ports
Route Update Messages 87
Complications in Implementing
The Pouzin Society •  Protection on PDU’s must be checked and potentially
removed before RMT can examine the PCI
–  E.g., the PDU could be encrypted or could be coded with
redundant coding to reduce error rates
•  RMT uses decoded PCI to determine if the PDU is for a
local destination, and if so for which flow
•  If the PDU is determined to be transiting the IPC
Process, the exiting (N-1)Flow must be identified and
appropriate protection re-computed if anything has
changed
–  Protection needs to be recomputed only if the PDU changes
•  E.g., hop count, if present, would be decremented by RMT
88
The Pouzin Society IPC PROCESS Resource Allocator 89 Resource Allocator
The Pouzin Society •  The resource allocator is the core of management in the IPC
Process. The degree of decentralization depends on the policies
and how it is used.
•  The RA has a set of meters and dials that it can manipulate. The
meter fall in 3 categories:
–  Traffic characteristics from the user of the DIF
–  Traffic characteristics of incoming and outgoing flows
–  Information from other members of the DIF
•  The Dials
– 
– 
– 
– 
– 
– 
– 
– 
Creation/Deletion of QoS Classes
Data Transfer QoS Sets
Modifying Data Transfer Policy Parameters
Creation/Deletion of RMT Queues
Modify RMT Queue Servicing
Creation/Deletion of (N-1)-flows
Assignment of RMT Queues to (N-1)-flows
Forwarding Table Generator Output
90
Resource Allocator
i2CAT Implementation
•  Just implemented a small
management of N-1 flows.
The Pouzin Society subset
of
the
RA
functionality:
–  Request flows to one or more N-1 DIFs
–  Register the IPC Process in unerlying N-1 DIFs. Process flow requests that
have the IPC Process as a target (accept/deny them)
•  Current policy.
–  Before initiating CACEP and enrollment to a neighbor, allocate a management
N-1 flow his Management AE. If enrollment is successful, allocate a data transfer
flow to the data Transfer AE of this neighbor.
IPC Process N-­‐1 Flow Manager N-­‐1 DIF B N-­‐1 DIF A 91
The Pouzin Society SHIM DIF 92 The Shim DIF
The Pouzin Society •  Sits above a non-RINA transport (e.g., wire, Internet,
LAN) and presents enough of the RINA API to allow an
application to treat the transport as a RINA DIF
•  Some transports present a poor match to RINA
•  Luckily, the IPC Process is an undemanding RINA
application; it needs only unreliable flows to
neighbors to operate
•  The non-RINA transport configuration information
needed may be configured statically, or by using
some non-RINA method (e.g., DNS)
•  To date, we have created Shim DIFs over IP
–  There are many practical issues with this mapping
93
The Shim DIF
The Pouzin Society Appl. Process Appl. Process DIF “Shim IPC Process” “Shim IPC Process” Shim DIF UDP flow TCP flow(s) Public Internet • 
IPC Process IPC Process IPC Process “Shim IPC Process” “Shim IPC Process” Shim DIF UDP flow TCP flow(s) Private IP layer The “shim IPC Process” for IP layers is not a “real IPC Process”. It just presents an
IP layer as if it is a regular DIF
–  Wraps the IP layer with the DIF interface.
–  Maps the names of the IPC Processes of the layer above to IP addresses in the IP layer.
–  Creates TCP and/or UDP flows based on the QoS requested by an “allocate request”.
94
IP/TCP/UCP Practical Issues
The Pouzin Society •  DNS does not provide “application names”
–  An IP address (or FQDN) plus port is closer, but not exact
•  NAT blocks incoming traffic unless a port is opened
–  Outgoing traffic generally opens a (high) port for incoming
–  Manually opening ports for incoming flow requests takes
administration/configuration effort, so needs to be minimized
•  Sharing a TCP flow among multiple RINA flows creates flow
control and starvation potential, so only UDP flows are
usable for DTP traffic
–  This forces one unique port number per application
•  Incoming TCP connections from an IP address are not selfidentifying w.r.t. the originating application (in general,
outgoing ports are not well-known ports)
–  We introduced a Shim-DIF-specific PDU type to handle this
95
The Pouzin Society MISC. TOPICS 96 The Pouzin Society INTER-­‐DIF DIRECTORY (IDD) 97 IDD
The Pouzin Society •  IDD instances will communicate with IPC Processes
–  Local communication (same node) may be OS’s IPC or RINA
flows, depending on implementation architecture
•  The Reference Architecture does not mandate a method
•  IDD instances will communicate with one another
–  Since instances are (generally) on different nodes, standard
RINA application flows will be used
–  This is an area where standard approaches (protocols, AE’s,
…) can be adopted, but there is no requirement to adopt a
single model for all DIFs and sets of DIFs
98
Network Management
The Pouzin Society •  Network management operations work the same way
the IPC Process works in general: operations on
objects
•  There is additional security (mostly OS provided) on
access to the IPC Process by a local Network
Management client application
•  There will be RIB objects that Network Management
has visibility to and rights to operate on that remote
IPC Processes do not have
•  Network Management can cross DIF boundaries,
since multiple DIFs may belong in the same
management domain
99
Security
The Pouzin Society •  All applications have the option to identify and
accept/reject incoming flow requests from other
applications
•  An OS may choose to limit what applications have
the right to access a particular DIF/IPC Process
•  Encryption is per-DIF; if an application wants its own
SDUs hidden from the IPC Process it’s using to
communicate via a DIF, it can encrypt them – the IPC
Process never looks inside of them
–  Since the IPC Process is an application, this goes for its PDUs
as well.
100
The Pouzin Society CONCLUSIONS 101 Conclusions
The Pouzin Society •  The RINA Architecture is implementable
–  Three implementations are in various stages of completion, pushing one
another
–  The size and complexity of implementation is modest (we are currently
using simple policies)
•  There are many reasonable implementation approaches
–  Different requirements and OS’s may lead to different partitioning,
language, and overall approach
–  What would we do differently in our next implementation? Discussion to
follow!
•  With working implementations in place, bringing up a new one is
much less difficult than the first ones
–  Most problems will be with the new implementation
–  It is also beneficial to the existing ones – new implementations can
cause an existing one to follow new paths and uncover latent defects
•  We welcome new partners and new implementations!
102
The Pouzin Society DISCUSSION 103 The Pouzin Society DEMO STORYBOARD 104 RINABand Test Application
The Pouzin Society RINAband server Instance 1 RINABand Client 1 flow for test control Control AE DIF N flows for test data Data AE Inst 7 •  Client specifies test parameters
–  Num_flows, SDU size, SDUs per flow, who sends data, reliable/unreliable flows
•  Client sets up a number of flows and, when setup, the test starts
–  Client, server or both send the agreed number of SDUs over the flows
•  Test ends when all the SDUs have been received at the receiving
side(s) or a timer fires (counting time without receiving SDUs)
•  Client displays stats of the test
–  SDUs sent/received (number, Mbps), % of lost SDUs
105
Demo scenario
The Pouzin Society Castelldefels Florida Florida T Castefa.i2CAT 20 RINA-­‐Demo.DIF Barcelona T RINABand, 1 RINABand, 4 bigslug.TRIA-­‐Fl 17 I I T Castelldefels RINABand, 6 Barcelona.i2CAT 65 64 84.88.40.71 84.88.40.70 azathoth.TRIA-­‐Fl ? radio.TRIA-­‐Fl 147.83.207.208 32770 32769 32770 32769 Public Internet shim DIF 32770 32770 32769 Tria-­‐fl.dyndns.org 32769 Tria-­‐fl.dyndns.org 32792 32793 “Public Internet layer” • 
The public Internet shim DIF provides direct connectivity to all the IPC
Processes in the RINA-Demo.DIF
–  Doesn’t necessarily need to be the case, it depends how the public Internet shim DIF
“directory” is populated
106
Demo scenario(near future)
The Pouzin Society RINA-­‐Demo.DIF Public Internet shim DIF “Public Internet layer” • 
Missing a bit of functionality to reach this
–  Routing computation
–  Flow Allocator should do relaying of M_CREATE, M_CREATE_R and M_DELETE Flow
requests
107
Demo storyboard
The Pouzin Society •  IPC Process Creation
–  As a member of a DIF (show RIB)
–  Not a member of any DIF (show RIB)
•  Enrollment (show RIB after joining)
–  Unenrolled member contacts enrolled member
–  Enrolled member contacts enrolled member
–  Member goes away and joins again
•  Application registration
–  RINABand application(s) registering at DIF (show FA directory update)
–  RINABand applications unregistering (show FA directory update)
•  Flow allocation
–  Establish flows and send data with the RINABand client. Show throughtput,
stats…
108