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  <20182019  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  2017  <20182019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Problems with channel access across subnets on debian 9 linux systems
From: Goetz Pfeiffer via Tech-talk <[email protected]>
To: EPICS tech-talk <[email protected]>
Date: Thu, 20 Dec 2018 14:57:19 +0100
Hello,

first I would like to stress that this is not a bug in EPICS or channel access.
It is an effect due to a bug / misconfiguration / undocumented behavior on
debian 9 linux systems.

I pose the question here in order to know if someone else has run into this
problem, if it is known or if there is a different kind of work-around than the
one we found.

A channel access client determines the server of a process variable by sending
a UDP broadcast packet. More details are described here:
  https://epics.anl.gov/base/R3-16/1-docs/CAref.html#Environmen

At our research facility we have different networks with IOCs and OPI consoles.
In order to connect them all, we have installed several channel access
gateways.

If you are interested in the details, they can be found here:
  https://www-csr.bessy.de/control/ca-net-gateways/

We use VLANs to separate the networks but our IT has set up some networks with
a single VLAN that have separate IP address areas. As an example we have
network "acc" with these addresses:

Network    area     IP range
---------------------------------------------------
acc         1       193.149.12.0 - 193.149.12.255
acc         2       192.168.101.0 - 192.168.101.255

Both are in the same VLAN so a host in this network gets broadcasts from *both*
IP areas.

Now if I have host "elbe" (debian 7) with this network configuration:

  inet 193.149.12.27   netmask 255.255.255.0  broadcast 193.149.12.255

and host "lotus" (debian 9) with this network configuration:

  inet 192.168.101.86  netmask 255.255.255.0  broadcast 192.168.101.255

If I start a softioc on "elbe" and try to read a PV by running "caget" on
"lotus", it doesn't get a direct connection. This behavior was until recently
observedon all Linux systems and is the reason why we need a channel access
gateway toconnect both areas. This is in spite the fact that both hosts
are in thesame VLAN and by this in the same broadcast domain.

We assumed that a broadcast packet that is received on a network interface is
first matched against the configured netmask by the kernel and rejected if it
doesn't match.

However, if we start the softioc on the debian 9 system "lotus" and run "caget"
on "elbe, it gets a direct connection. Since we also have the channel access
gateway set up, we get an error "Identical process variable names on multiple
servers".  Somehow the debian 9 system receives the broadcast packet although
it doesn't match it's netmask.

After doing many tests we found:

  debian 9     : receives all broadcasts
  debian 7     : receives only broadcasts matching the netmask
  fedora 28    : receives only broadcasts matching the netmask
  ubuntu 18.10 : receives only broadcasts matching the netmask

As a work-around we found that if you start the softioc like this on the debian
9 system:

  EPICS_CAS_INTF_ADDR_LIST=192.168.101.86 softIoc -d test.db

it works as expected. The softIoc then only receives broadcasts matching the
netmask. This only works when you use EPICS Base 3.15 or newer.

If you have made the same experiences or know the reasons why debian 9 is
different of have another work-around, I would appreciate your feedback.

Greetings

  Goetz Pfeiffer


Attachment: signature.asc
Description: OpenPGP digital signature


Navigate by Date:
Prev: AW: EPICS support for HR2000+ question Joern Dreyer via Tech-talk
Next: RE: EPICS support for HR2000+ question Bommannavar, Arun S. 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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: EPICS support for HR2000+ question Bommannavar, Arun S. via Tech-talk
Next: Error compiling EPICS base-7.0.x on OpenSUSE 10.3 Woods, Russell 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  <20182019  2020  2021  2022  2023  2024 
ANJ, 20 Dec 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·