niff(7) Miscellaneous Information Manual niff(7)NAME
niff - Network Interface Failure Finder (NIFF) introductory information.
DESCRIPTION
The Network Interface Failure Finder, NIFF, is a facility for detecting and reporting possible failures in network interface cards (NICs)
or their connections. Detection is done by monitoring device counters and attempting to generate traffic to NICs suspected of having
failed. Reporting is done using the Event Manager subsystem (EVM). NIFF does not drive failover operations; that is the responsibility of
the application that subscribes to NIFF's EVM events. Appropriate courses of action may include selecting another network interface for
communication or if it is a clustered environment, migrating an application. See nr(7) for further information.
At the heart of NIFF is the traffic monitor thread. The traffic monitor thread tracks changes in the network device's counters, and notes
if the received packet counter remains unchanged since the previous snapshot. As long as the counter continues to increase, the traffic
monitor thread assumes the NIC is functioning. See nifftmt(7) for further information.
The traffic monitor thread can monitor any network interface. The configuration utility, niffconfig, is used to activate and administer
the traffic monitor thread. See nifftmt(7) and niffconfig(8) for further information.
The Network Interface Failure Finder daemon, niffd, is a traffic generator for network interfaces that have been classified inactive by the
kernel traffic monitor thread. The purpose of niffd is to get the interface packet counters to increment, signifying the interface is still
alive and well. See niffd(8) for further information.
SEE ALSO :
nifftmt(7), nr(7), niffconfig(8), niffd(8) delim off
niff(7)
Check Out this Related Man Page
nr(7) Miscellaneous Information Manual nr(7)NAME
nr - Redundant Array of Independent Network Adapters (NetRAIN)
DESCRIPTION
The NetRAIN virtual interface configures multiple interfaces on the same LAN segment into a single interface. One of the real interfaces
is always active while the others remain idle. If the active interface fails, an idle interface comes online. The failover time is
adjustable depending on your network configuration and operation.
You can configure the NetRAIN interface with the ifconfig command or with the ioctl system call. See ifconfig for more information. You
can adjust some parameters with the sysconfig command. The SIOCIFADD ioctl parameter creates the NetRAIN virtual interface and adds the
real interfaces to this NetRAIN set. After creating the NetRAIN virtual interface, one or more real interfaces are attached to it.
NetRAIN uses the Network Interface Failure Finder daemon (niffd) to monitor the interfaces.
Individual interfaces cannot be added or removed from the set once they have been created. However, the NetRAIN set can be disassembled
using the ifconfig command by specifying all the interface names in the set on the command line. You must first bring the NetRAIN virtual
interface itself down by using the ifconfig command.
Parameters
The following list of ioctl parameters is used to configure the nr interface: Creates the NetRAIN virtual interface if it has not already
been created. This parameter requires an if_nrset structure for the arg parameter (found in the <net/if.h> file). The if_nrset structure
contains the name of the nr interface (nr0, nr1, ...) and a list of interfaces to attach to the NetRAIN set. Upon successful completion of
this command, the NetRAIN set is configured and the monitoring thread is activated. If the command fails, the name of the interface that
could not be added is copied back into the user space buffer (for error message generation).
The list of NetRAIN interfaces is kept in a static table. The default size is specified by the nr_maxdev kernel attribute. The
interfaces themselves are numbered from 0 to nr_maxdev-1 (for example, nr0, nr1, ...). To change the size of this table, change the
nr_maxdev attribute for the netrain kernel subsystem by using the sysconfig command. You must reboot the system for the new value
to take effect. Removes one or all members of the NetRAIN set. This command requires an ifreq structure with the ifr_name field
set to the NetRAIN interface name (nrx) and the ifr_index field set to the interface index of the interface to be removed from the
set (the ifreq structure is found in the <net/if.h> file).
You can find the interface index of an interface by using the SIOCGIFINDEX ioctl. If the specified interface is the current active
interface in the NetRAIN set, the active interface is switched to another NetRAIN set member. If the NetRAIN set has only one mem-
ber, removal of this member is equivalent to disassembling the NetRAIN set.
If the ifr_index field is set to 0, the NetRAIN set is disassembled, the UP flag is cleared on all members, the hardware address is
reset to the default value, and the hardware address is cleared for the nr interface. You can reuse the nr interface in a future
SIOCIFADD command. Forces a manual switch to another interface in the NetRAIN set. This command requires an ifreq structure passed
in the arg field (<net/if.h>). The ifr_name field can be the nr interface name or the name of any member in the set. If the name is
the nr interface or the active member, the next member in the set is brought online. If any other member is specified in the
ifr_name field, that interface is brought online. Retrieves the members of a NetRAIN set. This command requires an if_nrset struc-
ture to be passed in the arg field (<net/if.h>). The nr_name field may be the nr interface name or the name of any member of the
set. Upon return, the nr_name field contains the nr interface name and the nr_buf field is a list of member names. This buffer must
be large enough to hold all the members or an ENOBUFS error is returned. Forces the active interface to switch to the next avail-
able interface at regular intervals. It requires an ifreq structure in the arg field. The ifr_name field must contain the nr inter-
face name and the ifr_value field contains an integer number of seconds between each switch operation. A value of zero disables this
feature.
The following ioctl parameter is used to control the interface monitoring frequency. This parameter requires an mif_t structure (found in
the <net/if.h> file). The name field contains the NetRAIN interface name and the t1 and t2 fields contain timer values. Sets two NetRAIN
interface timing parameters in the mif_t structure. The t1 parameter specifies the time period, in seconds, that the traffic monitor
thread delays between reads of the interface counters when the network is running normally. If there is no change in the received byte
count for t1 seconds, the traffic monitor thread issues a yellow alert. The recommended t1 value is 4.
The t2 parameter specifies the traffic-free time period, in seconds, that must pass before the traffic monitor thread declares the
interface dead. The recommended t1 value is 10 for Ethernet interfaces and 16 for Asynchronous Transfer Mode (ATM) LAN Emulation
(LANE) interfaces.
The NetRAIN virtual interface supports all other ioctl parameters. The NetRAIN driver propagates these commands to the real device driver
where appropriate. See the reference page for each individual driver for more details.
RESTRICTIONS
See the Network Administration for information on NetRAIN restrictions.
EXAMPLE
The following example creates a NetRAIN set from the specified interfaces. The first argument is the NetRAIN virtual interface name, nrx.
The second argument is a comma-separated list of real interfaces that are added to the NetRAIN set.
#include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h>
#define IFNAMSZ 16
int main(int argc, char *argv[]) {
struct if_nrset ifnrset;
char *addr;
nrset_t *buf;
int sock,i;
if (argc <= 2) {
printf("Usage: add <nrdev> <dev1>[,dev2...]0);
return(0);
}
/* Load the NetRAIN interface name */
if (--argc > 0) {
argv++;
strcpy(ifnrset.nr_name,*argv);
}
/* Count the members to be included in the NetRAIN set */
if (--argc > 0) {
++argv;
addr = *argv;
ifnrset.nr_cnt = 1;
for (i = 0; addr[i] != ' '; i++) {
if (addr[i] == ',') {
addr[i] = ' ';
ifnrset.nr_cnt++;
}
}
/* Allocate a buffer large enough to hold the interface names */
buf = (nrset_t *)malloc(ifnrset.nr_cnt * IFNAMSZ);
if (buf == NULL) {
perror("malloc: ");
return(0);
}
/* Load the interface array */
for (i=0; i<ifnrset.nr_cnt; i++) {
strcpy(buf[i].name,addr);
addr += strlen(addr)+1;
}
ifnrset.nr_len = ifnrset.nr_cnt * IFNAMSIZ;
ifnrset.nr_buf = (nrset_t *)buf;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
free(buf);
perror("socket: ");
return(0);
}
if (ioctl(sock, SIOCIFADD, (char *)&ifnrset) != 0) {
close(sock);
free(buf);
perror("SIOCIFADD: ");
return(0);
}
free(buf);
close(sock);
}
return(0); }
ERRORS
Possible reasons include: The NetRAIN interface name was invalid or the unit number was out of range (0 to nr_maxdev-1). The interface
list contained an invalid interface type. All interfaces must be either FDDI or Ethernet. An interface that was previously specified
already belongs to a NetRAIN set. A specified interface is already configured. NetRAIN could not allocate system memory for the request.
RELATED INFORMATION
Functions: ioctl(2).
Interfaces: faa(7), fta(7), fza(7), le(7), ln(7), tu(7).
Commands: ifconfig(8), niffd(8), sysconfig(8).
Tuning: sys_attrs_netrain(5).
Network Administration
System Configuration and Tuning delim off
nr(7)