The entire IT industry is packed with mathematics. So instead of keeping things easy we need to work our way around imposed restriction that have been imposed on us by history.
When hardware was developed 1 to 5 decades ago things were (maybe still are) very expensive. Every corner was cut to keep costs low in order to be to sell anything. You can have the latest and greatest but if you’re pricing yourself out of the market the shelf-life of your shares becomes very short and at some stage you basically cease to exist. Companies like DEC and SUN have found out the hard way. Fabulous marvels of engineering but lack of sales and marketing efforts aligned to that engineering feat basically failed to gain sufficient traction in the market and as such they are no more.
Going back to the hardware restrictions and the SFP -INF state
You may encounter some output from an sfpshow (Brocade) or “show transceiver detail” (Cisco) like this:
Temperature: 46 Centigrade
Current: 6.428 mAmps
Voltage: 3261.5 mVolts
RX Power: -inf dBm (0.0 uW)
TX Power: -3.3 dBm (464.2 uW)
So what does that mean? Read on.
As speeds and feeds increase so does the requirement of storing values. In an attempt to optimize usage of the available space in a capacity restricted environment, whether that be disks, memory, buffers, ASIC or FPGA registers some smart guys called mathematicians came up with a concept called “Single-precision floating-point format“. Instead of using 32-bits and noting an absolute signed value of (2^31)-1 they drew up a SFF notation used a signed exponent of a fraction. Basically it uses bit 30 to 23 as an exponent and 22 to 0 as the fraction with the MSB (31) being 0. This allows to use a much larger range of values than by storing an absolute binary value of 32 bits.
The methodology used in much of the equipment where state values are being used in a very wide range most often utilize this method. The IEEE 754 standard outlines various options of the floating point arithmetic including half- (16 bits) single- (32 bits which is used by the SFP’s in this case), double- (64 bits) etc.
It does however come at a cost which is accuracy. If you calculate values based on rounded numbers or values that are outside the exponent range (2^128 or 2^-128) this will return an infinite and not an absolute number (such as 10/3 yielding 3.333333…. etc) . This will be represented as an -inf value and not and true number as you may expect.
So how does this affect my SFP?
Well, it doesn’t. As the representation basically is a mathematical limitation is a merely a display issue. Obviously you cannot see if this representation is due to this limitation or not as very low RX power or power ranges outside the manufacturer calibration ranges may also be a factor. Check for any sort of port errors like signal or synchronization issues. Check a few times with an “sfpshow -f x/x” if the value fluctuates and also look at the voltage and current values. Brocade and Cisco provide SFP datasheets where the ranges of these values are provided so you could make an informed decision on whether an SFP is really broken or not.
A previous article I wrote over here gives you a good overview on when to replace an SFP (and also when not!!)
Hope this helps.