Como sua pergunta não é específica para nenhum sistema operacional, responderei de maneira geral também.
Isso pode ser feito de duas maneiras:
- maneira legada: você distingue os processos pelo uid que eles executam como, e para cada uid específico você instala regras específicas de filtragem de pacotes que encaminham o tráfego como você deseja. Para diferentes gateways, por exemplo.
- maneira moderna: você vincula cada processo a uma tabela de roteamento específica, assim o sistema roteia o pacote de acordo com a tabela de roteamento.
Atualização : minha resposta ainda permanece após as duas atualizações. : P
Ainda é possível para o Linux: LARTC é um bom lugar para começar. Primeiro, você cria várias tabelas de roteamento e, segundo, cria regras para atribuir tipos específicos de tráfego a essas tabelas de roteamento.