WO2010052696A1 - Session initiation protocol in multi-cast/unicast system for connection between users behind nat and connection between server and users behind nat - Google Patents

Session initiation protocol in multi-cast/unicast system for connection between users behind nat and connection between server and users behind nat Download PDF

Info

Publication number
WO2010052696A1
WO2010052696A1 PCT/IL2009/000442 IL2009000442W WO2010052696A1 WO 2010052696 A1 WO2010052696 A1 WO 2010052696A1 IL 2009000442 W IL2009000442 W IL 2009000442W WO 2010052696 A1 WO2010052696 A1 WO 2010052696A1
Authority
WO
WIPO (PCT)
Prior art keywords
reflector
client
socket
function
data
Prior art date
Application number
PCT/IL2009/000442
Other languages
French (fr)
Inventor
David Blum
Original Assignee
Ubstream Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ubstream Ltd. filed Critical Ubstream Ltd.
Publication of WO2010052696A1 publication Critical patent/WO2010052696A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2564NAT traversal for a higher-layer protocol, e.g. for session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2589NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs

Definitions

  • the present invention relates to networks and more particularly the invention relates to Network Address Translation technologies.
  • NAT Network Address Translation
  • NAT traversal is a general term for techniques that establish and maintain TCP/IP network connections traversing NAT gateways. NAT traversal techniques are typically required for client-to-client networking applications, especially peer-to-peer and Voice-over-IP (VoIP) deployments.
  • VoIP Voice-over-IP
  • a Reflector is a data packet based audio and/or video reflector and mixer for multipoint communication in IP networks with limited or no multicast support. All types of data packet traffic can be reflected: audio, video, or other.
  • the reflector can be used as a packet distribution server for multipoint conferences in networks that do not support IP multicast. It can also be used as a bridge (or gateway) between multicast routing domains and non-multicast capable network domains.
  • the invention relates to a Network Address Translation traversal method for allowing communication between clients and servers and between clients and clients, for the purpose of transmitting data and audio and video signals by way of a set of Reflectors connected with each other, wherein each client chooses the reflector with the lowest Round-trip delay time.
  • each reflector has a legal IP.
  • a reflector is connected to another reflector with the best available Quality of Service.
  • a reflector is responsible for at least a set of clients and server with a round trip delay less than a threshold of 40 milli — seconds. In one embodiment of the invention a reflector checks if a new server or client asks to connect to said reflector.
  • each client and server that is behind Network Address Translation can begin a Network Address Translation traversal negotiation.
  • operating a reflector side comprises carrying out a plurality of steps selected from:
  • operating a client side comprises carrying out a plurality of steps selected from: opening a TCP socket
  • a set of at least two reflectors share their packets, thereby allowing any reflector to access a packet of any other reflector.
  • any client accesses data from any client by way of at least a reflector.
  • At least two clients that are located behind a Network Address Translation are permitted to connect.
  • a private network is created for the purpose of sending and receiving data to and from anyone connected to said Network Address Translation network.
  • Fig. 1 shows an example of a Session Initiation Protocol for NAT traversal and client-to-client communication behind NAT, or server-to-client behind NAT connected to a system of multiple reflectors that, in turn, are connected with each other;
  • Fig. 2 is a chart illustrating a dataflow related to a client connection to a reflector network
  • Fig. 3 shows more accurately a Reflector dataflow
  • Fig. 4A shows the first part of the Client side of the system according to one embodiment of the present invention
  • Fig. 4B shows the second part a of the Client side of the system of Fig. 4A.
  • Fig. 5 shows an example of the Interaction between a Server and a client in an exemplary implementation of the present invention.
  • QoS quality of service
  • QoS resource reservation control mechanisms rather than the achieved service quality.
  • Quality of service is the ability to provide different priority to different applications, users, or data flows, or to guarantee a certain level of performance to a data flow.
  • a required bit rate, delay, jitter, packet dropping probability and/or bit error rate may be guaranteed.
  • Quality of service guarantees are important if the network capacity is insufficient, especially for real-time streaming multimedia applications such as voice over IP, online games and IP-TV, since these often require fixed bit rate and are delay sensitive, and in networks where the capacity is a limited resource, for example in cellular data communication. In the absence of network congestion, QoS mechanisms are not required.
  • RTT Round-trip delay time
  • the RTT is calculated from the 3-way handshake by measuring the time between segment transmission and ACK receipt or any other method such as Karn's algoritm or any suitable method and apparatus for correcting a measured round-trip delay time.
  • a firewall is an integrated collection of security measures designed to prevent unauthorized electronic access to a networked computer system. It is also a device or set of devices configured to permit, deny, encrypt, decrypt, or proxy all computer traffic between different security domains based upon a set of rules and other criteria.
  • An Internet socket (or commonly, a network socket or socket), is a computer system software facility for the endpoint of bidirectional communication flow across an Internet Protocol based network, such as the Internet. It is a software engineering abstraction which combines a local IP address and a port number (or service number) into a single identity, much like one end of a telephone connection is between a particular phone number and a particular person at that phone number.
  • TCP provides a communication service at an intermediate level between an application program and the Internet Protocol (IP). That is, when an application program desires to send a large chunk of data across the Internet using IP, instead of breaking the data into IP-sized pieces and issuing a series of IP requests, the software can issue a single request to TCP and let TCP handle the IP details.
  • IP Internet Protocol
  • UDP User Datagram Protocol
  • IP Internet Protocol
  • UDP applications use datagram sockets to establish host-to-host communications.
  • Sockets bind the application to service ports that function as the endpoints of data transmission.
  • a port is a software structure that is identified by the port number, a 16 bit integer value, allowing for port numbers between 0 and 65,535.
  • Port 0 is reserved, but is a permissible source port value if the sending process does not expect messages in response.
  • Select examines the I/O file descriptor sets whose addresses are passed in readfds, writefds, and exceptfds to see if any of their file descriptors are ready for reading, are ready for writing, or have an exceptional condition pending, respectively.
  • Out-of-band data is the only exceptional condition, nfds is the number of bits to be checked in each bit mask that represents a file descriptor; the file descriptors from 0 to nfds -1 in the file descriptor sets are examined.
  • selectO replaces the given file descriptor sets with subsets consisting of those file descriptors that are ready for the requested operation. The return value from the call to selectO is the number of ready file descriptors.
  • the file descriptor sets are stored as bit fields in arrays of integers.
  • the following macros are provided for manipulating such file descriptor sets: FD_ZERO0 initializes a file descriptor set fdset to the null set.
  • FD_SET0 includes a particular file descriptor fd in fdset.
  • FD_CLR() removes fd from fdset.
  • FD_ISSET0 is nonzero if fd is a member of fdset, zero otherwise.
  • the behavior of these macros is undefined if a file descriptor value is less than zero or greater than or equal to FD_SETSIZE.
  • FD_SETSIZE is a constant defined in ⁇ sys/select.h>.
  • the bind function associates a local address with a socket.
  • the listen function places a socket in a state in which it is listening for an incoming connection.
  • the accept function permits an incoming connection attempt on a socket. send Function
  • the send function sends data on a connected socket.
  • the recv function receives data from a connected socket or a bound connectionless socket.
  • the recvfrom function receives a datagram and stores the source address.
  • the connect function establishes a connection to a specified socket.
  • the present invention relates to a method and system applicable for example to video streaming from a server to clients behind NAT, or for video conferencing.
  • the method and system of the present invention permit to any client or server behind a NAT to communicate with any other clients or servers behind a NAT.
  • said client or server also called host, can be or not be behind NAT.
  • the process provides data packet reflection services on a specified range of ports.
  • each client is connected to the reflector that is near to him, or in other words, to the reflector that gives the lowest Round- trip delay time between the reflector and the user/client.
  • a client application is used in order to set up a data packet sessions on a reflector.
  • Each host included in a network must signal its preferred data packet media for a particular session, identified by a port number and/or a protocol number.
  • the securing of a connection between a reflector and a client located behind a NAT is facilitated by said reflector, which has a static IP address.
  • the present invention allows at least two clients or servers, whether they are behind a NAT or not, to communicate with each other.
  • said communication can be a server sending data and/or audio and/or video packets to its clients located behind a NAT.
  • a first client 101 wants to connect the reflector number 1 (indicated by numeral 103).
  • client 101 we use the method described in Fig. 2, which will be explained in greater details below, with reference to Figs. 3, 4A, 4B and 5.
  • client 101 can now received data sent by the reflector number 1 (103) through the firewall/NAT 102.
  • the same process is performed by a second client, 106, to the reflector N 104 and by a third client 111, and a fourth client 109, to the reflector M (indicated by numeral 107).
  • Each client has a local IP address and an external public IP address, and each Reflector has a public IP address and is not behind NAT.
  • each client can be connected to another as shown in Fig. 1.
  • client 106 that is behind firewall 105 can send and/or received data to and from client 101, or any other client 109 or 111.
  • Data/Audio/Video can be sent from the video server 112 to any client behind NAT, and Videoconferencing can be performed between several clients behind NAT.
  • Reflector 103 at port X makes a connection with reflector 104 at port Y
  • client 101 is connect to reflector 103 at port X
  • client 106 is connect to reflector 104 at port Y, and this allows client 101 to communicate with client 106.
  • a session setup is one as disclosed in Fig. 2.
  • a session is set up on a reflector side 201.
  • a socket is created and bound to a port (202), denoted port X.
  • Said port X can be a number included between 1 and 65600.
  • the reflector 201 listens to said port X and waits for a user request (203).
  • the reflector 201 reads a packet sent by a user and checks if said user's address and port X are already registered (204).
  • a new user (address) and a new port X', said user is added to all connected users, by adding the user information to the socket buffer (207).
  • a session is setup on a user side 209.
  • a socket is created and said socket is bound and associated to the reflector 201 port number and local address (210).
  • the reflector IP address is set and a connection is established to a specified socket (211).
  • reflector 201 listens for an incoming connection on the created socket, as shown in block number (212). An incoming connection attempt on a socket is allowed (213). Data is sent on the connected socket (214).
  • the reflector that always listens at port number X as a part of is standard work vis-a-vis user 203, listens to the incoming data and send it back to all users connected to the reflector. Now if the user is a new user (204), the reflector needs to add it to his own dynamic list and to create a transmission over NAT done by the negotiation show in more details in Figs. 3, 4A, 4B and 5. After the connection over NAT is done data is received (215) and the connection over NAT to the reflector 201 is now established.
  • Figs. 3, 4A, 4B, and 5 more accurately illustrate the interaction process between a reflector and a client to communicate over NAT.
  • a Socket On the server side a Socket is open; said socket type uses the Transmission Control Protocol TCP 301. A Port number PX is associated with this socket (bind function) 302. The incoming connection at port number PX 303 is waiting for a new incoming connection.
  • a Socket On the client side a Socket is open; said socket type uses the Transmission Control Protocol TCP 401.
  • the client side is connected to the server according to the IP address of the server and to the identifier of the Port PX of the server 402. Data is sent from the client on a connected socket to the server 403.
  • the incoming connection (accept function) are allowed (304), and the new incoming connection found (305) is validated, meaning that now we received the whole data sent by the client and we can now copy the data to the internal buffer of server 306, which data is sent to client 307.
  • the files descriptor is initialized (FD_ZERO) 404 and the bit for the files descriptor is set (FD_SET) 405; the file descriptor is specified to be ready for reading and ready for writing (selectO) 406.
  • the system is waiting for a writing event 407. When said even arrives, the system determines that the file descriptor is true and the data is received from the server 408; consequently said data is sent to the server 409.
  • the data from the new incoming client connection is received (308).
  • Data is sent to the client 309.
  • the files descriptor (FD_ZERO) is initialized 410 and the bit for the files descriptor (FD_SET) is set (411) and the file descriptor is specified ready for reading and ready for writing (selectO function) 412.
  • the client side waits for a writing event 413 and when the file descriptor is find to be true, data is received from the server 414.
  • a UDP socket is opened on the client side with the same port number PX 416; the server address and the server port (bindO function) are associated with one another (417), and data is sent to the server from the client side 418.
  • a UDP socket is opened on the server side with the same port number PX 311 and the socket is associated with the port number PX 312.
  • the server side receives a datagram form client 313 and said server side send said data to the client.
  • This step finalizes the process to open the NAT traversal 314 and the client side receives a datagram from the server 419.
  • the client side can enter into sleep mode for a time out (415).
  • the server side can also enter into sleep mode for a time out (310).
  • a reflector has a real legal IP and anyone is able to see said IP.
  • the user can or cannot have a real IP and can be behind a firewall with internal IP, only.
  • the port reflector is one of the available ports to connect to the reflector port.
  • two users are connected to each other by way of a NAT Traversal between reflector and users. This allows each user to be connected to another user without being connected to the same reflector.
  • the communication between reflectors is constant.
  • the connection between them is set in order to provide a secured connection and a Quality of Service of said connection.
  • connection is done in UDP or TCP or HTTP.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

A Network Address Translation traversal method for allowing communication between clients and servers and between clients and clients, allows transmitting data and audio and video signals by way of a set of Reflectors connected with each other, wherein each client chooses the reflector with the lowest Round-trip delay time.

Description

SESSION INITIATION PROTOCOL IN MULTI-CAST/UNI CAST
SYSTEM FOR CONNECTION BETWEEN USERS BEHIND NAT AND
CONNECTION BETWEEN SERVER AND USERS BEHIND NAT
Field of the Invention
The present invention relates to networks and more particularly the invention relates to Network Address Translation technologies.
Background of the Invention
The Network Address Translation (NAT) is a process that modifies network address information in datagram packet headers while in transit across a traffic routing device, for the purpose of remapping a given address space into another.
NAT traversal is a general term for techniques that establish and maintain TCP/IP network connections traversing NAT gateways. NAT traversal techniques are typically required for client-to-client networking applications, especially peer-to-peer and Voice-over-IP (VoIP) deployments.
A Reflector is a data packet based audio and/or video reflector and mixer for multipoint communication in IP networks with limited or no multicast support. All types of data packet traffic can be reflected: audio, video, or other. The reflector can be used as a packet distribution server for multipoint conferences in networks that do not support IP multicast. It can also be used as a bridge (or gateway) between multicast routing domains and non-multicast capable network domains. There is a need to provide a method and system which will allow any client or server behind a NAT to communicate with any other client or server behind a NAT, while said client or server can be or not be behind NAT. It is a purpose of the present invention to provide an efficient method and system that fulfill the above needs.
It is therefore one object of the present invention to create a network comprising a number of reflectors connected with each other, each reflector having a legal IP, the connections between them provide the best available Quality Of Services .
Further purposes and advantages of this invention will appear as the description proceeds.
Summary of the Invention
In one aspect the invention relates to a Network Address Translation traversal method for allowing communication between clients and servers and between clients and clients, for the purpose of transmitting data and audio and video signals by way of a set of Reflectors connected with each other, wherein each client chooses the reflector with the lowest Round-trip delay time.
In one embodiment of the invention each reflector has a legal IP. In another embodiment of the invention a reflector is connected to another reflector with the best available Quality of Service.
In yet another embodiment of the invention a reflector is responsible for at least a set of clients and server with a round trip delay less than a threshold of 40 milli — seconds. In one embodiment of the invention a reflector checks if a new server or client asks to connect to said reflector.
In another embodiment of the invention each client and server that is behind Network Address Translation can begin a Network Address Translation traversal negotiation.
According to an embodiment of the invention, operating a reflector side comprises carrying out a plurality of steps selected from:
- Opening a TCP socket;
- associating the legal IP address of a reflector and communication port using a bind function;
- listening to a defined incoming communication port with a listening function;
- allowing an incoming attempt on the socket using an accepting function;
- receiving data from the new incoming connected socket;
- sending data to the new incoming connected socket;
- opening a socket in UDP;
- providing a binding function associating a legal IP address reflector and communication port;
- receiving a datagram from the connected socket; and
- sending a datagram from the connected socket.
According to another embodiment of the invention, operating a client side comprises carrying out a plurality of steps selected from: opening a TCP socket
- establishing a connection to a specified socket connected the reflector using a connecting function;
- sending data to the reflector; - initializing the file descriptor set fdset to have zero bits for all file descriptors, using the FDJZERO function;
- setting the bit for the file descriptor fd in the file descriptor set fdset, using the FD_SET function;
- indicating which of the specified file descriptors is ready for reading, ready for writing, or has an error condition pending, using a selecting function;
- waiting until the selecting function is true;
- receiving data from the reflector;
- providing a sleeping time function;
- . opening the socket in UDP;
- associating a client IP address to a reflector and to a communication port using an abounding function;
- sending data to the reflector; and
- receiving data from the reflector.
In one embodiment of the invention a set of at least two reflectors share their packets, thereby allowing any reflector to access a packet of any other reflector.
According to an embodiment of the invention any client accesses data from any client by way of at least a reflector.
According to yet another embodiment of the invention at least two clients that are located behind a Network Address Translation are permitted to connect.
According to still another embodiment of the invention a private network is created for the purpose of sending and receiving data to and from anyone connected to said Network Address Translation network. AIl the above and other characteristics and advantages of the invention will be further understood through the following illustrative and non-limitative description of preferred embodiments thereof, with reference to the appended drawings; wherein like components are designated by the same reference numerals.
Brief Description of the Drawings
Fig. 1 shows an example of a Session Initiation Protocol for NAT traversal and client-to-client communication behind NAT, or server-to-client behind NAT connected to a system of multiple reflectors that, in turn, are connected with each other;
Fig. 2 is a chart illustrating a dataflow related to a client connection to a reflector network;
Fig. 3 shows more accurately a Reflector dataflow;
Fig. 4A shows the first part of the Client side of the system according to one embodiment of the present invention;
Fig. 4B shows the second part a of the Client side of the system of Fig. 4A; and
Fig. 5 shows an example of the Interaction between a Server and a client in an exemplary implementation of the present invention.
Detailed Description of Preferred Embodiments
DEFINITIONS
Quality of service
In the field of computer networking and other packet-switched telecommunication networks, and as used herein, the traffic engineering term quality of service (QoS) refers to resource reservation control mechanisms rather than the achieved service quality. Quality of service is the ability to provide different priority to different applications, users, or data flows, or to guarantee a certain level of performance to a data flow. In the present application, a required bit rate, delay, jitter, packet dropping probability and/or bit error rate may be guaranteed.
Quality of service guarantees are important if the network capacity is insufficient, especially for real-time streaming multimedia applications such as voice over IP, online games and IP-TV, since these often require fixed bit rate and are delay sensitive, and in networks where the capacity is a limited resource, for example in cellular data communication. In the absence of network congestion, QoS mechanisms are not required.
Round-trip delay time (RTT)
In regards to TCP communication the RTT is calculated from the 3-way handshake by measuring the time between segment transmission and ACK receipt or any other method such as Karn's algoritm or any suitable method and apparatus for correcting a measured round-trip delay time. Firewall
A firewall is an integrated collection of security measures designed to prevent unauthorized electronic access to a networked computer system. It is also a device or set of devices configured to permit, deny, encrypt, decrypt, or proxy all computer traffic between different security domains based upon a set of rules and other criteria.
Internet socket
An Internet socket (or commonly, a network socket or socket), is a computer system software facility for the endpoint of bidirectional communication flow across an Internet Protocol based network, such as the Internet. It is a software engineering abstraction which combines a local IP address and a port number (or service number) into a single identity, much like one end of a telephone connection is between a particular phone number and a particular person at that phone number.
Significance of TCP
TCP provides a communication service at an intermediate level between an application program and the Internet Protocol (IP). That is, when an application program desires to send a large chunk of data across the Internet using IP, instead of breaking the data into IP-sized pieces and issuing a series of IP requests, the software can issue a single request to TCP and let TCP handle the IP details.
UDP
The User Datagram Protocol (UDP) is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, sometimes known as datagrams, to other hosts on an Internet Protocol (IP) network without requiring prior communications to set up special transmission channels or data paths.
Ports
UDP applications use datagram sockets to establish host-to-host communications. Sockets bind the application to service ports that function as the endpoints of data transmission. A port is a software structure that is identified by the port number, a 16 bit integer value, allowing for port numbers between 0 and 65,535. Port 0 is reserved, but is a permissible source port value if the sending process does not expect messages in response.
The functions referred to in the description to follow have the following meanings: Select: selectO examines the I/O file descriptor sets whose addresses are passed in readfds, writefds, and exceptfds to see if any of their file descriptors are ready for reading, are ready for writing, or have an exceptional condition pending, respectively. Out-of-band data is the only exceptional condition, nfds is the number of bits to be checked in each bit mask that represents a file descriptor; the file descriptors from 0 to nfds -1 in the file descriptor sets are examined. On return, selectO replaces the given file descriptor sets with subsets consisting of those file descriptors that are ready for the requested operation. The return value from the call to selectO is the number of ready file descriptors.
FD_SET , FD_ZERO , FD_CLR:
The file descriptor sets are stored as bit fields in arrays of integers. The following macros are provided for manipulating such file descriptor sets: FD_ZERO0 initializes a file descriptor set fdset to the null set. FD_SET0 includes a particular file descriptor fd in fdset. FD_CLR() removes fd from fdset. FD_ISSET0 is nonzero if fd is a member of fdset, zero otherwise. The behavior of these macros is undefined if a file descriptor value is less than zero or greater than or equal to FD_SETSIZE. FD_SETSIZE is a constant defined in <sys/select.h>.
bind Function
The bind function associates a local address with a socket.
listen Function
The listen function places a socket in a state in which it is listening for an incoming connection.
accept Function
The accept function permits an incoming connection attempt on a socket. send Function
The send function sends data on a connected socket.
re cv Function
The recv function receives data from a connected socket or a bound connectionless socket.
recvfrom Function
The recvfrom function receives a datagram and stores the source address.
connect Function
The connect function establishes a connection to a specified socket.
Round-Trip Threshold
We define the threshold at 40 milli-second (mean low packet loss) RTT = Round-trip Delay. The following procedure is performed:
Find RTT for All Reflectors , mean {RTT1 , RTT2, ... , RTTN) mean N RTT , because N reflectors.
Find the first RTT that is less than Threshold and connect to this reflector
IF all the RTT is higher , then
Find the minimum of {RTT1 , RTT2, ... , RTTN) and connect to the RTT to this reflector. The present invention relates to a method and system applicable for example to video streaming from a server to clients behind NAT, or for video conferencing. The method and system of the present invention permit to any client or server behind a NAT to communicate with any other clients or servers behind a NAT. However, said client or server, also called host, can be or not be behind NAT.
According to an embodiment of the present invention, the process provides data packet reflection services on a specified range of ports. In one embodiment of the invention each client is connected to the reflector that is near to him, or in other words, to the reflector that gives the lowest Round- trip delay time between the reflector and the user/client.
According to another embodiment of the present invention, a client application is used in order to set up a data packet sessions on a reflector. Each host included in a network must signal its preferred data packet media for a particular session, identified by a port number and/or a protocol number.
According to still another embodiment of the present invention, the securing of a connection between a reflector and a client located behind a NAT is facilitated by said reflector, which has a static IP address. The present invention allows at least two clients or servers, whether they are behind a NAT or not, to communicate with each other. As an example said communication can be a server sending data and/or audio and/or video packets to its clients located behind a NAT.
The session initiation protocol will be further explained by the example of Fig. 1. In the figure, a first client 101 wants to connect the reflector number 1 (indicated by numeral 103). For client 101 we use the method described in Fig. 2, which will be explained in greater details below, with reference to Figs. 3, 4A, 4B and 5. By using the method described in said figures, client 101 can now received data sent by the reflector number 1 (103) through the firewall/NAT 102. The same process is performed by a second client, 106, to the reflector N 104 and by a third client 111, and a fourth client 109, to the reflector M (indicated by numeral 107). Each client has a local IP address and an external public IP address, and each Reflector has a public IP address and is not behind NAT.
Now for example because reflector 103 and reflector 104 and reflector 107 are mutually connected, each client can be connected to another as shown in Fig. 1. For example client 106 that is behind firewall 105 can send and/or received data to and from client 101, or any other client 109 or 111. Data/Audio/Video can be sent from the video server 112 to any client behind NAT, and Videoconferencing can be performed between several clients behind NAT.
According to yet another embodiment of the present invention, when at least two reflectors are connected, the connection between them is done by port. Reflector 103 at port X makes a connection with reflector 104 at port Y, client 101 is connect to reflector 103 at port X and client 106 is connect to reflector 104 at port Y, and this allows client 101 to communicate with client 106.
According to one embodiment of the present invention, a session setup is one as disclosed in Fig. 2. On a first side, a session is set up on a reflector side 201. In a first step, a socket is created and bound to a port (202), denoted port X. Said port X can be a number included between 1 and 65600. In a second step, the reflector 201 listens to said port X and waits for a user request (203). In a third step, the reflector 201 reads a packet sent by a user and checks if said user's address and port X are already registered (204). If there is a new user (address) and a new port X', said user is added to all connected users, by adding the user information to the socket buffer (207). On a second side, a session is setup on a user side 209. A socket is created and said socket is bound and associated to the reflector 201 port number and local address (210). In the next step, the reflector IP address is set and a connection is established to a specified socket (211). Afterwards, reflector 201 listens for an incoming connection on the created socket, as shown in block number (212). An incoming connection attempt on a socket is allowed (213). Data is sent on the connected socket (214). The reflector that always listens at port number X as a part of is standard work vis-a-vis user 203, listens to the incoming data and send it back to all users connected to the reflector. Now if the user is a new user (204), the reflector needs to add it to his own dynamic list and to create a transmission over NAT done by the negotiation show in more details in Figs. 3, 4A, 4B and 5. After the connection over NAT is done data is received (215) and the connection over NAT to the reflector 201 is now established.
Figs. 3, 4A, 4B, and 5 more accurately illustrate the interaction process between a reflector and a client to communicate over NAT. On the server side a Socket is open; said socket type uses the Transmission Control Protocol TCP 301. A Port number PX is associated with this socket (bind function) 302. The incoming connection at port number PX 303 is waiting for a new incoming connection. On the client side a Socket is open; said socket type uses the Transmission Control Protocol TCP 401. The client side is connected to the server according to the IP address of the server and to the identifier of the Port PX of the server 402. Data is sent from the client on a connected socket to the server 403. On the server side the incoming connection (accept function) are allowed (304), and the new incoming connection found (305) is validated, meaning that now we received the whole data sent by the client and we can now copy the data to the internal buffer of server 306, which data is sent to client 307. On the client side the files descriptor is initialized (FD_ZERO) 404 and the bit for the files descriptor is set (FD_SET) 405; the file descriptor is specified to be ready for reading and ready for writing (selectO) 406. Still at the client side the system is waiting for a writing event 407. When said even arrives, the system determines that the file descriptor is true and the data is received from the server 408; consequently said data is sent to the server 409. At the server side the data from the new incoming client connection is received (308). Data is sent to the client 309. At the client side the files descriptor (FD_ZERO) is initialized 410 and the bit for the files descriptor (FD_SET) is set (411) and the file descriptor is specified ready for reading and ready for writing (selectO function) 412. In the next step, the client side waits for a writing event 413 and when the file descriptor is find to be true, data is received from the server 414. A UDP socket is opened on the client side with the same port number PX 416; the server address and the server port (bindO function) are associated with one another (417), and data is sent to the server from the client side 418. A UDP socket is opened on the server side with the same port number PX 311 and the socket is associated with the port number PX 312. The server side receives a datagram form client 313 and said server side send said data to the client. This step finalizes the process to open the NAT traversal 314 and the client side receives a datagram from the server 419.
The client side can enter into sleep mode for a time out (415). The server side can also enter into sleep mode for a time out (310).
According to a further embodiment of the present invention, a reflector has a real legal IP and anyone is able to see said IP. However, the user can or cannot have a real IP and can be behind a firewall with internal IP, only.
According to another embodiment of the present invention, the port reflector is one of the available ports to connect to the reflector port. According to still a further embodiment of the present invention, two users are connected to each other by way of a NAT Traversal between reflector and users. This allows each user to be connected to another user without being connected to the same reflector.
According to a further embodiment of the present invention, the communication between reflectors is constant. The connection between them is set in order to provide a secured connection and a Quality of Service of said connection.
According to yet a further embodiment of the present invention, the connection is done in UDP or TCP or HTTP.
Although embodiments of the invention have been described by way of illustration, it will be understood that the invention may be carried out with many variations, modifications, and adaptations, without exceeding the scope of the claims.

Claims

Claims
1. A Network Address Translation traversal method for allowing communication between clients and servers and between clients and clients, for the purpose of transmitting data and audio and video signals by way of a set of Reflectors connected with each other, wherein each client chooses the reflector with the lowest Round-trip delay time.
2. The method of claim 1, wherein each reflector has a legal IP.
3. The method of claim 1, wherein a reflector is connected to another reflector with the best available Quality of Service.
4. The method of claim 1, wherein a reflector is responsible for at least a set of clients and server with a round trip delay less than a threshold of 40 milli — seconds.
5. The method of claim 1, wherein a reflector checks if a new server or client asks to connect to said reflector.
6. The method of claim 1, wherein each client and server that is behind Network Address Translation can begin a Network Address Translation traversal negotiation.
7. The method of claim 1, wherein operating a reflector side comprises carrying out a plurality of steps selected from:
- Opening a TCP socket;
- associating the legal IP address of a reflector and communication port using a bind function;
- listening to a defined incoming communication port with a listening function; - allowing an incoming attempt on the socket using an accepting function;
- receiving data from the new incoming connected socket;
- sending data to the new incoming connected socket;
- opening a socket in UDP;
- providing a binding function associating a legal IP address reflector and communication port;
- receiving a datagram from the connected socket; and
- sending a datagram from the connected socket.
8. The method of claim 1, wherein operating a client side comprises carrying out a plurality of steps selected from:
- opening a TCP socket
- establishing a connection to a specified socket connected the reflector using a connecting function;
- sending data to the reflector;
- initializing the file descriptor set fdset to have zero bits for all file descriptors, using the FD_ZERO function;
- setting the bit for the file descriptor fd in the file descriptor set fdset, using the FD_SET function;
- indicating which of the specified file descriptors is ready for reading, ready for writing, or has an error condition pending, using a selecting function;
- waiting until the selecting function is true;
- receiving data from the reflector;
- providing a sleeping time function;
- opening the socket in UDP;
- associating a client IP address to a reflector and to a communication port using an abounding function;
- sending data to the reflector; and
- receiving data from the reflector.
9. The method of claim 1, wherein a set of at least two reflectors share their packets, thereby allowing any reflector to access a packet of any other reflector.
10. The method of claim 1, wherein any client accesses data from any client by way of at least a reflector.
11. The method of claim 1, wherein at least two clients that are located behind a Network Address Translation are permitted to connect.
12. The method of claim 1 wherein a private network is created for the purpose of sending and receiving data to and from anyone connected to said Network Address Translation network.
PCT/IL2009/000442 2008-11-05 2009-04-23 Session initiation protocol in multi-cast/unicast system for connection between users behind nat and connection between server and users behind nat WO2010052696A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11134808P 2008-11-05 2008-11-05
US61/111,348 2008-11-05

Publications (1)

Publication Number Publication Date
WO2010052696A1 true WO2010052696A1 (en) 2010-05-14

Family

ID=42152550

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IL2009/000442 WO2010052696A1 (en) 2008-11-05 2009-04-23 Session initiation protocol in multi-cast/unicast system for connection between users behind nat and connection between server and users behind nat

Country Status (1)

Country Link
WO (1) WO2010052696A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106021239A (en) * 2016-04-29 2016-10-12 北京创鑫旅程网络技术有限公司 Method for real-time evaluation of translation quality

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030063608A1 (en) * 2001-10-03 2003-04-03 Moonen Jan Renier Multicast discovery protocol uses tunneling of unicast message
US20050002395A1 (en) * 2003-06-04 2005-01-06 Nec Corporation IP multicast distribution system, streaming data distribution system and program therefor
US20050152367A1 (en) * 2003-12-26 2005-07-14 Juyoung Park Relay multicast system and method for providing efficient group communication service
US20070008884A1 (en) * 2003-10-08 2007-01-11 Bob Tang Immediate ready implementation of virtually congestion free guarantedd service capable network
US20080175239A1 (en) * 2007-01-23 2008-07-24 Yipes Enterprise Services, Inc Multicast wide-area network for distributing data to selected destinations with limited or no replication

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030063608A1 (en) * 2001-10-03 2003-04-03 Moonen Jan Renier Multicast discovery protocol uses tunneling of unicast message
US20050002395A1 (en) * 2003-06-04 2005-01-06 Nec Corporation IP multicast distribution system, streaming data distribution system and program therefor
US20070008884A1 (en) * 2003-10-08 2007-01-11 Bob Tang Immediate ready implementation of virtually congestion free guarantedd service capable network
US20050152367A1 (en) * 2003-12-26 2005-07-14 Juyoung Park Relay multicast system and method for providing efficient group communication service
US20080175239A1 (en) * 2007-01-23 2008-07-24 Yipes Enterprise Services, Inc Multicast wide-area network for distributing data to selected destinations with limited or no replication

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106021239A (en) * 2016-04-29 2016-10-12 北京创鑫旅程网络技术有限公司 Method for real-time evaluation of translation quality
CN106021239B (en) * 2016-04-29 2018-10-26 北京创鑫旅程网络技术有限公司 A kind of translation quality real-time estimating method

Similar Documents

Publication Publication Date Title
Holdrege et al. Protocol complications with the IP network address translator
US7941841B2 (en) Firewall-tolerant voice-over-internet-protocol (VoIP) emulating SSL or HTTP sessions embedding voice data in cookies
CN110301126B (en) Conference server
Guha et al. NUTSS: A SIP-based approach to UDP and TCP network connectivity
US8079072B2 (en) Null-packet transmission from inside a firewall to open a communication window for an outside transmitter
US7979528B2 (en) System and method for traversing firewalls, NATs, and proxies with rich media communications and other application protocols
US20050207433A1 (en) Video communication systems and methods
US7369537B1 (en) Adaptive Voice-over-Internet-Protocol (VoIP) testing and selecting transport including 3-way proxy, client-to-client, UDP, TCP, SSL, and recipient-connect methods
JP5629086B2 (en) Method and system for transmitting a received session between multiple instances of an application using the same IP port
US8868757B1 (en) Two-way web service router gateway
US20070101414A1 (en) Method for stateful firewall inspection of ice messages
US20070280230A1 (en) Method and system for service discovery across a wide area network
TW201002018A (en) Method for predicting port number of NAT apparatus based on two STUN server inquiry results
JP2011525776A (en) Techniques for managing communications between relay servers
US20050108411A1 (en) Real-time proxies
WO2006082576A2 (en) A method and apparatus for server-side nat detection
JP5216018B2 (en) Streaming media services for mobile phones
WO2007019809A1 (en) A method and ststem for establishing a direct p2p channel
Lin et al. How NAT-compatible are VoIP applications?
WO2010052696A1 (en) Session initiation protocol in multi-cast/unicast system for connection between users behind nat and connection between server and users behind nat
JP2007519356A (en) Remote control gateway management with security
Barnes Middlebox Communications (MIDCOM) Protocol Evaluation
EP2786551B1 (en) Discovering data network infrastructure services
KR20020083887A (en) Method for communicating audio and video data in multimedia communication system using h.323 protocol
KR100957432B1 (en) Media transmission method

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09824487

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 12.07.11)

122 Ep: pct application non-entry in european phase

Ref document number: 09824487

Country of ref document: EP

Kind code of ref document: A1