I should have also added: CA for this same IOC responds to both unicast and broadcast. Issue exists only for PVA.
>C:\cygwinx64\bin\env.exe EPICS_CA_AUTO_ADDR_LIST=no EPICS_CA_ADDR_LIST=127.0.0.1 .\caget 6IDFF:alive
>C:\cygwinx64\bin\env.exe EPICS_CA_AUTO_ADDR_LIST=no EPICS_CA_ADDR_LIST=10.54.121.48 .\caget 6IDFF:alive
Hi tech-talk,
Strange behavior with the pvaServer on a Windows 11 IOC I can't understand – it only seems to respond to broadcast name searches, not unicast.
Windows Firewall says it is off.
As an example: testing from the same machine the IOC is running on, which has only one network interface (IP 10.54.121.48):
If I allow broadcast searches, works fine:
>C:\cygwinx64\bin\env.exe EPICS_PVA_AUTO_ADDR_LIST=yes .\pvget -d 6IDFF:Pva1:Image
2024-04-18T18:00:40.816 Creating datagram socket from: 0.0.0.0:59556.
2024-04-18T18:00:40.817 Broadcast address #0: 10.54.121.255:5076. (not unicast)
2024-04-18T18:00:40.817 Setting up UDP for interface 10.54.121.48/255.255.255.0, broadcast 10.54.121.255, dest <none>.
2024-04-18T18:00:40.818 Creating datagram socket from: 10.54.121.48:5076.
2024-04-18T18:00:40.819 Creating datagram socket from: 0.0.0.0:5076.
2024-04-18T18:00:40.819 Local multicast enabled on 127.0.0.1/224.0.0.128:5076.
2024-04-18T18:00:40.819 Sending 62 bytes 0.0.0.0:59556 -> 10.54.121.255:5076.
2024-04-18T18:00:40.820 UDP Client Rx (62) 10.54.121.48:5076 <- 10.54.121.48:59556
Waiting...
2024-04-18T18:00:40.820 UDP Client Rx (62) 0.0.0.0:5076 <- 10.54.121.48:59556
2024-04-18T18:00:40.820 UDP Client Rx (53) 0.0.0.0:59556 <- 10.54.121.48:52492
2024-04-18T18:00:40.821 Connecting to PVA server: 10.54.121.48:5075.
2024-04-18T18:00:40.822 Opening socket to PVA server 10.54.121.48:5075, attempt 1.
2024-04-18T18:00:40.827 Socket connected to PVA server: 10.54.121.48:5075.
2024-04-18T18:00:40.829 Acquiring transport to 10.54.121.48:5075.
2024-04-18T18:00:40.837 Connected to PVA server: 10.54.121.48:5075.
2024-04-18T18:00:40.838 UDP Client Rx (53) 0.0.0.0:59556 <- 10.54.121.48:52492
6IDFF:Pva1:Image epics:nt/NTNDArray:1.0
...
2024-04-18T18:00:40.865 Releasing TCP transport to 10.54.121.48:5075.
2024-04-18T18:00:40.866 TCP socket to 10.54.121.48:5075 is to be closed.
2024-04-18T18:00:40.866 UDP socket 0.0.0.0:0 closed.
2024-04-18T18:00:40.866 UDP socket 10.54.121.48:5076 closed.
2024-04-18T18:00:40.867 UDP socket 0.0.0.0:5076 closed.
Done
Then I remove the broadcast option, and I get a timeout, despite the same address which just responded being in
EPICS_PVA_ADDR_LIST:
>C:\cygwinx64\bin\env.exe EPICS_PVA_AUTO_ADDR_LIST=no EPICS_PVA_ADDR_LIST=10.54.121.48 .\pvget -d 6IDFF:Pva1:Image
2024-04-18T17:50:20.693 Creating datagram socket from: 0.0.0.0:65265.
2024-04-18T17:50:20.694 Broadcast address #0: 10.54.121.48:5076. (unicast)
2024-04-18T17:50:20.694 Setting up UDP for interface 10.54.121.48/255.255.255.0, broadcast 10.54.121.255, dest <none>.
2024-04-18T17:50:20.694 Creating datagram socket from: 10.54.121.48:5076.
2024-04-18T17:50:20.694 Creating datagram socket from: 0.0.0.0:5076.
2024-04-18T17:50:20.694 Local multicast enabled on 127.0.0.1/224.0.0.128:5076.
2024-04-18T17:50:20.695 Sending 62 bytes 0.0.0.0:65265 -> 10.54.121.48:5076.
Waiting...
2024-04-18T17:50:20.928 Sending 62 bytes 0.0.0.0:65265 -> 10.54.121.48:5076.
2024-04-18T17:50:21.394 Sending 62 bytes 0.0.0.0:65265 -> 10.54.121.48:5076.
2024-04-18T17:50:22.325 Sending 62 bytes 0.0.0.0:65265 -> 10.54.121.48:5076.
2024-04-18T17:50:24.188 Sending 62 bytes 0.0.0.0:65265 -> 10.54.121.48:5076.
Timeout
6IDFF:Pva1:Image 2024-04-18T17:50:25.698 UDP socket 0.0.0.0:0 closed.
2024-04-18T17:50:25.699 UDP socket 10.54.121.48:5076 closed.
2024-04-18T17:50:25.700 UDP socket 0.0.0.0:5076 closed.
Done
The localhost IP does work:
>C:\cygwinx64\bin\env.exe EPICS_PVA_AUTO_ADDR_LIST=no EPICS_PVA_ADDR_LIST=127.0.0.1 .\pvget -d 6IDFF:Pva1:Image
2024-04-18T17:51:10.433 Creating datagram socket from: 0.0.0.0:61636.
2024-04-18T17:51:10.435 Broadcast address #0: 127.0.0.1:5076. (unicast)
2024-04-18T17:51:10.435 Setting up UDP for interface 10.54.121.48/255.255.255.0, broadcast 10.54.121.255, dest <none>.
2024-04-18T17:51:10.437 Creating datagram socket from: 10.54.121.48:5076.
2024-04-18T17:51:10.438 Creating datagram socket from: 0.0.0.0:5076.
2024-04-18T17:51:10.440 Local multicast enabled on 127.0.0.1/224.0.0.128:5076.
2024-04-18T17:51:10.441 Sending 62 bytes 0.0.0.0:61636 -> 127.0.0.1:5076.
Waiting...
2024-04-18T17:51:10.442 UDP Client Rx (53) 0.0.0.0:61636 <- 127.0.0.1:52492
2024-04-18T17:51:10.442 Connecting to PVA server: 127.0.0.1:5075.
2024-04-18T17:51:10.443 Opening socket to PVA server 127.0.0.1:5075, attempt 1.
2024-04-18T17:51:10.443 Socket connected to PVA server: 127.0.0.1:5075.
2024-04-18T17:51:10.444 Acquiring transport to 127.0.0.1:5075.
2024-04-18T17:51:10.453 Connected to PVA server: 127.0.0.1:5075.
6IDFF:Pva1:Image epics:nt/NTNDArray:1.0
...
2024-04-18T17:51:10.476 Releasing TCP transport to 127.0.0.1:5075.
2024-04-18T17:51:10.476 TCP socket to 127.0.0.1:5075 is to be closed.
2024-04-18T17:51:10.477 UDP socket 0.0.0.0:0 closed.
2024-04-18T17:51:10.477 UDP socket 10.54.121.48:5076 closed.
2024-04-18T17:51:10.478 UDP socket 0.0.0.0:5076 closed.
Done
It's the same for any other computers accessing this IOC – broadcast works, unicast does not.
Info from the IOC:
> pvasr
pvAccess Server v7.1.6-SNAPSHOT
Active configuration (w/ defaults)
EPICS_PVAS_INTF_ADDR_LIST = 0.0.0.0:5075
EPICS_PVAS_BEACON_ADDR_LIST =
EPICS_PVAS_AUTO_BEACON_ADDR_LIST = YES
EPICS_PVAS_BEACON_PERIOD = 15
EPICS_PVAS_BROADCAST_PORT = 5076
EPICS_PVAS_SERVER_PORT = 5075
EPICS_PVAS_PROVIDER_NAMES = QSRV local
> epicsEnvShow
...
EPICS_VERSION_FULL=7.0.6.2-DEV
Any ideas? This is a problem because it means we cannot access this IOC from any other subnets.
Tejas Guruswamy
APS, XSD-DET
Argonne National Laboratory