Hi Jeremy,
thanks for your answer.
Problem is, a customer did have a unidirectional fiber link between two S-Series, using 10G ports and optics. The ports were up, but no data was passing the link (e.g. no LLDP data received on one of the switches). The link given by you suggests this should not happen. 10G Ethernet supposedly has UDLD-like functionality as part of the standard, and EXOS supposedly implements that (see
What is the difference between local fault and remote fault in the port link down messages), but I have seen unidirectional 10G fiber links between EXOS switches as well. Bugs can happen everywhere.
Which reminds me of method number 5 to guard against this, using LACP.
Using a higher layer protocol (CFM, LACP, BFD) to guard against a failure in a lower layer seems a valid strategy.
Cisco's UDLD is nice and easy to use in IOS, because one just needs to turn it on globally, and it will automatically guard all fiber ports, no further configuration needed. Its scope is clear, ensuring that layer 2 links work in both directions. If it reports a failure, the first idea for resolution is checking the link and e.g. replacing the cable.
CFM in contrast has a much wider scope and is relatively cumbersome to configure. Loop Protect (proprietary) requires the use of STP. LACP is used to form LAGs, guarding against unidirectional links is a side-effect (and quite slow with default timers). BFD requires IP connectivity and does not affect the layer 2 interface directly. Routing protocol adjacencies (e.g. using OSPF Hello) need a routing protocol active on the link, and are usually quite slow to detect a failure. IP SLA needs an IP address to track. All of those except CFM down MEPs have additional failure cases besides a link problem, making troubleshooting a link problem harder.
ELSM on EXOS seems to serve the same purpose as Cisco's UDLD, but EOS seems to lack this kind of functionality.
Thanks,
Erik