The present invention generally relates to the field of communication between computer networks and more particularly to the interface between two computer networks. The present invention furthermore relates to a method, interface device and system of computational devices for enabling starting of sessions from a first computational device communicating via a first network having a first addressing realm to a second computational device on a second network having a second addressing realm as well as to a computer program product for performing said method.
In the field of addressing in computer systems, there is normally a shortage of available public addresses to be used by different devices. This has led to many local networks having only one or a few public addresses used for the whole local system and then the local system will communicate with a global network via a gateway controlling these few addresses. Normally such a gateway will in this case be using a local addressing system for communicating with the devices in the local network.
In order to initiate sessions from such devices within a local network with other devices via a global network, the gateway is normally provided with a NAT (Network Address Translator) unit, which translates the local address to a global address for the communication with the other devices. A device within the local network can then start a session with a device outside the local network and the NAT unit would then set up an entry in the NAT table for such session, indicating how addresses are to be translated in order for the two devices to communicate with each other. There is however one problem with these kind of known NAT units, in that they do not allow communication sessions to be started from a device outside the local network, but only from inside the local network. There is a need for being able to start sessions from outside, for instance when doing peer-to-peer networking, where at least one side has to be able to accept incoming sessions.
The Internet Society describes one method of starting sessions from a global network to a device within a local network in RFC 2694 by P. Srisuresh, G. Tsirtsis, P. Akkiraju and A. Heffeman, September 1999. Here a gateway, which is an interface between the local network and the global network, has a number of addresses that can be used in the global network. The gateway also includes a NAT unit and a DNS_ALG (Domain Name System Application Level Gateway) unit and the local network also includes a DNS server. When a device on the global network wants to start a session, it sends a name query, which eventually reaches the gateway. The gateway forwards this query to the DNS server, which returns a local address of a local device associated with the queried name to the gateway. The gateway binds one of its global addresses to the local address and returns the global address as an answer to the query. The device on the global network can then start a session with this global address and the gateway immediately knows which device communication is intended for because of the binding. There are a few problems with this solution and that is that one global address is reserved for each device on the local network session. If there are parallel sessions to many devices on the local network, there have to be many global addresses available for the gateway, which is normally difficult due to a shortage of global addresses in present day systems. It is furthermore often expensive to have more than one global address associated with a local network, which leads to the number of addresses wanted being a limited minimum. If the local network only has one address, this one address will be tied up to one session and there is no possibility for more inbound sessions.
The above-described document also briefly mentions that a NAPT (Network Address and Port Translator) table can be provided in the gateway. This would however most likely be used in the traditional NAPT usage, i.e. in setting up sessions initiated from the local network. The document does not describe how sessions set up from the global network to the local network can use a NAPT for the address translation.
Another device that exists is a so-called DNS (Domain Name System) SRV (Service) device, which is described by the Internet Society in RFC2782, “DNS SRV RR”, by A. Gulbrandsen, P. Vixie and L. Esibov, February 2000. A DNS SRV receives queries regarding a name and a service of a device and returns an address and a port number as a result of the query. This document is however silent regarding the environment in which this device is to be used.
There is thus still a need for a way of allowing multiple parallel inbound sessions from a global network to multiple devices on a local network having a limited number of global addresses.
It is an object of the present invention to provide a mechanism by which more than one session can be started from devices via a first network having a first addressing realm to devices in a second network having a second addressing realm, which mechanism is transparent to the devices communicating via the first network, i.e. they do not have to have any real knowledge of how they communicate with devices in the second network, while at the same time only needing one address for the whole second network in the first addressing realm.
The invention is defined by the independent claims.
The dependent claims define advantageous embodiments.
Claims 2 and 10 are directed towards providing the device name and service name resolving for two queries, one regarding the device name and the other regarding the service name and responding to these queries with two messages.
Claims 3 and 11 are directed towards generating the response to the query in the second addressing realm and replacing the second address and service port number for an address and port number of the gateway.
Other dependent claims are directed towards providing a specific service port number in the query, which facilitates the forwarding of the query to the name and service resolving unit.
An embodiment of the present invention has the advantage of allowing several parallel sessions with different devices in the second network started from the first network even though only one address in the first addressing realm is used for the second network.
This does not mean that the gateway must have only one address in the first addressing realm, but it can have several such addresses. The present invention thus allows peer-to-peer networking, such that the first and second devices can both act as clients and servers and have both inbound and outbound sessions. Another advantage of the present invention is that it is based on an already existing protocol, the DNS SRV protocol, which makes the invention straightforward to implement.
The general idea behind an embodiment of the present invention is thus to bind a first address and a port number of a first addressing realm associated with an interface between the first addressing realm and a second addressing realm to a second address and a port number of a second device in the second addressing realm upon reception of a query from a first device. From the query a name and service look up of the second address and port number of the second device is made. A response to the query is then sent including the first address and a port number of the interface in the first addressing realm.
These and other aspects of the invention will be apparent from and elucidated with reference to the embodiments described hereinafter.
The present invention will now be explained in more detail in relation to the enclosed drawings, where
A simplified embodiment of the gateway 10 according to the invention is shown in a block schematic in
Now a first part of the invention will be described with reference being made to
The first device 14 sends a query 20 to the name and service resolving unit 40 via gateway 10 in order to get an address for communicating with the second device 18, step 66. This query can either be recursive or non-recursive. This query, which is shown in the upper part of
The gateway 10 then receives the query 20, step 68, on the first input 24 and forwards it to the first register 34. Then control unit 32 analyses the address AG1 and port number PDNS and forwards the query to the name and service resolving unit 40 in dependence of this address and port number. The port number PDNS is a service resolving port number that is dedicated to these types of queries. The name and service resolving unit 40 makes an address and port number look up in the second addressing realm based on the name query, step 70, and in this way finds an address AY of the second device 18 in the second addressing realm and a port number PYHTTP of the second device 18 associated with the service.
The name and service resolving unit 40 then generates and returns a response 42 to the query 20 to the control unit 32, which response is shown in the middle of
The control unit 32 then forwards the adjusted response message 22 to the first device 14 via the first output 26, step 78. The first device 14 will now receive a response on the name and service query, which points out the gateway 10 instead of second device 18 as being associated with the name of device 18 and a port number of the gateway as corresponding to the service. The first device can now start a session using the first address AG1 as destination address and port number PGHTTP as port number. The first device 14 thus sends one query to the gateway 10 and can immediately start the session upon receipt of the reply, which reply can be provided in one single data packet. The first device 14 thus does not need to communicate with the gateway 10 more than once before starting the session. However the gateway will know that data packets are intended for the second device because of the settings made in the NAPT table 38. When a first packet in the session then is received in the gateway from the first device 14, an actual binding takes place in that the used address and port numbers of the first device are set in the first 54 and second 56 columns of the NAPT table 38. As an alternative the first and second columns 54 and 56 are not filled with data at all. It is furthermore possible that the NAPT 38 does not have these columns at all. The message, which then has destination address AG1 and port number PGHTTP gets translated in the control unit 32 by looking in the NAPT table 38 to address AY and port number PYHTTP in the header and forwarded to the second device 18. With the table 38 set this way packets can be exchanged between the first and second device. As mentioned earlier the first device can also be provided in a local network having a third addressing realm. In this case the address and port number of the first device are also translated into a corresponding gateway address and port number in a similar fashion. Then the address and port number of the first device that is provided in the messages in
In the preferred embodiment the name and service resolving unit is part of the gateway. In an alternative embodiment, the name and service resolving unit can be a separate entity or server on the second network with which the gateway would communicate in order to resolve the name and service. This embodiment is schematically shown in
Another possible variation is that the name and service resolving unit can be distributed in the various end devices of the second network.
The different units in the gateway are normally provided in the form of one or more processors together with suitable program memory containing appropriate program code for performing the method according to the invention. The table is also normally provided in the form of a memory. The software or program code for performing this can also be provided on a computer program product in the form of a computer readable medium, which will perform the method according to the invention when loaded into the gateway. One such medium in the form of a CD Rom disc 86 is depicted in
It should also be understood that the gateway described could include several more registers in the form of different input, output and buffer registers. The numbers have intentionally been kept low for getting a better understanding of the invention.
For every new connection that is set up a new name and service resolving process need to be executed. Therefore the first device should not store the address and port number of the destination device and service.
The present invention thus provides a possibility to initiate sessions from outside the second network, while at the same time only needing one address in the first addressing realm for the second network and still allowing several inbound sessions. This does not mean that the gateway must have only one address in the first addressing realm, but it can have several such addresses. The present invention thus allows peer-to-peer networking, such that the first and second devices can both act as clients and servers and have both inbound and outbound sessions. Another advantage of the present invention is that it is based on an already existing protocol, the DNS SRV protocol, which makes the invention straightforward to implement. Yet another advantage is that the binding in the NAPT table can be performed in one stage.
The port numbers used in the name and service resolving unit are specific port numbers that specify a certain service, which has here been exemplified by HTTP services, naturally different port numbers then specify different services. The port numbers in the NAPT table associated with the first address of the gateway that are selected for the binding to the second address and service port number of the second device are normally the next available port number of a number of free port numbers provided in the gateway. This port number is then only used for identifying device and service on the second network, which however is not known by the first device. There are however some reserved port numbers in the gateway. One such port number is a service resolving port number PDNS, which indicates that a received packet is a name and service query. This port number has been denoted as PDNS before and after address translation in the gateway. It should however be realized that this port number might be translated as well in the gateway before being sent on to the name and service resolving unit both when it is provided inside the gateway and in the second network. These packets are automatically forwarded to the name and service resolving unit based on the specific port number.
The present invention thus provides a system, an interface device, a method and a computer program product, which facilitates initiation of sessions from a first network to a second network.
There are a number of possible variations to the invention, which can be made in addition to those already mentioned. The query might be divided into two queries, one for the address and one for the service name. In this case there would also be two responses, one for each query. The invention is not limited to IP-addressing, but other types of addressing are also possible. The first input and output of the gateway can also be combined into a single communication interface. The networks do not need to be fixed networks, but can also for instance be wireless networks.
Number | Date | Country | Kind |
---|---|---|---|
0410648.7 | Feb 2004 | EP | regional |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/IB2005/050478 | 2/7/2005 | WO | 00 | 8/15/2006 |