Providing UNIX applications with a flexible source addresses selection on a per-application basis
Original Publication Date: 2002-Apr-07
Included in the Prior Art Database: 2003-Jun-20
The problem VIPAs (virtual IP addresses) are IP addresses that are not bound to an interface, but bound to the whole system. In UNIX, this is usually achieved by creating a dummy interface and setting one or more IP addresses on it. Outside applications connect to the VIPA instead of the interfaces' IP addresses and therefore are tolerant to interface failures. However, as soon as connections are initiated from the system itself, the UNIX kernel will select the outgoing interface address as source IP address. Source VIPA is a conception that makes outgoing sockets use the VIPA as source address, as only few applications are smart enough to do so themselves. Usually, source VIPA is accomplished by an altered kernel code and kernel routing table. Moreover, it has immediately effect on all applications running on the system. The solution Disclosed is a program that provides a UNIX system with an extremely flexible means of source address selection that is application based and gets by without any kernel changes. For applications that are to use source VIPA, a library wrapper is introduced between the application and the runtime environment. This wrapper intercepts socket calls and issues other socket calls to the runtime environment, if needed. The wrapper is pre-loaded by the dynamic linker at the time the application is started. It loads a configuration file during library initialization.