Skip to content

Tutorial 2: DIF over two VLANS

Eduard Grasa edited this page Mar 20, 2018 · 2 revisions

Introduction

This tutorial explains how to configure IRATI to instantiate a normal DIF spanning three machines (systems) interconnected by two VLANs, as illustrated in Figure 1.

Tutorial 2 scenario

System 1

Creation of VLAN

ip link add link eth1 name eth1.100 type vlan id 101
ip link set dev eth1 up
ip link set dev eth1.100 up

### Configuration files

System 2

Creation of VLANs

ip link add link eth1 name eth1.100 type vlan id 100
ip link set dev eth1 up
ip link set dev eth1.100 up
ip link add link eth2 name eth2.101 type vlan id 101
ip link set dev eth2 up
ip link set dev eth2.101 up

NOTE: If you are installing IRATI in a VirtualBox VM, please do not use the Intel PRO/1000 net card adaptor since it strips the VLAN tags.

Configuration files

System 3

VLAN configuration

ip link add link eth1 name eth1.101 type vlan id 101
ip link set dev eth1 up
ip link set dev eth1.101 up

Configuration files

Enrollment of IPC Processes in the normal DIF

Log in the IPC Manager console of System 1 and enter the following commands:

socat - UNIX:/usr/local/irati/var/run/ipcm-console.sock
IPCM >>> enroll-to-dif 2 normal.DIF 100
DIF enrollment succesfully completed

Log in the IPC Manager console of System 3 and enter the following commands:

socat - UNIX:/usr/local/irati/var/run/ipcm-console.sock
IPCM >>> enroll-to-dif 2 normal.DIF 101
DIF enrollment succesfully completed

Now test1.IRATI can reach test3.IRATI via IPC Process test2.IRATI. If we check the RIB of IPC Process test2.IRATI we'll see that it has two neighbors and two N-1 flows over the different N-1 shim DIFS (100 and 101).

...

Name: /daf/management/neighbors/test1.IRATI; Class: neighbor; Instance: 19
Value: Name: test1.IRATI-1-Management-; Address: 16; Enrolled: 1
; Supporting DIF Name: 100; Underlying port-id: 1; Number of enroll. attempts: 0

Name: /daf/management/neighbors/test3.IRATI; Class: neighbor; Instance: 23
Value: Name: test3.IRATI-1-Management-; Address: 18; Enrolled: 1
; Supporting DIF Name: 101; Underlying port-id: 2; Number of enroll. attempts: 0

...

Name: /dif/resourceallocation/nminusoneflowmanager/nminusoneflows/1; Class: nminusone flow; Instance: 18
Value: Local app name: test2.IRATI-1--Remote app name: test1.IRATI-1--
N-1 DIF name: 100; port-id: 1
Flow characteristics: Jitter: 0; Delay: 0
In oder delivery: 0; Partial delivery allowed: 1
Max allowed gap between SDUs: -1; Undetected bit error rate: 0
Average bandwidth (bytes/s): 0; Average SDU bandwidth (bytes/s): 0
Peak bandwidth duration (ms): 0; Peak SDU bandwidth duration (ms): 0

Name: /dif/resourceallocation/nminusoneflowmanager/nminusoneflows/2; Class: nminusone flow; Instance: 22
Value: Local app name: test2.IRATI-1--Remote app name: test3.IRATI-1--
N-1 DIF name: 101; port-id: 2
Flow characteristics: Jitter: 0; Delay: 0
In oder delivery: 0; Partial delivery allowed: 1
Max allowed gap between SDUs: -1; Undetected bit error rate: 0
Average bandwidth (bytes/s): 0; Average SDU bandwidth (bytes/s): 0
Peak bandwidth duration (ms): 0; Peak SDU bandwidth duration (ms): 0

Running the rina-echo-time application in 'ping' mode

We will now use the rina-echo-time application in 'ping' mode to test a flow over the normal DIF. This application consists in two types of processes: servers and clients. In the 'ping' mode, the client sends a configurable number of packets (SDUs) at a configurable rate to the server, which echoes them back. The client reports the latency it perceives.

Running the rina-echo-time server

In System 3, go to the $INSTALLATION_PATH/bin folder and type:

./rina-echo-time -l

Now the server application has registered to the normal DIF.

Running the rina-echo-time client

In System 1, go to the $INSTALLATION_PATH/bin folder and type:

./rina-echo-time -c 100

If the command is successful, you will see the following output:

Flow allocation time = 34ms
SDU size = 20, seq = 0, RTT = 10ms
SDU size = 20, seq = 1, RTT = 8907us
SDU size = 20, seq = 2, RTT = 4496us
SDU size = 20, seq = 3, RTT = 6290us
SDU size = 20, seq = 4, RTT = 6011us
SDU size = 20, seq = 5, RTT = 7215us
SDU size = 20, seq = 6, RTT = 6611us
SDU size = 20, seq = 7, RTT = 7170us
SDU size = 20, seq = 8, RTT = 6696us
SDU size = 20, seq = 9, RTT = 7753us
...

If you inspect the RIB of any of test1.IRATI or test3.IRATI, you will be able to see a new entry describing the flow supported by the normal DIF.

Name: /dif/resourceallocation/flowallocator/flows/16-2; Class: flow; Instance: 27
Value: * State: 2
* Is this IPC Process the requestor of the flow? 1
* Max create flow retries: 1 
* Hop count: 3
* Source AP Naming Info: rina.apps.echotime.client:1::
* Source address: 16
* Source port id: 2
* Destination AP Naming Info: rina.apps.echotime.server:1::es: 
Destination port id: 
* Connection ids of the connection supporting this flow: +
Src CEP-id 0; Dest CEP-id 0; Qos-id 1
* Index of the current active connection for this flow: 0
Clone this wiki locally