EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  <20012002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  <20012002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: summary: ca client connection pattern
From: Geoff Savage <[email protected]>
To: [email protected]
Date: Thu, 05 Apr 2001 13:57:30 -0500
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: Re: base and extensions for windows Bakul Banerjee
Next: Correction: summary: ca client connection pattern Geoff Savage
Index: 1994  1995  1996  1997  1998  1999  2000  <20012002  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: Re: base and extensions for windows Bakul Banerjee
Next: Correction: summary: ca client connection pattern Geoff Savage
Index: 1994  1995  1996  1997  1998  1999  2000  <20012002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·