Chapter 13. FTA Administration

The File Transfer Agent (FTA) can be used to transfer files to and from any node in the Network Queuing Environment (NQE) in either immediate (interactive) or queued mode. It also provides network peer-to-peer authorization (NPPA) of users, which is a more secure method than ftp(1) provides.

This chapter provides the following information about managing FTA:

FTA Overview

The FTA facility consists of the three components shown in Table 13-1.

Table 13-1. File Transfer Components

Component

Program

Location of description

User interface

ftua(1) and rft(1)

“User Interface”

Common services

fta(8)

“Common Services”

File transfer services

ftad(8) and

nqsfts(8)

“File Transfer Services”

and

“File Transfer Services”

The three-tier stack of file transfer components consists of the file transfer user interface, the common services, and the file transfer services (FTS).

The ftua(1) and rft(1) commands use FTA to transfer files. A file transfer request is an object that contains information describing the file transfer operations that FTA will perform on behalf of a user.

The fta command performs the actions required for reliable file transfer between hosts. These functions include transfer retry, status, and recovery. File transfer management options are also provided.

Using fta, the file transfer user commands are given a common interface to the file transfer services that operate on various networks. A domain name selects the file transfer services for a given host name.

User Interface

The ftua(1) and rft(1) commands are the user interfaces to FTA services. They transfer files to and from a remote host by using the file transfer services supported by the underlying file transfer agent. FTA supports file transfer services that use TCP/IP protocols. In fact, ftua operates like the TCP/IP ftp(1b) file transfer program. The ftua utility supports autologin through the use of the .netrc file to allow access to accounts without specifying a password.


Note: The ftua autologin feature is prohibited on UNICOS and UNICOS/mk systems when the multilevel security feature is enabled.

See the NQE User's Guide, publication SG-2148, for an overview of the user interface commands. The ftua(1) and rft(1) man pages contain complete reference information.

Common Services

The fta(8) program provides the following FTA common services, which are common to any protocol used to transfer files:

  • Creation of the file transfer requests

  • Management of file transfer requests

  • Invocation of the file transfer services

  • Display of status information

  • Management of security keys for NPPA

  • Status about file transfers

File transfer requests are created when user agents invoke fta with the -service option.

Management functions must be invoked specifically. The primary management function is transfer recovery, which restarts transfers that failed or were interrupted.

To examine the status of requests, use the -queue option. You will get more complete output by also including the -verbose option.


Note: For UNICOS and UNICOS/mk systems running the multilevel security feature, in order for fta to operate correctly, you must install fta with a specific security environment. This can be done by using the spset command as follows to ensure that the fqueue directory is wildcarded (see the spset(1) man page for additional information); the NQE_FTA_QUEUE variable is set in the nqeinfo file:
spset -l63 NQE_FTA_QUEUE


The fta(8) man page contains complete reference information.

File Transfer Services

The file transfer service establishes the connection to the remote system. If the file transfer service being used is anything other than ftp, the invocation of the service results in an additional process. When the file transfer service completes, FTA updates the status of the request file and exits.

The FTS operation proceeds as follows:

  1. Establishes a network connection to the remote host

  2. Passes user validation information to the remote host

  3. Performs file transfer operations

  4. Closes the network connection

The file transfer service for the TCP/IP protocol FTP is integrated into the fta program. See the fta(8) man page for further details.

The nqsfts(8) program provides the file transfer service for exclusive use by NQS. This service supports only the NPK_MVOUTFILE subset of the NQS protocol. NQS can use this service through fta(8) to transfer job output files between NQS systems. This service supports the NQS hosts by using the TCP/IP network. See the nqsfts(8) man page for further details.

Figure 13-1 shows the relationships among the FTA components.

Figure 13-1. Component Relationships in FTA


Configuration

FTA configuration information is stored in the Network Load Balancer (NLB) during NQE startup. This FTA configuration applies to all hosts in the NQE except UNICOS systems that run only the NQE subset. For information about configuring FTA for UNICOS systems that run only the NQE subset, see “FTA Configuration for UNICOS Systems That Run Only the NQE Subset”.

The NPPA S-keys must be configured on each separate system. For information about configuring S-keys, see “Configuring S-keys”.

FTA configuration information is contained in the NLB database. Two FTA object types exist in the NLB database: FTA_CONFIG and FTA_DOMAIN.


Note: If you change or add a port, you must edit system files on each system, as described in “Editing System Configuration Files”, in order for the FTA daemon (ftad(8)) to be invoked when a transfer request is received.

FTA administration must take place on each system, even if the systems are reading the same configuration from the NLB. For more information about FTA administration, see “Administration”.

This section explains how to view and change the FTA configuration.

Viewing the FTA Configuration

FTA configuration is contained in the NLB. The FTA configuration is contained in the NLB as objects of the following two attribute types:

Type 

Description

FTA_CONFIG 

Global type

FTA_DOMAIN 

Describes each domain

Also, the queue parameter is defined in the nqeinfo file (see “Global FTA Configuration Parameters”).

FTA configuration may be viewed by using the nlbconfig command.

Global FTA Configuration Parameters


Note: For UNICOS systems that run only the NQE subset (NQS and FTA components), see “FTA Configuration for UNICOS Systems That Run Only the NQE Subset”, for information about configuring FTA.

If you issue the nlbconfig -odump -t FTA_CONFIG -n DEFAULT command, the output is as follows:

%nlbconfig -odump -t FTA_CONFIG -n DEFAULT
###############################################
# creation date: Mon Nov 13 16:45:09 1995
# created by: luigi
# object timestamp: Tue oct 10 15:16:15 1995
########
object FTA_CONFIG ("DEFAULT") {
    FTA_MODE         = 384;
    FTA_RESTART_LIMIT = 30;
    FTA_ADMIN_USER   = "root";
    FTA_ADMIN_GROUP  = "bin";


Note:: FTA_MODE is represented in the NLB database as a decimal number (384).

The nlbconfig FTA_CONFIG object type, displayed with the command nlbconfig -odump -t FTA_CONFIG, is defined as follows:

Parameter
 

Description

queue "path"
 

Defines the directory that holds transfer request control files while they are present in the queue. This parameter is always required. You can change this parameter in the nqeinfo configuration file.


Note: On UNICOS and UNICOS/mk systems running the multilevel security feature, the queue directory must be wildcarded to ensure that users can write a queue file to the database directory. Use the spset(1) command to do this.


FTA_RESTART_LIMIT=limit
 

Defines the maximum number of FTS processes (limit) that will be started during transfer recovery. This figure is independent of any domain-specific limit. If limit is none or unspecified, limits are not applied.

FTA_MODE=file-mode
 

Defines the file permission mode of the files in the queue directory. The default permission mode is 0600. Octal values must have a leading 0.

FTA_ADMIN_USER "username"|
FTA_ADMIN_GROUP "groupname" [,...]
 

Defines the users, groups, or a combination of the two that can perform FTA management functions on behalf of other users. Without this parameter, only the super user has this privilege.

FTA_STATUS_USER "username"|
FTA_STATUS_GROUP "groupname" [,...]
 

Defines the users, groups, or a combination of the two that can perform FTA status functions on behalf of other users. Without this parameter, only the super user has this privilege.

FTA Domain Configuration


Note: For UNICOS systems that run only the NQE subset (NQS and FTA components), to configure FTA, see “FTA Configuration for UNICOS Systems That Run Only the NQE Subset”.

If you issue the nlbconfig -odump -t FTA_DOMAIN -n inet command, the output is as follows:

%nlbconfig -odump t FTA_DOMAIN -n inet
###############################################
# creation date: Wed Nov 15 12:45:39 1995
# created by: luigi
# object timestamp: Fri Nov 13 09:34:31 1995
########
object FTA_DOMAIN ("inet") {
    FTA_PORT         = 605;
    FTA_RESTART_LIMIT = 30;
    FTA_FTS          = "ftp";
    FTA_FLAGS        = "nopassword";

The nlbconfig FTA_DOMAIN object type, displayed with the command nlbconfig -odump -t FTA_DOMAIN is defined as follows:

Parameter
 

Description

FTA_FTS=class
 

Defines the file transfer service class to be associated with a domain. The valid class identifiers are described below. The validity of other domain configuration parameters depends on the FTA_FTS class used. This parameter is required. See Table 13-2 for a list of classes that may be used.

FTA_RESTART_LIMIT=limit
 

Defines the maximum number of FTS processes (limit) that will be started for a domain during transfer recovery.

FTA_GATEWAY="hostname"
 

Defines the name of a gateway host.

FTA_PORT=number
 

Defines the port number to connect to on the remote system. The default is 605 on NQE systems. By default, the ftad daemon listens on port 605; the ftpd demon listens on port 21.

FTA_PATH="fts_path"
 

Defines the path of the FTS process to be invoked.

FTA_FLAGS=flag [,flag]...
 

Defines the flags to be used with the domain. An exclamation point (!) can precede a flag to explicitly declare a flag to be off. See Table 13-3 for a list of flags that can be used with this parameter.

The class associated with the FTA_FTS parameter can be any of the following, as shown in Table 13-2:

Table 13-2. FTA_FTS Class Parameters

Class

Description

common

Defines a domain in which the FTS uses a standard FTS interface module. The path of the FTS program is required.

dap

Defines a domain for a remote DECnet (DAP) gateway, which is controlled by using the built-in FTP FTS program. The hostname associated with the FTA_GATEWAY parameter must be running an FTP/DAP gateway. A gateway TCP/IP hostname name is required and defined using the FTA_GATEWAY parameter.

ftp

Defines an Internet FTP domain. The ftp FTS program is built into fta. An additional path parameter is not required.

The flags associated with the FTA_FLAGS parameter can be any of the following, as shown in Table 13-3:

Table 13-3. FTA_FLAGS Parameters

Flag

Description

cancel

Specifies that user agent cancellation will be performed using the FTS.

debug

Specifies that the FTS be run with debug tracing enabled. The FTS program determines the exact function of the FTS debug tracing flag.

nopassword

Specifies that a password need not be provided before a file transfer request is accepted; that is, the password is optional. NPPA requires this flag.

nopermanent

Specifies that any permanent error be treated as transient. This will enable the transfer to be recovered.

nostart

Specifies that a request should not be started when the user agent completes a session with the fta server; instead, a request is processed when transfer recovery is initiated.

notify

Specifies that user agent notification will be performed using the FTS.

privileged

Specifies that the FTS will be invoked as a privileged process, inheriting all privileges endowed to the fta recovery process. This usually results in the FTA process running as root (user ID 0).

trace

Specifies that the FTS will be run with protocol tracing enabled. The FTS program determines the exact function of the FTS protocol tracing flag.


Changing the FTA Configuration

Procedure 13-1.

You can change the default FTA configuration using the following procedure:

  1. List the FTA objects in the NLB database with the following commands:

    # nlbconfig -olist -t FTA_CONFIG
    ------ type: FTA_CONFIG count: 1 ------
    DEFAULT
    # nlbconfig -olist -t FTA_DOMAIN
    ------ type: FTA_DOMAIN count: 4 ------
    inet            ftp           nqe          nqs-rqs

    The output indicates that there is one FTA configuration object named DEFAULT. There are four FTA domain objects named inet, ftp, nqe, and nqs-rqs. When the count is more than one, specify a specific name with the nlbconfig -t type -n name command.

  2. To display all the attributes of the object type FTA_CONFIG with the name DEFAULT, issue the following command:

    nlbconfig -odump -t FTA_CONFIG -n DEFAULT

    You will receive output similar to the following:

    ###############################################
    # creation date: Mon Dec 25 16:45:09 1995
    # created by: luigi
    # object timestamp: Fri Oct 13 15:16:15 1995
    ########
    object FTA_CONFIG ("DEFAULT") {
        FTA_MODE         = 384;
        FTA_RESTART_LIMIT = 30;
        FTA_ADMIN_USER   = "root";
        FTA_ADMIN_GROUP  = "bin";

    You can either completely replace this information with new information, or update it to change a part of it. Note that the FTA_MODE is represented in the NLB database as a decimal number (384).

  3. To change the information, create a file (called, for example, odat.1) that contains the attribute(s) you want to change or add, as in the following example:

    object FTA_CONFIG ("DEFAULT") {
        FTA_ADMIN_USER    = "root, luigi";
    }

  4. Update the object file by using the nlbconfig -oupdat -f odat.1 command. All of the existing information is retained, and the FTA_ADMIN_USER attribute is modified.

  5. To completely replace the information in the object file, dump the information in the object file into working file (called, for example, odat.2) by using the following command:

    nlbconfig -odump -f odat.2

    Edit this file to contain the information you want and replace the entire object file with the following command:

    nlbconfig -oput -f odat.2

FTA Configuration for UNICOS Systems That Run Only the NQE Subset

For UNICOS systems that run only the NQE subset (NQS and FTA components), FTA configuration is not maintained in the NLB. Instead, UNICOS FTA configuration is maintained in the FTA configuration file /nqebase/etc/fta.conf. To view fta configuration for UNICOS systems, use the fta -config command. For additional information, see the fta.conf(5) man page.


Note: If you change or add a port, you must edit system files on each system, as described in “Editing System Configuration Files”, in order for the FTA daemon (ftad(8)) to be invoked when a transfer request is received.

You must add the entry NQE_FTA_FTACONF=/nqebase/etc/fta.conf to the nqeinfo file (either by using the nqeconfig(8) utility or by manually adding the entry to the end of the file). To initially generate the fta.conf file and FTA queue directory, use the configure.fta script in the /nqebase/examples directory. This script will use values that are in the nqeinfo file to create the proper FTA configuration.

If you issue the fta -config command, the output is as follows. The section of the output that begins with FTA corresponds to the FTA_CONFIG NLB object. The section of the output that begins with FTS corresponds to the FTA_DOMAIN NLB object. NQE_FTA_QUEUE is set in the nqeinfo file.

% fta -config
FTA
queue="NQE_FTA_QUEUE"
mode=0600
admin_users="root"
admin_groups="bin"
restartlimit=30
FTS
domain="inet"
fts=ftp
restartlimit=30
port=605
flags="nopassword"

Table 13-4 describes how the fta -config output corresponds to the output from the nlbconfig commands.

Table 13-4. fta -config Output and nlbconfig Output Comparison

fta -config output

nlbconfig output

mode

FTA_MODE

admin_users

FTA_ADMIN_USER

admin_groups

FTA_ADMIN_GROUP

restartlimit

FTA_RESTART_LIMIT

domain

FTA_DOMAIN

fts

FTA_FTS

port

FTA_PORT

flags

FTA_FLAGS



Note:: nlbconfig represents FTA_MODE as a decimal number, rather than the octal number that is displayed when you use the fta -config command.


Changing the ftpd Port Number

If you are running a TCP/IP transport service from another vendor (that is, one other than the remote system TCP/IP), and the ftp daemon is already configured on port 21, you must add the ftpd service to an unused port number that is greater than 256 and less than 1024.

To add the ftpd service to an unused port number, you must ensure that this matches the ftp/fta port number on the local system.

Editing System Configuration Files

FTA itself is configured during the installation of NQE. However, if you change or add a port, you must edit the following system files on each machine in order for inetd to invoke ftad when a transfer request is received:

/etc/services
/etc/inetd.conf

Optionally, you might edit /etc/syslogd.conf.

Add the following line to /etc/services:

fta             unused_port_number/tcp

Add the following lines to /etc/inetd.conf:

#<service_name> <socket_type> <proto> <flags> <user> <server_pathname> <args> <options>

#
# FTAD daemon
#
fta  stream  tcp  nowait root /nqebase/bin/ftad ftad options

You can add the -d option to the end of the last line. The -d option allows the server to log messages to syslogd.

If this option is required, ensure that the following line is included in syslog.conf (it may already be included if other daemons are already sending messages to syslogd):

*.debug                                  /var/adm/messages

The inetd utility rereads its configuration file once when it is started and again whenever it receives the hangup signal (SIGHUP). New services can be activated and existing services can be deleted or modified by editing the configuration file, then sending inetd a SIGHUP signal.


Note:: On AIX systems, if you manually edit the inetd.conf file, you must synchronize the inetd.conf file and the object data manager (ODM) database by using the inetimp command.

For additional information about setting port numbers, see the NQE Installation, publication SG-5236.

Configuring Network Peer-to-peer Authorization

You can authorize users to transfer files without exposing passwords across the network. This is especially desirable for NQS users who might otherwise have to make their FTA passwords visible in the NQS job file script. Network peer-to-peer authorization (NPPA) is a method of enabling users to open a connection to a remote system without sending a password across the network.


Note: NPPA is enabled by default on all platforms except UNICOS and UNICOS/mk systems. To enable NPPA on UNICOS and UNICOS/mk systems, use the ftad -N command in /etc/inetd.conf.

NPPA requires the use of ftua or rft on the local system and ftad on the remote system. Both systems must have support for the NPPA process. NPPA only works if you have a flat user name space; that is the user name of an FTA user must be the same on both systems.

The FTA domains inet and nqe are set up to use NPPA by default. You do not have to make changes to the FTA domain configuration to use NPPA in these domains. If you want to use a different name for NPPA connections, you can add another domain. This procedure is described in “Modifying the NLB Database for NPPA”.

Each system that is going to use NPPA must be configured with the authentication information that it will send to another system during session setup, and with the authentication information that it will expect to receive from other NPPA systems. This authentication information consists of an S-key (security key) and a password, both of which are alphanumeric strings. The first S-key and password pair defined on each system is designated as the primary S-key and password pair for that system.

When a user starts ftua or rft and uses a domain configured for NPPA, the system encrypts its primary S-key and password pair and sends it to the system with which it is attempting to establish a connection. The remote system performs a similar encryption for each S-key and password pair on its list of expected authorization information and accepts the connection when it finds a match.


Note: If multiple ftads are configured on different ports, they will all use the NPPA configuration file (fta.nppa) pointed to by the NQE_FTA_NPPAPATH variable that is set in the nqeinfo file.


Configuring S-keys

To configure network peer-to-peer authorization, the administrator must establish the primary S-key and password pair for each system. These S-key and password pairs can be the same for all systems, or they may differ.

The first S-key set up on each system becomes the primary S-key, which is sent to remote systems during connection establishment. After defining the primary S-key on a system, the administrator adds all the S-key and password pairs for all the hosts that will be authorized to open NPPA connections to that system.

To configure network peer-to-peer authorization, you must assign S-key and password pairs on all of the systems that will use NPPA.

To create and delete S-keys, you must be root.


Note: On UNICOS systems that run only the NQE subset, use the fta(8) command to configure S-keys.

To assign S-keys, use the skey -addkey keylabel command, as follows:

# skey -addkey key1
Enter key password
Verification 

Alternatively, if FTA is running on the system, you can also use the fta -addkey command. The effect of the two commands is identical.

To display the keys on the system, use the -showkey option, as follows:

# skey -showkey

Keys on this system

 1) key1 -  Primary Key

To delete S-keys, use the skey -delkey keylabel command.


Note:: For UNICOS systems running NQE 2.0 or earlier in your network, you cannot use ftua to connect to a UNICOS platform (whether it is a Cray Research system-to-Cray Research system or a workstation-to-Cray Research system) because UNICOS systems running the earlier versions of NQE do not support ftad. NQE version 3.0 running on UNICOS does support ftad.


NPPA Example

This example is based on having three systems that you want to communicate by using FTA. The systems are called host1, host2, and host3. They have the following characteristics:

Table 13-5. Example of NPPA Configuration Characteristics

System

FTS

Port FTS listens on

Port provided for domain nppa

S-keys

host1

ftp

21 (ftpd)

605

key2

host2

ftp

605 (ftad)

605

key1

host3

ftp

605 (ftad)

605

key1, key2

Figure 13-2 shows this configuration.

Figure 13-2. NPPA Configuration Example

In this configuration, you want users to be able to use cqsub to submit NQS batch requests from host3 to host1 and to have FTA return the output. FTA on host1 will construct an authentication packet that includes the S-key key2 as one of its components. host1 transmits its authentication packet to host3. On host3, two authentication packets are generated, one that uses the S-key key2 and one that uses the S-key key1. Both of the packets generated on host3 are checked against the packet received from host1. The packet that uses the S-key key2 matches, and the authentication succeeds.

If users initiate an FTA session from host3 to host1 that uses the domain nppa, the session will fail because no FTA daemon is listening on port 605 on the host1 system.

If users initiate an FTA session from host3 to host1 without specifying a domain, a connection to the ftp daemon port (usually 21) can be made successfully. This session will not use NPPA because the ftp daemon does not support NPPA.

Users can use cqsub to submit an NQS batch request from host3 to host2 and have FTA return the output. FTA on host2 constructs an authentication packet that includes the S-key key1 as a component. host2 transmits this packet to host3. On host3, two authentication packets are generated, and the one that uses the S-key key1 matches, and authentication succeeds.

If users initiate an FTA session from host3 to host2 that uses the domain nppa, the session will succeed because the FTA daemon is listening on the same port number (605) on host2.

Modifying the NLB Database for NPPA

If you want to create a new FTA domain for users to specify when they use NPPA, you must add that FTA domain to the NLB database. You must have ACL write privileges to change the NLB database. The domain must have the following attributes; you can add others if you want:

Attribute

Description

FTA_FTS = ftp

File transfer class used by the remote system; ftp is an example.

FTA_PORT = nnn

TCP/IP ftad port number on the remote system on which the fta daemon is listening; “Example of Modifying the NLB Database” contains an example.

FTA_FLAGS = nopassword

Flag (nopassword) that informs FTA that NPPA can be used for this domain.

For a complete listing of possible attributes and values, see “Viewing the FTA Configuration”.

Example of Modifying the NLB Database

To add an NPPA domain to the NLB database, create a file (called, for example, nppa.odat) such as the following, which adds the domain nppa on the local system, with the ftad daemon listening on port number 258:

object FTA_DOMAIN ( "nppa" ) {
      FTA_FTS = "ftp";
      FTA_PORT = 258;
      FTA_FLAGS = "nopassword";
}

To update NLB object file and add the new domain object to the NLB database, use the following command:

nlbconfig -oupdat -f nppa.odat

For more details on how to modify the NLB database, see “Changing the FTA Configuration”.

Administration

FTA startup, logging, and recovery functions are not entirely contained within the bounds of the fta(8) program. This section explains some of the interactions that occur between the FTA facility and other parts of the operating system. The actions described in this section are done (or a default value is provided) during installation. If you want to make changes, you can use these procedures.


Note:: FTA administration must take place on each system, even if the systems are reading the same configuration from the NLB.


FTA System Startup

At system boot time, you can restart any FTA file transfers that stopped when the system shut down by running a recovery process.


Note:: Do not start a recovery process before TCP/IP is brought up.

The system startup recovery process is started as follows:

fta -recover

FTA Recovery

The following sections describe FTA recovery.

Byte-level Recovery of Binary Transfers

Binary transfers can be recovered at the byte level. System administrators enable or disable this recovery level by setting the NQE_FTA_SMART_RESTART environment variable to be ON or OFF. The NQE_FTA_SMART_RESTART environment variable may be set in the nqeinfo file or through the shell. The default value is ON.


Note:: The configuration variable is ignored if the operation is not taking place in binary mode; restarting will be disabled.

The FTA_DBY NLB attribute of the FTA_ACTION object appears only after the transfer has begun; it remains even if the transfer is interrupted.

Setting the Recovery Interval

FTA does not have a daemon recovery service; that is, the recovery of a queued request is not automatically provided. Therefore, it is recommended that you start a recovery process either at regular intervals or at specific times of the day or week.

If you use the clock daemon, cron(8), to start FTA recovery for all users, you must use the super-user crontab file. The following example of a crontab entry starts an FTA recovery process every 15 minutes, each day of the week. Refer to crontab(1) for syntax information.

0,15,30,45 * * * *    fta -recover

It also is useful to run a recovery process at significant times, such as the following:

  • Nightly, to clean up any failures.

  • After network failure is resolved. Use -domain as a selector to direct the recovery for a specific domain or network.

  • After a remote host is rebooted. Use -host to recover requests that transfer to or from that specific host.

To recover queued requests for all users of the system, run the fta -recover process, using the root user ID or the ID of an FTA administrator.

The following example runs the recovery process on the specific file transfer request entry aa003yy; -debug is used to monitor the process:

% fta -debug -recover -entry aa003yy
fta: debug: getuid=11431, geteuid=11431
fta: debug: Reading config file...
fta: debug: ftsconf: class=1, domain=solaris, gateway=None, path=None, port=510
fta: debug: ftsconf: class=1, domain=osf, gateway=None, path=None, port=535
fta: debug: ftsconf: class=6, domain=nppa_ice, gateway=ice, path=None, port=256
fta: debug: ftsconf: class=1, domain=inet, gateway=None, path=None, port=0
fta: debug: User is an administrator
fta: debug: User can see status
fta: debug: queue: reading dir NQE_FTA_QUEUE
fta: debug: entry aa006bk rejected (name mismatch)
fta: debug: queue: opening file qfaa003yy
fta: debug: entry aa003yy selected
fta: debug: entry aa001bb rejected (name mismatch)
fta: debug: entry aa004WE rejected (name mismatch)
fta: debug: entry aa004YM rejected (name mismatch)
fta: debug: entry aa004dw rejected (name mismatch)
fta: debug: entry aa004fJ rejected (name mismatch)
fta: debug: entry aa0053J rejected (name mismatch)
fta: debug: entry aa0059I rejected (name mismatch)
fta: debug: entry aa005Q0 rejected (name mismatch)
fta: log: aa003yy: starting recovery.
fta: debug: setUserId: uid=11431, euid=11431
fta: debug: ftp_open: connecting to yankee...
fta: debug: ftp_connect: connection up
fta: debug: waiting for initial 220 msg...
fta: debug: got initial 220 msg
fta: debug: doing request
fta: debug: operation Copy (get)
fta: debug: copyio: called
fta: debug: copyio: 2879 bytes transferred
fta: debug: operation completed (status =    20200)
fta: debug: pullstatus: status = 20200
fta: debug: updating/removing request entry
fta: debug: request succeeded (ES_NONE)
fta: log: aa003yy: completed successfully.
fta: debug: rmEntry: aa003yy: request removed

Types of Failure

The following problems might prevent file transfers from occurring when FTA is used:

  • A network route is down.

  • A remote system is down.

  • User validation information is not valid.

  • A file transfer operation is not valid.

These errors are categorized as either transient or permanent.

Type of error 

Resulting action

Transient 

FTA retains the request file in the request queue directory. Status information showing the reason for the failure is included in the request.

Permanent 

FTA notifies the user or user agent (ftua or rft) with a message containing information that describes the error, and the transfer request is removed from the request queue directory.

When file transfer is successful, FTA removes the request file from the queue directory. You can use the ftua notify command to notify the user of successful completion.

A queued request that fails with a transient error can be rerun by invoking a recovery process. Recovery proceeds with the following steps:

  1. Scan the queue for entries.

  2. Invoke FTA and FTS processes for each request to be recovered.

  3. Update the status of the request queue.

If you are root or an FTA administrator, you can start a recovery process by executing the following command:

fta -recover

FTA Recovery Limits

If many file transfer requests are queued, recovery can create many processes. This can create a heavy load on the system. To reduce the load, you can limit the number of requests that are recovered at any one time. The FTA_RESTART_LIMIT attribute of the FTA_CONFIG NLB object controls the number of requests that are started at any one time. The number of requests recovered at any one time, regardless of domain, is controlled by this limit. The following NLB object shows a global configuration restart limit of 30:

object FTA_CONFIG ("DEFAULT") {
            FTA_MODE
            FTA_RESTART_LIMIT = 30;

To control the load presented by a specific domain, assign a limit on a per-domain basis. This limit is known as a domain restart limit. “Changing the FTA Configuration”, explains how to change the FTA configuration.

The following example from the NLB object shows that the inet domain restart limit as 10:

object FTA_DOMAIN ("inet") {
      FTA_FTS = "common";
      FTA_RESTART_LIMIT = 10;
}

Both the fta and domain restart limits are applied to the queue during recovery. If either limit is reached, the number of requests recovered is constrained. If a domain restart limit is set higher than the fta restart limit, the number of requests recovered for that domain is constrained by the fta restart limit.

If neither an fta nor a domain restart limit is defined, no limit is applied. It also is possible to use the keyword none in place of a number to explicitly denote that there is no limit.

FTA Recovery Strategy

When you start a recovery process, the queue of file transfer requests is sorted before any restart limits are applied. The following criteria determine the order in which requests are recovered. The order of the following list is significant; the first differentiating factor determines the order in which the requests are recovered. Selector options are applied to the queue to filter out the requests chosen by a user.

  1. Requests that were never run are favored over those that ran before.

  2. Requests that were run least recently are favored over those that were run most recently.

  3. Requests that were queued least recently are favored over those that were queued most recently.

The following example shows an application of these criteria. Because requests aa00093 and aa00136 never ran, they are favored over the other requests (rule 1). Because request aa00093 is older, it is placed before aa00136 in an internal recovery list (rule 3). Requests aa00101 and aa00127 have run. Because both have the same run date, they are equally qualified under rule 2; however, aa00101 was queued before aa00127, so aa00101 is favored over aa00127 (rule 3). Recovery would occur in the following order: aa00093, aa00136, aa00101, and aa00127.

QID

Date queued

Date run

aa00093

Thu Nov 16 08:16:35

Never

aa00101

Thu Nov 16 08:18:22

Thu Nov 16 08:28:14 BST 1995

aa00127

Thu Nov 16 08:28:12

Thu Nov 16 08:28:14 BST 1995

aa00136

Thu Nov 16 08:30:43

Never

If the restart limit were set to 3, which limits the number of recovered requests, only the first three requests from this sorted list (that is, aa00093, aa00136, and aa00101) would be recovered.

Suppose that after the recovery the queue state is as follows:

QID

Date queued

Date run

aa00101

Thu Nov 16 08:18:22

Thu Nov 16 09:45:13 BST 1995

aa00127

Thu Nov 16 08:28:12

Thu Nov 16 08:28:14 BST 1995

Requests aa00093 and aa00136 completed, but request aa00101 experienced a transient error and was requeued. If a second recovery starts now, neither request qualifies under rule 1; therefore, queue ordering would be determined by rule 2, the time the requests were last run. In this example, request aa00127 would be placed before aa00101, because aa00127 ran least recently.

Information Log

The NQE_FTA_NLBCOLLECT variable activates logging of transfer information to the NLB. Values may be ON or OFF. The variable may be set in the nqeinfo file or as an environment variable. The default value is ON.

FTA information is logged by the syslogd(8) daemon under the facility name daemon. Three syslogd priorities are used: notice, err, and debug. Normal FTA events are logged with the notice priority; FTA errors are logged with the err priority, and all events are logged when debug is turned on.

Other facilities also use the syslogd facility name daemon, and a corresponding syslog.conf entry might already be in use. Review the syslog.conf file for other uses of the daemon facility.

The following is a sample entry from a syslog.conf file used to direct FTA notice and error logging information to the /usr/adm/syslog/daylog system log file:

daemon.notice;daemon.err   /usr/adm/syslog/daylog

With the addition of the following line, FTA errors also are sent to an operator's terminal:

daemon.err  operator

A typical entry in a log file that is generated by fta using syslogd follows:

Sep 29 12:27:21 yankee fta[16331]: aa003z7: starting recovery
Sep 29 12:27:22 yankee fta[16331]: User: js Host: yankee Request: aa003z7
  Mode: Immediate
Sep 29 12:27:22 yankee fta[16331]: Remote file: lgn Local
  file: /net/home/palm3/js/temp Size: 879 bytes
Sep 29 12:27:22 yankee fta[16331]: aa003z7: completed successfully
Sep 29 12:28:20 yankee fta[16335]: aa005Q0: cancelled (null operation)
Sep 29 12:28:20 yankee fta[16335]: aa005Q0: failed: Cancelled by user/operator
Sep 29 12:28:26 yankee sendmail[16337]: AA16337:
  message-id=<[email protected]>
Sep 29 12:28:26 yankee sendmail[16337]: AA16337: from=js, size=563, class=0,
  received from local
Sep 29 12:28:27 yankee sendmail[16339]: AA16337: [email protected], delay=00:00:06,
  stat=Sent
Sep 29 12:29:18 yankee fta[16342]: aa004YM: cancel: request active


Caution: When you invoke FTA recovery, you can use the -log option to route the information logged to the standard output of the fta recovery process. If this option is used from a tty, you must redirect the standard output. If no redirection or pipe is used, and the output is sent to the controlling tty, some of the log output will be lost. This behavior is a side effect caused by fta using the setjob(2) system call during the recovery process


FTA Management Functions and Status

FTA management functions include the following:

  • Canceling requests

  • Deleting requests

  • Holding requests

  • Releasing requests

  • Displaying request status

The super user can perform management functions on any requests that exist in the FTA queue.

If necessary, specific users or groups of users can be authorized to use FTA management functions. In the following NLB object example, user joe and the members of the group operator are authorized to perform FTA management functions:

object FTA_CONFIG ("DEFAULT") {
    FTA_MODE         = 384;
    FTA_RESTART_LIMIT = 30;
    FTA_ADMIN_USER   = "joe";
    FTA_ADMIN_GROUP  = "operator";

Specific users or groups of users also can be authorized to display the status of any requests in the FTA queue. In the following NLB object example, user joe and the members of the group staff can display the status of any request:

object FTA_CONFIG ("DEFAULT") {
    FTA_MODE         = 384;
    FTA_RESTART_LIMIT = 30;
    FTA_STATUS_USER   = "joe";
    FTA_STATUS_GROUP  = "staff";



Note:: Unless explicitly listed, users can perform management functions on, and display the status of, only their own requests.

You can use selector options to filter sets of requests for specific status or management functions (see the fta man page). Selectors are provided to filter requests based on the following attributes:

  • Time the request was queued

  • Domain name

  • Host name

  • Request owner

  • Queue request identifier

  • Request status

If you combine different selectors, a request is selected only when it satisfies all attributes specified with the given selectors. If selectors are not specified, all requests are selected. The following example lists all requests that were queued at or before 12 P.M. and that tried to transfer but failed.

fta -before 12:00 -failed -queue

The following examples use the -debug option to show the output from requests to cancel and delete an entry:

% fta -cancel -entry aa005Q0 -debug
fta: debug: getuid=11431, geteuid=11431
fta: debug: Reading config file...
fta: debug: ftsconf: class=1, domain=solaris, gateway=None, path=None, port=510
fta: debug: ftsconf: class=1, domain=osf, gateway=None, path=None, port=535
fta: debug: ftsconf: class=6, domain=nppa_ice, gateway=ice, path=None, port=256
fta: debug: ftsconf: class=1, domain=inet, gateway=None, path=None, port=0
fta: debug: User is an administrator
fta: debug: User can see status
fta: debug: queue: reading dir NQE_FTA_QUEUE
fta: debug: entry aa006bk rejected (name mismatch)
fta: debug: entry aa001bb rejected (name mismatch)
fta: debug: entry aa004WE rejected (name mismatch)
fta: debug: entry aa004YM rejected (name mismatch)
fta: debug: entry aa004dw rejected (name mismatch)
fta: debug: entry aa004fJ rejected (name mismatch)
fta: debug: entry aa0053J rejected (name mismatch)
fta: debug: entry aa0059I rejected (name mismatch)
fta: debug: queue: opening file qfaa005Q0
fta: debug: entry aa005Q0 selected
fta: log: aa005Q0: cancelled (null operation).
fta: log: aa005Q0: failed: Cancelled by user/operator.
fta: debug: rmEntry: aa005Q0: request removed
% fta -delete -entry aa006bk -debug
fta: debug: getuid=11431, geteuid=11431
fta: debug: Reading config file...
fta: debug: ftsconf: class=1, domain=solaris, gateway=None, path=None, port=510
fta: debug: ftsconf: class=1, domain=osf, gateway=None, path=None, port=535
fta: debug: ftsconf: class=6, domain=nppa_ice, gateway=ice, path=None, port=256
fta: debug: ftsconf: class=1, domain=inet, gateway=None, path=None, port=0
fta: debug: User is an administrator
fta: debug: User can see status
fta: debug: queue: reading dir NQE_FTA_QUEUE
fta: debug: queue: opening file qfaa006bk
fta: debug: entry aa006bk selected
fta: debug: entry aa001bb rejected (name mismatch)
fta: debug: entry aa004WE rejected (name mismatch)
fta: debug: entry aa004YM rejected (name mismatch)
fta: debug: entry aa004dw rejected (name mismatch)
fta: debug: entry aa004fJ rejected (name mismatch)
fta: debug: entry aa0053J rejected (name mismatch)
fta: debug: entry aa0059I rejected (name mismatch)
fta: debug: rmEntry: aa006bk: request removed

The following examples show the output from requests to display the status of an entry:

% fta -queue
--QID-- ---Queued On --- --User-- ---State--- -----Status-----
aa001bb Tue Sep 14 09:19 sparks   Active      UA connected
aa004WE Tue Sep 21 08:54 sparks   Active      Connecting
aa004YM Tue Sep 21 09:00 sparks   Active      Connected
aa004fJ Tue Sep 21 09:36 sparks   Active      Connecting
aa0053J Tue Sep 21 11:52 sparks   Active      Connecting
aa0059I Tue Sep 21 12:09 sparks   Active      Connecting

% fta -queue -verbose
--QID-- ---Queued On --- --User-- --Group--
aa001bb Tue Sep 14 09:19 sparks   rqsgrp
        State: Active
        Status: UA connected
        Priority: 0
        Last Attempt: Tue Sep 14 10:33:22
        Controlling-PID: 27788
        Domain: osf
        Host: alphabet
        Username: sparks
        Copy (get)
                RemoteFile: fta30.1.tar
                LocalFile: /net/home/palm3/sparks/fta.tar

aa004WE Tue Sep 21 08:54 sparks   rqsgrp
        State: Active
        Status: Connecting
        Priority: 0
        Last Attempt: Never
        Domain: inet
        Host: alphabet

Transfer Status

FTA provides progress statistics about file transfer status. The total file size, bytes transferred, and estimated time to completion are tracked, and the progress statistics are stored in the NLB. Users and administrators can view this status information by using the FTA summary option of the NQE GUI Status window. You can change the interval between NLB updates by setting the NQE_FTA_STAT_INTERVAL variable, which may be set in the nqeinfo file; alternatively, you can override the configured internal value through the NQE_FTA_STAT_IN environment variable in the shell. The variable is an integer, which represents the number of seconds between NLB updates. If the NQE_FTA_STAT_INTERVAL environment variable is set to 0, progress statistics are disabled. The default value is 2.

For DFS transfers, the FTA_DFS NLB attribute of the FTA_ACTION object appears only after the transfer has begun; it remains even if the transfer is interrupted. The FTA_DFS NLB attribute is set to -1 if FTA is unable to determine the file size; this action does not prevent the transfer from continuing.