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  <20212022  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  2017  2018  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: PVA crossing network segments
From: Michael Davidsaver via Tech-talk <tech-talk at aps.anl.gov>
To: "Hu, Yong" <yhu at bnl.gov>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Sat, 17 Apr 2021 12:34:14 -0700
On 4/15/21 6:19 PM, Hu, Yong via Tech-talk wrote:
> Hi Klemen,
> 
> I can confirm your observations. I also have an EPICS 7.0.4 IOC running on Red Hat server which has 4 active network ports. See below. The classical CA server is indeed listening on udp 0 0.0.0.0:5064. The PVA server is listening on all 4 active network interfaces and all broadcast IPs of those network interfaces. I am surprised to see there are two identical UDPs for each interface, i.e. two of this "udp        0      0 10.0.142.25:5076".
> 
> Hope PVA experts can explain why PVA server does not use "udp 0.0.0.0 5076" as well as why there are identical UDPs in my messages below. 

pvAccessCPP is binding to every interface and broadcast address as a portable way
to infer the destination address of each UDP packet.  This is being done as part
of the scheme which (mostly) allows unicasts to reach multiple PVA peers using
the same port.

The 2x duplication arises from a lack of coordination between the client and server
components.  Each one creates a set of sockets.  This means a lot of sockets, and
a lot of threads.


With my new PVXS client/server I do things more like libca/RSRV.  This includes
binding (once) to 0.0.0.0:5076 by default.  This avoids some of the surprising
differences in behavior between PVA and CA in more complex network topologies.
This comes at the expense of unicasts packets not reaching multiple PVA peers
using the same port (as with CA servers).


> At the meantime, could you try "pvinfo -d pvNameFrom192.168.83.100" to see the debug message? Also, you could try set EPICS_PVA_ADDR_LIST to 192.168.83.100 (or 192.168.83.100:portNumber, type 'pvasr' on the PVA server to get portNumber) on the client 192.168.75.100.  
> 
> $ sudo netstat -apn | grep 2256238 | sort
> tcp        0      0 0.0.0.0:5064            0.0.0.0:*               LISTEN      2256238/bin/linux-x 
> tcp        0      0 0.0.0.0:5075            0.0.0.0:*               LISTEN      2256238/bin/linux-x 
> udp        0      0 0.0.0.0:42501           0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 0.0.0.0:45141           0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 0.0.0.0:47259           0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 0.0.0.0:47822           0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 0.0.0.0:5064            0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 10.0.142.25:5076        0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 10.0.142.25:5076        0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 10.0.143.255:5076       0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 10.0.143.255:5076       0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 130.199.222.255:5076    0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 130.199.222.255:5076    0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 130.199.222.75:5076     0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 130.199.222.75:5076     0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.122.1:5076      0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.122.1:5076      0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.122.255:5076    0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.122.255:5076    0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.20.20:5076      0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.20.20:5076      0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.21.255:5076     0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 192.168.21.255:5076     0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 224.0.0.128:5076        0.0.0.0:*                           2256238/bin/linux-x 
> udp        0      0 224.0.0.128:5076        0.0.0.0:*                           2256238/bin/linux-x 
> unix  2      [ ]         STREAM     CONNECTED     12813364 2256238/bin/linux-x  
> 
> Cheers,
> Yong
> 
> 
> On 4/9/21, 11:44 AM, "Tech-talk on behalf of Vodopivec, Klemen via Tech-talk" <tech-talk-bounces at aps.anl.gov on behalf of tech-talk at aps.anl.gov> wrote:
> 
>     Hi,
> 
>     I apologize if this has been answered before, but a simple search came up empty.
> 
>     We’re trying to use PVA on our segmented network for some structured tabular data. On the given network segments, CA works fine for years without the need for CA gateway but with some small help from the router mangling the broadcast (discovery) requests. What appears to be working for CA on port 5064, it doesn’t for PVA on port 5076 even after adding similar rule to the router.
> 
>     The use case is as follows:
> 
>     caget/pvget client is on a 192.168.75.100/22 with bcast address 192.168.75.255. softIocPVA server is on a 192.168.83.100/22 with bcast address 192.168.83.255. caget requests work, but pvget don’t. We have traced it to be that the router turns UDP discover message destined to 192.168.83.255 into 255.255.255.255 when pushing it to the 192.168.80.0 segment. The CA server is listening on 0.0.0.0:5064 and it catches that, but the PVA server is listening on 192.168.83.255:5076 and it doesn’t see messages for 255.255.255.255. 
> 
>     We’re working with networking guys to understand why router turns 192.168.83.255 into 255.255.255.255, but I was wondering if anyone else has tried similar setup and whether there’s any workaround. These tests were done with EPICS 7.0.4.1
> 
>     Thanks, Klemen
> 


References:
PVA crossing network segments Vodopivec, Klemen via Tech-talk
Re: PVA crossing network segments Hu, Yong via Tech-talk

Navigate by Date:
Prev: Re: problems with running EPICS Gateway on virtual machines? Ru Igarashi via Tech-talk
Next: Re: WIN_32 Marty Kraimer 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  <20212022  2023  2024 
Navigate by Thread:
Prev: Re: PVA crossing network segments Hu, Yong via Tech-talk
Next: ci-scripts 3.3 release: support for RTEMS 5 (coming soon to Base) Ralph Lange 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  <20212022  2023  2024 
ANJ, 17 Apr 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·