EPICS Controls Argonne National Laboratory

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  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026 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
<== Date ==> <== Thread ==>

Subject: Re: EPICS CA and PVA across subnets
From: James Smedinghoff via Tech-talk <tech-talk at aps.anl.gov>
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Mon, 16 Feb 2026 16:20:47 +0000
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
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·