I agree with Dave Wierbowsk, deletion will still occur (for the old IKE SA) so deleting it while Host B is retransmitting (or waiting for some timer to retrasmit) seems to make most sense. Host B notices the delete payload (or NO_ADDITIONAL_SAS), stops retransmitting the request and go on as if there was only one rekeying requested (the one requested by Host A). I don't see a reason to delay the deletion.
Regards, Matt 2009/9/22 Matthew Cini Sarreo <mci...@gmail.com> > > I agree with Dave Wierbowsk, deletion will still occur (for the old IKE SA) > so deleting it while Host B is retransmitting (or waiting for some timer to > retrasmit) seems to make most sense. Host B notices the delete payload (or > NO_ADDITIONAL_SAS), stops retransmitting the request and go on as if there > was only one rekeying requested (the one requested by Host A). I don't see a > reason to delay the deletion. > > Regards, > Matt > > 2009/9/22 David Wierbowski <wierb...@us.ibm.com> > >> >Tero states: >> >> >> > The basic case is where both ends notice this is simultaneous >> > rekey, and can delay moving of the CHILD_SAs until they know which >> > one wins. The more complex case happens where there is dropped >> > packets and one end does not detect simultaneous rekey until it has >> > already finished its rekey and moved CHILD_SAs. As the basic case >> > can be processed in similar way as the more complex case, this >> > example here only covers the more complex case. >> > >> > In this case host A and B has IKE SA up and running and both ends >> > decide to rekey it: >> > >> > Host A Host B >> > ----------- ----------- >> > send req1: ... Ni1 ... --> >> > <-- send req2: ... Ni2 ... >> > --> recv req1 >> > >> > Now if the req2 is dropped for some reason, the Host A does not >> > know there is simultaneous rekey, but host B will know it when it >> > receives the req1. It will process the req1, but it cannot yet move >> > the CHILD_SAs as it does not know the Nr2. It postpones the >> > CHILD_SA moving until the req2/resp2 rekey finishes. It sends resp1 >> > back to the Host A to answer req1 IKE SA rekey: >> > >> > <-- send resp1: ... Nr1 ... >> > recv resp1 <-- >> > >> > Now the Host A has finished the IKE SA rekey without knowing it was >> > simultaneous rekey. It will move the CHILD_SAs from the old IKE SA >> > to new rekeyed IKE SA A. It MUST NOT immediately delete the old IKE >> > SA, but instead wait for some time to see in case there was >> > simultaneous rekey ongoing or not. When Host B retransmits its req2 >> > the Host A will notice that there was simultaneous rekey going on, >> > and it will send normal reply to that: >> > >> I see no reason why Host A MUST NOT immediately delete the old IKE SA. >> In fact I think is SHOULD immediately delete the old IKE SA. By this >> I mean it should mark the SA as being deleted, it should send a delete >> payload, and it should refuse to create any additional SAs. >> > recv req1 <-- >> > send resp2: ... Nr2 ... --> >> Host A should respond with NO_ADDITIONAL SAS in this case because >> Host A did not detect a simultaneous rekey and should have immediately >> deleted the original IKE_SA. >> > --> recv resp2 >> Host B should receive the NO_ADDITIONAL_SAS notification and it should >> realize that Host A did not detect the simultaneous rekey. Host B >> should now move the child SAs from the original IKE SA to the one >> initiated by Host A. In reality, it's more likely that Host B has >> already received Host A's delete notification and will ignore the >> response. >> > >> > After sending that reply that also creates the second IKE SA B in >> > Host A and then Host A can check all the four nonces and see which >> > of them is lowest, and it will then move all the CHILD_SAs to that >> > new IKE SA having lowest nonce unless they were already there (i.e. >> > if the IKE SA A had lowest nonce, Host A has already moved the >> > CHILD_SAs there, if IKE SA B had lowest nonce, host A needs to move >> > CHILD_SAs from the IKE SA A to this IKE SA B, and start timer to >> > delete IKE SA A). >> Why do you want to mandate all this complication for a case that will >> occur infrequently? You are impacting every IKE_SA rekey, not just >> the simultaneous case. I doubt that anybody delays the delete of an >> IKE_SA on a rekey based on RFC 4306. At the very least I'm sure there >> are implementations that do not delay the delete. Requiring this >> delay is a protocol change and one that I do not see the need for. >> >> If Host A deletes the IKE_SA immediately then either Host B will see >> the delete and be able to infer that there is no simultaneous rekey or >> Host B may also get a NO_ADDITIONAL SAS notification and be able to >> infer that there is no simultaneous rekey. >> > >> > When Host B receives the resp2 it knows that simultaneous rekey is >> > finished, and it can check the nonces and move CHILD_SAs from the >> > original IKE SA to either IKE SA A or B depending which had lowest >> > nonce. If it was IKE SA A, the host B needs to start timer to >> > delete IKE SA B. >> > >> > Depending who created the winning rekeyed IKE SA decides who is >> > going to delete the old IKE SA, i.e. the one who created the >> > winning IKE SA also cleans up the old IKE SA. >> > >> > Note, that Host B processing is identical to the basic case where >> > host notices during processing that there is simultaneous rekey >> > ongoing. >> > >> > In case the Host A didn't wait for long enough before start >> > deleting old IKE SA there can be case where host B is still trying >> > to retransmit its req2 in the old IKE SA when it receives the >> > delete to the old IKE SA. In that case it knows that Host A has NOT >> > received any of its requests, thus is unaware that there is >> > simultaneous rekey ongoing, thus it can safely stop retrasnmitting >> > req2, and allow old IKE SA to be deleted, and move all CHILD_SAs to >> > the IKE SA A created by Host A. >> And it can do the same when it immediately gets a delete for the >> original IKE SA or a NO_ADDITIONAL_SAS notification. >> >> If you want to defer the delete of the IKE SA that's fine with me. I >> just don't want to have to do that. I see no value in doing it, >> especially given the text above indicate one has to handle the delete >> case anyway. >> >> Dave Wierbowski >> >> >> >> _______________________________________________ >> IPsec mailing list >> IPsec@ietf.org >> https://www.ietf.org/mailman/listinfo/ipsec >> >> >
_______________________________________________ IPsec mailing list IPsec@ietf.org https://www.ietf.org/mailman/listinfo/ipsec