Re: [ibr-dtn] Ibr-dtn Digest, Vol 36, Issue 2
Thank you for your answers realting this and the other subjects.
I did change the timeout on the several lines of code having the instance of new TCPConnection(...,5).
In most of cases the time when the transmission is stopped is right but sometimes it appears more 10 seconds than what it should. For example if the connection is stoped (5 seconds of connectivity) sometimes the line of code "Sender terminated by exception : output stream went bad ...." appears 10 seconds after than what it should. I already have in mind the 10 seconds of 2*5 seconds but sometimes it has more 10 seconds on the timestamp in this line of code and sometimes it dont (when it is right).
Where can I see in the code the exact moment that the interface goes down to know exactly when the two nodes stopped the transmission of data?
Best regards,
BRuno Tavares ________________________________________ De: ibr-dtn-bounces@ibr.cs.tu-bs.de [ibr-dtn-bounces@ibr.cs.tu-bs.de] em nome de ibr-dtn-request@ibr.cs.tu-bs.de [ibr-dtn-request@ibr.cs.tu-bs.de] Enviado: terça-feira, 2 de Julho de 2013 11:00 Para: ibr-dtn@ibr.cs.tu-bs.de Assunto: Ibr-dtn Digest, Vol 36, Issue 2
Send Ibr-dtn mailing list submissions to ibr-dtn@ibr.cs.tu-bs.de
To subscribe or unsubscribe via the World Wide Web, visit https://www.ibr.cs.tu-bs.de/mailman/listinfo/ibr-dtn or, via email, send a message with subject or body 'help' to ibr-dtn-request@ibr.cs.tu-bs.de
You can reach the person managing the list at ibr-dtn-owner@ibr.cs.tu-bs.de
When replying, please edit your Subject line so it is more specific than "Re: Contents of Ibr-dtn digest..."
Today's Topics:
1. Re: interruption of transmission (Sebastian Schildt) 2. Re: interruption of transmission (Johannes Morgenroth) 3. Re: interruption of transmission (Sebastian Schildt)
----------------------------------------------------------------------
Message: 1 Date: Mon, 1 Jul 2013 13:28:32 +0200 From: Sebastian Schildt schildt@ibr.cs.tu-bs.de Subject: Re: [ibr-dtn] interruption of transmission To: "ibr-dtn@ibr.cs.tu-bs.de" ibr-dtn@ibr.cs.tu-bs.de Message-ID: 6194C931-4D9B-4DC0-9AB1-C5FAFE02A931@ibr.cs.tu-bs.de Content-Type: text/plain; charset=us-ascii
According to my understanding this value is only related to the TCP stack on the system. It can not be influenced by IBR-DTN (well maybe it could if you try setting some special option on the sockets that the TCP Convergence Layer uses, but AFAIK ibr-dtn doesn not do it).
Basically TCP is a black box as far as the daemon is concerned: It stuffs bytes in, and sometimes get some bytes out. But TCP is fault-tolerant. When IBR-DTN puts bytes in and it has problems it will silently buffer them, trying to deliver them without telling the daemon about it. Only if after some time (on your system 15-20) seconds TCP still can not manage to deliver the bundle it will tell the daemon "Oops, something broke. The connection is gone". Only then IBR-DTN learns about the state of the connection and fragments the payload.
So the timeout you are seeing is related to the TCP stack on your system. It might be possible to modify it, but I do not know how to achieve this. The time will be a combination of a defined number of TCP retries and the measured RTT used for the specific connection you are using.
Sebastian
Am 01.07.2013 um 12:32 schrieb Bruno Tavares bmpt@ua.pt:
Thank you for your quick answer Mr Schildt
The thing is that if the interface is down for less than 15/20 seconds the bundle is not fragmented and it does not assume that the connection was lost for that period of time. after those 15/20 seconds in continues to send the bundle. If the interface is down for more than 20 seconds the bundle is fragmented and it is assumed that the connection was down. I just wanted to understand why this value and where can I change it.
Best regards,
Bruno Tavares ________________________________________ De: ibr-dtn-bounces@ibr.cs.tu-bs.de [ibr-dtn-bounces@ibr.cs.tu-bs.de] em nome de ibr-dtn-request@ibr.cs.tu-bs.de [ibr-dtn-request@ibr.cs.tu-bs.de] Enviado: segunda-feira, 1 de Julho de 2013 11:00 Para: ibr-dtn@ibr.cs.tu-bs.de Assunto: Ibr-dtn Digest, Vol 36, Issue 1
Send Ibr-dtn mailing list submissions to ibr-dtn@ibr.cs.tu-bs.de
To subscribe or unsubscribe via the World Wide Web, visit https://www.ibr.cs.tu-bs.de/mailman/listinfo/ibr-dtn or, via email, send a message with subject or body 'help' to ibr-dtn-request@ibr.cs.tu-bs.de
You can reach the person managing the list at ibr-dtn-owner@ibr.cs.tu-bs.de
When replying, please edit your Subject line so it is more specific than "Re: Contents of Ibr-dtn digest..."
Today's Topics:
- interruption of transmission (Bruno Tavares)
- Re: interruption of transmission (Sebastian Schildt)
Message: 1 Date: Mon, 1 Jul 2013 08:26:02 +0000 From: Bruno Tavares bmpt@ua.pt Subject: [ibr-dtn] interruption of transmission To: "ibr-dtn@ibr.cs.tu-bs.de" ibr-dtn@ibr.cs.tu-bs.de Message-ID: 90494CFA1222DC45A1855F79747890D8207D50C1@DBXPRD0210MB358.eurprd02.prod.outlook.com
Content-Type: text/plain; charset="us-ascii"
Hello all
After running some tests I noticed that if I break the connection between two nodes for small amount of time (let's say 4 or 5 seconds) and then connect again the bundle is not fragmented and the tcp connection does not go down. It assumes that no connection break happen and continues to deliver the bundle.
I would like to know where I can find in the code where this small break of connection can be traced to make some debug.
Can anyone help me?
Best regards
Bruno Tavares
Message: 2 Date: Mon, 1 Jul 2013 10:45:21 +0200 From: Sebastian Schildt schildt@ibr.cs.tu-bs.de Subject: Re: [ibr-dtn] interruption of transmission To: "ibr-dtn@ibr.cs.tu-bs.de" ibr-dtn@ibr.cs.tu-bs.de Message-ID: 8739DF1D-FCE3-4E59-AAAE-676088E49766@ibr.cs.tu-bs.de Content-Type: text/plain; charset=us-ascii
There should be a "Connection Down" even logged, when the TCP connection to another node breaks (I think even if you start the daemon with -v you should see that, even if you do not set a higher debug level). Before that IBR-DTN has no way of knowing that TCP hangs, because TCP is designed to play over small outages. Depending on the TCP configuration of your operating system, and the performance of the TCP connection until then, the TCP timeout could be up to a few minutes.
Sebastian
Am 01.07.2013 um 10:26 schrieb Bruno Tavares bmpt@ua.pt:
Hello all
After running some tests I noticed that if I break the connection between two nodes for small amount of time (let's say 4 or 5 seconds) and then connect again the bundle is not fragmented and the tcp connection does not go down. It assumes that no connection break happen and continues to deliver the bundle.
I would like to know where I can find in the code where this small break of connection can be traced to make some debug.
Can anyone help me?
Best regards
Bruno Tavares
-- !! 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://www.ibr.cs.tu-bs.de/mailman/listinfo/ibr-dtn.
-- !! 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://www.ibr.cs.tu-bs.de/mailman/listinfo/ibr-dtn.
End of Ibr-dtn Digest, Vol 36, Issue 1
------------------------------
Message: 2 Date: Mon, 01 Jul 2013 13:41:46 +0200 From: Johannes Morgenroth morgenroth@ibr.cs.tu-bs.de Subject: Re: [ibr-dtn] interruption of transmission To: ibr-dtn@ibr.cs.tu-bs.de Message-ID: 51D16AFA.8030401@ibr.cs.tu-bs.de Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"
Hello.
That is not quite correct. The timeout noticed here depends on convergence layer specific keep-alive messages. http://tools.ietf.org/html/draft-irtf-dtnrg-tcp-clayer-02#section-5.5
By default this keepalive interval is set to 10 seconds and IBR-DTN closes a connection if there is no data for twice the interval. The "10" is set on every instantiation of the TCPConnection class. So search for this (and similar) lines of code and change it according to your needs.
TCPConnection *obj = new TCPConnection(*this, node, client, 10);
Kind regards, Johannes Morgenroth
Am 01.07.2013 13:28, schrieb Sebastian Schildt:
According to my understanding this value is only related to the TCP stack on the system. It can not be influenced by IBR-DTN (well maybe it could if you try setting some special option on the sockets that the TCP Convergence Layer uses, but AFAIK ibr-dtn doesn not do it).
Basically TCP is a black box as far as the daemon is concerned: It stuffs bytes in, and sometimes get some bytes out. But TCP is fault-tolerant. When IBR-DTN puts bytes in and it has problems it will silently buffer them, trying to deliver them without telling the daemon about it. Only if after some time (on your system 15-20) seconds TCP still can not manage to deliver the bundle it will tell the daemon "Oops, something broke. The connection is gone". Only then IBR-DTN learns about the state of the connection and fragments the payload.
So the timeout you are seeing is related to the TCP stack on your system. It might be possible to modify it, but I do not know how to achieve this. The time will be a combination of a defined number of TCP retries and the measured RTT used for the specific connection you are using.
Sebastian
participants (1)
-
Bruno Tavares