RFC 1086 Network Working Group J. Onions Request for Comments: 1086 Nottingham M. Rose TWG December 1988 ISO-TP0 bridge between TCP and X.25 Status of this Memo This memo proposes a standard for the Internet community. Hosts on the Internet that choose to implement ISO TP0 transport connectivity between TCP and X.25 based hosts are expected to experiment with this proposal. TCP port 146 is reserved for this proposal. Distribution of this memo is unlimited and comments are highly encouraged. Introduction This memo specifies a protocol that is used to bridge ISO TP0 packets between X.25 and TCP networks. This technique is useful when interconnecting a DDN IP internet to an X.25 subnetwork. This is not a "magic bullet" solution to the DDN/ISO interoperability problem. Rather, if one is running higher-layer ISO protocols in both networks (namely ISO TP0), then a TP0 bridge can be used to achieve connectivity. The protocol itself is fairly simple as the method of operation for running TP0 over the TCP and X.25 protocols have previously been defined. A bridge offering ISO-TP0 gateway services simply applies both methods as appropriate. The protocol works by TP0/TCP hosts "registering" an X.25 subaddress (and corresponding TCP port/IP address) with the bridge. TP0/X.25 hosts use the standard method for establishing, maintaining, and releasing connections. When a connection is established, the bridge establishes the corresponding TCP connection and simply shuffles TP0 packets between the two. When a TP0/TCP host initiates a connection, it establishes a TCP connection to the bridge using port number 146 and communicates the desired X.25 address. The bridge establishes a connection to the native X.25 host and simply shuffles TP0 packets between the two. 1. Introduction and Motivation The migratory protocol described in [RFC1006] makes possible the transmission of TP0 packets between hosts on TCP/IP internets. With the addition of a small protocol converter, a TCP/IP host can be made to appear in the X.25 addressing space and be able to accept and make Onions & Rose [Page 1] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 connections using the TP0 protocol. This procedure is particularly useful in the following cases: 1. A host on an IP based internet can communicate with hosts on X.25 based networks providing the hosts are running ISO protocols. This also assumes a friendly gateway willing to run the actual TP0 bridge and make available to the IP host part of its X.25 address space. 2. A site having sparse connections to an X.25 network and using a TCP/IP based local area network for local communications. In this case all hosts on the LAN can have access to hosts on the X.25 network running ISO TP0. Pictorially, this memo describes interoperation in the following environment: +---------------------------------+ | | | +-----------------------------------+ | +----+ | +----+ | +----+ | | | | | | | | | | | | | +-----------|-----+ +--------------+ | | | | | TP0 | | | | TP0 | | | | +----+ | +----+ | +----+ | | TCP Host | Bridge Host| X.25 Host | | | | | | | | | | | | | +-------------------|-------------+ | TCP/IP Network | | | | +-----------------------------------+ X.25 Network 2. Definitions and Philosophy Some modest terminology and philosophy is introduced to aid readability and stir interest. The ISO Transport Service (TS) provides a reliable, packet-stream to its users [ISO8072]. The ISO Transport Protocol (TP) implements this service [ISO8073]. There are five classes of this protocol. The class is selected on the basis of the services offered by the underlying network service. Transport class 0 (TP0) is used when the network service offered is connection-oriented and error-detecting. Onions & Rose [Page 2] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 As should be expected, TP0 is a rather simple protocol, since the underlying network service actually provides most of the qualities offered by the transport service. CCITT Recommendation X.25 [ISO8208,X.25] offers such a network service. It is beyond the scope of this memo to describe X.25 in any detail, but two observations are pertinent: First, X.25 is offered as a wide-area network service by many commercial and (non-U.S.) government carriers. Second, the TP0/X.25 combination is very popular in Europe and other communities with a strong PTT-oriented market. It has been argued that the DoD Transmission Control Protocol (TCP) [MIL1778, RFC793] can also be seen as providing a connection-oriented and error-detecting network service. This remark is controversial in the sense that the TCP is actually an end-to-end transport protocol and not a network protocol; the DoD Internet Protocol (IP) [MIL1777, RFC791] is the network protocol in the DoD Protocol Suite. However, one of the advantages of layering is that, when properly architected, it enhances flexibility. This notion led to the development of [RFC983] and its successor [RFC1006], which described how to provide the ISO transport service on top of TCP/IP internetworks. 3. The Model The model is simple. The method for transmitting TP0 packets using TCP is defined in [RFC1006]. The method for transmitting TP0 packets using X.25 is defined in [ISO8878]. The TP0 bridge merely has to convert between the two forms. As with most protocols, there are three well-defined phases of interaction: connection establishment, data transfer, and connection release. The method of operation for the data transfer and connection release phases are quite similar when using TP0 over either network service. Hence the resulting protocol mapping functions are quite simple. The difficult part is in managing connection establishment. A small "registration" protocol is used to aid the protocol mapping function for the connection establishment phase. The protocol performs one of two operations: an X.25 address is specified for an outgoing call, or an X.25 address is specified to accept incoming calls. This memo ignores the problems of authentication and authorization. These areas are presumed to be a local matter. It is worth pointing out that running such a TP0 bridge with unrestricted access allows any TCP/IP host to lay claim to part of the TP0 bridge host's X.25 address space. This address space is limited and will not support many foreign hosts registering listening addresses. Onions & Rose [Page 3] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 The protocol makes no attempt to report errors other than those transmitted by the TP0 protocol. To attempt such additions would require other mechanism such as a new protocol layer or equivalent. The chosen model is kept as simple as possible with network errors being ignored if recoverable, and resulting in disconnection otherwise. This actually enhances the transparency of the gateway, in that the only gateway specific functions are collected together in the connection phase. The resultant circuit, once established, is indistinguishable from an [RFC1006] implementation. 4. The Protocol The protocol is quite simple. A successful connection establishment phase results in two network connections being established. TP0 is used over each network connection, though one network connection is provided by X.25 and the other by the TCP. During the data transfer phase, the TP0 bridge reads TPDUs (transport protocol data units) from one network connection and writes them to the other network connection. During the connection release phase, when one network indicates a disconnect, the bridge disconnects the other network connection; or in the case of simultaneous network disconnects, no action is taken by the bridge. As expected, the method of operation for the connection establishment phase is more complex. Connection establishment is driven by a registration procedure which is initiated by a TCP/IP host initiating a connection with the TP0 bridge. This procedure takes on one of two "flavors" depending on whether the initiating host wishes to establish a connection to a particular X.25 address or listen for connections on a particular X.25 address. The initiating host initiates the registration procedure by establishing a connection to TCP port 146 on the TP0 bridge. It then sends one octet which indicates the flavor the registration procedure will take: 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ | function | +-+-+-+-+-+-+-+-+ Onions & Rose [Page 4] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 The value of this octet is a binary-encoded value: value meaning ----- ------- 0 illegal 1 connect to a particular X.25 host 2 listen for incoming X.25 connections 3-255 reserved The method of operation for the registration procedure now diverges, based on the function chosen. FUNCTION 1: CONNECTION THROUGH THE TP0 BRIDGE The X.25 address to call is now sent by the initiating host to the TP0 bridge. The format of an X.25 address is described in Section 5 of this memo. The TP0 bridge now attempts to call the specified address. If this succeeds, the connection establishment phase has succeeded and the data transfer phase is begun. If the call fails, then the TP0 bridge closes the TCP connection. FUNCTION 2: ESTABLISHING A LISTENING ADDRESS The X.25 address, which should be a subaddress of the TP0 bridge's X.25 address, on which to listen for incoming X.25 connections is now sent by the initiating host to the TP0 bridge. Next, the initiating host sends an IP address and TCP port number which will service incoming calls for the indicated X.25 address. The format of a TCP/IP address is described in Section 6 of this memo. The TP0 bridge now listens, on behalf of the initiating host, on the indicated X.25 address. If an incoming call is received, a TCP connection is established to the corresponding TCP/IP address. If this connection is successful, then the connection establishment phase has succeeded and the data transfer phase is begun. If the connection fails, the incoming call is refused. The TCP/IP connection between the initiating host and the TP0 bridge is a "heartbeat" connection for the registration function. If this connection closes, the TP0 bridge assumes hat the listening function has been terminated by the initiating host, and consequently, the TP0 bridge no longer listens for incoming calls Onions & Rose [Page 5] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 on the indicated X.25 address. If such a facility were not present, then the indicated X.25 address could not be recovered for reuse. 5. Format of X.25 Addresses A standardized octet-encoding of X.25 addresses is used by the protocol described in this memo. The encoding has a fixed-length of 68 octets and contains 10 fields: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | address type | X.121 address ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | ... | ... | ... | | ... | ... | ... | ... | | ... | ... | ... | ... | | ... | ... | X.121 length | Protocol ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | ... | ... | PID length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Call User Data field | ... | ... | | ... | ... | ... | ... | | ... | ... | ... | ... | | ... | ... | ... | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CUDF length | X.25 Facilities ... | ... | | ... | ... | ... |Facility Length| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The fields are: address type (2 octets) - a binary-encoded value in network order indicating the address type. The value 3 is used for X.25 addressing of this format. X.121 address (16 octets) - the ascii-encoded value of the X.121 address. address length (1 octet) - a binary-encoded value in network order indicating how many octets of the X.121 address are meaningful. Protocol ID (4 octets) - meaningful at the remote system. Protocol ID length (1 octet) - a binary-encoded value indicating the number of protocol ID octets are meaningful. Onions & Rose [Page 6] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 User Data (16 octets) - meaningful at the remote system. User Data Length (1 octet) - a binary-encoded value indicating the number of User Data octets are meaningful. X.25 Facilities (6 octets) - meaningful at the remote system. X.25 Facilities length (1 octet) - a binary-encoded value indicating the number of Facility octets are meaningful. 6. Format of TCP/IP Addresses A standardized octet-encoding of TCP/IP addresses is used by the protocol described in this memo. The encoding has a fixed-length of 16 octets and contains 4 fields: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | address type | TCP port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | reserved | ... | ... | ... | | ... | ... | ... | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The fields are: address type (2 octets) - a binary-encoded value in network order. The value 2 is used. TCP port (2 octets) - a binary-encoded value in network order. IP address (4 octets) - a binary-encoded value in network order. reserved (16 octets) - null-value padding. Comments At present, the structure of the X.25 address and the internet address are rather ad-hoc and specific to the UNIX operating system. These structures may change in the future as experience is gained in the use of the TP0 bridge. Onions & Rose [Page 7] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 References [ISO8072] Information processing systems -- Open systems interconnection, "Transport Service Definition", International Standard, June, 1985. [ISO8073] Information processing systems -- Open systems interconnection, "Transport Protocol Specification", International Standard, July, 1986. [ISO8208] Information processing systems, "X.25 package level protocol for data terminal equipment", Draft International Standard, July, 1985. [ISO8878] Information processing systems -- Data communications, Use of X.25 to provide the OSI connection-mode network service", Draft International Standard, January, 1987. [MIL1777] Military Standard 1777, "Internet Protocol". [MIL1778] Military Standard 1778, "Transmission Control Protocol". [RFC791] Postel, J., "Internet Protocol - DARPA Internet Program Protocol Specification", RFC 791, USC/ISI, September 1981. [RFC793] Postel, J., "Transmission Control Protocol - DARPA Internet Program Protocol Specification", RFC 793, USC/ISI, September 1981. [RFC983] Cass, D., and M. Rose, "ISO Transport Services on Top of the TCP", RFC 983, NTRC, April 1986. [RFC1006] Rose, M., and D. Cass, "ISO Transport Service on Top of the TCP Version: 3", NTRC, May 1987. [X.25] CCITT Recommendation X.25, "Interface Between Data Terminal Equipment (DTE) and Data Circuit Terminating Equipment (DCE) for Terminals Operating in the Packet Mode on Public Data Networks," International Telegraph and Telephone Consultative Committee Yellow book, Vol. VIII.2, Geneva, 1981. Onions & Rose [Page 8] RFC 1086 ISO-TP0 bridge between TCP and X.25 December 1988 Authors' Addresses: Julian P. Onions Computer Science Department Nottingham University University Park Nottingham, NG7 2RD United Kingdom EMail: JPO@CS.NOTT.AC.UK Marshall Rose The Wollongong Group 1129 San Antonio Road Palo Alto, CA 94303 Phone: (415) 962-7100 EMail: mrose@TWG.COM Onions & Rose [Page 9]