Ainda não tentei isso, mas acho que há várias possibilidades de soluções alternativas:
máquinas virtuais
Resolva o problema da pilha IP separando pelo menos uma das NICs da pilha IP do host: atribua-a a uma máquina virtual. Para testes de desempenho, isso pode não ser desejável, no entanto. Mas se houver potência de CPU suficiente, talvez a camada de software adicional não se torne um gargalo (mas como você sabe?).
endereços de destino diferentes
Você quer que o pacote seja transferido na camada 2 apenas para um teste de desempenho da NIC, eu acho. Assim, você pode usar pacotes IP com um endereço IP diferente (um não-local para que os pacotes sejam enviados pelo cabo em qualquer caso). E então você trapaceia: Você usa ip neigh
para criar uma entrada ARP permanente que mapeia esse endereço IP falso para o outro endereço MAC das NICs.
Você pode até fazer conexões IP dessa maneira. Mas você teria que usar iptables
com SNAT
e DNAT
para que ambos os NICs acreditem que estão falando com um dos dois IPs falsos necessários.
acesso bruto
Se você estiver disposto a fazer alguma programação não-trivial, então você pode abrir sockets raw e criar os frames Ethernet você mesmo. Esta provavelmente seria a solução mais rápida.