Dear Johannes, I am pleased to confirm you that the fix has resolved the problem. Now a TCP connection can be established also starting from ION, and not just vice versa. Thank you very much for your fix that enhances IBR-DTN and ION interoperability. I have a couple of other requests, but has the topic is different I will send you another mail. Yours, Carlo
At 07:48 03/05/2016, Johannes Morgenroth wrote:
Hello Carlo,
there is now a fix for the IPN string representation in the master branch of IBR-DTN. https://github.com/ibrdtn/ibrdtn/commit/8128d516e8bb696a6402f6234e9764118d0c...
It would be nice, if you can test that change and confirm that it will allow incoming connections from ION to IBR-DTN.
Kind regards, Johannes Morgenroth
-----Original Message----- From: Ibr-dtn [mailto:ibr-dtn-bounces@ibr.cs.tu-bs.de] On Behalf Of Carlo Caini Sent: Friday, April 29, 2016 10:39 AM To: ibr-dtn@ibr.cs.tu-bs.de Cc: Burleigh, Scott C (312B) scott.c.burleigh@jpl.nasa.gov Subject: [ibr-dtn] Fwd: RE: TCP CL & interoperability with ION
Dear IBR-DTN maintainers, I have just received the answer below from Scott Burleigh, regarding ipn syntax and interoperability between IBR-DTN and ION via TCP-CL. I will remail it on this mailing list. In the meantime I have also tested routing rules with ipn scheme in IBR-DTN and I am happy to inform you all that all tests passed! This means that full interoperability with ION can be achieved with the (I suppose not too difficult) fix suggested below. I have not tested BSP security yet. Of course, I am willing to provide you with
further details or explanations if
useful. I look forward to hearing from you. Yours, Carlo
Hi, Carlo. I'm sorry, the last couple of weeks have been quite difficult and I am only now catching up on the emails. Some remarks in-line below.
Scott
-----Original Message----- From: Carlo Caini [mailto:carlo.caini@unibo.itmailto:carlo.caini@unibo.it] Sent: Sunday, April 24, 2016 3:40 AM To: ibr-dtn@ibr.cs.tu-bs.de Cc: Burleigh, Scott C (312B) scott.c.burleigh@jpl.nasa.gov Subject: TCP CL & interoperability with ION
In these days I have carried out some interoperability tests between IBR-DTN and ION with TCP as CL (RFC7242, June 2014). When the TCP connection is established, the TCP CL sends a message, called contact header, including the local EID. Each end-node sends its contact header to the corresponding pair. What happens then is largely left to the implementation. Let me assume that you have two nodes, 1 and 2, with IBR-DTN on 1 and ION on 2. When the TCP connection is started by ION, we have a failure because IBR-DTN advertises itself back as ipn:1 instead of ipn:1.0. In other words, ION performs a check on the EID of the corresponding node, and this check fails because of the lack of
the last part of the EID (".0").
Right. When ION initiates the
connection, it does so under the guidance of the "egress plans" that identify its neighbors. Each egress plan associates a node ID with a convergence-layer endpoint ID, e.g., a socket name; since node IDs are formed as DTN endpoint IDs, the ION node's egress plan for the IBR-DTN node associated the EID "ipn:1.0" with that node's socket name. When the answering contact header says that the neighboring node identifies itself as "ipn:1" instead, ION detects that the node it has connected to is not the one it was trying to connect to, so for safety it drops the connection.
If the connection is started from IBR-DTN it succeeds, maybe because ION does not perform a similar check in input, but I am not sure.
Yes. In this case, ION has no idea who
the connecting node is, so the EID in the IBR-DTN node's contact header can't be validated against anything; it is simply accepted.
The details of my test (Test3) are below. I have noticed that in other logs IBR-DTN makes use of a "shothened" ipn EID to identify a node, as below: Sat Apr 23 20:52:51 2016 NOTICE ConnectionEvent: connection up ipn:2
Sat Apr 23 20:52:51 2016 NOTICE NodeEvent: Node ipn:2 available
Sat Apr 23 20:52:51 2016 NOTICE ConnectionEvent: connection down ipn:2
From the man of ipnadmin (see below) it seems that an ipn EID always includes a service number, and in practice that "0" is used as default.
Actually the service number is simply
mandatory; the registered definition for the "ipn" URI scheme requires it. The definition also reserves service number 0 for "administration" or something like that, as I recall.
If this is correct, I suppose that IBR-DTN should always use ipn:1.0 instead of ipn:1. However, I could also be wrong.
Nope, you are correct.
I have also successfully performed an analogue test (Test 4) with the dtn scheme. In this case the EID given back by IBR-DTN is dtn://vm1.dtn, which is the same EID expected by ION; note that in ION configuration, in the line a plan //vm1.dtn x tcp/10.0.1.1 "//vm1.dtn" is the name of the node, equivalent to "1" in ipn. In brief, in the dtn scheme it seems not necessary to include a demux token as in ipn. As ipn and dtn syntaxes are often challenging also to people that are familiar with DTN, I send this mail in cc also to Scott Burleigh, which is the ION and ipn scheme designer in order to have confirmation of the ipn syntax. Yours, Carlo
Test 3) Failed. The TCP CL of IBR DTN gives ipn:1 where ipn:1.0 is expected by ION (syn from ION) From vm1 ibrdtn.conf
# the local eid of the dtn node # default is the hostname local_uri = ipn:1.0
From vm2 ION configuration file #Outduct to Vm1 a outduct tcp 10.0.1.1 '' a plan 1 x tcp/10.0.1.1
From vm2 logs [2016/04/23-19:01:10] [i] Connected to TCP socket: 10.0.1.1:4556 [2016/04/23-19:01:10] [?] expected tcpcl EID: ipn:1.0 [2016/04/23-19:01:10] [?] received tcpcl EID: ipn:1 [2016/04/23-19:01:10] [i] tcpcli got no valid contact header: ipn:1.0
Test 4) Passed The TCP CL of IBR DTN gives dtn://vm1 as expected by ION (syn from ION) From vm1 ibrdtn.conf # the local eid of the dtn node # default is the hostname local_uri = dtn://vm1.dtn
From vm2 ION configuration #Outduct to Vm1 a outduct tcp 10.0.1.1 '' a plan //vm1.dtn x tcp/10.0.1.1
From the man of ipnadmin (ION) ipnadmin configures the local ION node's routing of bundles to endpoints whose IDs conform to the ipn endpoint ID scheme. ipn is a CBHE-conformant scheme; that is, every endpoint ID in the ipn scheme is a string of the form "ipn:node_number.service_number" where node_number is a
CBHE
"node number" and service_number identifies a specific application processing point.
5x1000 AI GIOVANI RICERCATORI DELL'UNIVERSITÃfEUR DI BOLOGNA Codice Fiscale: 80007010376
5x1000 AI GIOVANI RICERCATORI DELL'UNIVERSITÃEUR DI BOLOGNA Codice Fiscale: 80007010376 -- !! This message is brought to you via the `ibr-dtn' mailing list. !! Please do not reply to this message to unsubscribe. To unsubscribe or adjust !! your settings, send a mail message to <ibr-dtn-request@ibr.cs.tu- bs.de> !! or look at https://mail.ibr.cs.tu-bs.de/listinfo/ibr-dtn.
5x1000 AI GIOVANI RICERCATORI DELL'UNIVERSITÀ DI BOLOGNA Codice Fiscale: 80007010376