Setting up source VIPA
To set up source VIPA, define your address ranges in the configuration file.
Usage
To install:
An RPM is available for Source VIPA. The RPM is called src_vipa-<version>.s390x.rpm. Install the RPM as usual.
Configuration
With Source VIPA version 2.0.0 the configuration file changed: the policy section was added. The default configuration file is /etc/src_vipa.conf.
/etc/src_vipa.conf or the file pointed to by the environment variable SRC_VIPA_CONFIG_FILE, contains lines such as the following:
# comment
D1.D2.D3.D4/MASK POLICY S1.S2.S3.S4 [T1.T2.T3.T4 [...]]
.INADDR_ANY P1-P2 POLICY S1.S2.S3.S4 [T1.T2.T3.T4 [...]]
.INADDR_ANY P POLICY S1.S2.S3.S4 [T1.T2.T3.T4 [...]]
D1.D2.D3.D4/MASK
specifies
a range of destination addresses and the number of bits set in the
subnet mask (MASK). As soon as a socket is opened and connected to
these destination addresses and the application does not do an explicit
bind to a source address, Source VIPA does a bind to one of the source
addresses specified (S, T, [...]). It uses the policy that is selected
in the configuration file to distribute the source addresses. See Policies for available load distribution
policies. Instead of IP addresses in dotted notation, host names can
also be used and are resolved using DNS.
# IPv6
2221:11c3:0123:d9d8:05d5:5a44:724c:783b/64 random ed27:120:da42:: 1112::33cc
.INADDR_ANY
P1-P2 POLICY S1.S2.S3.S4
or .INADDR_ANY P POLICY
S1.S2.S3.S4
causes bind calls with .INADDR_ANY
as
a local address to be intercepted if the port the socket is bound
to is between P1 and P2 (inclusive). In this case, .INADDR_ANY
is
replaced by one of the source addresses specified (S, T, [...]), which
can be 0.0.0.0.
All .INADDR_ANY
statements
are read and evaluated in order of appearance. This method means that
multiple .INADDR_ANY
statements can be used to have
bind calls intercepted for every port outside a certain range. This
is useful, for example, for rlogin
, which uses the bind
command
to bind to a local port, but with .INADDR_ANY
as
a source address to use automatic source address selection. See Policies for available load distribution
policies.
The default behavior for all ports is that the kind of bind calls is not modified.
Policies
- onevipa
- Only the first address of all source addresses specified is used as source address.
- random
- The source address that is used is selected randomly from all the specified source addresses.
- lrr (local round robin)
- The source address that is used is selected in a round robin manner from all the specified source addresses. The round robin takes place on a per-invocation base: each process is assigned the source addresses round robin independently from other processes.
- rr:ABC
- Stands for round robin and implements a global round robin over
all Source VIPA instances that share a configuration file. All processes
that use Source VIPA access an IPC shared memory segment to fulfil
a global round robin algorithm. This shared memory segment is destroyed
when the last running Source VIPA ends. However, if this process does
not end gracefully (for example, is ended by a
kill
command), the shared memory segment (size: 4 bytes) can stay in the memory until it is removed byipcrm
. The toolipcs
can be used to display all IPC resources and to get the key or id used foripcrm
. ABC are UNIX permissions in octal writing (for example, 700) that are used to create the shared memory segment. Make this permission mask as restrictive as possible. A process that has access to this mask can cause an imbalance of the round robin distribution in the worst case. - lc
- Attempts to balance the number of connections per source address. This policy always associates the socket with the VIPA that is least in use. If the policy cannot be parsed correctly, the policy is set to round robin per default.
Enabling an application
src_vipa.sh <application and parameters>
enables
the Source VIPA function for the application. The configuration file
is read when the application is started. It is also possible to change
the starter script and run multiple applications with different Source
VIPA settings in separate files. To do this, define and export a SRC_VIPA_CONFIG_FILE
environment variable that points to the separate file before you start
an application.- LD_PRELOAD security prevents
setuid
executable files to be run under Source VIPA; programs of this kind can be run only when the real UID is 0. The ping utility is usually installed withsetuid
permissions. - The maximum number of VIPAs per destination is 8.