Abstract:
A node, such as a session node including any network node, located in a first network transmits data to one of a plurality of devices located in a second network. A determination is made that another device connected to the node is located in the second network. The node transmits to the other device located in the second network a message addressed to the one of said plurality of devices via the connection between the node and the other device effective to cause the message to be forwarded from the other device to the one of said plurality of devices via a connection established within the second network.

Description:
RELATED APPLICATIONS 
       [0001]    This application is a continuation of the U.S. application Ser. No. 11/986,974 filed Nov. 27, 2007, which claims priority under 35 USC 119 or 365 to Great Britain Application No. 0623621.0, filed Nov. 27, 2006 and Great Britain Application No. 0723122.8, filed Nov. 23, 2007. The entire teachings of the above applications are incorporated herein by reference. 
     
    
     BACKGROUND 
       [0002]    Communication systems link together two communication devices so that the devices can send information to each other in a call or other communication event. Information may include voice, text, images or video. 
         [0003]    One such communication system is a peer to peer communication system, in which a plurality of end users can be connected for communication purposes via a communications structure such as the internet. The communications structure is substantially decentralised with regard to communication route switching therein for connecting the end users. That is, the end users can establish their own communication routes through the structure based on exchange of one or more authorisation certificates (user identity certificates—UIC) to acquire access to the structure. The structure includes an administration arrangement issuing the certificates to the end users. Such a communication system is described in WO 2005/009019. 
         [0004]    Peer-to-peer systems and other communication systems that use the internet or any other packet switched network employ voice over IP (internet protocol) protocols (VoIP) to transmit data. These systems are commonly referred to as VoIP systems. VoIP systems are beneficial to the user as they are often of significantly lower cost than communication networks, such as fixed line or mobile networks, otherwise referred to as public switched telephone networks (PSTN). This may particularly be the case for long distance calls. 
         [0005]    The connection of two terminals using more than one type of network is becoming increasingly common. For example communication may be routed via a private network and a public network such as the internet. This may occur when each terminal is located in different networks, or in an attempt to reduce the charges for routing the communication. In the case where a private network, such as a private local area network (LAN) is connected to the internet a gateway may be used to provide the private network with a public address that is identifiable in the internet. 
         [0006]    In some cases it may be necessary to limit the direction in which a connection between two networks is established. 
         [0007]    For example, networks may be connected by gateways that restrict the communication between the networks such that the gateway will only allow a connection between the networks to be established in one direction. Such gateways will hereinafter be referred to as restrictive gateways. 
         [0008]    Restrictive gateways may allow devices in a private network to control when they receive data from another network. If a node in a public network is connected to a device in a private network via a restrictive gateway which prevents a communication being initiated by the node to the device, it will be necessary for the node to wait until the device in the private network establishes a communication with the node before the node can transmit data to the device. For example, if a node in the public internet requires information from a device located in a private network, then the node has to wait until the device establishes a connection with the node. 
         [0009]    Alternatively a user of a device or an operator of a service provider may choose to limit the direction in which a connection is established. For example outgoing connections made to another network may be limited to avoid a pricing plan implemented by the other network. In this case a connection may only be established with the other network if the connection is incoming from the other network. 
         [0010]    Restricting the direction in which a communication between two networks can be established can present a number of problems. For example, data intended for a device located in another network may need to be queued in a node of the transmitting network thereby stretching the resources of the transmitting node. Since the transmitting node is not able to determine when the receiving node will initiate a communication the transmitting node will be unable to manage its resources efficiently. 
         [0011]    A further problem presented by a restricting the direction in which a communication between two networks can be established is that the transmission of data from the transmitting node may be required by the receiving node before the receiving node initiates the communication. For example the transmission of data from the transmitting node may be timed out before the receiving node initiates communication with the transmitting node. 
         [0012]    One method for controlling the amount of data which is transmitted between two networks is to require the devices in the private network to periodically establish contact or ‘poll’ the node located in the public network. However this solution places a burden on the resources of the devices required to poll the node. Furthermore, even if the node is able to determine when the devices located in the private network will next poll the node, the node cannot manage its resources efficiently since the node cannot predict when data will need to be transmitted to the devices. 
       SUMMARY 
       [0013]    According to one embodiment there is provided a method of transmitting data from a node located in a first network to one of a plurality of devices located in a second network, said method comprising; determining that another device connected to the node is located in the second network; transmitting from the node to the other device located in the second network a message addressed to the one of said plurality of devices via the connection between the node and the other device; and forwarding the message from the other device to the one of said plurality of devices via a connection established within the second network. 
         [0014]    According to one embodiment there is provided a node located in a first network arranged to transmit data to one of a plurality of devices located in a second network, said node comprising; means for determining that another device connected to the node is located in the second network; and means for transmitting to the other device located in the second network a message addressed to the one of said plurality of devices via the connection with the other device wherein said message is forwarded from the other device to the one of said plurality of devices via a connection established within the second network. 
         [0015]    According to one embodiment there is provided a communication system comprising a node located in a first network and a plurality of devices located in a second network, wherein the node is arranged to transmit data to one of the plurality of devices and wherein the node has an connection to another of the plurality of devices, wherein said node comprises; means for determining that the other device is located in the second network; and means for transmitting to the other device a message addressed to the one of said plurality of devices via the connection with the other device; and wherein the other device comprises means for forwarding the message to the one of said plurality of devices via a connection established within the second network. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0016]      FIG. 1  is a schematic representation of a communication network in accordance with one or more embodiments; 
           [0017]      FIG. 2  is a diagram showing the protocol stack of a client program in accordance with one or more embodiments; 
           [0018]      FIG. 3  is a schematic representation of part of the communication network shown in  FIG. 1 ; 
           [0019]      FIG. 4  is a schematic representation the signalling between parts of the communication network shown in  FIG. 1 ; 
           [0020]      FIG. 5  is a schematic representation of the transmission of a notification message in accordance with one or more embodiments; 
           [0021]      FIG. 6  is a schematic representation of a session node in accordance with one or more embodiments; and 
           [0022]      FIG. 7  is a schematic representation of signalling between parts of the communication network in accordance with one or more embodiments. 
       
    
    
     DETAILED DESCRIPTION 
       [0023]    Reference will first be made to  FIG. 1 , in which is shown a communication network  100 , including a public network  104  and a private network  800 . In one embodiment the public network  104  may be provided by the internet. 
         [0024]    A user device  102  located in the private network  800  is shown to be connected to the internet  104  via a session node  106 . The session node  106  and the user device  102  are separated by a restrictive gateway  801 . The restrictive gateway provides the private network with a public IP address such that the private network is identifiable in the public internet. The restrictive gateway  801  only allows a connection between the user device and the session node to be established by the user device. Accordingly the session node  106  may only send data to the user device  102  when there is an existing connection defining a physical data link  111  between the session node  106  and the user device  102 . 
         [0025]    The data connection  111  is used to transmit data from the user device  102  to the session node  106  via the gateway  801 . In one or more embodiments the data connection is an internet protocol connection such as Transmission Control Protocol (TCP) connection. 
         [0026]    The user device  102  may be, for example, a personal computer, a gaming device, a personal digital assistant, a suitably enabled mobile phone, or other device able to connect to the network  104 . 
         [0027]    The session node  106  may be grouped with other session nodes (not shown) in a cluster. A cluster consists of multiple stand alone session nodes providing a set of predefined services. A directory (not shown) may be provided for connecting the user device to an appropriate session node within the cluster. The method of allocating a session node in a cluster to perform a task is known in the art and will not be described in any more detail. 
         [0028]    In accordance with one or more embodiments the session node  106  runs a communication instance  122  defining a session dedicated to a user of the user device  102 . The communication instance  122  enables the user of the user device  102  to communicate across the communication network  100  to establish a connection with another device enabled to communicate via the internet  104 . In one or more embodiments the communication instance  122  enables the user of the user device to communicate via a communication system operating on the Internet  104 , such as a peer to peer system. 
         [0029]    The session node  106  is able to run a plurality of communication instances for a number of concurrent user devices  102 - 102 ′″. The user device  102  runs a client software program  124  that provides a client interface on the device and allows the user of the user device  102  to communicate with the communication instance  122  running on the session node  106 . 
         [0030]    The client program  124  running on the user device has a number of different components or layers for implementing various functions, including a protocol layer  402  ( FIG. 2 ) for managing the interface with the session node  106 . 
         [0031]      FIG. 2  shows a protocol stack for the client program  124  according one or more embodiments. The protocol stack shows an operating system layer  401 , a protocol layer  402 , a client engine layer  404  and a client user interface layer  406 . Each layer is responsible for specific functions. Because each layer usually communicates with two other layers, they are regarded as being arranged in a stack as shown in  FIG. 2 . 
         [0032]    The operating system layer  401  manages the hardware resources of the user device  102  and handles data being transmitted to and from the session node  106 . The client protocol layer  402  of the client software communicates with the operating system  401 . Processes requiring higher level processing are passed to the client engine layer  404 . The client engine  404  also communicates with the client user interface layer  406 . The client engine may be arranged to control the client user interface layer  406  to present information to the user via user interface means of the user device and to receive information from the user via the user interface means of the user device. The user interface means may comprise a speaker, a microphone, a display screen and a keyboard. This list is not exhaustive. 
         [0033]    The communication instance  122  running on the session node  106  manages the communication between the client program  124  running on the device  102  and the internet  104 .  FIG. 3  shows the connection path between the communication instance  122  on the session node  106  and the client program  124  running on the user device  102 . 
         [0034]    The client program  124  may communicate with the session node  106  via a packet switched data connection  111 . Each packet exchanged between the session node  106  and the client program  124  contains one or more attributes. 
         [0035]    In accordance with one or more embodiments the client program  124  running on the user device  102  is arranged to set up a session with the session node  106 .  FIG. 4  shows the method steps in accordance with one or more embodiments for setting up a session with a session node  106 . Data transmitted between the session node  106  and the client program  124  is transmitted via the restrictive gateway  801  on a packet switched connection  111 . 
         [0036]    In step S 1  the client program  124  transmits a data packet  201  to the session node  106  via the gateway  801  to request a session. 
         [0037]    In one or more embodiments the data packet  201  is sent unencrypted. Accordingly the data packet  201  sent in step S 1  should not contain sensitive information. The data packet  201  may however include information that may be used for encryption methods to establish a secure connection between the user device  102  and the session node  106 . 
         [0038]    In step S 2 , in response to receiving the session request in data packet  201  the core module  205  of the session node  106  transmits a data packet  202  to the client program via the gateway  801  acknowledging the session request. The data packet  202  may contain information that may be used for encryption methods to establish a secure connection between the user device  102  and the session node  106 . In one or more embodiments the data packet  202  includes an identifier indicating the identity of the session node. The client program on the user device  102  may verify the identity of the session node using an authentication method. 
         [0039]    In step S 3  a secure connection between the session node  106  and the client program  124  is established using an encryption method. 
         [0040]    At step S 4  the session node  106  sends a data packet  203  to the user device  102  via the gateway  801  to confirm that it will handle the session. The data packet  203  may include the attributes listed in table 1: 
         [0000]    
       
         
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 KEY 
                 TYPE 
                 ATTRIBUTE 
               
               
                   
               
             
             
               
                 CHUNKTYPE 
                 integer 
                 CONNECTED 
               
               
                 CLIENT_PUBLIC_IP_ADDRESS 
                 address 
                 clients IP address as 
               
               
                   
                   
                 seen by session node 
               
               
                 LATEST_VERSION 
                 string 
                 Newest version number 
               
               
                 UPGRADE_URL 
                 string 
                 URL where upgrades can 
               
               
                   
                   
                 be downloaded 
               
               
                   
               
             
          
         
       
     
         [0041]    As shown in table 1 the data packet  203  contains a ‘CONNECTED’ attribute to indicate that the session node will handle a session to connect the client program  124  and the network  104 . The data packet further contains an attribute indicating the latest version number of the client program that is available to run on the user device. The data packet  203  may also indicate the URL (Uniform Resource Locator) of a network node from where the latest version of the client program may be downloaded. 
         [0042]    As shown in table 1 the data packet  203  may contain an attribute defining the public IP address of the user device  102  as determined by the session node  106 . The public IP address of the user device  102  may be transmitted in the data packet  203  to user device  102  so that it can be verified. 
         [0043]    In step S 5 , in response to receiving the data packet  203  indicating that session node  106  will allocate a communication instance  122  defining a session to connect the client program  124  and the network  104 , the client program  124  sends the session node  106  data relating to the user device  102  in data packet  204 . The data packet  204  may include the attributes listed in table 2: 
         [0000]    
       
         
               
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                 KEY 
                 TYPE 
                 ATTRIBUTE 
               
               
                   
               
             
             
               
                 CHUNKTYPE 
                 integer 
                 CLIENTDATA 
               
               
                 CLIENT_IP_ADDRESS 
                 address 
                 Device private IP address 
               
               
                   
               
             
          
         
       
     
         [0044]    As shown in table 2, the data packet  204  includes an attribute defining a private IP address of the user device. The IP address of the device identifies the user device  102  in the private network  800 . 
         [0045]    In response to receiving the data packet  204 , or in response to receiving a subsequent login request from the client program  124 , a communication instance defining a session is allocated to the client program  124 . 
         [0046]    As shown in  FIG. 3 , the session node  106  further comprises a core module  205  for allocating the communication instance  122  to the client program  124 . 
         [0047]    According to one or more embodiments the protocol layer  402  of the client  124  will use a different protocol to the protocol used within the communication instance  122 . According to one or more embodiments a dedicated protocol adaptor instance  208  is arranged to run on the session node  106  for the client  124  to facilitate communication between the client program and the communication instance  122 . The dedicated protocol adaptor instance may be assigned together with the communication instance to the client program  124  when the client program logs into the communication system at the session node  106 . 
         [0048]    In an alternative embodiment the client program and communication instance operate using the same protocol and accordingly and protocol adaptor is not required. 
         [0049]    Once the communication instance  122  has been allocated to the client program  124  a session identifier is transmitted from the session node  106  to the client program. The session identifier is used to locate the session each time the client program reconnects to the session node. As such the session is independent of the connection between the session node  106  and the client program  124  and may persist even if the connection is terminated. 
         [0050]    In one or more embodiments the connection between the client  124  and the session node  106  is a non persistent connection. For example, the connection between the client  124  and the session node  106  may be terminated after each packet is sent from the session node  106 . Alternatively the client  124  may be arranged to terminate the connection with the session node  106  after a predetermined time has lapsed since a data packet was exchanged with the session node  106 . 
         [0051]    In one or more embodiments the session node  106  is arranged to terminate the connection with the client program  124  after a predetermined time has lapsed since the data packet was exchanged with the session node  106 . In this embodiment the session node will send a data packet containing an attribute indicating that the session node is disconnecting before closing the connection. The client program may be arranged to close the TCP connection after a predetermined time of receiving this data packet. According to one or more embodiments the client program  124  is arranged to close the TCP connection 3 seconds after receiving the disconnect data packet from the session node. 
         [0052]    As shown in  FIG. 1  the private network  800  comprises a plurality of user devices  102 - 102 ′″. The user devices  102 - 102 ′″ may each be user devices that are capable of establishing a connection with each other by means of the private network  800 . The nodes  102 - 102 ′″ are also capable of establishing a connection with the session node  106 . Each user device  102 - 102 ′″ capable of establishing a connection with the session node has a client program  124  installed for connecting to the network  104  via the session node  106 . 
         [0053]    Due to the presence of the restrictive gateway  801  between the session node  106  and the private network  800  the session node  106  is only able to send data to a client program  124  running on a user device when there is an existing connection between the session node and the user device. According to one or more embodiments if there is no existing connection between the session node  106  and the client program running on the user device  102 , the session node  106  may transmit data to the user device  102  by using an existing connection with another user device in the private network  800 . The other user device may then be used to relay the data to the user device  102  via the private network, as described hereinafter. 
         [0054]    The session node  106  is arranged to identify sessions for devices that have a common public IP address as defined by the IP address of the gateway  801 . Devices having a common public IP address are determined as being located within the same private network  800 . 
         [0055]      FIG. 5  shows the private network  800  connected to the session node  106  via the gateway  801 . In  FIG. 5 , user device  102 ′″ has an existing data connection with the session node  106  via the gateway  801 . In accordance with one or more embodiments the user device  102 ′″ may be used to relay data from the session node  106  to another device located in the private network  800  that has a session with the session node. The user device  102 ′″ will hereinafter be referred to as a relay device  102 ′″. The data connection may be a TCP connection and is shown in  FIG. 5  as data connection  333 . 
         [0056]    If the session node becomes aware of information from the network  104  that should be sent to the user device  102 , hereinafter referred to as the destination device  102 , the session node may send a notification  808  to the relay device  102 ′″ over data connection  333  to instruct the relay device  102 ′″ to notify the destination device  102  to contact the session node  106 . In one or more embodiments the relay device  102 ′″ will notify the destination device  102  by forwarding the notification  808  to the destination device  102 . 
         [0057]    In accordance with one or more embodiments the notification  808  will include the private address, or other suitable identifier of the destination device  102 . The notification  808  will also include information indicating that the packet is a notification. The notification  808  may also include an identifier of the session node, such as an IP address of the session node that the destination device  102  is required to establish a connection with. The notification  808  may further include additional information that is to be presented to the destination device. The additional information may describe the reason that the session node is sending the notification. For example the session node  106  may be notifying the destination device  102  about a message received by the communication instance  122  from the network  104 . 
         [0058]    On receipt of the notification  808 , the relay device  102 ′″ may forward the notification  808  directly to the destination device  102  defined in the notification. Alternatively the relay device  102 ′″ may route the notification  808  to the device  102  via other user devices in the private network  800 . Alternatively the relay device  102 ′″ may broadcast the notification within the network  800 . The method of transmitting the notification  808  to the device  102  will depend on the protocol used within the private network  800 . 
         [0059]    In one or more embodiments, if the session node  106  needs to contact more than one user device, the notification  808  may include a list of devices that are to contact the session node  106 . According to this embodiment the relay device  102 ′″ will forward the notification to each device listed in the notification. 
         [0060]    In one or more embodiments the session node  106  may be connected to user devices from a plurality of private networks. Reference will now be made to  FIG. 6 .  FIG. 6  shows a plurality of lists  415  stored on the session node  106 . Each list corresponds to a different private network. Each list  415  defines the user devices that have a session with the session node  106  and are part of the same private network.  FIG. 6  also shows a plurality of message queues  450  stored on the session node  106 . The messages  480  that are queued in the queues  450  are messages that need to be sent to each device in a private network that has a session with the session node  106 . The messages are arranged in each queue such that each queue  450  contains messages for devices located in the same network. Accordingly each message queue may be linked to a corresponding list of devices  415 . As shown in  FIG. 6 , the messages  480  may be received from the network  104  via a communication instance  122  dedicated to a user for which the message was intended. 
         [0061]    The session node  106  may be arranged to determine if it has an existing connection with a device included in a list  415 . If the session node has a connection with a device listed in the list  415  the session node is arranged to check if there are any messages waiting in the message queue  450  that correspond to the same private network as the list  415 . If there are messages queued in the queue  450  the session node  106  is arranged to generate a notification for at least one of the devices for which there is a message in message queue  450 . 
         [0062]    According to one or more embodiments the number of devices that may be listed in a notification  808  is limited to a predetermined amount. If there are number of devices with messages waiting in the message queue exceeds the limit of the number of devices the session node can notify using one message the session node may send an additional notification message for notifying the remaining devices to the next device that establishes a connection with the session node. 
         [0063]    In one or more embodiments it may be necessary for the client program  124  running on a user device to establish a connection with the session node  106  at predetermined time intervals. This ensures that at least one device will contact the session node  106  within a predetermined time period. This predetermined period will hereinafter be referred to as the polling interval. 
         [0064]    The session node  106  is arranged to control the polling interval. The polling interval may be updated by providing an updated polling interval to devices that establish a connection with the session node  106 . In this case the session node  106  may quickly update the polling interval in dependence on the dynamics of the private network  800 . 
         [0065]    For example, the maximum number of devices that can be notified using one notification message  808  may be 5. The 5 notified devices that then contact session node for the messages  480  will each receive further notification messages. The method is repeated until all the queued messages  480  have been delivered. It has been found that with a reasonably popular service, where number of devices in private network is relatively large, the polling interval can be significantly lowered without impact on message delivery time. For example, with 10 nodes polling at random times, the outcome is that polls can be 10 times less frequent to maintain the same level of response time as one node polling the session node at regular intervals. 
         [0066]    In one or more embodiments the user devices  102 ′- 102 ′″ belonging to the same private network may be have sessions running on different session nodes arranged in the same cluster. One or more embodiments the session node  106  may transmit a connection request to a user device to request that the user device connects to another session node in the cluster. This embodiment will be described in relation to  FIG. 7 . 
         [0067]      FIG. 7  shows a session node  701  arranged to contact a user device  102  via another session node  106 . In one or more embodiments the session node  701  that the device is requested to contact is referred to as the poll initiator session node. The session node  106  that is used to transmit the request to the device is referred to as the relay session node. In one or more embodiments the poll initiator session node  701  is arranged to send a request R 1  to the relay session node  106  to request that a device  102  located in a private network is contacted. In response to the request the relay session node  106  is arranged to transmit a notification  808  to the device  102  for the device  102  to contact the poll initiator session node  701 . If the relay session node  106  has an existing connection with the device  102  the notification  808  is sent directly from the session node  106  to the device  102  via the restrictive gateway  801 . If however the session node does not have an existing connection with the user device  102  the relay session node will determine if there is an existing connection with any other device in the same private network as the user device. As shown in  FIG. 7 , if it is determined that the relay session node  106  has an existing connection with another device  102 ″ located in the same private network as the device  102  the relay session node is arranged to transmit the notification  808  to the device  102  via the device  102 ′″. 
         [0068]    The notification  808  may contain the attributes listed below in table 3. For example, one or more embodiments the notification  808  may include an attribute defining the IP address of the poll initiator session node. The notification may further include an attribute defining a list of user devices that are required to contact the session node. 
         [0069]    In one or more embodiments the notification  808  is included in a data packet that includes data that is intended for the relaying device  102 ′″. For example the attributes defined in table 3 may be appended to any data packet that is intended for the relay device  102 ′″. 
         [0000]    
       
         
               
               
               
             
           
               
                 TABLE 3 
               
               
                   
               
               
                 KEY 
                 type 
                 Value 
               
               
                   
               
             
             
               
                 POLL_INITIATOR 
                 address 
                 IP address from where the initiative 
               
               
                   
                   
                 for connection came (for ‘push’) 
               
               
                 NOTIFY_NODES 
                 binary 
                 list of addresses to notify about polling 
               
               
                 POLL_TOKEN 
                 binary 
                 token for presenting to poll initiator 
               
               
                   
               
             
          
         
       
     
         [0070]    In one or more embodiments the session node is arranged to verify that two devices having the same network address are part of the same network. The session node  106  can verify that the relay device  102 ′″ and the destination device  102  are part of the same network by including a poll token as shown in table 3 in the notification  808 . In one or more embodiments the destination device  102  is arranged to respond to a notification  808  by presenting the poll token when it establishes a connection with the session node  106 . If the poll token presented by the destination device  102  matches the poll token transmitted in the notification to the relay device the session node can verify that the relay device  102 ′″ and the destination device  102  are in the same private network and are able to connect to each other. 
         [0071]    In one or more embodiments the session node  106  may be arranged to determine if the notification was successfully transmitted to the user device  102  via the relay device  102 ′″. If the device  102  does not establish a connection with the session node  106  within a predetermined time limit of the session node transmitting a notification the session node may determine that the notification was not successfully transmitted. In this case the session node  106  may be arranged to transmit the notification via an alternative relay device  102 . Alternatively the session node  106  may determine that the devices in the private network are unable to establish a connection with each other. 
         [0072]    In an alternative embodiment the notification message transmitted to the notified device may not require the device to establish a connection with the session node  106 . Instead the notification message may be used to transmit data to the device  102  via the relay device  102 ′″. 
         [0073]    In one or more embodiments the private network is a mobile ad hoc network. 
         [0074]    In one or more embodiments the gateway  801  is a NAT (Network Address Translation) Firewall. 
         [0075]    While various embodiments have been particularly shown and described with reference to the above examples, it will be understood to those skilled in the art that various changes in form and detail may be made without departing from the scope of the claimed subject matter.