[strongSwan-dev] High Availability

Daniel Palomares palomaresdaniel at gmail.com
Thu Apr 28 19:48:25 CEST 2011


Hi Again;

As you may know Im trying to code some features to make some test concerning
High Availability.

I wanted to launch my own "ipsec get <connection name>" command in order to
get a whole ESTABLISHED IKE_SA.

I first wanted to understand how the keywords (concerning *stroke* backend)
works.
When I launched the following command: "ipsec up <myconnection>" I see that
the ipsec script invokes the "${IPSEC_DIR}/stroke up $1", then, once inside
*stroke.c* at the *main *function, there is a *switch(token->kw)* for each
keyword depending if the stroke invocation was an add , delete, up, down,
etc. Inside this switch I added my own "STROKE_GET"  keyword, as well as in
the others keywords files concerned (in order to recognize the keyword
itself *stroke_keywords.c*, etc).

Having a look to STROKE_UP case, I noticed that it calls a function named  *
initiate_connection()* which sends the *STR_INITIATE msg.type* . What I
don't get is: How the connection is launched then?
By the way, I could see that the message is sent through the socket *
send_stroke_msn(&msg).**

*I believed that the *process()* function (in
libcharon/plugins/stroke/stroke_socket.c) concerning the stroke request has
to be called in order to launch an STR_INITIATE. But I cannot say what's
happening once *send_stroke_msg() *returns.

Does strongswan invokes the stroke_control_t.initiate implementation in
order to send a IKE_INIT?

Well, hope you could help me guys!
Thanks in advance;

Daniel


2011/4/26 Yaron Sheffer <yaronf.ietf at gmail.com>

> Hi Daniel,
>
> the draft should be approved by the IESG (the main governing body of the
> IETF) in the next few weeks, and possibly earlier. After that, it may take a
> few months for it to be published as an RFC, but it will not (cannot) be
> changed significantly, or we will have to go through the approval process
> again. In other words, after IESG approval it is stable enough to be
> implemented safely.
>
> No, it wasn't developed under StrongSwan. Most of the ideas originated with
> my Cisco co-authors.
>
> The IPsec standards work takes place on the ipsec at ietf.org mailing list,
> which you might want to follow.
>
> Thanks,
>        Yaron
>
>
> On 04/26/2011 11:55 AM, Daniel Palomares wrote:
>
>> Hi Yaron,
>>
>> Ok, I will take a look.
>>
>> Do you know (more or less) when would you have the response concerning
>> the draft turning to RFC? And have you developed this proposed draft
>> under strongswan?
>>
>> Thank you again,
>>
>>
>> Daniel Palomares
>>
>>
>> 2011/4/24 Yaron Sheffer <yaronf.ietf at gmail.com
>> <mailto:yaronf.ietf at gmail.com>>
>>
>>
>>    Hi,
>>
>>    we have an Internet draft that deals with exactly these issues:
>>    http://tools.ietf.org/html/draft-ietf-ipsecme-ipsecha-protocol-05
>>
>>    This is a bit late in the game (we are already past IETF Last Call),
>>    but I suggest that you take a look, and I would appreciate any
>> comments.
>>
>>    Thanks,
>>            Yaron
>>
>>
>>    On 04/22/2011 10:53 AM, Martin Willi wrote:
>>
>>        Hi Daniel,
>>
>>            In the other hand, I don't get why a HA_IKE_ADD
>>            synchronization type
>>            message would be generated from a "ike_keys" listener?
>>              Could someone
>>            help me on this?
>>
>>
>>        We follow the IKEv2 protocol relatively strict to synchronize
>>        IKE_SAs,
>>        we synchronize the information as soon as we get it. This allows
>>        us to
>>        keep as little additional state as possible for synchronization,
>>        and it
>>        was relatively easy to implement into the existing code base.
>>
>>        The HA_IKE_ADD messages is triggered during the IKE_SA_INIT
>>        exchange,
>>        where the key material is generated. This won't synchronize a
>>        complete
>>        IKE_SA yet, just what we get during IKE_SA_INIT. After
>>        establishment, we
>>        pass all the remaining state using HA_IKE_UPDATE.
>>
>>            So I'm working on the transfer of a Security Association
>>            from one node
>>            to another, for achieving this I'm taking ideas from the
>>            ha_plugin of
>>            course.
>>            My goal is not to synchronize every SA on a cluster but to
>>            take a SA
>>            whenever I want and then been able to install it anywhere else.
>>
>>
>>        We explicitly synchronize only basic information for kernel
>>        level SAs,
>>        but not the sequence numbers. They are moving just to fast if
>>        you have
>>        traffic on the tunnel. If a node fails and you reuse the sequence
>>        numbers from a single second ago, your outgoing sequence numbers
>> are
>>        already outdated and your traffic gets dropped. Therefore we use
>> our
>>        extended ClusterIP functionality to keep sequence numbers in sync.
>>
>>        Best regards
>>        Martin
>>
>>
>>        _______________________________________________
>>        Dev mailing list
>>        Dev at lists.strongswan.org <mailto:Dev at lists.strongswan.org>
>>
>>        https://lists.strongswan.org/mailman/listinfo/dev
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strongswan.org/pipermail/dev/attachments/20110428/e9a74973/attachment.html>


More information about the Dev mailing list