Re: Issue 71: Failing RR (was: Do we need text about failing RR)

Tero Kivinen <[email protected]> Wed, 16 Nov 2005 13:33:44 +0200
Newsgroups gmane.ietf.mobike
Message-ID <[email protected]>
Jari Arkko writes:
> OK. Somewhat edited version below:
> 
>    "MOBIKE uses the same Dead Peer Detection
>     method as normal IKEv2, but as addresses may change, it is
>     not sufficient to just verify that the peer is alive, but also that
>     it is synchronized with the address updates and has not, for
>     instance, ignored an address update due to failure to complete
>     return routability test. This means that when there are incoming
>     IPsec packets, MOBIKE nodes SHOULD inspect the addresses used
>     in those packets and determine that they correspond to those
>     that should be employed. If they do not, such packets SHOULD
>     NOT be used as evidence that the peer is able to communicate
>     with this node and or that the peer has received all address
>     updates."

Looks good.

I was planning to add something like this to the design document (new
section 5.5.2 between current 5.5.1 and 5.5.2):
----------------------------------------------------------------------
5.5.2.  Return Routability Failures

   If the return routability fails, we need to tear down IKE SA if we
   are using IKEv2 INFORMATIONAL exchanges as a return routability
   checks.  On the other hand return routability can only fail
   permanently if there was an attack by the other end, thus tearing
   down IKE SA is suitable action in that case.

   There is few other cases that needs to be considered here.  In the
   first case there is no attacker, but the selected address pair stops
   working immediately after the address update, before the return
   routability check.

   What happens there is that initiator does the normal address update,
   and that succeeds, and then responder starts return routability
   check.  If the address pair has broken down before that the responder
   will never get reply back to the return routability check.  The
   responder might still be using the old IP address pair, which could
   still work.

   The initiator might be still seeing traffic from the responder, but
   using the old address pair.  The initiator should detect that this
   traffic is not using the latest address pair, and after a while it
   should start dead peer detection on the current address pair.  If
   that fails, then it should find new working address pair, and update
   addresses to that.  The responder should notice that the address pair
   was updated after the return routability check was started, and
   change the ongoing return routability check to use the new address
   pair.  The result of that return routability check needs to be
   discarded as it cannot be trusted as the packets were retransmitted
   to different IP address.  So normally responder starts new return
   routability check after that with the new address pair.

   The second case is where there is attacker along the path modifying
   the IP addresses.  The peers will detect this as NAT and will enable
   NAT-T recovery of changes in the NAT mappings.  If the attacker is
   along the path long enough to the return routability check to succeed
   then the normal recovery of changes in the NAT mappings will take
   care of the problem.  If the attacker disappears before return
   routability is finished, but after the update we have almost similar
   case than last time.  The only difference is now that the dead peer
   detection started by the initiator will succeed, as responder will
   reply to the addresses in the headers, not the current address pair.
   The initiator will then detect that the NAT mappings are changed, and
   it will fix the situation by doing address update.

   Important thing for both of these cases is that initiator needs to
   see that responder is both alive and synchronized with initiator
   address pair updates.  I.e. it is not enough that other end is
   sending traffic to initiator, it must be also using the correct IP
   addresses before initiator can belive it is alive and synchronized.
   From the implementation point of view this means that the initiator
   must not consider packets having wrong IP addresses as a packets that
   proof the other end being alive, i.e. they do not reset the dead peer
   detection timers.
-- 
[email protected]