Zum Hauptinhalt springen

2.25. Kollisionen von Austauschen

2.25. Kollisionen von Austauschen​

Da IKEv2-Austausche von beiden Peers initiiert werden können, ist es möglich, dass sich zwei Austausche, die dieselbe SA betreffen, teilweise überlappen. Dies kann zu einer Situation führen, in der die SA-Zustandsinformationen vorübergehend nicht synchronisiert sind und ein Peer eine Anfrage empfängt, die er nicht auf normale Weise verarbeiten kann.

Offensichtlich führt die Verwendung einer Fenstergröße größer als 1 zu komplexeren Situationen, insbesondere wenn Anfragen außerhalb der Reihenfolge verarbeitet werden. Dieser Abschnitt konzentriert sich auf Probleme, die selbst bei einer Fenstergröße von 1 auftreten können, und empfiehlt Lösungen.

Eine TEMPORARY_FAILURE-Benachrichtigung SOLLTE gesendet werden, wenn ein Peer eine Anfrage empfängt, die aufgrund einer temporären Bedingung wie eines laufenden Rekeying-Vorgangs nicht abgeschlossen werden kann. Wenn ein Peer eine TEMPORARY_FAILURE-Benachrichtigung empfängt, DARF er die Operation nicht sofort erneut versuchen; er MUSS warten, damit der Sender die Operation, die die temporäre Bedingung verursacht hat, abschließen kann. Der Empfänger KANN die Anfrage einmal oder mehrmals über einen Zeitraum von mehreren Minuten erneut versuchen. Wenn ein Peer nach mehreren Minuten weiterhin TEMPORARY_FAILURE für denselben IKE SA empfängt, SOLLTE er schließen, dass die Zustandsinformationen nicht synchron sind, und den IKE SA schließen.

Eine CHILD_SA_NOT_FOUND-Benachrichtigung SOLLTE gesendet werden, wenn ein Peer eine Anfrage zum Rekeying einer Child SA empfängt, die nicht existiert. Die SA, die der Initiator neu zu schlüsseln versuchte, wird durch das SPI-Feld im Notify-Payload angezeigt, das aus dem SPI-Feld der REKEY_SA-Benachrichtigung kopiert wird. Ein Peer, der eine CHILD_SA_NOT_FOUND-Benachrichtigung empfängt, SOLLTE die Child SA stillschweigend löschen (falls sie noch existiert) und eine Anfrage zum Neuerstellen einer neuen Child SA von Grund auf senden (falls die Child SA noch nicht existiert).

2.25.1. Kollisionen beim Rekeying oder Schließen von Child SAs​

Wenn ein Peer eine Anfrage zum Rekeying einer Child SA empfängt, die er gerade zu schließen versucht, SOLLTE er mit TEMPORARY_FAILURE antworten. Wenn ein Peer eine Anfrage zum Rekeying einer Child SA empfängt, die er gerade neu schlüsselt, SOLLTE er wie üblich antworten und SOLLTE sich darauf vorbereiten, redundante SAs später anhand der Nonces zu schließen (siehe Abschnitt 2.8.1). Wenn ein Peer eine Anfrage zum Rekeying einer Child SA empfängt, die nicht existiert, SOLLTE er mit CHILD_SA_NOT_FOUND antworten.

Wenn ein Peer eine Anfrage zum Schließen einer Child SA empfängt, die er gerade zu schließen versucht, SOLLTE er ohne Delete-Payload antworten (siehe Abschnitt 1.4.1). Wenn ein Peer eine Anfrage zum Schließen einer Child SA empfängt, die er gerade neu schlüsselt, SOLLTE er wie üblich mit einem Delete-Payload antworten. Wenn ein Peer eine Anfrage zum Schließen einer Child SA empfängt, die nicht existiert, SOLLTE er ohne Delete-Payload antworten.

Wenn ein Peer eine Anfrage zum Rekeying des IKE SA empfängt und gerade eine Child SA dieses IKE SA erstellt, neu schlüsselt oder schließt, SOLLTE er mit TEMPORARY_FAILURE antworten.

2.25.2. Kollisionen beim Rekeying oder Schließen von IKE SAs​

Wenn ein Peer eine Anfrage zum Rekeying eines IKE SA empfängt, den er gerade neu schlüsselt, SOLLTE er wie üblich antworten und SOLLTE sich darauf vorbereiten, redundante SAs später anhand der Nonces zu schließen und geerbte Child SAs zu verschieben (siehe Abschnitt 2.8.2). Wenn ein Peer eine Anfrage zum Rekeying eines IKE SA empfängt, den er gerade zu schließen versucht, SOLLTE er mit TEMPORARY_FAILURE antworten.

Wenn ein Peer eine Anfrage zum Schließen eines IKE SA empfängt, den er gerade neu schlüsselt, SOLLTE er wie üblich antworten und seine eigene Rekeying-Anfrage vergessen. Wenn ein Peer eine Anfrage zum Schließen eines IKE SA empfängt, den er gerade zu schließen versucht, SOLLTE er wie üblich antworten und seine eigene Schließanfrage vergessen.

Wenn ein Peer eine Anfrage zum Erstellen oder Rekeying einer Child SA empfängt, während er gerade den IKE SA neu schlüsselt, SOLLTE er mit TEMPORARY_FAILURE antworten. Wenn ein Peer eine Anfrage zum Löschen einer Child SA empfängt, während er gerade den IKE SA neu schlüsselt, SOLLTE er wie üblich mit einem Delete-Payload antworten.