Now, the initiator may not need to have such a stable identifier, since
the initiator does not receive communications. what the initiator needs
is an identifier that is stable during the communication lifetime so,
if the locator change, the identifier is maintained so it is the
communication.
I agree in principle, but I'm concerned this is a theoretical observation because I don't think we can build systems that know what the lifetime of the communication is.
It is true that in many cases "communication lifetime" = "TCP connection
lifetime", but if we build solutions assuming this then they will
fail for the cases when the equality doesn't hold; whether the
communication consists of UDP traffic, referrals, callbacks, or just
multiple TCP connections between the same nodes.
One could argue that the application should inform the "stack" about the lifetime of the communication, perhaps by defining some new "open" and "close" APIs, i.e. getting close to defining a session layer. But my gut feel is that this requires more changes to the applications than is warranted.
Erik