# UE/ePDG/AAA/HSS?PGW
msc {
  UE, ePDG [label="osmo-epdg (ePDG/AAA)"], HSS, PGW;

  UE => ePDG [ label="IKE SA INIT" ];
  UE <= ePDG [ label="IKE SA INIT" ];

  UE => ePDG [ label="IKE Auth Req (APN, NAI)" ];
  ePDG => HSS [ label="SWx Multimedia Auth Request (APN, NAI)" ];
  ePDG <= HSS [ label="SWx Multimedia Auth Answer (APN, NAI)" ];
  UE <= ePDG [ label="IKE Auth Resp (EAP AKA: Autn, Rand)" ];
  UE => ePDG [ label="IKE Auth Req (EAP AKA: Res)" ];

  ePDG => HSS [ label="SWx Server Assignment Request (APN, NAI)"];
  ePDG <= HSS [ label="SWx Server Assignment Answer (APN, NAI)"];
  UE <= ePDG [ label="IKE Auth Resp (EAP: Success)" ];

  UE => ePDG [ label="IKE Auth Req" ];
  UE <= ePDG [ label="IKE Auth Resp" ];

--- [ label="IKE SA estabilished" ];

  UE => ePDG [ label="IKE Create Child SA" ];
  ePDG => PGW [ label="S2b Create Session Request" ];
  ePDG <= PGW [ label="S6b Authentication/Authorization Request" ];

  ePDG => HSS [ label="SWx Server Assignment Request (APN, NAI)" ];
  ePDG <= HSS [ label="SWx Server Assignment Answer (APN, NAI)" ];

  ePDG => PGW [ label="S6b Authentication/Authorization Answer" ];
  ePDG <= PGW [ label="S2b Create Session Answer" ];
}
