[strongSwan] Query for Mobike responder behavior

Tobias Brunner tobias at strongswan.org
Tue Apr 5 10:27:52 CEST 2016

Hi Mukesh,

> Crux of this para is that if NAT traversal and mobike both are supported
> at both IPsec end-points, then implementation shall change to port 4500.
> Both peers support NAT traversal will be found at IKE_SA_INIT exchange
> and Mobike support will be found after IKE_AUTH exchange is done.. 
> In case of multi-round AUTH like EAP-AKA, initiator will get to know
> responder's mobike capability in last round of IKE_Auth response when it
> sends Mobike_supported as per RFC4555 Section 3.3

Correct.  As you point out what RFC 4555 mandates does not really work.

> Hence initiator will use port 4500 only for IKEv2 message after IKE_Auth
> completion.

Or an initiator that supports MOBIKE will just always switch to port
4500 when sending the first IKE_AUTH request.  That's what strongSwan
does if MOBIKE is enabled and NAT-T is supported by the peer.  This is
no problem and not directly related to UDP encapsulation of ESP, which
strongSwan only uses if a NAT is actually detected.  As RFC 7296 puts it:

  "An initiator can use port 4500 for both IKE and ESP, regardless of
   whether or not there is a NAT, even at the beginning of IKE.  When
   either side is using port 4500, sending ESP with UDP encapsulation is
   not required, but understanding received UDP-encapsulated ESP packets
   is required."

> I am doubtful regarding Responder behavior after IKE_AUTH completion..
> Shall responder use port 4500 for any IKEv2 request/UDP encapsulated ESP
> packet towards initiator right after IKE_AUTH completion or wait till
> initiator sends some Ikev2 packet with port 4500...

The responder has no way of changing the ports, in particular, if the
client is behind a NAT it can't know the port to which the client's port
4500 will be mapped.  It just responds and initiates exchanges to the
same endpoint from which it received the requests.  Or as RFC 7296 puts it:

  "An implementation MUST
   accept incoming requests even if the source port is not 500 or 4500,
   and MUST respond to the address and port from which the request was
   received.  It MUST specify the address and port at which the request
   was received as the source address and port in the response."


More information about the Users mailing list