Implementação do serviço orientado a conexões

A ideia por trás dos circuitos virtuais é evitar a necessidade de escolher uma nova rota para cada pacote enviado, como nas conexões sem conexões. Nesse caso, quando uma conexão é estabelecida, escolhe-se uma rota desde a máquina de origem até a máquina de destino, como parte da configuração da conexão, e essa rota é armazenada em tabelas internas dos roteadores. A rota é usada por todo o tráfego que flui pela conexão, exatamente como ocorre no sistema telefônico. Quando a conexão é liberada, o circuito virtual é encerrado. Com o serviço orientado a conexões, cada pacote transporta um identificador, informando a que circuito virtual ele pertence.

Como exemplo, considere a situação da figura acima. O host H1 estabelece a conexão 1 como o host H2. Ela é memorizada como a primeira entrada de cada uma das tabelas de roteamento. A primeira linha da tabela A informa que, se um pacote contendo o identificador de conexão 1 chegar de H1, ele será enviado ao roteador C e receberá o identificador de conexão 1. De modo semelhante, a primeira entrada em C faz o roteamento do pacote para E, também com o identificador de conexão 1.

Na mesma figura, considere o que acontece se H3 também quiser estabelecer uma conexão para H2. Ele escolhe o identificador  de conexão 1 (porque está iniciando a conexão, e essa é sua única conexão) e informa à sub-rede que ela deve estabelecer o circuito virtual. Isso conduz à segunda linha nas tabelas. Observe que nesse caso temos um conflito porque, embora A possa distinguir facilmente os pacotes da conexão 1 provenientes de H1 dos pacotes da conexão 1 que vêm de H3, C não tem como fazer o mesmo. Por essa razão, A atribui um identificador de conexão, diferente ao tráfego de saída correspondente à segunda conexão. Evitar conflitos desse tipo é a razão pela qual os roteadores precisam ter a capacidade de substituir  identificadores de conexões em pacotes de saída. Em alguns contextos, essa operação é chamada troca de rótulos.