Subject: [IPsec] QCD Interop test report

From: Yoav Nir <[email-masked]>
Date: Mon, 19 Jul 2010 11:35:30 +0300

Hi all

The Quick Crash Detection protocol is one of the candidates for the failure detection work item in our charter.

I have implemented in my company's product with a private Notify type and a VendorID, and up until a few months ago, this has been the only implementation that I know of.

As part of an undergraduate university program in computer science, a student from Tel Aviv University added this capability to StrongSwan on Linux.

He has written his implementation independently - the only help I gave him was to point him to the draft and coordinate the private Notify type.

Early this month we met to test interoperability of our two implementation.

One difference was immediately obvious. StrongSwan (at least the version he was using) neither sends nor processes INVALID_SPI notifications. When the CP gateway was restarted, and IPsec packets arrived, it sent INVALID_SPI notifications that were discarded. When the StrongSwan was restarted, the IPsec packets were just discarded, with no notification sent. As a consequence, crash detection was not very "quick". We had to wait until the liveness check occurred, which was every 20 seconds.

In response to the liveness check packet, the peer gateway did send the correct QCD Notify payload, and the state was cleared on the initiator.

Some bugs were discovered in both implementations:
 - The CP gateway did not send QCD in response to requests with MsgID 0.
 - The StrongSwan cleared the state successfully, and then had a segmentation fault
 - The CP gateway misinterpreted a one way unencrypted exchange (with INVALID_IKE_SA and QCD) as a response, when the request was Informational

All in all, seems like a successful test to me.

I'd like to than Elad for the effort, and hope he gets a good grade for it. Also, if he can locate and fix the crash, I encourage him to contribute his implementation to the StrongSwan project.

Yoav