The llc2 files contain information needed by LLC2 to establish the appropriate links to the underlying MAC layer drivers as well as the parameters necessary to configure the LLC (Logical Link Control) Class II Station Component structures for that link.
The comments are made up of one or more lines starting with the "#" character in column 1.
The main section consists of keyword/value pairs of the form keyword=value, used to initialize the particular adapter.
A sample of the llc2 is presented below:
devicename=/dev/dnet deviceinstance=1 llc2_on=1 # LLC2: On/Off on this device deviceloopback=1 timeinterval=0 # LLC2: Timer Multiplier acktimer=2 # LLC2: Ack Timer rsptimer=2 # LLC2: Response Timer polltimer=4 # LLC2: Poll Timer rejecttimer=6 # LLC2: Reject Timer rembusytimer=8 # LLC2: Remote Busy Timer inacttimer=30 # LLC2: Inactivity Timer maxretry=6 # LLC2: Maximum Retry Value xmitwindowsz=14 # LLC2: Transmit Window Size rcvwindowsz=14 # LLC2: Receive Window Size
The llc2.ppa file contains 4 parameters directly related to the underlying MAC-level driver. These are the name of the physical device, the instance of the device, whether LLC2 can be used with this device, and whether the device is capable of looping back data addressed to the node's unique MAC address, broadcast address, or multicast addresses.
Setting the llc2_on parameter to 1 means that LLC2 can be used with this device; setting it to 0 means otherwise. Setting the loopback parameter to 1 means that the LLC2 module will loop back data addressed to this node's unique MAC address or to a broadcast/multicast address.
The most likely use is for a media that cannot receive its own transmissions (for example, ethernet) or when the MAC-level driver intentionally does not loop back data addressed to the local node under the assumption that the upper layers have already done so.
The LLC2 contains ten parameters in the configuration file (/etc/llc2/default/llc2.ppa) that apply to configurations using the Host-Based LLC2 component for connection-oriented operation over an Ethernet, Token Ring, or FDDI media.
The ten parameters break down into the following four groups:
Six parameters deal with timer settings for managing the flow of LLC elements of procedure (PDUs) on a data link connection.
One parameter is the multiplier that is used to determine the period of the interval timer for the station. A value of 1 means that each tick count represents 100 milliseconds; 5 means each tick count is 500 milliseconds. Should the parameter be omitted, the default value is 5, except for Token Ring links which use a default of 1.
One parameter indicates how many times an operation should be retried on a data link connection.
Two parameters are for controlling the number of unacknowledged I PDUs to send or receive on a data link connection.
Additional information on these parameters can be found in ISO 8802-2:1989, Section 7.8.
The following table of Logical Link Control Parameters provides the LLC configuration parameter names, default values, and ranges.
|timeinterval||The timer ticks in 100 ms intervals. This parameter is used to scale the following 5 timer parameters.||5, except TPR - 1||0 - 10|
|acktimer||The connection acknowledgment timer length in (100 * timeinterval) ms.||2||> 0|
|rsptimer||The response acknowledgment timer length in (100 * timeinterval) ms.||2||> 0|
|polltimer||The connection poll timer length in (100 * timeinterval) ms.||4||> 0|
|rejecttimer||The connection reject timer length in (100 * timeinterval) ms.||6||> 0|
|rembusytimer||The connection remote busy timer length in (100 * timeinterval) ms.||8||> 0|
|inacttimer||The connection inactivity timer length in (100 * timeinterval) ms.||30||> 0|
|maxretry||The maximum number of retries of an action on a connection.||6||0 - 100|
|xmitwindowsz||The maximum number of unacknowledged I-format protocol data units that can be transmitted on a connection before awaiting an acknowledgment.||14||0 - 127|
|rcvwindowsz||The maximum number of unacknowledged I-format protocol data units that can be received on a connection before an acknowledgment is sent.||14||0 - 127|
The parameter is not set by the user.
The user requests a default /etc/llc2/default/llc2.instance file, where instance is the sequence number, starting with 0, of the adapter as detected by ifconfig(1M). For example, if there are 3 adapters on the machine, the default configuration files will be named in order as /etc/llc2/default/llc2.0, /etc/llc2/default/llc2.1, and /etc/llc2/default/llc2.2.
The user codes a value of 0 for a parameter.
Attempting to establish, reset, or disconnect a connection.
SABME start acknowledgment timer or --------------------------------> DISC
The acknowledgment timer expires before the receipt of a response.
SABME start acknowledgment timer or --------------------------------> DISC stop acknowledgment timer <-------------------------------- UA
Sending an FRMR in response to a received PDU of dubious distinction:
PDU with invalid N(R) or I PDU with invalid N(S) or <------------------- PDU of invalid length or unexpected UA PDU or response PDU with invalid P/F setting start acknowledgment timer FRMR -------------------------------->
Acknowledgment timer expires before the receipt of a PDU.
start acknowledgment timer FRMR --------------------------------> stop acknowledgment timer SABME, FRMR <------------------------------- DISC, or DM
There is also a special case of the acknowledgment timer, referred to in this implementation as the response acknowledgment timer (rsptimer). It is used when sending an I PDU.
start response acknowledgement timer I -------------------------------------->
Response acknowledgment timer expires before the receipt of an acknowledgment.
start poll timer RR -------------------------------->
There has been a period of inactivity on a connection in information transfer mode.
The remote node must be notified of a local busy condition occurring in information transfer mode.
The expiration of the poll timer causes another Supervisory command PDU (which may be of a different type than the first) to be sent with the P/F bit set, provided the retry count has not exceeded the maximum retry value. This timer, then, provides an extended retry mechanism for a connection in information transfer mode.
The rejecttimer parameter controls the frequency with which a REJ PDU is sent to a remote node from which an I PDU with an unexpected N(S) was received and which has not corrected the situation by sending an I PDU with the expected N(S).
<----------------------- I PDU with unexpected N(S) start reject timer REJ ------------------------>
Reject timer expires before the receipt of an I PDU with an expected N(S).
start reject and poll timer REJ -----------------------------> stop reject and poll timer <--------------------------- I PDU with expected N(S)
The rembusytimer parameter is used to determine how long the local node should wait, after the remote node sends an RNR to indicate it is busy, before sending a Supervisory PDU with the P/F bit set to solicit the current state of the remote node. If the remote node indicates that it has cleared its busy condition before the timer expires, the local node stops the remote busy timer.
The inacttimer parameter controls how much time is allowed to elapse on a connection in information transfer mode between the issuing of command PDUs by the local node. If the inactivity timer expires because a command PDU has not been generated in the configured time interval, a Supervisory PDU with the P/F bit set is sent to the remote node to solicit its current state, provided that the connection is in information transfer mode. Each time a command PDU is sent by the local node, the inactivity timer is restarted.
The following rules of thumb should apply for the timer parameters:
The acktimer, rsptimer, and polltimer parameters should have small relative values to allow for quick recovery from common transient error conditions on a connection.
The rejecttimer and rembusytimer parameters should have intermediate relative values to allow the local and remote nodes time to recover without resorting to possibly unnecessary polling cycles.
The inacttimer parameter should be set to a large relative value to provide a safety net in information transfer mode.
You may need to shift the values for the timer parameters to higher values if bridges are included in the network or a user application requires a substantial amount of time to respond to connection establishment requests or handle information flow.
The maxretry parameter determines the number of times a recovery operation is performed before notifying the user that an error has occurred on a connection. Typical examples of its use include the following:
When the remote node fails to respond to a SABME sent by the local node to establish or reset the connection, the SABME is resent each time the acknowledgment timer expires, up to maxretry number of times.
In information transfer mode, if the response acknowledgment timer expires after an I PDU has been sent, an RR with the P/F bit set is sent (and resent each time the poll timer expires) until the remote node responds or maxretry number of RRs have been sent.
In general, the maxretry value should not need to be large. Since the acknowledgment and poll timers are typically used in recovery operations that involve the maxretry parameter, the product of maxretry and either acktimer, rsptimer, or polltimer gives a rough estimate of the length of time allotted for the connection to attempt internal error recovery before notifying the user.
The rcvwindowsz parameter is used to set the receive window size for I PDUs received locally on a connection. This value should agree with the transmit window size set for the connection at the remote node. If the local rcvwindowsz is greater than the remote transmit window size, I PDUs sent by the remote node are not acknowledged quickly. If the local rcvwindowsz is less than the remote transmit window size, there is a greater risk of the local node generating FRMR PDUs, requiring intervention by the user application when transient errors on the connection require the remote node to retransmit an I PDU. REJ PDUs are recovered internally.
The xmitwindowsz parameter sets the local transmit window size for a connection. It denotes the number of unacknowledged I PDUs that the local node may have outstanding. The configured value should match the receive window size for the connection at the remote node, based on the same reasoning as for the rcvwindowsz parameter.
In many cases, the values assigned to rcvwindowsz and xmitwindowsz for adapters on a server node will depend on the transmit and receive window sizes specified for another LLC implementation on a client node. In cases where this LLC implementation is resident in both nodes, larger values for these parameters are useful in environments where much of the activity on a connection consists of file transfer operations. Smaller values are warranted if analysis of LLC2 connection component statistics reveals that connections are entering local or remote busy state frequently.