Today’s TCP system has been going under many modifications but still, we could hardly claim that it is perfectly suitable for all applications.
In case of distributed systems, quick response time is required to maintain high quality service. It especially is true for VoIP systems. When a server does not respond in time, it is advisable to find another one instead of waiting for the response. The timeout specified by the TCP standard is minutes long so in this case TCP cannot be used on its own to provide this functionality.
The aim of this thesis work – along with the study of similar solutions – was to design a proxy which can also be used in VoIP systems. A simplified variant of this proxy has been implemented and tested.
As a solution for this problem we could use a proxy between servers and clients. That way, all traffic related to connection establishment would pass through it. Upon terminating a "stuck" TCP connection establishment the client would be granted an oppurtunity to try a new server. This set-up yields additional benefits: the response time and availability of servers could be kept count of. It can be used as a preliminary piece of information when a new connection is requested.
The proxy should be capable of handling a large number of connections as there could be numerous hosts on both client and server side. Performance should also scale to the increasing traffic of the host system. I designed multiple separate elements which can work faster and faster as their number increases.
Additional elements can be added to the proxy system dinamically, without the need of restarting it. The proxy tolerates the failure of its elements without the need of external intervention – I designed both the main unit and the replaceable units to implement redundancy.
The proxy was expected to be added easily to an existing network, without modifying it. That is why it functions as a bridge in the data link layer.