Separate configuration parameters for separate client ports
In many cases, a Tor user might want to use multiple simultaneous Tor identities, possibly with separate configuration parameters, such as the country of the exit node. The identity used to route a particular outgoing packet might depend on, for example, the particular web site visited or the client process initiating the packet. Processing of these rules need not be handling by Tor. Rather, the user might configure rules through the browser or through invocation the torsocks script. The role of Tor need be nothing more than processing SOCKS requests on multiple ports, each one corresponding to a distinct configuration. In principle, this functionality can be achieved by invoking multiple instances of the Tor process. However, this arrangement is often difficult to configure. On the Tor distribution for Ubuntu, for instance, it may require making multiple copies of the configuration file and the init script configured to use distinct log dirs, cookie files, and so on. A far more elegant solution would be to configure a single instance of the Tor process to use multiple sets of configuration parameters corresponding to separate SOCKS ports. In order for this solution to be possible, however, a feature enhancement would need to be introduced to the codebase.