Tuesday, 23 October 2018

Establishing a physically enforced unidirectional Ethernet link with 1000BASE-X, fiber optic PHY


I have a use case where I am attempting to establish a unidirectional Ethernet link where a singular fiber is used to transmit data to the receiver. The Rx of the transmit side and the Tx of the receive side are not physically connected.



The proposed configuration is as follows:


•The PHY is a fiber optic 1000BASE-X (LX or SX)


•Autonegotiation and any link monitoring protocols are disabled


•Full duplex configuration


•A second transceiver on the low (transmitting) side is used to provide a connection to the Rx port on the transceiver attempting to transmit unidirectionally (Ethernet spoofing) to set the signal_detect variable in the PCS


•UDP is the transport protocol and ARP is statically configured


So the question is will this configuration allow for successful synchronization at the PHY level for the transmitting side, i.e. will this "Ethernet spoofing" allow the second transceiver to provide the /Comma and /Idle code groups to the first that are required to achieve synchronization? Does synchronization need to be established on the high (receiving) side to successfully receive data?


Alternatively, will COTS SFP transceivers support IEEE 802.3 Clause 66, i.e. setting the mr_unidirectional_enable PCS variable, if the PHY is not of the passive optical network type and an OAM sublayer is not present?


I'm aware of security appliance data diodes however am trying to avoid that implementation.



Answer




Receive synchronization should not be required to transmit data. However, in some cases the transmit chain is disabled at some point if there is no signal on the receive side. What are you putting the transceiver in? NIC? Switch? Custom device of some sort? I have some experience with running SFP+ modules unidirectionally for various photonics experiments. Generally, the SFP+ module and PHY are no problem, it's at the MAC layer or higher that you can get trouble if there is no receive signal. The technique I used with standard 10G NICs was to loop the transmit side back to the receive side of the same module with an optical tap, either a 90/10 tap or I think a 98/2 tap. With driver modifications to mask the link status from the operating system, it was generally possible to run without the loopback, at least for the specific NIC that we were using. I presume this should work for your application as well. However, if you have control over the MAC higher layers and you can configure them to ignore the receive side status, then this may not be required. I have had no issues with running SFP+ modules transmit-only with no receive connection out of an FPGA board.


You may just need to do some experimenting; gigabit NICs and SFP transceivers are rather cheap second-hand.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...