[irati] Re: [irati] Re: RINA and multihoming

  • From: "Koen Veelenturf" <koen.veelenturf@xxxxxx>
  • To: irati@xxxxxxxxxxxxx
  • Date: Tue, 28 Jun 2016 10:32:54 +0200

Daar Eduard,

Thank you, I'd be able to test it tomorrow afternoon or on Thursday.

Cheers,

Koen Veelenturf

----- Bericht beantwoorden -----
Van: "Eduard Grasa Gras" <eduard.grasa@xxxxxxxxx>
Aan: <irati@xxxxxxxxxxxxx>
Onderwerp: [irati] Re: RINA and multihoming
Datum: di, jun. 28, 2016 10:28

Hi Koen,
I'll be providing a fix this morning, will you be able to test it?

Cheers,

Eduard

2016-06-24 10:47 GMT+02:00 Koen Veelenturf <koen.veelenturf@xxxxxx>:
Hi Vincenzo,
I’m gonna be very cheeky here.
Is it something you could program relatively quickly? I’m afraid that when I 
have to do it myself, that I will screw it up many times… :)

Cheers,
Koen

On 24 Jun 2016, at 09:36, Vincenzo Maffione <v.maffione@xxxxxxxxx> wrote:

You have to do that, but you also have to do what is done in

rina-tools/src/common/application.cc --> Application::applicationRegister()

for the second DIF.

Cheers,
  Vincenzo

2016-06-23 16:19 GMT+02:00 Koen Veelenturf <koen.veelenturf@xxxxxx>:
Dear Vincenzo,
Thanks for your reply.
Would that simply be adding another block of this but then with -D and adding 
the variables in et_server.cc?

(main.cc @ rina-echo-time)
                TCLAP::ValueArg<string> dif_arg("d",
                                                "dif-to-register-at",
                                                "The name of the DIF to 
register at (empty means 'any DIF')",
                                                false,
                                                "",
                                                "string”);

Or do I need to change more?
I’m not a star in programming, so I need a little push in the right direction. 
:)

Cheers,
Koen

On 23 Jun 2016, at 12:22, Vincenzo Maffione <v.maffione@xxxxxxxxx> wrote:

Hi Koen,
  As Eduard suggests, you could simply modify the rina-echo-time application to 
support an additional "-D" argument to specify a second DIF to register to (in 
server mode).
Then in the code you should call the register_to_specific_dif() routine a 
second time (to process the -D argument).

Even better, we could extend the implementation of the "-d" argument to accept 
an arbitrary number of DIF names, an call register_to_specific_dif() in a loop, 
so that the application gets registered in all the specified DIFs. This would 
be a generalization of (ii).

Cheers,
  Vincenzo

2016-06-23 11:53 GMT+02:00 Koen Veelenturf <koen.veelenturf@xxxxxx>:
Dear Eduard,
Thanks you for your and your colleague’s answers.
It would be nice to have support for multiple registrations, but I’m not sure 
how much coding that would require.
Could you give an indication how much work it would need? For my project I’ve 
limited time, so if it takes weeks, then I’m afraid I will not have the time to 
finish it before my deadlines.

Cheers,
Koen

On 23 Jun 2016, at 09:58, Eduard Grasa Gras <eduard.grasa@xxxxxxxxx> wrote:

Hi Koen,
The answer is yes and no. The implementation supports multiple registrations, 
the problem is that our current applications don't exploit this capability. The 
current rina-echo-time and rina-tgen registration options are to i) register to 
'any DIF' -> chosen by the IPCM looking at da.map; or ii) to register in a 
single DIF specified by the app. We could add this third option if it is needed 
(you could also add it yourself if you wanted to contribute, we could show you 
what you need to modify).

Cheers,

Eduard

2016-06-22 14:48 GMT+02:00 Koen Veelenturf <koen.veelenturf@xxxxxx>:
Hi Eduard,
Thanks for you quick reply.
I meant if it was possible to register an application (in this case the 
rina.apps.echotime.server) to two DIFs at the same time, making the server 
application reachable through two connections at the same time.

Cheers,
Koen

On 22 Jun 2016, at 14:45, Eduard Grasa Gras <eduard.grasa@xxxxxxxxx> wrote:

Hi Koen,
Answers inline!

2016-06-22 14:15 GMT+02:00 Koen Veelenturf <koen.veelenturf@xxxxxx>:
Dear Eduard,
I found that the Demonstrator automagically creates the mapping, but my own VMs 
with the compiled stack didn’t. That solved my issue, thank you.
One question though, do I understand correctly that the mapping for 
applications is done statically (for now)?

Yes, it is done statically for now, until there is a proper implementation of 
the DIF allocator. The H2020 ARCFIRE project is going to look at this issue 
(http://ict-arcfire.eu). 
 
Is it possible at this moment to make the applications reachable from for 
instance two connections at the same time?

You mean make an application register to more than one DIF? Or allow the same 
"server" application to have more than one "client" within the same DIF?

Cheers,

Eduard
 

Cheers,
Koen

On 22 Jun 2016, at 13:20, Eduard Grasa Gras <eduard.grasa@xxxxxxxxx> wrote:


Dear Koen,
I think that you are just missing a little piece, the application to DIF 
mappings. Since you have multiple DIFs to choose from, when the client requests 
 a flow to a destination application the IPCM needs to know somehow which DIF 
to choose. In RINA the component that has this information is the DIF 
allocator. 

The DIF allocator is not really implemented in the stack, it is just reduced to 
a configuration file with a static directory of destination application name to 
DIF mappings. The file is located at <IRATI installation path>/etc/da.map (must 
be called da.map). You can edit it anytime, the IPCM will detect it and reload 
the mappings. Here is an example:

{  "applicationToDIFMappings" : [ {    "encodedAppName" : 
"traffic.generator.server-1--",    "difName" : "vpn1.DIF"  }, {    
"encodedAppName" : "server.ioq3-0--",    "difName" : "vpn1.DIF"  }, {    
"encodedAppName" : "rina.apps.echotime.server-1--",    "difName" : "vpn1.DIF"  
}, {    "encodedAppName" : "rina.apps.manager-1--",    "difName" : "NMS.DIF"  
}]}So you just need to edit the file with the proper mappings. It works both 
for flow allocation and application registration (in case the application to be 
registered doesn't specify a DIF).Cheers,Eduard


2016-06-22 12:51 GMT+02:00 Koen Veelenturf <koen.veelenturf@xxxxxx>:

Dear all,
I’m currently doing a research project for my master on RINA and multihoming.
I’ve been playing around with the IRATI demonstrator and also built by own VMs 
with the IRATI stack.

I’ve built this network topology and created a couple of DIFs to represent two 
different ISPs.

These are the DIFs I currently have:

- Node1 - Node4: “Provider A Access DIF”
- Node1 - Node2: “Provider B Access DIF”
- Node4 - Node3: “Provider A Regional DIF”
- Node2 - Node3: “Provider B Regional DIF”
- Node3 - Node5: “Upstream DIF”

And between Node1 and Node5 I’ve created DIFs for “Internet ProviderA DIF” and 
“Internet ProviderB DIF” which spans over the corresponding access and regional 
DIFs.
I was able to successfully enroll the DIFS using the IPCM console and was able 
to run a RINA echo time server on node 5, while specifying the DIF it should 
register on.
However, I was not able to run the client. I just the following commands for 
server and client:

server: rina-echo-time -d providerAInternet.DIF -l
client: rina-echo-time -d providerAInternet.DIF -c 100


<mulithometopo-network-rep.png>

Running the client results in the following error message in the ipcm.log file:

<logfile>
793(1466590549)#librina.nl-manager (DBG): NL msg RX. Fam: 21; Opcode: 
44_APP_ALLOC_FLOW_REQ; Sport: 8172; Dport: 1; Seqnum: 1466590550; Request; 
SIPCP: 0; DIPCP: 0 
793(1466590549)#librina.core (DBG): Added event of type 
0_FLOW_ALLOCATION_REQUESTED and sequence number 1466590550 to events queue
793(1466590549)#ipcm (DBG): Got event of type 0_FLOW_ALLOCATION_REQUESTED and 
sequence number 1466590550
793(1466590549)#ipcm.flow-alloc (ERR)[flow_allocation_requested_local]:  Error: 
Cannot find an IPC process to serve flow allocation request (local-app = 
rina.apps.echotime.client:1::, remote-app = rina.apps.echotime.server:1::

793(1466590549)#librina.ipc-manager (DBG): ApplicationManager::flowAllocated 
called
793(1466590549)#librina.nl-manager (DBG): NL msg TX. Fam: 21; Opcode: 
45_APP_ALLOC_FLOW_REQ_RES; Sport: 1; Dport: 8172; Seqnum: 1466590550; Response; 
SIPCP: 0; DIPCP: 0
793(1466590549)#ipcm.flow-alloc 
(INFO)[application_flow_allocation_failed_notify]: Flow allocation between 
rina.apps.echotime.client:1:: and rina.apps.echotime.server:1:: failed: 
applications informed

793(1466590551)#librina.nl-manager (DBG): NL msg RX. Fam: 21; Opcode: 
27_SOCK_CLOSED_NOT; Sport: 0; Dport: 1; Seqnum: 0; Notification; SIPCP: 0; 
DIPCP: 0 
793(1466590551)#librina.core (DBG): NL socket at port 8172 is closed
793(1466590551)#librina.core (DBG): Added event of type 22_OS_PROCESS_FINALIZED 
and sequence number 0 to events queue
793(1466590551)#ipcm (DBG): Got event of type 22_OS_PROCESS_FINALIZED and 
sequence number 0
793(1466590551)#ipcm.app (INFO)[os_process_finalized_handler]: Application 
rina.apps.echotime.client:1::terminated
</logfile>

What I’m trying to do should in theory be possible right? Am I doing something 
wrong or might there be a problem with the stack?

Please let me know if there’s more information needed.

Kind regards,
Koen Veelenturf




























-- 
Vincenzo Maffione











-- 
Vincenzo Maffione

Other related posts:

  • » [irati] Re: [irati] Re: RINA and multihoming - Koen Veelenturf