¿Qué puedo usar para enviar todos los paquetes TCP simultáneamente a través de 2 conexiones de forma redundante?

Sería bastante inútil, pero podrías hacer esto.

Una solución es hacer un túnel TCP sobre UDP. Si puede usar UDP, haga que el servidor se suscriba al mismo grupo de multidifusión en ambas interfaces. Luego, el cliente también se suscribirá al mismo grupo de multidifusión en ambas interfaces.

Esta podría ser una segunda opción: soporte para TCP / IP dual y electrónica redundante

PRP parece una tercera opción: Ethernet redundante de protocolo de redundancia paralela (PRP) para OrionLX

Sin embargo, para saber cuál de estos es significativo en su situación, necesitaría tener un poco más de información. ¿Por qué, por ejemplo, la red (que tiende a ser una parte confiable de un sistema) es menos confiable que el servidor (que, debido a la complejidad, tiende a ser notablemente inestable)?

La mayoría de los proyectos en los que he estado involucrado donde se necesitaba la conmutación por error de tiempo cero, se necesitaba debido a problemas del servidor. La conmutación por error de retardo cero de las conexiones es fácil si solo tiene su segundo servidor sombra el primero.

Me gustaría saber cuál es el propósito de hacer eso. Si está dispuesto a medir el tiempo de actividad de enlaces o puertos, puede utilizar bfd en ambos puertos. Eso posiblemente agregaría un desperdicio adicional de energía de la CPU, pero sería mucho más fácil que luchar con tcp.

Otra cosa sería configurar la vinculación de enlaces. Puede configurar la agregación de enlaces en ambos lados. Puede jugar con la distribución del tráfico para compartir la carga por paquete. Esto dividiría los paquetes de un solo flujo tcp en dos enlaces, también proporcionaría redundancia: si un enlace falla, otro estaría transportando activamente todo el flujo tcp sin intervención manual.

Otra opción sería hacer uso de ecmp. Puede incluir agentes de enrutamiento en ambos lados como quanta y hacer que ambos enlaces enruten la capa 3 e implementar enrutamiento dinámico con ecmp. Ecmp compartiría la carga por sí mismo, si tiene dos sesiones de tcp diferentes, lo más probable es que una encaje en un enlace y la otra se envíe por el segundo. No tendrías que jugar con la capa tcp en absoluto.

Si puede modificar el kernel, tcp multirruta suena como un buen ajuste.

En cualquier caso, optaría por una sola transmisión tcp en lugar de dos, sin saber el propósito exacto …

Considere la creación de un grupo de agregación de enlaces (LAG). Ver agregación de enlaces

Puede hacer esto escribiendo una gran cantidad de código personalizado en su núcleo.