EPICS Home

Experimental Physics and Industrial Control System


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

Subject: RE: Questions regarding CA protocol specification and phylosophy
From: Mark Rivers <[email protected]>
To: 'Diego Sanz' <[email protected]>, Michael Davidsaver <[email protected]>
Cc: EPICS Tech Talk <[email protected]>
Date: Thu, 14 Sep 2017 16:46:16 +0000

Hi Diego,

 

I am not spotting what is wrong with your configuration, but what you are trying should definitely work, i.e. multiple IOCs on the same Linux machine, and running the CA client on the same machine.

 

On my Linux machine I am running many IOCs.  Most of these are running an IOC application called CARSApp and these are the 13 that are currently running:

 

corvette:ADCore/ADApp/pluginSrc>ps -ax | grep CARSApp

33188 pts/6    Sl+   22:16 ../../bin/linux-x86_64/CARSApp st.cmd

52146 pts/2    Sl+   85:26 ../../bin/linux-x86/CARSApp st.cmd

92531 pts/3    Sl+  296:38 ../../bin/linux-x86_64/CARSApp st.cmd

92630 pts/4    Sl+  325:17 ../../bin/linux-x86_64/CARSApp st.cmd

92730 pts/1    Sl+  553:54 ../../bin/linux-x86_64/CARSApp st.cmd

92897 pts/5    Sl+  317:06 ../../bin/linux-x86_64/CARSApp st.cmd

93109 pts/9    Sl+  304:58 ../../bin/linux-x86_64/CARSApp st.cmd

93281 pts/10   Sl+  272:49 ../../bin/linux-x86_64/CARSApp st.cmd

93663 pts/13   Sl+  282:05 ../../bin/linux-x86_64/CARSApp st.cmd

93732 pts/14   Sl+   31:52 ../../bin/linux-x86_64/CARSApp st.cmd

94527 pts/12   Sl+   34:34 ../../bin/linux-x86_64/CARSApp st.cmd

104687 pts/17   Sl+   20:52 ../../bin/linux-x86_64/CARSApp st.cmd

118334 pts/16   Sl+   11:14 ../../bin/linux-x86_64/CARSApp st.cmd

 

Because I want to run CA clients on the same Linux machine as these IOCs, and because this machine has multiple network interfaces I have set the following EPICS CA environment variables in my shell

 

corvette:ADCore/ADApp/pluginSrc>printenv | grep EPICS

EPICS_CA_AUTO_ADDR_LIST=NO

EPICS_CA_ADDR_LIST=164.54.160.255

 

In the IOC these are also set.

 

epics> epicsPrtEnvParams

EPICS_CA_ADDR_LIST: 164.54.160.255

EPICS_CA_AUTO_ADDR_LIST: NO

 

I believe these don't have to be set for the CA server. But I suspect they do need to be set if this IOC is also a channel access client to another IOC on the same machine?

 

This configuration works fine.  I can run cainfo and see the values from 2 different IOCs running on the same Linux machine as the client.

 

corvette:ADCore/ADApp/pluginSrc>cainfo 13IDA:m57

13IDA:m57

    State:            connected

    Host:             164.54.160.82:32855

    Access:           read, write

    Native data type: DBF_DOUBLE

    Request type:     DBR_DOUBLE

    Element count:    1

 

orvette:ADCore/ADApp/pluginSrc>cainfo 13IDC:m25

13IDC:m25

    State:            connected

    Host:             164.54.160.82:5064

    Access:           read, write

    Native data type: DBF_DOUBLE

    Request type:     DBR_DOUBLE

    Element count:    1

 

 

 

Mark

 

 

From: [email protected] [mailto:[email protected]] On Behalf Of Diego Sanz
Sent: Thursday, September 14, 2017 8:50 AM
To: Michael Davidsaver
Cc: EPICS Tech Talk
Subject: Re: Questions regarding CA protocol specification and phylosophy

 

Dear guys,

Again, thank you for your support. Still the problem persists. The idea of using "lo" interface is for testing purposes, but anyway, now I am using other ip:

#ifconfig command shows:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255

So, both IOCs will be configured for using this IP. Just below I put the output of the 2 IOCs just after running:

[IOC 1]:
epicsEnvSet("EPICS_CA_ADDR_LIST","10.0.2.15")
## Load record instances
# dbLoadTemplate "db/userHost.substitutions"
dbLoadRecords "db/devsimulation.db", "user=dsanzHost"
## Set this to see messages from mySub
#var mySubDebug 1
## Run this to trace the stages of iocInit
#traceIocInit
cd "/home/dsanz/Developments/edsTemplate-epics/iocBoot/ioctest"
iocInit
Starting iocInit
############################################################################
## EPICS R3.14.12.6
## EPICS Base built Jan 31 2017
############################################################################
iocRun: All initialization complete
## Start any sequence programs
#seq sncExample, "user=dsanzHost"
epics>
......

[IOC2]:

epicsEnvSet("EPICS_CA_ADDR_LIST","10.0.2.15")
## Load record instances
dbLoadTemplate "db/userHost.substitutions"
dbLoadRecords "db/dbSubExample.db", "user=dsanzHost"
## Set this to see messages from mySub
#var mySubDebug 1
## Run this to trace the stages of iocInit
#traceIocInit
cd "/home/dsanz/Developments/checkEpics/iocBoot/iocthis"
iocInit
Starting iocInit
############################################################################
## EPICS R3.14.12.6
## EPICS Base built Jan 31 2017
############################################################################
cas warning: Configured TCP port was unavailable.
cas warning: Using dynamically assigned TCP port 37633,
cas warning: but now two or more servers share the same UDP port.
cas warning: Depending on your IP kernel this server may not be
cas warning: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
iocRun: All initialization complete
## Start any sequence programs
#seq sncExample, "user=dsanzHost"
epics>
.....

regarding the EPICS client, the EPICS_CA_ADDR_LIST is configured with the boradcast address, and then, I try to read one PV from each of the IOCs..:

[dsanz@localhost ~]$ set | grep EPICS_CA_ADDR
EPICS_CA_ADDR_LIST=10.0.2.255
[dsanz@localhost ~]$ caget pcounter
Warning: Duplicate EPICS CA Address list entry "10.0.2.255:5064" discarded
Channel connect timed out: 'pcounter' not found.
[dsanz@localhost ~]$ caget dsanzHost:ai1
Warning: Duplicate EPICS CA Address list entry "10.0.2.255:5064" discarded
Channel connect timed out: 'dsanzHost:ai1' not found.

This configuration, does not let me to read from any IOC. Regarding the Warning mentioned... I suppose is normal due to both IOCs are listening in the Ca-1 UDP port....

If this configuration should work, then I will study the new (for me) version of the CA protocol description http://www.aps.anl.gov/epics/base/R3-16/0-docs/CAproto/index.htm

that Michael mentioned before, to try to understand this issue.

Thank you very much again

Regards

Diego

 

 

 

 

2017-09-13 17:45 GMT+02:00 Michael Davidsaver <[email protected]>:

On 09/13/2017 10:05 AM, Diego Sanz wrote:
> First of all, thanks a lot
>
> Starting for the configuration: the 2 IOCs and the EPICS client is in
> the same Host, no firewall...
> If I understood correctly, every IOC, shall be working in different IPs
> on different subnetworks? e.g.,
>
> IOC1 on 192.168.0.2
>
> IOC2 on 192.168.1.3
>
> and client shall have access to booth IPs....
>
> So then, the configuration as follows is not correct:
>
> all of them working on 127.0.0.1

FYI, by default 127.0.0.1 (aka. the loopback interface) isn't used.  By
this I mean that beacons and searches will not be sent to 127.0.0.1.
However, by default listening sockets are bound to 0.0.0.0 (aka wildcard
interface) which will receive UDP traffic sent to 127.0.0.1.

For this reason you'll sometimes see EPICS_CA_ADDR_LIST=127.0.0.1 given
as a workaround for CA issues when client and IOC are on the same host.
This sends unicast searches to localhost.  As this is unicast, it works
with only one IOC on the host (typical developer scenario).

A linux specific trick EPICS_CA_ADDR_LIST=127.255.255.255 works for many
IOC.  On linux the loopback interface supports broadcasts but doesn't
set the IFF_BROADCAST flag to advertise this fact.


> Is well understood?
>
> Thanks a lot
>
> Diego
>
>
>
> 2017-09-13 16:26 GMT+02:00 Dirk Zimoch <[email protected]
> <mailto:[email protected]>>:

>
>     On 13.09.2017 16:03, Kasemir, Kay wrote:
>
>         The main issue here is not TCP but UDP.
>
>
>     Just for completeness: TCP can be an issue as well if you have a
>     firewall between client and IOC. Even if if you tell the firewall to
>     allow the CA ports for UDP and TCP then the search broadcast may
>     pass, maybe even the reply reaches the client, but you still may not
>     be able to connect to the dynamically assigned TCP port of the
>     second IOC.
>
>     Dirk
>
>

 


Replies:
Re: Questions regarding CA protocol specification and phylosophy Kasemir, Kay
References:
Questions regarding CA protocol specification and phylosophy Diego Sanz
Re: Questions regarding CA protocol specification and phylosophy Kasemir, Kay
Re: Questions regarding CA protocol specification and phylosophy Dirk Zimoch
Re: Questions regarding CA protocol specification and phylosophy Diego Sanz
Re: Questions regarding CA protocol specification and phylosophy Michael Davidsaver
Re: Questions regarding CA protocol specification and phylosophy Diego Sanz

Navigate by Date:
Prev: RE: Questions regarding CA protocol specification and phylosophy Mark Rivers
Next: Re: Questions regarding CA protocol specification and phylosophy Kasemir, Kay
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Questions regarding CA protocol specification and phylosophy Michael Davidsaver
Next: Re: Questions regarding CA protocol specification and phylosophy Kasemir, Kay
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024