This commit is contained in:
Michael Davidsaver
2022-04-05 12:26:19 -07:00
parent 33a72d0f9e
commit dfa66b721b
2 changed files with 78 additions and 4 deletions
+74
View File
@@ -0,0 +1,74 @@
.. _netconfig:
PVA Network Configuration
=========================
Also see Client :ref:`clientconf` and Server :ref:`serverconf`
for full lists of **EPICS_PVA*** environment varables.
Big Picture
-----------
A PV Access network protocol operation proceeds in two phases:
PV name resolution, and data transfer.
Name resolution is the process is determining which PVA server claims to provide each PV name.
Once this is known, a TCP connection is open to that server, and the operation(s) are executed.
The PVA Name resolution process is similar to Channel Access protocol.
When a name needs to be resolved, a PVA client will begin sending UDP search messages to any addresses
listed in **EPICS_PVA_ADDR_LIST** and also via TCP to any servers listed in **EPICS_PVA_NAME_SERVERS**
which can be reached.
UDP searches are by default sent to port **5076**, subject to **EPICS_PVA_BROADCAST_PORT** and
port numbers explicitly given in **EPICS_PVA_ADDR_LIST**.
The addresses in **EPICS_PVA_ADDR_LIST** may include IPv4/6 unicast, multicast, and/or broadcast addresses.
By default (cf. **EPICS_PVA_AUTO_ADDR_LIST**) the address list is automatically populated
with the IPv4 broadcast addresses of all local network interfaces.
Searches will be repeated periodically in perpetuity until a positive response is received,
or the operation is cancelled.
In order to reduce the number of broadcast packets, which every PVA host must process,
the time between searches will initially by short, but gradually increase
as time passes without a positive response.
This interval may be reduced when a new PVA server begins sending Beacon messages,
or when `pvxs::client::Context::hurryUp` is called.
Server beacon destinations are by default configured using the client configuration.
This may be overridden with **EPICS_PVAS_BEACON_ADDR_LIST** and **EPICS_PVAS_AUTO_BEACON_ADDR_LIST**.
.. _addrspec:
Address Spec.
-------------
Entries in **EPICS_PVA*_ADDR_LIST** variables must be in one of the following forms:
* ``<ip4-or-host>[:<port#>][,TTL#][@ifacename]``
* ``"["<ip6-or-host>"]"[:<port#>][,TTL#][@ifacename]``
Examples include:
``myhost``
Lookup hostname at startup, use default port number.
Use OS routing table.
``10.1.1.1:5076``
Explicit IPv4 address and port number.
Use OS routing table.
``[2600:1234::42]``
Explicit IPv6 address with default port.
Use OS routing table.
``224.0.2.3,255@192.168.1.1``
IPv4 multicast address, with Time To Live set to 255.
Send via the network interface with address ``192.168.1.1``.
Use default port number.
``[ff02::42:1],1@br0``
IPv6 multicast address, with Time To Live set to 1 (roughly equivalent to IPv4 broadcast).
Send via the network interface named ``br0``.
Use default port number.
+4 -4
View File
@@ -9,7 +9,7 @@ Release Notes
* Add support for IPv4 multicast and IPv6 uni/multicast for UDP. And IPv6 unicast for TCP.
See :ref:`addrspec` for entries which may now appear in **EPICS_PVA*_ADDR_LIST**.
* PVXS now attempts to fanout unicast searches through the loopback interface, and
to handle `CMD_ORIGIN_TAG` messages (aka. the local multicast hack).
to handle ``CMD_ORIGIN_TAG`` messages (aka. the local multicast hack).
* Add `pvxs::client::Context::discover` to enumerate and track PVA Servers.
* ``pvxlist`` add "continous" mode. (eg. ``pvxlist -v -w 0``)
To immediately Discover new servers, then continue listening for Beacons to detect
@@ -36,8 +36,8 @@ Release Notes
* Ignore beacons with protocol field other than "tcp". Forward compatibility.
* Limit packet hex dumps to 64 bytes.
* `testStrMatch()` now specified POSIX regular expression syntax.
* Client operations builders `rawRequest(Value())` is now a no-op.
* ``testStrMatch()`` now specified POSIX regular expression syntax.
* Client operations builders ``rawRequest(Value())`` is now a no-op.
Previously produced a non-nonsensical empty request.
* Additions
@@ -142,7 +142,7 @@ Release Notes
* Changes
* Changed name of automatic Sources `builtin` and `server` to `__builtin` and `__server`.
* Changed name of automatic Sources ``"builtin"`` and ``"server"`` to ``"__builtin"`` and ``"__server"``.
Document that Source names beginning with `__` are reserved.
0.1.0 (Dec 2020)