Subject: |
[Fwd: Correction: summary: ca client connection pattern] |
From: |
Wolfgang Maschmann <[email protected]> |
To: |
[email protected] |
Date: |
Wed, 11 Apr 2001 08:43:56 +0200 |
-------- Original Message --------
Subject: Correction: summary: ca client connection pattern
Date: Thu, 05 Apr 2001 16:41:28 -0500
From: Geoff Savage <[email protected]>
To: [email protected]
I have the directions of the TCP messages reversed. The client, in this
case IOC A, must initiate the connection based on the information
returned in the directed UDP message.
Sorry for the confusion.
Geoff
Geoff Savage wrote:
>
> Hi,
>
> Make sure you close channels using ca_clear_channel when you are done.
>
> I changed my version (R3.13.1.1) of ca_test to call ca_clear_channel at
> the end and connections were made flawlessly. I also avoided the
> problem by usig a connection callback and extending the ca_pend_io
> timeout to 5 seconds.
>
> Here's the problem with some details. With two IOCs, A and B, you run a
> client on A that connects to a PV on B. If you reboot A without closing
> the connection then B still thinks that the connection still exists.
> More importantly B's TCP layer has an expected sequence number that was
> generated when the initial connection was made. Now reboot A and run a
> ca client that attempts to connect to a PV on B. When B initiates the
> connection with A the sequence number is not understood by A so A tells
> B and B tells A to reset. A few seconds (~3 seconds) B attempts to
> connect again and things go as expected.
>
> Succesful connection
> IOC A IOC B
> 1 UDP broadcast --> Looking for a PV --> UDP received
> 2 UDP received <-- PV located here <-- UDP directed
> Establish TCP connection (these are TCP messages)
> 3 SYN received <-- <SEQ=100><CTL=SYN> <-- SYN sent
> 4 SYN received --> <SEQ=300><ACK=101><CTL=SYN, ACK>--> Established
> 5 Established <-- <SEQ=101><ACK=301><CTL=ACK> <-- Established
>
> Failed connection
> IOC A IOC B
> 1 UDP broadcast --> Looking for a PV --> UDP received
> 2 UDP received <-- PV located here <-- UDP directed
> Establish TCP connection (these are TCP messages)
> 3 SYN received <-- <SEQ=500><CTL=SYN> <-- SYN sent
> 4 SYN received --> <SEQ=350><ACK=150><CTL= ACK> --> SYN sent
> 5 Listen <-- <SEQ=150><CTL=RST> <-- SYN sent
> After a few seconds
> 6 SYN received <-- <SEQ=100><CTL=SYN> <-- SYN sent
> 7 SYN received --> <SEQ=300><ACK=101><CTL=SYN, ACK>--> Established
> 8 Established <-- <SEQ=101><ACK=301><CTL=ACK> <-- Established
>
> For more information on TCP see RFC 793.
>
> Thanks for the assistance and suggestions.
>
> Geoff
- Navigate by Date:
- Prev:
[Fwd: 3.14.0alpha2] Wolfgang Maschmann
- Next:
Interrupt Epics Driver Weixing Cheng
- Index:
1994
1995
1996
1997
1998
1999
2000
<2001>
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
[Fwd: 3.14.0alpha2] Wolfgang Maschmann
- Next:
Interrupt Epics Driver Weixing Cheng
- Index:
1994
1995
1996
1997
1998
1999
2000
<2001>
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|