Implementar cable Ethernet de solo envío (unidireccional)

Quiero construir una comunicación unidireccional. En la capa de transporte de este dispositivo, necesita un medio unidireccional para enviar datos del lado A al lado B.

Todos los productos comerciales utilizan SFP . Probé algunos dispositivos SFP pero tienen negociación entre los dos lados y no es posible cortar la fibra RX.
¿Es posible implementar una conexión unidireccional con cable CAT5?

LadoA { tx --> rx } LadoB

Incluso si su dispositivo solo envía datos, ¿qué daño hace conectar el par RX del conmutador Ethernet a este dispositivo con fines de negociación?
Sin duda, puede hacerlo con un cable cat5/6, aunque deberá configurar ambos extremos para deshabilitar la negociación automática. Puede estar limitado a 100mbit.
Bueno, en realidad no defines qué es un diodo de datos. No puede inventar un término y asumir que lo entenderemos. De todos modos, parece que necesita un dispositivo que solo permita la comunicación Ethernet unidireccional y descarte todos los paquetes que van en la dirección incorrecta. Es probable que esto no se pueda hacer en la capa física, ya que estropeará los pulsos de detección de enlaces y la negociación automática. Una forma de diseñar esto probablemente sería conectar dos chips PHY espalda con espalda (haciendo un transceptor ethernet simple) y, por un lado, conectar a tierra todos los pines relacionados con TX de la interfaz MAC.
Y creo que simplemente deshabilitar la negociación automática no será suficiente, ya que los pulsos de detección de enlaces no podrán viajar en ambos sentidos. Entonces la prueba de integridad del enlace fallará.
¿Qué protocolo vas a utilizar? Si es TCP/IP, entonces necesita la ruta de retorno para ACK/NACK, el protocolo no funcionará sin ellos. He visto artículos publicados sobre el diseño del protocolo para 'diodos de datos' para conectar sistemas seguros a otros no seguros, y pasaron la mayor parte del tiempo demostrando que la tasa de fuga de datos en la 'otra' dirección suponiendo que el sistema comprometido en el peor de los casos no podría superan algún límite especificado por el sistema, en este caso para su protocolo era <= 0,1 baudios en reversa basado en el reconocimiento de paquetes de 10 s de datos de reenvío, que se consideró lo suficientemente bajo para el uso del gobierno de EE. UU. en ese momento.
Es fácil implementar una conexión unidireccional sobre CAT5. Use RS232 y solo conecte los cables de transmisión y tierra. Dado que no indica un protocolo requerido o una velocidad de datos, solo un cable físico que cumpla con todos los requisitos indicados en su pregunta. Si desea utilizar algún tipo de ethernet, es casi seguro que tendrá que realizar el filtrado en un nivel superior en el software.
@Neil_UK Estoy bastante seguro de que no usará TCP, ya que la comunicación unidireccional y la entrega garantizada son mutuamente excluyentes por definición.
@Neil_UK, el único protocolo que se puede usar en Data Diode entre dos lados es UDP.
@Razavi Si desea que los datos fluyan solo en una dirección, ¿por qué usar Ethernet? Quiero decir, es un protocolo de red ...
@MarcusMüller Una razón sería reutilizar el software de pila de comunicación existente, en lugar de invertir cientos de horas-hombre en escribir y depurar el suyo propio.
@MarcusMüller Es posible usar UART, USART, I2C,... pero implementar cada uno de ellos requiere mucho más tiempo y la velocidad de la velocidad de datos es importante.
Querer forzar la comunicación unidireccional es algo inusual. Solo conozco algunos casos en los que sería deseable. En cada uno de esos casos, hay un conjunto de requisitos proporcionados externamente que se le están dando en cuanto a lo que significa "comunicación unidireccional" para la entidad que le da esos requisitos. Por ejemplo, si aceptan el modelo OSI, pueden especificar en qué capa debe estar el comportamiento unidireccional. ¿Qué requisitos tienes para trabajar?
@Razavi gracias por la confirmación. Sí, será difícil implementar un enlace unidireccional de alta velocidad por su cuenta, especialmente cuando está destinado a ser utilizado como transporte de datos de red.
Indique específicamente la naturaleza de los datos tx, la tasa de datos requerida y cualquier decodificación Rx requerida. Esto se puede hacer de manera bastante simple, pero aquí hay muchos pensamientos confusos, así que, @Razavi, aclare todo esto y diga específicamente lo que necesita para que se pueda dar una respuesta en lugar de opiniones y pensamientos. Si no puede proporcionar más información, explique por qué. Me parece que quieres un sistema de envío de datos punto a punto.

Respuestas (6)

Los cables Ethernet unidireccionales no funcionarán con equipos de red Gigabit y posteriores, porque sin una ruta de retorno, la secuencia de negociación automática nunca se completará. Verá el mensaje "Cable de red desenchufado" o un mensaje equivalente en ambos dispositivos si intenta usar dicho cable.

Los dispositivos Ethernet más antiguos tampoco funcionarán con cables unidireccionales simples, pero pueden ser engañados para hacerlo. Este sitio web tiene instrucciones prácticas para construir cables adecuados. En esencia, tendrás que hacer algo como esto:

SideA           SideA           HUB PORT
-------         -------         -------
x x r r         x x r r         r r x x
6 3 1 2         6 3 2 1         1 2 3 6
| | | |         | | | |             | |
| +-/ |         | | | \-------------/ |
| |   |    OR   | | \-----------------/
+-|---/         | |             
| |             | |
| |             | |
| |             | |
6 3 2 1         6 3 2 1
r r x x         r r x x
-------         -------
SideB           SideB

Se necesita el puerto Hub adicional para proporcionar voltaje sobre el par RX de SideA, para engañarlo y hacerle creer que hay un transmisor en el otro extremo.

Si nada de lo anterior funciona, o no puede deshabilitar la negociación automática, lo mejor que puede hacer es implementar dos dispositivos habilitados para Ethernet con una ruta de datos unidireccional entre ellos. Por ejemplo, un par de PIC de Ethernet con un UART unidireccional en el medio deberían poder hacer el truco.

Una cosa que debe preguntarse antes de continuar es si realmente necesita un diodo de datos. Esto es lo que dicen los expertos :

La mayoría de las organizaciones no necesitan una nueva tecnología de protección como los diodos de datos. [...] Suponiendo que las reglas [del cortafuegos] solo permitan la comunicación de adentro hacia afuera, basada en UDP, y que no haya una mala configuración en el cortafuegos, no puedo recordar una explotación del cortafuegos que permitiría a un atacante externo obtener acceso al perímetro CCA.

Revisé este circuito ayer, pero no funcionó.
@Razavi ¿Cómo exactamente no funcionó? ¿Tiene habilitada la negociación automática en sus NIC?
@Razavi También agregué una segunda variante de circuito, pero en todo caso, es aún menos seguro que funcione (aunque más simple de hacer). Puede probarlo, pero sugiero depurar el cable original de 3 cabezas.

Si desea una "dirección de datos unidireccional", debe hacerlo en un nivel superior. Varias cosas asumen una comunicación bidireccional en los niveles bajos, incluso si los datos a nivel de la aplicación solo fluyen en una dirección.

Por ejemplo, incluso si envía datos en una sola dirección a través de una conexión TCP, seguirá habiendo paquetes yendo y viniendo en ambas direcciones. Puede salirse con la suya con paquetes unidireccionales para datos usando UDP, pero dependiendo de lo que esté haciendo, puede ser necesaria una comunicación bidireccional para establecer una conexión.

Puede pensar que simplemente se apegará a UDP, pero muchos protocolos están superpuestos en TCP, lo que requiere absolutamente el envío de paquetes en ambas direcciones. Los ejemplos incluyen HTTP (navegación web) y SMTP (correo electrónico).

Ethernet también asume cierta comunicación bidireccional entre los dos puntos finales, incluso si los datos de nivel superior solo se transportan en una dirección. Hay pulsos de enlace, y posiblemente alguna negociación automática de parámetros de comunicación de bajo nivel.

Para obtener lo que desea, básicamente tiene que hacer su propio enrutador (aunque puede ser mucho más simplificado que un "enrutador" arbitrario). Su dispositivo aún necesita enviar y recibir paquetes hacia/desde la red. Interpreta algunos de estos paquetes y pasa datos en una sola dirección por el otro puerto. Tenga en cuenta que es muy probable que esto requiera una comunicación bidireccional en los niveles bajos nuevamente en el otro lado del enrutador, incluso con datos de nivel de aplicación que fluyen solo en una dirección.

Si uno mantiene los cables bidireccionales en la configuración, simplemente podría instalar un firewall en SideB que rechace todos los paquetes salientes excepto los acuses de recibo de TCP.
@Dmitry: No estoy seguro de que sea exactamente así de simple, pero sí, eso es lo que quise decir al hacer su propio enrutador. Se necesita lógica a ese nivel para implementar datos unidireccionales, mientras se siguen recibiendo y enviando los paquetes de bajo nivel necesarios.
El punto de un diodo de datos es garantizar absolutamente que ningún dato vaya en una dirección... cuando comienza a permitir reconocimientos, entonces no tiene sentido llamarlo diodo, es solo un firewall.
@immi: Ni la pregunta ni la respuesta pueden decir nada sobre un "diodo de datos".

Es posible en 10BASE-T y 100BASE-TX, pero no en 1000BASE-T porque este último usa transmisión bidireccional en cada par.

Para habilitar dicho modo, necesita un acceso MDIO/MDC (administración) al PHY al menos en el lado TX del enlace unidireccional, para configurarlo de la siguiente manera:

  • deshabilitar AUTONEG
  • fuerza 100BASE-TX (o 10BASE-T, pero no 1000BASE-T)
  • forzar dúplex completo
  • deshabilitar la señalización FAR END FAULT

La configuración de RX PHY es opcional, pero puede ayudar según las especificaciones del hardware. Si se usa, la configuración de RX PHY es la misma que la de TX PHY.

Es específico del equipo, pero muchos conmutadores administrados (con SFP o no) brindan al usuario la capacidad de configurar manualmente los puertos Ethernet a través de la interfaz web y/o la consola. Primero debe examinar las hojas de datos de su equipo y luego probarlo.

¿Qué pasa con otras respuestas? El esquema izquierdo de @Dmitry puede fallar porque ni 100BASE-TX ni 10BASE-T están destinados a usarse en un solo par desde la caja, mientras que su esquema derecho está más cerca de lo que necesita, pero donde podríamos obtener un verdadero centro (no cambiar) hoy? y además, un concentrador funciona solo con 10BASE-T.

Mientras tanto, @Olin habla sobre otra cosa (nivel superior), pero no sobre el diodo de datos (físico, restringido al medio) en el que pregunta.

Funciona solo a 10/100mbps. Si fija la velocidad del puerto a 100mbps. Vuelva a conectar Tx+ a Rx+ (y opcionalmente Tx- a Rx-) en el transmisor y conecte en paralelo Tx+ y Tx- del transmisor a Rx + y Rx- del receptor. He observado que Rx debe recibir un voltaje para que el puerto se considere habilitado. Si bien esto no es un problema con el receptor, ya que el rx del receptor está conectado al TX del remitente. El transmisor por otro lado tiene sus patas de recepción libres. ¿¿Puedes conectar una batería aquí?!. Pero una solución más simple es retroceder desde su propio tx.

La transmisión UDP es una buena opción ... suponiendo que está transmitiendo a ciegas ... y obviamente no puede ver nada en el otro extremo del cable que responde debido a la configuración unidireccional. ¿La transmisión múltiple de los mismos paquetes puede ayudar en caso de pérdida de paquetes? Eso es para que lo descubras

Existe una solución y fue diseñada para aplicaciones de diodos de datos. Es el conversor de medios no administrado, modificado para usarse en pares y admite tráfico unidireccional de B+B SmartWorx. 856-10730-RX y 856-10730-TX

¿Comparaste el costo de estos costos del método de remolque?
Debe comparar los costos: son sus fondos o presupuesto, no el nuestro o el de ella.... @Razavi

Primero, para aquellos que no saben qué es un diodo de datos o cuáles son sus usos, deben comenzar aquí. Hay muchas MUY buenas razones para implementar este tipo de solución.

https://en.wikipedia.org/wiki/Unidireccional_red

En cuanto a cómo manejar esto, tiene varias opciones. Puede comprar una solución lista para usar. Algunas de estas soluciones son muy costosas y vienen con certificación NSA. Otras soluciones más simples cuestan menos y satisfarán sus necesidades, pero tendrá que buscar. Aquí hay un ejemplo de una solución más barata.

https://www.canarycom.com/index5.html

Si tiene un poco de experiencia con el cableado de red de cobre, puede probar el truco que señala Dimitry. O, si quiere probar y usar fibra, puede probar un truco similar conectando dos dispositivos de "lado bajo" juntos (Tx a Rx) para mantener activo el Tx del segundo dispositivo. He visto esto hecho con dos convertidores de CAT a FO y funcionó perfectamente. No lo he probado en una NIC de computadora.

Además, para los que están especulando sobre los protocolos de transmisión, para eso está UDP. Funciona de maravilla cuando no necesita ni espera una respuesta.