WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
System for interconnecting applications across different networks of data processing systems by mapping protocols across different network domains    
United States Patent5142622   
Link to this pagehttp://www.wikipatents.com/5142622.html
Inventor(s)Owens; Gary L. (Mountain View, CA)
AbstractThe system and method of this invention automatically routes a connection between data processing systems in different network domains. As an example, an application running on a data processing system utilizing a network domain such as TCP (Transmission Control Protocol), can automatically make a connection to another data processing system utilizing a different network domain such as SNA (Systems Network Architecture). The connection is automatically performed in the layer containing the communication end point objects. In a preferred embodiment, the connection is automatically performed in the socket layer of the AIX operating system, or in the socket layer of other operating systems based upon the Berkeley version of the UNIX operating system.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Inventor     Owens; Gary L. (Mountain View, CA)
Owner/Assignee     International Business Machines Corporation (Armonk, NY)
Patent assignment
All assignments
Publication Date     August 25, 1992
Application Number     07/304,696
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     January 31, 1989
US Classification     709/227 703/21 703/25 709/246 709/249 719/310 719/319
Int'l Classification     G06F 013/12
Examiner     Lee; Thomas C.
Assistant Examiner     Coleman; Eric
Attorney/Law Firm     Bailey; Wayne P. Smith; Marilyn D. ,
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/200 395/700 395/500 364/200 MS File 364/900 MS File
Patent Tags     interconnecting applications across different networks of data processing mapping protocols across different network domains
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4901231
Bishop
707/205
Feb,1990

[0 after 0 votes]
4893307
McKay
370/389
Jan,1990

[0 after 0 votes]
4882674
Quint
719/320
Nov,1989

[0 after 0 votes]
4855906
Burke
707/10
Aug,1989

[0 after 0 votes]
4849877
Bishop
709/226
Jul,1989

[0 after 0 votes]
4831518
Yu
714/4
May,1989

[0 after 0 votes]
4825354
Agrawal
707/10
Apr,1989

[0 after 0 votes]
4811216
Bishop
711/153
Mar,1989

[0 after 0 votes]
4790003
Kepley
379/88.18
Dec,1988

[0 after 0 votes]
4768150
Chang
719/328
Aug,1988

[0 after 0 votes]
4760395
Katzeff
370/389
Jul,1988

[0 after 0 votes]
4736369
Barzilai
370/231
Apr,1988

[0 after 0 votes]
4706081
Hart
370/254
Nov,1987

[0 after 0 votes]
4703475
Dretzka
370/394
Oct,1987

[0 after 0 votes]
4679189
Olson
370/396
Jul,1987

[0 after 0 votes]
4677588
Benjamin
709/228
Jun,1987

[0 after 0 votes]
4631666
Harris
709/217
Dec,1986

[0 after 0 votes]
4612416
Emerson
379/88.18
Sep,1986

[0 after 0 votes]
4604686
Reiter
703/25
Aug,1986

[0 after 0 votes]
4586134
Norstedt
709/228
Apr,1986

[0 after 0 votes]
4575793
Morel
710/305
Mar,1986

[0 after 0 votes]
4530051
Johnson
709/203
Jul,1985

[0 after 0 votes]
4500960
Babecki
710/100
Feb,1985

[0 after 0 votes]
4415986
Chadra
710/31
Nov,1983

[0 after 0 votes]
4322792
Baun
710/9
Mar,1982

[0 after 0 votes]
4274139
Hodgkinson
709/203
Jun,1981

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


I claim:

1. A system for communicating between a first data processing system in a first network domain and a second data processing system in a second network domain, wherein said first network domain has a network protocol architecture different from said second network domain, said system comprising:

at least one communication end point object in a layer of said first data processing system in said first network domain and at least one communication end point object in a layer of said second data processing system in said second network domain;

means, independently of an application running on either of said data processing systems, for automatically establishing, in said layer of said first data processing system and in said layer of said second data processing system, a connection between said first processing system and said second processing system and comprising means for mapping protocols between said first and second network domain; and

means for communicating over said connection between said first data processing system and said second data processing.

2. The system of claim 1 wherein the first network domain is a Transmission Control Protocol and the second network domain is a Systems Network Architecture.

3. A system for communicating between a first data processing system in a first network domain and a second data processing system in a second network domain, wherein said first network domain has a network protocol architecture different from said second network domain, said system comprising:

at least one communication end point object in a layer of said first data processing system;

an intermediate data processing system having at least one communication end point object in a layer of said intermediate data processing system;

at least one communication end point object in a layer of said second data processing system;

means, in said intermediate data processing system, for establishing automatically routed connections in said layer of said first data processing system, said layer of said second data processing system and said intermediate data processing system and comprising means for mapping protocols between said first and second network domain, said first and second processing systems each including means for executing respective application programs; and

means for communicating through said automatically routed connections between said first data processing system in said first network domain and said second data processing system in said second network domain.

4. The system of claim 3 wherein said means for communication immediately sends any data received from one end of said routed connection to said other end of said routed connection.

5. The system of claim 3 wherein said first data processing system includes a socket layer of socket code in said first data processing system;

said at least one communication end point object in a layer of said first data processing system is a socket in said socket layer of said first data processing system;

said intermediate data processing system includes a socket layer of socket code in said intermediate data processing system;

said at least one communication end point object in a layer of said intermediate data processing system is a socket in said socket layer of said intermediate data processing system;

said second data processing system includes a socket layer of socket code in said second data processing system;

said at least one communication end point object in a layer of said second data processing system is a socket in said socket layer of said second data processing system.

6. A system for communicating between a first data processing system in a first network domain and a second data processing system in a second network domain, wherein said first network domain has a network protocol architecture different from said second network domain, said system comprising:

at least one socket in a socket layer of said first data processing system in said first network domain;

at least one socket in a socket layer of said second data processing system in said second network domain;

means, independently of an application running on either of said data processing systems, for establishing in said socket layer of said first data processing system and in said socket layer of said second data processing system an automatically routed socket connection between said first data processing system and said second data processing system and comprising means for mapping addresses between said first and second network domain; and

means for communicating through said socket connection between said first data processing system and said second data processing system.

7. A method for communicating between a first data processing system in a first network domain having a socket and a second data processing system in a second network domain, wherein said first network domain has a network protocol architecture different from said second network domain, said method comprising:

establishing, by said first data processing system, a socket in said second data processing system in said second network domain; and

invoking a routing facility to automatically establish a socket connection between said socket in said first data processing system and said socket in said second data processing system when said socket in said second data processing system is established and comprising means for mapping protocols between said first and second network domain;

communicating over said socket connection between said socket in said first data processing system in said first domain and said socket in said second data processing in said second domain; and

executing an application program on each of said first and second processing systems.

8. An operating system for use with a plurality of data processing systems for communicating between a first data processing system in a first network domain and a second data processing system in a second network domain, wherein said first network domain has a network protocol architecture different from said second network domain, said operating system comprising:

at least one socket in a socket layer of said first data processing system in said first network domain;

at least one socket in a socket layer of said second data processing system in said second network domain;

means, independently of an application running on either of said data processing systems, for automatically routing, in said socket layer of said first data processing system and in said socket layer of said second data processing system, a socket connection between said first data processing system and said second data processing system and comprising means for mapping addresses between said first and second network domain;

means for establishing said socket connection; and

means for communicating through said socket connection between said first data processing system and said second data processing system, wherein said data first and second processing systems each include means for executing respective application programs.
 Description Submit all comments and votes
 


A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to a network of data processing systems, and more specifically to the interconnection of a plurality of data processing systems between different network protocol domains, such as the different network protocol domains of SNA and TCP/IP.

2. Description of the Related Art

A system having multiple domains has at least one data processing system that is interconnected to at least two different data processing systems through at least two different network domains, i.e. network protocol architectures. A problem with multiple domains is the difficulty in allowing communication between machines which are connected to another type of network. For example, a data processing system utilizing SNA LU 6.2 as its network protocol can not automatically communicate with another data processing system utilizing TCP/IP as its network protocol. Both SNA LU 6.2 and TCP/IP are examples of stream protocols where data flows as a stream of indeterminate lengths, and the bytes are delivered in the correct order. The problem is routing a stream of bytes from a data processing system that utilizes a reasonably equivalent protocol, such as a stream protocol, to another data processing system that also utilizes a reasonable equivalent protocol, such as the stream protocol of this example, but wherein the two protocols are not

the exact same protocol, such as SNA LU 6.2 and TCP/IP.

It is known to solve the above problem at the application program level. An application program which is running on a data processing system at one end of the connection may be designed to utilize a specific network protocol. In this case, it is known to modify the application in order to reimplement the application to work over another protocol. This requires changing the source program code of the original application by some amount. Depending upon how the application program was originally designed, this may require a substantial amount of changes to the program code.

It is also known to solve the above problem by implementing the same protocol on both machines. For example, in order to use an SNA transaction application running in an SNA network, to apply transactions against data processing systems utilizing a TCP network, one could reimplement that transaction application against TCP by then putting TCP on the client data processing system, put IP over SNA, and gateway between the two. The client data processing system can then be implemented utilizing TCP/IP. The problem with this approach is having to reimplement the application to utilize the different protocol at one end of the network or the other. This is especially burdensome if the application is large and complex.

There are some application level protocols that handshake back and forth over SNA, e.g. 3270 SNA. These have their own data format with meta-data in the data stream. There are other application level protocols, such as Telnet over TCP, that talk back and forth that have meta-data and data in the data stream. However, one can not get these two to talk together since these two have different data and meta-data in their data streams.

If an application utilized one protocol, and that application were to run on a data processing having a different protocol, knowing the data stream format, one could write the client half of the application on the data processing system utilizing the other protocol.

Therefore, in order to extend network connectivity, it is known to reimplement the application to utilize the different protocol, put one protocol on top of the other, and gateway between the two. It is also known to build a larger network utilizing each type of protocol through replication and duplication.

The term "sockets" is an application program interface (API) that was developed for the Berkeley version of AT&T's UNIX.sup.1 operating system for interconnecting applications running on data processing systems in a network. The term socket is used to define an object that identifies a communication end point in a network. A socket can be connected to other sockets. Data can go into a socket via the underlying protocol of the socket, and be directed to appear at another socket. A socket hides the protocol of the network architecture beneath a lower layer. This lower layer may be a stream connection model (virtual circuit), or a datagram model (packet), or another model.

.sup.1 UNIX is licensed and developed by AT&T. UNIX is a registered trademark of AT&T in the U.S.A. and other countries.

A stream connection model refers to a data transmission in which the bytes of data are not separated by any record or marker. A virtual circuit implies that there appears to be one communications end point connected to one other communications endpoint. When the connection is established, only those two end points can communicate with each other.

Sockets are typed by domain (address family or network type), and model type (stream, datagram, etc.). If needed, the socket can be further specified by protocol type or subtype. The domain specifies the addressing concept utilized. For example, there is an internet IP domain, and also a SNA domain for networks utilizing TCP and SNA, respectively. As used herein, the word "domain" is used to refer to the address family of a socket, and not to a domain-naming domain. A domain-naming domain is a concept of a related group of hierarchical addresses, wherein each part of the address is separated by a delimiter, such as a period.

Since a socket is specified by the domain, sockets do not allow cross domain connections. This means that if an application program creates a socket in the Internet (Darpa) domain, it can only connect to sockets in that same domain. Note: "Darpa" is used to specify that Internet, short for internetworking, is not only used herein both to generically specify the internet layer of a particular protocol family which contains means for forwarding, routing control, and congestion control, etc., but also as a name for a particular implementation of an internet called the Internet or the Darpa Internet, or the Arpa Internet. Another name for this internet layer is the Internet Protocol (IP). TCP/IP is also commonly used to refer to this protocol.

Originally, the requirement that a socket can only connect to sockets in the same domain was a reasonable restriction. This simplified the program code when there was only one really useful domain anyway. With the advent of the usage of other domains (specifically SNA), cross domain connections have become desirable. For example, cross domain connections would allow mailers to transport mail among domains. Also, cross domain connections would allow programs to communicate using the existing communication networks.

SUMMARY OF THE INVENTION

It is therefore an object of this invention to automatically route connections between data processing systems that utilize different protocols, independently of said applications running on said data processing systems.

It is a further object of this invention to route, at the socket level, between two networks when a cross-domain connection attempt is detected.

It is a further object of this invention to facilitate the interconnection between data processing systems by allowing socket based applications to easily span across different networks.

It is a further object of this invention to communicate between data processing systems in which one of the data processing systems utilizes TCP/IP and the other data processing system utilizes SNA.

It is a further object of this invention to communicate between two data processing systems via a third data processing system utilized as a TCP to SNA gateway.

It is a further object of this invention to communicate through a connection between two data processing systems both utilizing TCP on each of their local Internets, by bridging the network connection with a long haul SNA connection.

The system and method of this invention automatically routes a connection between data processing systems, independently of an application running on the data processing systems, having different network domains. The preferred embodiment describes the cross domain interconnections with reference to the different network domains of TCP (transmission control protocol) and SNA (systems network architecture).

The routing is automatically performed at a layer which contains the communication end point objects. In the AIX.sup.2 operating system, and other operating systems based upon the Berkeley version of the UNIX operating system, this layer is called the socket layer.

.sup.2 Trademark of IBM Corporation

An intermediate processing system is utilized to gateway between a processing system utilizing a network domain such as TCP, and another processing system utilizing a different network domain such as SNA. Alternatively, the client data processing system can be implemented utilizing TCP/IP which can then be gatewayed through socket routing on the same machine into an SNA data stream without an intermediate processing system performing the socket routing.

In any event, the socket layer which performs the socket routing contains facilities to automatically route a connection across different domains.

In the client processing system which is attempting to create a connection, a socket is created in a particular domain. If the socket is in a different domain, the socket does not fail if the socket routing facility of this invention is implemented. The connect function is modified to catch the attempts at a cross domain connection. If a connect function is attempted on a socket in a different domain, then the socket routing facility of this invention is invoked.

Alternatively, a connectto function can be implemented which takes the place of and combines the functions of the socket function and the connect function. With the connectto function, a socket is not created until the route is known. This alleviates the unnecessary work of creating a socket which may fail, and then performing actions as a result of the failed socket. The connectto function determines how a connection can be made, and then creates a socket in the domain that is needed to establish the determined connection.

Through either of the above approaches, a connection to a socket in a different domain can be made through an intermediate socket. When data arrives from one end of the connection to the intermediate socket, the intermediate socket immediately sends the data to the other end of the connection instead of queuing the data for process intervention at the intermediate processing system.

In addition, if the intermediate socket is queried for the address of the other end of the connection, the intermediate socket identifies the connecting host as opposed to the intermediate host. In this way, the socket routing facility of the intermediate host is transparent to the hosts at each end of the connection.

BRIEF DESCRIPTION OF THE DRAWING

FIG. 1 is a diagram showing a connection from a process AA on host A to a process CC on host C. Socket routing is utilized to cross the boundary between the networks of type A and type C at host B.

FIG. 2 is a flow diagram showing the operational scenario of FIG. 1 using explicit and implicit routing.

FIG. 3 is a flow diagram showing the modified steps in performing a connect ( ) function to a destination.

FIG. 4 is a flow diagram showing the steps of creating a socket if the host does not have a socket in the specified domain.

FIG. 5 is a flow diagram showing the steps performed at host B.

FIG. 6 is a flow diagram showing the steps of a connectto ( ) function.

FIG. 7 is a more detailed diagram of the socket routing facility of this invention.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The following description describes an architecture for routing virtual circuits based on sockets. Although this implies stream sockets, the invention is not limited to stream protocols or to sockets. The concepts of this invention could be applied to similar communication end points that are utilized within other operating systems.

Referring to FIG. 1, a process AA, 10, in a data processing system 11, host A, desires to connect its socket facilities 12 to the process CC, 40, in a data processing system 41, host C. The data processing system 11 is shown as only supporting a particular domain of sockets AF.sub.-- A, 13, such as TCP, and data processing system 41 is shown as only supporting sockets that exist in the domain having address family C, 43. Since the naming conventions and the underlying transport mechanisms are different between address family A, 13, and address family C, 43, no interconnection can take place without an intermediate facility. The intermediate facility is the socket routing facility 70 in socket layer 32, which exists in data processing system 31, shown as host B.

To describe the initiation of a connection, the process AA, 10, in the data processing system 11, will activate a connection through the sockets programming interface to the general socket code, 12, which in turn goes through the address family specific socket code for AF.sub.-- A, 13. The necessary data and control information will be handled by the interface and physical access layers, 14. The data will then go out on the network 50 and end up going into data processing system 31, shown as host B, via the interface layer 34, and then through the code for address family 30 A, shown as AF.sub.-- A, 36.

For comparison, data processing system 21, shown as host D, shows existing internet routing within a single address family, the address family A, AF.sub.-- A, 23. It should be noted that the cross connection occurs within the address family A, 23. Almost any TCP/IP implementation can route within its own address family. Likewise, SNA has similar gateway and forwarding capabilities. The cross over as shown in data processing system 21 is independent of the model type of either stream or datagram. It is only dependent upon being within the same network domain.

In data processing system 31, the connection request packets will go through the interface layer code 34 to the address family A code, AF.sub.-- A, 36, through the general socket layer 32, and into the socket routing code 70. The socket routing code facility 70, is where the address mapping and cross connection takes place. The cross connection arrows 37 are shown drawn in the socket routing layer 70 of data processing system 31, as opposed to the cross connection arrows 27 which are shown in the address family code 23 of data processing system 21.

A connection request generated in the socket routing code 70 of data processing system 31 will then go down through the address family C code, AF.sub.-- C, 33, and through the interface layer code 35 for the other network 60, such as SNA. The connection request packets go across the network 60 to the interface layer code 44, up to the address family C code, AF.sub.-- C, 43, continuing through the general socket interface layer code 42 where the connection is registered. Then the process CC, 40, can respond to the connection request in order to establish the connection between cross domain networks.

FIG. 7 shows item 70 of FIG. 1 in greater detail. Item 701 is the programs and data for controlling the socket routing facility. A connection request to establish socket routing will come in on the sockets for this service, items 704, and 705. The routing agent software, item 703, will accept the connection, which creates a data socket, items 709-714. The route request message will come in on that data socket, and the routing agent, 703, will consult its route database, 702, to see if a route is possible. If a route is possible, the routing agent, 703, will consult its route database, 702, on how to establish the route. Then, the routing agent creates a matching data socket (item 710 for item 709, etc.), and connects to the next hop. When the routing agent software receives any replies for further route hops, it forwards them back to the socket routing requestor via the accepted data socket. When all hops are made, the socket routing agent will create a data transfer agent, items 706-708, that joins the pairs of data sockets, and forwards data from one to the other and vice versa.

The above scenario is further described in the following programming design language code. The following includes