I have been implementing the D2.2 IPS state
machine and run into what I believe is an issue with the new sequence # check.
If I interpret the check correctly, it looks like the first packet received
with a new sequence # is processed & then all future ones are suppressed
(until the sequence # changes
again).
It seems like this can cause a problem when
attempting to unwrap a link (on a wrapping ring), since a WTR node would
require state 36 to fire to get out of the WTR and the neighbor is the same as
the original. The problem is when the packet defined in state 36 arrives, but
the WTR timer has not expired. Once the packet has been processed, and the
timer later expires, it is not possible to get into state
36.
Also, state 40 is the only state that
formally copies neighbor addresses. Since the whole state machine banks on the
neighbor MAC addresses being updated at the right time, this should be in the
state tables.
It seems as though ALL
ClearXxxSideEdgeStatus() operations should remove a wrap. That way, reception
of IPS with STEER mode can switch the ring from wrapping to steered
immediately, and any current wrap conditions will get removed. Only the wrap
operation should be conditional on all nodes being able to
wrap.
Comments are
welcome,
Regards,
Michael
Allen