Realmente estranho que você obtenha apenas 1 Gbps de desempenho de roteamento (mesmo a filtragem difícil geralmente significa 2 cópias no espaço do kernel para o mesmo dispositivo, provavelmente 4x para roteamento) - houve um post LKML um ano atrás que você pode obter 120Gbps do desempenho de roteamento na série 2.6.3X com ixgbe
de dispositivos. Eu uso principalmente NICs Intel 10GbE e geralmente ganho 1000MByte / s + com iperf
em uma infraestrutura comutada.
Primeiro, você precisa verificar como o sistema funciona para TCP simples com algo como iperf entre seus pontos de extremidade. Isso deve te dar uma linha de base. Lembre-se que muitas coisas entram em jogo se você precisar de velocidade de fio de 10Gbps. Em plataformas pré-Nehalem, isso é impossível de alcançar. Além disso, o carregamento do sistema deve corresponder ao layout NUMA e as NICs devem ser anexadas ao mesmo complexo PCI (isso é importante se você estiver preso em < 8 Gbps). A distribuição de código-fonte do ixgbe possui um script de fixação de IRQ (que também desativa coisas como economia de energia e o irqbalancer que apenas bagunçará os caches e não está ciente de topologia) que deve organizar as filas RX-TX uniformemente em todos os núcleos eles daqui a pouco).
Em relação à sua pergunta sobre timings, você precisa de um kernel compilado com suporte de criação de perfil e um profiler de nível de sistema como oprofile
.
Obtenha seu endpoint para o desempenho do endpoint resolvido antes de ativar a filtragem ou o roteamento de pacotes e postá-lo.