An equation in the source document has not been converted to HTML.

Networking Services (XNS) Issue 5 - ISO Transport Protocol Information
Previous section.

Networking Services (XNS) Issue 5
Copyright © 1997 The Open Group

ISO Transport Protocol Information

General

This appendix describes the protocol-specific information that is relevant for ISO transport providers. This appendix also describes the protocol-specific information that is relevant when ISO transport services are provided over a TCP network1.

In general, this Appendix describes the characteristics that the ISO and ISO-over-TCP transport providers have in common, with notes indicating where they differ.

Notes:

  1. Protocol address:

    In an ISO environment, the protocol address is the transport address.

  2. Sending data of zero octets:

    The transport service definition, both in connection-mode and in connectionless-mode, does not permit sending a TSDU of zero octets. So, in connectionless-mode, if the len parameter is set to zero, the t_sndudata() call will always return unsuccessfully with -1 and t_errno set to [TBADDATA]. In connection-mode, if the nbytes parameter is set to zero, the t_snd() call will return with -1 and t_errno set to [TBADDATA] if either the T_MORE flag is set, or the T_MORE flag is not set and the preceding t_snd() call completed a TSDU or ETSDU (that is, the call has requested sending a zero byte TSDU or ETSDU).

  3. An ISO-over-TCP transport provider does not provide the connectionless-mode.

This Appendix also defines the data structures and constants required for ISO and ISO-over-TCP transport providers which are exposed through the <xti_osi.h> header file.

Applications written to compilation environments earlier than those required by this issue of the specification (see The Compilation Environment ) and defining _XOPEN_SOURCE to be less than 500, will have these data structures and constants exposed through the inclusion of <xti.h.>

Options

Options are formatted according to the structure t_opthdr as described in The Use of Options in XTI . A transport provider compliant to this specification supports none, all or any subset of the options defined in Connection-mode Service and Connectionless-mode Service . An implementation may restrict the use of any of these options by offering them only in the privileged or read-only mode. An ISO-over-TCP provider supports a subset of the options defined in Connection-mode Service .

Connection-mode Service

The protocol level of all subsequent options is ISO_TP.

All options are association-related, that is, they are options with end-to-end significance (see The Use of Options in XTI ). They may be negotiated in the XTI states T_IDLE and T_INCON, and are read-only in all other states except T_UNINIT.

Options for Quality of Service and Expedited Data
These options are all defined in the ISO 8072:1986 transport service definition (see the ISO Transport references). The definitions are not repeated here.

Option Name Type of Option Legal Meaning
  Value Option Value  
T_TCO_THROUGHPUT struct thrpt octets per second throughput
T_TCO_TRANSDEL struct transdel time in milliseconds transit delay
T_TCO_RESERRORRATE struct rate OPT_RATIO residual error rate
T_TCO_TRANSFFAILPROB struct rate OPT_RATIO transfer failure probability
T_TCO_ESTFAILPROB struct rate OPT_RATIO connection establ. failure probability
T_TCO_RELFAILPROB struct rate OPT_RATIO connection release failure probability
T_TCO_ESTDELAY struct rate time in milliseconds connection establ. delay
T_TCO_RELDELAY struct rate time in milliseconds connection release delay
T_TCO_CONNRESIL struct rate OPT_RATIO connection resilience
T_TCO_PROTECTION t_uscalar_t see text protection
T_TCO_PRIORITY t_uscalar_t see text priority
T_TCO_EXPD t_uscalar_t T_YES/T_NO expedited data


Table: Options for Quality of Service and Expedited Data

OPT_RATIO is defined as OPT_RATIO = -$log sub 10$(ratio). The ratio is dependent on the parameter, but is always composed of a number of failures divided by a total number of samples. This may be, for example, the number of TSDUs transferred in error divided by the total number of TSDU transfers (T_TCO_RESERRORRATE).

Absolute Requirements

For the options in Options for Quality of Service and Expedited Data , the transport user can indicate whether the request is an absolute requirement or whether a degraded value is acceptable. For the QOS options based on struct rate an absolute requirement is specified via the field minacceptvalue, if that field is given a value different from T_UNSPEC. The value specified for T_TCO_PROTECTION is an absolute requirement if the T_ABSREQ flag is set. The values specified for T_TCO_EXPD and T_TCO_PRIORITY are never absolute requirements.

Further Remarks

A detailed description of the options for Quality of Service can be found in the ISO 8072:1986 specification. The field elements of the structures in use for the option values are self-explanatory. Only the following details remain to be explained.

The number of priority levels is not defined by ISO 8072:1986. The parameter only has meaning in the context of some management entity or structure able to judge relative importance.

Management Options

These options are parameters of an ISO transport protocol according to ISO 8073:1986. They are not included in the ISO transport service definition ISO 8072:1986, but are additionally offered by XTI. Transport users wishing to be truly ISO-compliant should thus not adhere to them. T_TCO_LTPDU is the only management option supported by an ISO-over-TCP transport provider.

Avoid specifying both QOS parameters and management options at the same time.


Option Name Type of Option Legal Meaning
  Value Option Value  
T_TCO_LTPDU t_uscalar_t length in octets maximum length of TPDU
T_TCO_ACKTIME t_uscalar_t time in milliseconds acknowledge time
T_TCO_REASTIME t_uscalar_t time in seconds reassignment time
T_TCO_PREFCLASS t_uscalar_t see text preferred class
T_TCO_ALTCLASS1 t_uscalar_t see text 1st alternative class
T_TCO_ALTCLASS2 t_uscalar_t see text 2nd alternative class
T_TCO_ALTCLASS3 t_uscalar_t see text 3rd alternative class
T_TCO_ALTCLASS4 t_uscalar_t see text 4th alternative class
T_TCO_EXTFORM t_uscalar_t T_YES/T_NO/T_UNSPEC extended format
T_TCO_FLOWCTRL t_uscalar_t T_YES/T_NO/T_UNSPEC flowctrl
T_TCO_CHECKSUM t_uscalar_t T_YES/T_NO/T_UNSPEC checksum
T_TCO_NETEXP t_uscalar_t T_YES/T_NO/T_UNSPEC network expedited data
T_TCO_NETRECPTCF t_uscalar_t T_YES/T_NO/T_UNSPEC use of network receipt confirmation


Table: Management Options
Absolute Requirements

A request for any of these options is considered an absolute requirement.

Further Remarks

Some relations that must be obeyed are:

Connectionless-mode Service

The protocol level of all subsequent options is ISO_TP (as in Connection-mode Service ).

All options are association-related, that is, they are options with end-to-end significance (see The Use of Options in XTI ). They may be negotiated in all XTI states but T_UNINIT.

Options for Quality of Service
These options are all defined in the ISO 8072/Add.1:1986 transport service definition (see the ISO Transport references). The definitions are not repeated here. None of these options are supported by an ISO-over-TCP transport provider, since it does not support connectionless-mode.

Option Name Type of Option Legal Meaning
  Value Option Value  
T_TCL_TRANSDEL struct rate time in milliseconds transit delay
T_TCL_RESERRORRATE struct rate OPT_RATIO residual error rate
T_TCL_PROTECTION t_uscalar_t see text protection
T_TCL_PRIORITY t_uscalar_t see text priority


Table: Options for Quality of Service
Absolute Requirements

A request for any of these options is an absolute requirement.

Further Remarks

A detailed description of the options for Quality of Service can be found in ISO 8072/Add.1:1986. The field elements of the structures in use for the option values are self-explanatory. Only the following details remain to be explained.

Management Options

This option is a parameter of an ISO transport protocol, according to ISO 8602. It is not included in the ISO transport service definition ISO 8072/Add.1:1986, but is an additional offer by XTI. Transport users wishing to be truly ISO-compliant should thus not adhere to it.

Avoid specifying both QOS parameters and this management option at the same time.


Option Name Type of Option Legal Meaning
  Value Option Value  
T_TCL_CHECKSUM t_uscalar_t T_YES/T_NO checksum computation


Table: Management Option
Absolute Requirements

A request for this option is an absolute requirement.

Further Remarks

T_TCL_CHECKSUM

This is the option allows disabling/enabling of the checksum computation. The legal values are T_YES (checksum enabled) and T_NO (checksum disabled).

If this option is returned with t_rcvudata(), its value indicates whether or not a checksum was present in the received datagram.

The advisability of turning off the checksum check is controversial.

Functions

t_accept()
The parameter call->udata.len must be in the range 0 to 32. The user may send up to 32 octets of data when accepting the connection.

If fd is not equal to resfd, resfd should either be in state T_UNBND or be in state T_IDLE and be bound to the same address as fd with the qlen parameter set to 0.

A process can listen for an incoming indication on a given fd and then accept the connection on another endpoint resfd which has been bound to the same or a different protocol address with the qlen parameter (of the t_bind() function) set to 0. The protocol address bound to the new accepting endpoint (resfd) should in general be the same as the listening endpoint (fd), because at the present time, the ISO transport service definition (ISO 8072:1986) does not authorise acceptance of an incoming connection indication with a responding address different from the called address, except under certain conditions (see ISO 8072:1986 paragraph 12.2.4, Responding Address), but it also states that it may be changed in the future.

t_bind()
The addr field of the t_bind() structure represents the local TSAP.

t_close()
The t_close() call will cause a close() call to be made on the descriptor of this XTI communication endpoint. If there are no other descriptors in this process or any other process which reference this communication endpoint, the close() call will perform an abortive release on any connection associated with this endpoint.

t_connect()
The sndcall->addr structure specifies the remote called TSAP. In the present version, the returned address set in rcvcall->addr will have the same value.

The setting of sndcall->udata is optional for ISO connections, but with no data, the len field of udata must be set to 0. The maxlen and buf fields of the netbuf structure, pointed to by rcvcall->addr and rcvcall->opt, must be set before the call.

t_getinfo()
The information returned by t_getinfo() reflects the characteristics of the transport connection or, if no connection is established, the maximum characteristics a transport connection could take on using the underlying transport provider. In all possible states except T_DATAXFER, the function t_getinfo() returns in the parameter info the same information as was returned by t_open(). In T_DATAXFER, however, the information returned may differ from that returned by t_open(), depending on:


In T_DATAXFER, the etsdu field in the t_info structure is set to T_INVALID (-2) if no expedited data transfer was negotiated, and to 16 otherwise. The remaining fields are set according to the characteristics of the transport protocol class in use for this connection, as defined in the following table.

Parameters Before Call After Call
  _ _ _
  Connection Connection Connectionless ISO-over-TCP
  Class 0 Class 1-4
fd x / / / /
info->addr x x x x
info->options / x Note 1 x Note 1 x Note 1 x Note 1
info->tsdu / x Note 2 x Note 2 0->63488 x Note 2
info->etsdu / T_INVALID 16 / T_INVALID 16 /
  T_INVALID T_INVALID
  see Note 3 see Note 3
info->connect / T_INVALID 32 T_INVALID 32 /
  T_INVALID
info->discon / T_INVALID 64 T_INVALID 64 /
  T_INVALID
info->servtype / T_COTS T_COTS T_CLTS T_COTS
info->flags / 0 0 0 0

Note 1:
`x' equals T_INVALID (-2) or an integral number greater than zero.

Note 2:
`x' equals T_INFINITE (-1) or an integral number greater than zero.

Note 3:
Depending on the negotiation of expedited data transfer.
For RFC 1006 (ISO over TCP) support, the value of info->etsdu depends on the negotiation of expedited data transfer.

t_listen()
The call->addr structure contains the remote calling TSAP. Since, at most, 32 octets of data will be returned with the connection indication, call->udata.maxlen should be set to 32 before the call to t_listen().

If the user has set qlen greater than 1 (on the call to t_bind()), the user may queue up several connection indications before responding to any of them. The user should be forewarned that the ISO transport provider may start a timer to be sure of obtaining a response to the connection request in a finite time. So if the user queues the connection indications for too long before responding to them, the transport provider initiating the connection will disconnect it.

t_open()
The function t_open() is called as the first step in the initialisation of a transport endpoint. This function returns various default characteristics associated with the different classes. According to ISO 8073:1986, an OSI transport provider supports one or several out of five different transport protocols, class 0 through class 4. The default characteristics returned in the parameter info are those of the highest-numbered protocol class the transport provider is able to support. If, for example, a transport provider supports classes 2 and 0, the characteristics returned are those of class 2. If the transport provider is limited to class 0, the characteristics returned are those of class 0.
The following table gives the characteristics associated with the different classes.

Parameters Before Call After Call
  _ _ _ _
  Connection Connection Connectionless ISO-over-TCP
  Class 0 Class 1-4
name x / / / /
oflag x / / / /
info->addr / x x x x
info->options / x Note 1 x Note 1 x Note 1 x Note 1
info->tsdu / x Note 2 x Note 2 0->63488 x Note 2
info->etsdu / T_INVALID 16 T_INVALID 16/T_INVALID
info->connect / T_INVALID 32 T_INVALID 32/T_INVALID
info->discon / T_INVALID 64 T_INVALID 64/T_INVALID
info->servtype / T_COTS T_COTS T_CLTS T_COTS
info->flags / 0 0 0 0

Note 1:
`x' equals T_INVALID (-2) or an integral number greater than zero.

Note 2:
`x' equals T_INFINITE (-1) or an integral number greater than zero.

t_rcv()
If expedited data arrives after part of a TSDU has been retrieved, receipt of the remainder of the TSDU will be suspended until the ETSDU has been processed. Only after the full ETSDU has been retrieved (T_MORE not set), will the remainder of the TSDU be available to the user.

t_rcvconnect()
On return, the call->addr structure contains the remote calling TSAP. Since, at most, 32 octets of data will be returned to the user, call->udata.maxlen should be set to 32 before the call to t_rcvconnect().

t_rcvdis()
Since, at most, 64 octets of data will be returned to the user, discon->udata.maxlen should be set to 64 before the call to t_rcvdis().

t_rcvudata()
The unitdata->addr structure specifies the remote TSAP. If the T_MORE flag is set, an additional t_rcvudata() call is needed to retrieve the entire TSDU. Only normal data is returned via the t_rcvudata() call. This function is not supported by an ISO-over-TCP transport provider.

t_rcvuderr()
The uderr->addr structure contains the remote TSAP.

t_snd()
Zero byte TSDUs are not supported. The T_EXPEDITED flag is not a legal flag unless expedited data has been negotiated for this connection.

t_snddis()
Since, at most, 64 octets of data may be sent with the disconnect, call->udata.len will have a value less than or equal to 64.

t_sndudata()
The unitdata->addr structure specifies the remote TSAP. The ISO connectionless-mode transport service does not support the sending of expedited data. This function is not supported by an ISO-over-TCP transport provider.

The <xti_osi.h> Header File

This section presents definitions for the <xti_osi.h> header. The values defined for some of the symbolic constants are designated as not mandatory for conformance purposes. These are identified by a comment in the definitions.


/* SPECIFIC ISO OPTION AND MANAGEMENT PARAMETERS */


/* * Definition of the ISO transport classes */

#define T_CLASS0 0
#define T_CLASS1 1
#define T_CLASS2 2
#define T_CLASS3 3
#define T_CLASS4 4



/*
 * Definition of the priorities.
 */


#define T_PRITOP 0
#define T_PRIHIGH 1
#define T_PRIMID 2
#define T_PRILOW 3
#define T_PRIDFLT 4



/*
 * Definitions of the protection levels
 */


#define T_NOPROTECT 1
#define T_PASSIVEPROTECT 2
#define T_ACTIVEPROTECT 4



/*
 * Default value for the length of TPDUs.
 */

#define T_LTPDUDFLT 128 /* define obsolete in XPG4 */



/*
 * rate structure.
 */



struct rate {
     t_scalar_t targetvalue;       /* target value */
     t_scalar_t minacceptvalue;    /* value of minimum acceptable quality */
};



/*
 * reqvalue structure.
 */



struct reqvalue {
     struct rate    called;    /* called rate */
     struct rate    calling;   /* calling rate */
};



/*
 * thrpt structure.
 */



struct thrpt {

     struct reqvalue    maxthrpt;    /* maximum throughput */
     struct reqvalue    avgthrpt;    /* average throughput */
};



/*
 * transdel structure
 */


struct transdel {
     struct reqvalue    maxdel;    /* maximum transit delay */
     struct reqvalue    avgdel;    /* average transit delay */
};


/*
 * Protocol Levels
 *
 *  The values defined for these Protocol Levels are recommended-only,
*  not mandatory.
 */

#define T_ISO_TP 0x0100  
#define ISO_TP 0x0100 (LEGACY)




/*
 *  Options for Quality of Service and Expedited Data (ISO 8072:1994)
 *
 *  The values defined for these QoS and Expedited Data are
 *  recommended-only, not mandatory.
 */


#define T_TCO_THROUGHPUT 0x0001  
#define TCO_THROUGHPUT 0x0001 (LEGACY)
#define T_TCO_TRANSDEL 0x0002  
#define TCO_TRANSDEL 0x0002 (LEGACY)
#define T_TCO_RESERRORRATE 0x0003  
#define TCO_RESERRORRATE 0x0003 (LEGACY)
#define T_TCO_TRANSFFAILPROB 0x0004  
#define TCO_TRANSFFAILPROB 0x0004 (LEGACY)
#define T_TCO_ESTFAILPROB 0x0005  
#define TCO_ESTFAILPROB 0x0005 (LEGACY)
#define T_TCO_RELFAILPROB 0x0006  
#define TCO_RELFAILPROB 0x0006 (LEGACY)
#define T_TCO_ESTDELAY 0x0007  
#define TCO_ESTDELAY 0x0007 (LEGACY)
#define T_TCO_RELDELAY 0x0008  
#define TCO_RELDELAY 0x0008 (LEGACY)
#define T_TCO_CONNRESIL 0x0009  
#define TCO_CONNRESIL 0x0009 (LEGACY)
#define T_TCO_PROTECTION 0x000a  
#define TCO_PROTECTION 0x000a (LEGACY)
#define T_TCO_PRIORITY 0x000b  
#define TCO_PRIORITY 0x000b (LEGACY)
#define T_TCO_EXPD 0x000c  
#define TCO_EXPD 0x000c (LEGACY)
       
#define T_TCL_TRANSDEL 0x000d  
#define TCL_TRANSDEL 0x000d (LEGACY)
#define T_TCL_RESERRORRATE T_TCO_RESERRORRATE  
#define TCL_RESERRORRATE T_TCO_RESERRORRATE (LEGACY)
#define T_TCL_PROTECTION T_TCO_PROTECTION  
#define TCL_PROTECTION T_TCO_PROTECTION (LEGACY)
#define T_TCL_PRIORITY T_TCO_PRIORITY  
#define TCL_PRIORITY T_TCO_PRIORITY (LEGACY)




/*
 *  Management Options
 *
 *  The values defined for these Management Options are
 *  recommended-only, not mandatory.
 */

#define T_TCO_LTPDU 0x0100
#define TCO_LTPDU 0x0100
#define T_TCO_ACKTIME 0x0200
#define TCO_ACKTIME 0x0200
#define T_TCO_REASTIME 0x0300
#define TCO_REASTIME 0x0300
#define T_TCO_EXTFORM 0x0400
#define TCO_EXTFORM 0x0400
#define T_TCO_FLOWCTRL 0x0500
#define TCO_FLOWCTRL 0x0500
#define T_TCO_CHECKSUM 0x0600
#define TCO_CHECKSUM 0x0600
#define T_TCO_NETEXP 0x0700
#define TCO_NETEXP 0x0700
#define T_TCO_NETRECPTCF 0x0800
#define TCO_NETRECPTCF 0x0800
#define T_TCO_PREFCLASS 0x0900
#define TCO_PREFCLASS 0x0900
#define T_TCO_ALTCLASS1 0x0a00
#define TCO_ALTCLASS1 0x0a00
#define T_TCO_ALTCLASS2 0x0b00
#define TCO_ALTCLASS2 0x0b00
#define T_TCO_ALTCLASS3 0x0c00
#define TCO_ALTCLASS3 0x0c00
#define T_TCO_ALTCLASS4 0x0d00
#define TCO_ALTCLASS4 0x0d00
     
#define T_TCL_CHECKSUM T_TCO_CHECKSUM
#define TCL_CHECKSUM T_TCO_CHECKSUM



Footnotes

1.
The mapping for ISO-over-TCP that is referred to in this Appendix is that defined by RFC-1006: ISO Transport Service on top of the TCP, Version 3, May 1987, Marshall T Rose and Dwight E Cass, Network Working Group, Northrop Research & Technology Center. See also the X/Open Guide to IPS-OSI Coexistence and Migration. The relevant sections are 4.6.2 (Implementation of OSI Services over IPS) and 4.6.3 (Comments).


Why not acquire a nicely bound hard copy?
Click here to return to the publication details or order a copy of this publication.

Contents Next section Index