msc { hscale = 2; UE, sswan [label="strongSwan"], ePDG [label="osmo-epdg/erlang"], PGW, HSS; UE <=> sswan [label="IKE: SA_INIT"]; UE => sswan [label="IKE: AUTH_REQ (IDi=NAI, IDr=APN, CFG Req)"]; sswan => ePDG [label="GSUP: Send Auth Information Req (NAI, APN)"]; ePDG => HSS [label="SWx MAR (Multimedia Authentication Request)"]; ePDG <= HSS [label="SWx MAA (Multimedia Authentication Answer)"]; sswan <= ePDG [label="GSUP: Send Auth Information Res (Quintlet)"]; UE <= sswan [label="IKE: AUTH_RESP (EAP-Request/AKA-Challenge)"]; UE => sswan [label="IKE: AUTH_REQ (EAP-Request/AKA-Response)"]; sswan => ePDG [label="GSUP: Location Update Req"]; ePDG => HSS [label="SWx SAR (Server Assignment Request)"]; ePDG <= HSS [label="SWx SAA (Server Assignment Answer)"]; sswan <= ePDG [label="GSUP: Location Update Res"]; UE <= sswan [label="IKE: AUTH_RESP (EAP Success)"]; UE => sswan [label="IKE: AUTH_REQ"]; sswan => ePDG [label="GSUP: Tunnel Req"]; ePDG => PGW [label="S2b: Create Session Request"]; ePDG => HSS [label="SWx SAR (Server Assignment Request)"]; ePDG <= HSS [label="SWx SAA (Server Assignment Answer)"]; ePDG <= PGW [label="S2b: Create Session Answer"]; sswan <= ePDG [label="GSUP: Tunnel Res"]; UE <= sswan [label="IKE: AUTH_RESP (CFG Reply)"]; UE <=> sswan [label="IPSEC SA"]; }