[Swan-dev] Do IKEv2 traffic selectors come in pairs?

Paul Wouters paul at nohats.ca
Fri Nov 2 03:07:09 UTC 2018


Oh, yes. The initiator MAY send a TSi that is the trigger packet that lead to its proposal, which might be 0/0 to 0/0. It allows the responder to narrow to the trigger packet

Sent from mobile device

> On Nov 2, 2018, at 09:18, Andrew Cagney <andrew.cagney at gmail.com> wrote:
> 
>> On Thu, 1 Nov 2018 at 17:36, Andrew Cagney <andrew.cagney at gmail.com> wrote:
>> 
>> Reading https://tools.ietf.org/html/rfc7296#section-2.9 I get the
>> feeling that the traffic selectors in the TSi/TSr payloads are always
>> paired - TSi[n] goes with TSr[n].  The examples, for instance, do
>> this.  And without matching pairs things struggle to make sense.
>> However, I couldn't find text clearly spelling this out.  Perhaps I'm
>> missing something.
>> 
>> This would mean code should check elemsof(TSi) == elemsof(TSr).
> 
> I still think this is true, strongswan disagrees.  In
> interop-ikev2-strongswan-39-mobike-responder pluto sends a single pair
> of traffic selectors:
> 
> | ****emit IKEv2 Traffic Selector - Initiator - Payload:
> |    number of TS: 1 (0x1)
> | *****emit IKEv2 Traffic Selector:
> |    TS type: IKEv2_TS_IPV4_ADDR_RANGE (0x7)
> |    IP Protocol ID: 0 (0x0)
> |    start port: 0 (0x0)
> |    end port: 65535 (0xffff)
> | ipv4 start  00 00 00 00
> | ipv4 end  ff ff ff ff
> 
> | ****emit IKEv2 Traffic Selector - Responder - Payload:
> |    number of TS: 1 (0x1)
> | *****emit IKEv2 Traffic Selector:
> |    TS type: IKEv2_TS_IPV4_ADDR_RANGE (0x7)
> |    IP Protocol ID: 0 (0x0)
> |    start port: 0 (0x0)
> |    end port: 65535 (0xffff)
> | ipv4 start  c0 00 02 00
> | ipv4 end  c0 00 02 ff
> 
> but strongswan comes back with:
> 
> proposing traffic selectors for us:
>  192.0.2.0/24
> proposing traffic selectors for other:
>  192.0.3.1/32
>  192.0.3.2/32
> 
> as in:
> 
> | **parse IKEv2 Traffic Selector - Initiator - Payload:
> |    number of TS: 2 (0x2)
> | TS: parse initiator traffic selectors
> | ***parse IKEv2 Traffic Selector:
> |    TS type: IKEv2_TS_IPV4_ADDR_RANGE (0x7)
> |    IP Protocol ID: 0 (0x0)
> |    length: 16 (0x10)
> |    start port: 0 (0x0)
> |    end port: 65535 (0xffff)
> | ipv4 ts low  c0 00 03 01
> | ipv4 ts high  c0 00 03 01
> | ***parse IKEv2 Traffic Selector:
> |    TS type: IKEv2_TS_IPV4_ADDR_RANGE (0x7)
> |    IP Protocol ID: 0 (0x0)
> |    length: 16 (0x10)
> |    start port: 0 (0x0)
> |    end port: 65535 (0xffff)
> | ipv4 ts low  c0 00 03 02
> | ipv4 ts high  c0 00 03 02
> | TS: parsed 2 TS payloads
> 
> | **parse IKEv2 Traffic Selector - Responder - Payload:
> |    number of TS: 1 (0x1)
> | TS: parse responder traffic selectors
> | ***parse IKEv2 Traffic Selector:
> |    TS type: IKEv2_TS_IPV4_ADDR_RANGE (0x7)
> |    IP Protocol ID: 0 (0x0)
> |    length: 16 (0x10)
> |    start port: 0 (0x0)
> |    end port: 65535 (0xffff)
> | ipv4 ts low  c0 00 02 00
> | ipv4 ts high  c0 00 02 ff
> | TS: parsed 1 TS payloads
> 
> which with "ikev2 ts: group paired traffic selectors in a single
> structure" gets rejected.
> 
> (and this cascades eventually cause a core dump because the initiator
> has an authenticated parent with no child).
> _______________________________________________
> Swan-dev mailing list
> Swan-dev at lists.libreswan.org
> https://lists.libreswan.org/mailman/listinfo/swan-dev



More information about the Swan-dev mailing list