On 9 Sep 2025 16:29, Andrew Johnson wrote:
| could someone from Fermilab comment on that?
How We Use multicasts for EPICS at Fermilab
Our local network experts assigned us 2 multicast addresses for use with
EPICS. I believe that they are in a private address range. They are
only routed among our Controls sub-nets.
239.128.1.6 We use for search requests
239.128.1.7 We use for beacons
It might be better to use only one address for both, but we have 2
assigned, so this is what
we are playing with now.
For CA protocol.
Note that we are no longer using the CA protocol (for most things). My
information about what works for the CA protocol is old.
C++ CA Protocol Config
# EPICS base CA Client config (caget, camonitor, caput, etc)
# Tested on V 7.0.6
# Supports multicasts
export EPICS_CA_ADDR_LIST=239.128.1.6 # use mcast searches
export EPICS_CA_AUTO_ADDR_LIST=NO # no broadcast
search
export EPICS_CA_MCAST_TTL=32 # pass thru routers
export EPICS_CAS_BEACON_ADDR_LIST="239.128.1.7" # listen for
mcast beacons
# CA Server (IOC) config (softIoc, softIocPVA)
# Supports multicasts
export EPICS_CAS_INTF_ADDR_LIST=239.128.1.6 # listen for
mcast searches
export EPICS_CAS_AUTO_BEACON_ADDR_LIST=NO # no broadcast
beacons
export EPICS_CAS_BEACON_ADDR_LIST="239.128.1.7" # send mcast beacons
export EPICS_CA_MCAST_TTL=32 # pass thru routers
Java Clients, CA Protocol
Back when we were testing CA multicasts on Phoebus, there did not appear
to be a way
to configure it to use a TTL > 1 for multicast search requests.
We used a magic firewall rule to increase the TTL of any multicast
packets sent to the search address.
org.phoebus.pv.ca/auto_addr_list=false
org.phoebus.pv.ca/addr_list=239.128.1.6 # sends ttl=1 packets
We are no longer using the CA protocol with Phoebus and other Java programs.
For PVA Protocol
The older C++ libpvAccess libraries do not correctly support
multicasts. Used by IOC QSRV module and
softIocPVA.
The newer libpvxs and libpvxsIoc libraries. do correctly support
multicasts. Used by IOC QSRV2 module
and softIocPVX.
C++ PVXS PVA Protocol (new PVXS API) Config
PVXS clients: (pvxget, pvxput, pvxmonitor)
EPICS_PVA_ADDR_LIST=239.128.1.6,20 # send mcast searches,
TTL=20
EPICS_PVA_AUTO_ADDR_LIST=no # no broadcast searches
PVXS servers: (softIocPVX, IOC with QSRV2)
EPICS_PVAS_INTF_ADDR_LIST=239.128.1.6 # listen for searches on
mcast
EPICS_PVAS_AUTO_BEACON_ADDR_LIST=no # no broadcast beacons
EPICS_PVAS_BEACON_ADDR_LIST=239.128.1.7,20 # send mcast beacons, TTL=20
Java PVA Clients (Phoebus, Alarm Server, Archiver)
(Also tested with Phoebus on Windows)
EPICS_PVA_AUTO_ADDR_LIST=NO
EPICS_PVA_ADDR_LIST=239.128.1.6,8@ens192 Or...
EPICS_PVA_ADDR_LIST=239.128.1.6,8 at 131.225.xxx.yyy
Specify "-Djca.use_env=true" when starting the app to tell Java to look
at the EPICS_PVA environment
variables.
Unlike the C++ PVXS library, which lets you default the network
interface, the Java
PVA library requires that the network interface be specified, either as
a interface name
or as an IP address.
The command line utilities pvxvct and pvxmshim were/are broken for
multicast handling.
Execute pvxvct -V to see the PVXS library version number.
PVXS 1.4.0 (2025-10-18T09:58-0500) is broken.
PVXS 1.3.1 (2025-02-28T03:07-0600) works.
A fix was merged into EPICS base on Jan 6. Get a new (or old) version
if you want
to use these.
We are successfully using PVA with multicast searches. We can look at PV
searches (sent
from clients anywhere on the Control network) with:
pvxvct -B 239.128.1.6
The IOC's send multicast beacons. We can look at beacons (sent from
from IOC's anywhere on
the Control network) with:
pvxvct -B 239.128.1.7
As near as I can tell, PVA clients work fine without actually getting
the beacons.
We are investigating using the Channel Finder cfNameserver for PVA
protocol PV name search.
Jim Smedinghoff
Fermilab Accelerator Controls
- Navigate by Date:
- Prev:
Does every DB record need to produce a PV? David Bracey via Tech-talk
- Next:
Re: Does every DB record need to produce a PV? Johnson, Andrew N. via Tech-talk
- 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
2025
<2026>
- Navigate by Thread:
- Prev:
Re: [EXTERNAL] Does every DB record need to produce a PV? Simon Rose via Tech-talk
- Next:
Nested MSI and Makefile dependencies Michael Davidsaver via Tech-talk
- 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
2025
<2026>
|