| OpenSS7 SS7 for the Common Man | © Copyright 1997-2007 OpenSS7 Corporation All Rights Reserved. Last modified: Sun, 05 Mar 2006 08:34:07 GMT | |||||||||||||||||||
| ||||||||||||||||||||
| Data Link Provider Interface (DLPI)Description: OpenSS7 Project Manual Pages Operating SystemDLPISection: Data Link Provider Interface (DLPI) (7)Updated: 2007-06-24 Index Return to Main Contents NAMEDLPI - Data Link Provider InterfaceSYNOPSIS#include <sys/dlpi.h>DESCRIPTIONThe data link layer (layer 2 in the OSI Reference Model) is responsible for the transmission and error-free delivery of bits of information over a physical communications medium.The model of the data link layer is presented here to describe concepts that are used throughout the specification of DLPI. It is described in terms of an interface architecture, as well as addressing concepts needed to identify different components of that architecture. The description of the model assumes familiarity with the OSI Reference Model. Each layer of the OSI Reference Model has two standards:
DLPI is an implementation of the first type of standard. It specifies an interface to the services of the data link layer. The data link interface is the boundary between the network and data link layers of the OSI Reference Model. The network layer entity is the user of the services of the data link interface (DLS user), and the data link layer entity is the provider of those services (DLS provider). This interface consists of a set of primitives that provide access to the data link layer services, plus the rules for using those primitives (state transition rules). A data link interface service primitive might request a particular service or indicate a pending event. To provide uniformity among the various UNIX system networking products, an effort is underway to develop service interfaces that map to the OSI Reference Model. A set of kernel-level interfaces, based on the STREAMS(4) development environment, constitute a major portion of this effort. The service primitives that make up these interfaces are defined as STREAMS(4) messages that are transferred between the user and provider of the service. DLPI is one such kernel-level interface, and is targeted for STREAMS(4) protocol modules that either use or provide data link services. In addition, user programs that wish to access a STREAMS(4)-based data link provider directly may do so using the putmsg(2) and getmsg(2) system calls. The DLS provider is configured as a STREAMS(4) driver,and the DLS user accesses the provider using open(2) to establish a stream to the DLS provider. The stream acts as a communication endpoint between a DLS user and the DLS provider. After the stream is created, the DLS user and DLS provider communicate via the messages presented later in this specification. DLPI is intended to free data link users from specific knowledge of the characteristics of the data link provider. Specifically, the definition of DLPI hopes to achieve the goal of allowing a DLS user to be implemented independent of a specific communications medium. Any data link provider (supporting any communications medium) that conforms to the DLPI specification may be substituted beneath the DLS user to provide the data link services. Support of a new DLS provider should not require any changes to the implementation of the DLS user. MODES OF COMMUNICATIONThe data link provider interface supports three modes of communication: connection, connectionless and acknowledged connectionless.The connection mode is circuit-oriented and enables data to be transferred over a pre-established connection in a sequenced manner. Data may be lost or corrupted in this service mode, however, due to provider-initiated resynchronization or connection aborts. The connectionless mode is message-oriented and supports data transfer in self-contained units with no logical relationship required between units. Because there is no acknowledgment of each data unit transmission, this service mode can be unreliable in the most general case. However, a specific DLS provider can provide assurance that messages will not be lost, duplicated, or reordered. The acknowledged connectionless mode provides the means by which a data link user can send data and request the return of data at the same time. Although the exchange service is connectionless, in-sequence delivery is guaranteed for data sent by the initiating station. The data unit transfer is point-to-point. CONNECTION-MODE SERVICE The connection-mode service is characterized by four phases of communication: local management,connection establishment, data transfer, and connection release.
CONNECTIONLESS-MODE SERVICE The connectionless mode service does not use the connection establishment and release phases of the connection-mode service. The local management phase is still required to initialize a stream. Once initialized, however, the connectionless data transfer phase is immediately entered. Because there is no established connection, however, the connectionless data transfer phase requires the DLS user to identify the destination of each data unit to be transferred. The destination DLS user is identified by the address associated with that user (as will be discussed shortly). Connectionless data transfer does not guarantee that data units will be delivered to the destination user in the order in which they were sent. Furthermore, it does not guarantee that a given data unit will reach the destination DLS user, although a given DLS provider may provide assurance that data will not be lost. ACKNOWLEDGED CONNECTIONLESS-MODE SERVICE The acknowledged connectionless mode service also does not use the connection establishment and release phases of the connection-mode service. The local management phase is still required to initialize a stream. Once initialized, the acknowledged connectionless data transfer phase is immediately entered. Acknowledged connectionless data transfer guarantees that data units will be delivered to the destination user in the order in which they were sent. A data link user entity can send a data unit to the destination DLS User, request a previously prepared data unit from the destination DLS User, or exchange data units. DLPI ADDRESSINGEach user of DLPI must establish an identity to communicate with other data link users. This identity consists of two pieces. First, the DLS user must somehow identify the physical medium over which it will communicate. This is particularly evident on systems that are attached to multiple physical media. Second, the DLS user must register itself with the DLS provider so that the provider can deliver protocol data units destined for that user.PHYSICAL ATTACHMENT IDENTIFICATION The physical point of attachment (PPA) is the point at which a system attaches itself to a physical communications medium. All communication on that physical medium funnels through the PPA. On systems where a DLS provider supports more than one physical medium, the DLS user must identify which medium it will communicate through. A PPA is identified by a unique PPA identifier. For media that support physical layer multiplexing of multiple channels over a single physical medium (such as the B and D channels of ISDN), the PPA identifier must identify the specific channel over which communication will occur. Two styles of DLS provider are defined by DLPI, distinguished by the way they enable a DLS user to choose a particular PPA. The style 1 provider assigns a PPA based on the major/minor device the DLS user opened. One possible implementation of a style 1 driver would reserve a major device for each PPA the data link driver would support. This would allow the STREAMS(4) clone open feature to be used for each PPA configured. This style of provider is appropriate when few PPAs will be supported. If the number of PPAs a DLS provider will support is large, a style 2 provider implementation is more suitable. The style 2 provider requires a DLS user to explicitly identify the desired PPA using a special attach service primitive. For a style 2 driver, the open(2) creates a stream between the DLS user and DLS provider, and the attach primitive then associates a particular PPA with that stream. The format of the PPA identifier is specific to the DLS provider, and should be described in the provider-specific addendum documentation. DLPI provides a mechanism to get and/or modify the physical address. The primitives to handle these functions are described in Appendix A. The physical address value can be modified in a post-attached state. This would modify the value for all streams for that provider for a particular PPA. The physical address cannot be modified if even a single stream for that PPA is in the bound state. The DLS User uses the supported primitives (DL_ATTACH_REQ(7), DL_BIND_REQ(7), DL_ENABMULTI_REQ(7), DL_PROMISCON_REQ(7)) to define a set of enabled physical and SAP address components on a per Stream basis. It is invalid for a DLS Provider to ever send upstream a data message for which the DLS User on that stream has not requested. The burden is on the provider to enforce by any means that it chooses, the isolation of SAP and physical address space effects on a per-stream basis. DATA LINK USER IDENTIFICATION A data link user's identity is established by associating it with a data link service access point (DLSAP),which is the point through which the user will communicate with the data link provider. A DLSAP is identified by a DLSAP address. The DLSAP address identifies a particular data link service access point that is associated with a stream(communication endpoint). A bind service primitive enables a DLS user to either choose a specific DLSAP by specifying its DLSAP address, or to determine the DLSAP associated with a stream by retrieving the bound DLSAP address. This DLSAP address can then be used by other DLS users to access a specific DLS user. The format of the DLSAP address is specific to the DLS provider, and should be described in the provider-specific addendum documentation. However, DLPI provides a mechanism for decomposing the DLSAP address into component pieces. The DL_INFO_ACK(7) primitive returns the length of the SAP component of the DLSAP address, along with the total length of the DLSAP address. Certain DLS Providers require the capability of binding on multiple DLSAP addresses. This can be achieved through subsequent binding of DLSAP addresses. DLPI supports peer and hierarchical binding of DLSAPs. When the User requests peer addressing, the DLSAP specified in a subsequent bind may be used in lieu of the DLSAP bound in the DL_BIND_REQ(7). This will allow for a choice to be made between a number of DLSAPs on a stream when determining traffic based on DLSAP values. An example of this would be to specify various ether_type values as DLSAPs. The DL_BIND_REQ(7), for example, could be issued with ether_type value of IP, and a subsequent bind could be issued with ether type value of ARP. The Provider may now multiplex off of the ether_type field and allow for either IP or ARP traffic to be sent up this stream. When the DLS User requests hierarchical binding, the subsequent bind will specify a DLSAP that will be used in addition to the DLSAP bound using a DL_BIND_REQ(7). This will allow additional information to be specified, that will be used in a header or used for de-multiplexing. An example of this would be to use hierarchical bind to specify the OUI (Organizationally Unique Identifier) to be used by SNAP. THE CONNECTION MANAGEMENT STREAMThe earlier description of the connection-mode service assumed that a DLS user bound a DLSAP to the stream it would use to receive connect requests. In some instances, however, it is expected that a given service may be accessed through any one of several DLSAPs. To handle this scenario, a separate stream would be required for each possible destination DLSAP, regardless of whether any DLS user actually requested a connection to that DLSAP. Obvious resource problems can result in this scenario. To obviate the need for tying up system resources for all possible destination DLSAPs, a "connection management stream" utility is defined in DLPI. A connection management stream is one that receives any connect requests that are not destined for currently bound DLSAPs capable of receiving connect indications. With this mechanism, a special listener can handle incoming connect requests intended for a set of DLSAPs by opening a connection management stream to the DLS provider that will retrieve all connect requests arriving through a particular PPA. In the model, then, there may be a connection management stream per PPA.DLPI SERVICESThe various features of the DLPI interface are defined in terms of the services provided by the DLS provider, and the individual primitives that may flow between the DLS user and DLS provider.The data link provider interface supports three modes of service: connection, connectionless and acknowledged connectionless. The connection mode is circuit-oriented and enables data to be transferred over an established connection in a sequenced manner. The connectionless mode is message-oriented and supports data transfer in self-contained units with no logical relationship required between units. The acknowledged connectionless mode is message-oriented and guarantees that data units will be delivered to the destination user in the order in which they were sent. This specification also defines a set of local management functions that apply to all modes of service. The XID and TEST services that are supported by DLPI are listed below. The DLS User can issue an XID or TEST request to the DLS Provider. The Provider will transmit an XID or TEST frame to the peer DLS Provider. On receiving a response, the DLS Provider sends a confirmation primitive to the DLS User. On receiving an XID or TEST frame from the peer DLS Provider, the local DLS Provider sends up an XID or TEST indication primitive to the DLS User. The User must respond with an XID or TEST response frame to the Provider. Local Management ServicesThe local management services apply to the connection, connectionless and acknowledged connectionless modes of transmission. These services, which fall outside the scope of standards specifications, define the method for initializing a stream that is connected to a DLS provider. DLS provider information reporting services are also supported by the local management facilities. Information Reporting Service
Attach Service
Bind Service
Connection-mode ServicesThe connection-mode services enable a DLS user to establish a data link connection, transfer data over that connection, reset the link, and release the connection when the conversation has terminated. Connection Establishment Service
Data Transfer Service
Connection Release Service
Reset Service
Connectionless-mode ServicesThe connectionless-mode services enable a DLS user to transfer units of data to peer DLS users without incurring the overhead of establishing and releasing a connection. The connectionless service does not, however, guarantee reliable delivery of data units between peer DLS users (e.g. lack of flow control may cause buffer resource shortages that result in data being discarded).Once a stream has been initialized via the local management services, it may be used to send and receive connectionless data units. Connectionless Data Transfer Service
QOS Management Service
Error Reporting Service
XID and TEST Service
Acknowledged Connectionless-mode ServicesThe acknowledged connectionless-mode services are designed for general use for the reliable transfer of informations between peer DLS Users. These services are intended for applications that require acknowledgment of cross-LAN data unit transfer, but wish to avoid the complexity that is viewed as being associated with the connection-mode services. Although the exchange service is connectionless, in sequence delivery is guaranteed for data sent by the initiating station.Acknowledged Connectionless-mode Data Transfer Services
QOS Management Service
Error Reporting Service
Local ManagementLocal management provides the following services: Information Service
Token Service
Attach Service
Detach Service
Bind Service
Unbind Service
Subsequent Bind Service
Subsequent Unbind Service
Receipt Acknowledgment Service
Connection Establishment PhaseThe connection establishment phase consists of the following services: Connection Service
Connection Data Transfer PhaseThe connection data transfer phase consists of the following services: Data Transfer Service
Reset Service
Connection Release PhaseThe connection release phase consists of the following services: Release Service
Connectionless Data Transfer PhaseThe connectionless data transfer phase consists of the following services: Data Transfer Service
Acknowledged Connectionless Data Transfer PhaseThe acknowledged connectionless data transfer phase consists of the following services: Acknowledged Data Transfer Service
Data Transaction Service
XID and TestThe XID and Test functions consist of the following services: XID Service
TEST Service
Miscelaneous ManagementThe miscellaneous management functions consist of the following services: Physical Address Service
Promiscuous Monitoring Service
Multicast Address Service
Statistics Service
SEE ALSODL_ATTACH_REQ(7), DL_BIND_ACK(7), DL_BIND_REQ(7), DL_CONNECT_CON(7), DL_CONNECT_IND(7), DL_CONNECT_REQ(7), DL_CONNECT_RES(7), DL_DATA_ACK_IND(7), DL_DATA_ACK_REQ(7), DL_DATA_ACK_STATUS_IND(7), DL_DETACH_REQ(7), DL_DISABMULTI_REQ(7), DL_DISCONNECT_IND(7), DL_DISCONNECT_REQ(7), DL_ENABMULTI_REQ(7), DL_ERROR_ACK(7), DL_GET_STATISTICS_ACK(7), DL_GET_STATISTICS_REQ(7), DL_INFO_ACK(7), DL_INFO_REQ(7), DL_OK_ACK(7), DL_PHYS_ADDR_ACK(7), DL_PHYS_ADDR_REQ(7), DL_PROMISCOFF_REQ(7), DL_PROMISCON_REQ(7), DL_REPLY_IND(7), DL_REPLY_REQ(7), DL_REPLY_STATUS_IND(7), DL_REPLY_UPDATE_REQ(7), DL_REPLY_UPDATE_STATUS_IND(7), DL_RESET_CON(7), DL_RESET_IND(7), DL_RESET_REQ(7), DL_RESET_RES(7), DL_SET_PHYS_ADDR_REQ(7), DL_SUBS_BIND_ACK(7), DL_SUBS_BIND_REQ(7), DL_SUBS_UNBIND_REQ(7), DL_TEST_CON(7), DL_TEST_IND(7), DL_TEST_REQ(7), DL_TEST_RES(7), DL_TOKEN_ACK(7), DL_TOKEN_REQ(7), DL_UDERROR_IND(7), DL_UDQOS_REQ(7), DL_UNBIND_REQ(7), DL_UNITDATA_IND(7), DL_UNITDATA_REQ(7), DL_XID_CON(7), DL_XID_IND(7), DL_XID_REQ(7), DL_XID_RES(7).HISTORYThe Data Link Provider Interface first appeared in SVR 4[1]. CONFORMANCEThis interface conforms to DLPI Revision 2[2]. REFERENCES
Trademarks mentioned are the property of their owners. IDENTIFICATION
Copyright©1992UNIX International, Inc.
Index
This document was created by man2html, using the manual pages. Time: 08:44:28 GMT, June 26, 2007 | |||||||||||||||||||
| OpenSS7 SS7 for the Common Man |
| |||||||||||||||||||
| Last modified: Sun, 05 Mar 2006 08:34:07 GMT © Copyright 1997-2007 OpenSS7 Corporation All Rights Reserved. |