7.6. Context confusion
Since each end might garbage collect the context state we can have
the case when one end has retained the context state and tries to
use
it, while the other end has lost the state. We discussed this in
the
previous section on recovery. But for the same reasons, when one
host retains context tag X as CT(peer) for ULID pair <A1, B1>, the
other end might end up allocating that context tag as CT(local) for
another ULID pair, e.g., <A3, B1> between the same hosts. In this
case we can not use the recovery mechanisms since there needs to be
separate context tags for the two ULID pairs.
This type of "confusion" can be observed in two cases (assuming it
is
A that has retained the state and B has dropped it):
o B decides to create a context for ULID pair <A3, B1>, and
allocates X as its context tag for this, and sends an I1 to A.
Nordmark & Bagnulo Expires November 16, 2006 [Page
58]
Internet-Draft Shim6 Protocol May
2006
o A decides to create a context for ULID pair <A3, B1>, and starts
the exchange by sending I1 to B. When B receives the I2 message,
it allocates X as the context tag for this context.
In both cases, A can detect that B has allocated X for ULID pair
<A3,
B1> even though that A still X as CT(peer) for ULID pair <A1, B1>.
Thus A can detect that B must have lost the context for <A1, B1>.
The confusion can be detected when I2/I2bis/R2 is received since we
require that those messages MUST include a sufficiently large set
of
locators in a Locator List option that the peer can determine
whether
or not two contexts have the same host as the peer by comparing if
there is any common locators in Ls(peer).
dmm> not really sure how this works. Is it not possible to have
dmm> a situation where Ls_i(peer) \intersect Ls_j(peer) is empty
dmm> (where Ls_1(peer),...,Ls_n(peer) is the sequence of changing
dmm> locator sets for peer)? Or is the "sufficiently slowly
dmm> changing locator sets" assumption operative here?