TCP - desempenho do TAP

1

Linux.

Existe uma perda de desempenho com o uso de um dispositivo de toque versus um dispositivo de hardware como o eth0?

O objetivo é criar uma pilha tcp / ip de espaço do usuário e evitar o kernel o máximo possível.

Eu gostaria de ter certeza de que desenvolver em cima de um dispositivo de toque é a coisa certa a fazer.

Obrigado

    
por Larry 19.12.2014 / 08:43

2 respostas

1

Estou postando isso como uma resposta devido a permissões insuficientes de comentários.

Da minha experiência, VPN sobre tcp-tap foi, na melhor das hipóteses, péssima em conexões sem fio devido à natureza do TCP. Ao mudar para o UDP, não ocorreram mais tempos limite de conexão - melhor ainda com o dispositivo tun. Eu sugiro que você teste em conexões de rede pobres TCP e UDP e toque / tun.

    
por 19.12.2014 / 10:07
2

Sim, existe. O uso de um dispositivo de toque faz com que as alternâncias de contexto entre o processo do cliente e o processo mantenham o dispositivo de toque. Ele também faz cópias adicionais, já que os dados precisam ser copiados do processo do cliente para o kernel e, em seguida, do kernel para o detentor da derivação.

No entanto, o Linux é muito bom em troca de contexto, e as cópias em cache são relativamente baratas, então a sobrecarga pode ser pequena o suficiente. Eu recomendaria que você implementasse sua pilha no espaço do usuário, usando o comando tap, e então fizesse um benchmarking e um perfil para decidir se vale a pena o esforço para mover seu código para o kernel.

    
por 19.12.2014 / 23:11