Project

General

Profile

EPDG implementation plan » History » Version 11

pespin, 10/17/2023 11:46 AM

1 2 laforge
{{>toc}}
2
3 1 laforge
h1. EPDG implementation plan
4 2 laforge
5
h2. The big picture
6
7
Ideally, we want to reuse existing code whenever possible, rather than reinvent the wheel.  Time will tell, if this works out or if we have to rewrite more of it.
8
* StrongSwan charon for handling IKEv2 and managing the IPsec SAs in the kernel IPsec
9
* Erlang DIAMETER application for all the related interfaces
10
* Erlang gtplib for S2b
11
12
This means we will have two major "applications" running:
13
* charon
14
* ePDG (likely in Erlang)
15
16
Between those two we will need some kind of non-standard, custom interface.  For now I've called it "CEAI" for (Charon External AKA Interface)
17
18
h2. Control Plane
19
20
* *red* color indicates elements / interfaces to be implemented.
21
22
{{graphviz_link()
23
digraph G {
24
  rankdir=LR;
25
  subgraph cluster_swan {
26
    label = "StrongSWAN domain";
27
    charon;
28
  }
29
  subgraph cluster_erlang {
30
    label = "Erlang domain";
31
    ePDG [color=red];
32
    AAA [label="3GPP AAA Server", color=red];
33
  }
34
  HSS;
35
  PGW;
36
  PCRF
37
  UE;
38
39
  charon -> ePDG [label="CEAI", color=red];
40
41
  UE -> charon [label="IKEv2"];
42
  ePDG -> AAA [label="SWm (DIAMETER)", color=red];
43
  AAA -> HSS [label="SWx (DIAMETER)", color=red];
44
  AAA -> PGW [label="S6b (DIAMETER)", color=red];
45
46
  ePDG -> PGW [label="S2b (GTPv2C)", color=red];
47
  ePDG -> PCRF [label="Gxb", color=red, style=dashed];
48
  PGW -> PCRF [label="Gx (DIAMETER)"];
49
}
50
}}
51
52
53
h2. User Plane
54
55
* *red* color indicates elements / interfaces to be implemented.
56
* *blue* color indicates control-plane elements controlling the user plane
57
58
{{graphviz_link()
59
digraph G {
60
  rankdir=LR;
61
62
  subgraph cluster_swan {
63
    label = "StrongSWAN domain";
64
    { rank=same;
65
      ipsec [label="Linux kernel\nIPsec"];
66
      charon [color=blue];
67
    }
68
    charon -> ipsec [label="netlink", color=blue];
69
  }
70
  subgraph cluster_erlang {
71
    label = "Erlang domain";
72
    { rank=same
73
      gtp [label="Linux kernel\nGTP"];
74
      ePDG [color="blue"];
75
    }
76
    ePDG -> gtp [label="netlink", color=blue];
77
  }
78
  PGW;
79
  UE;
80
81
  UE -> ipsec [label="ESP/UDP"];
82
  ipsec->gtp [label="kernel IP stack"];
83
  gtp -> PGW [label="S2b (GTPv1U)", color=red];
84
}
85
}}
86
87 5 lynxis
88
h2. Authentication
89
90
!ipsec_auth.png!
91
92 3 laforge
h2. 3GPP Interfaces and Procedures
93 2 laforge
94
h3. ePDG
95
96 1 laforge
97 6 lynxis
h4. S2b to PGW (GTPv2C) [TS 29.274]
98 2 laforge
99
h5. Create Session Request / Response
100
101
h5. Delete Session Request / Response
102
103
h5. Modify Bearer Request /  Respone (not needed?)
104
105
h5. Modify Bearere Command (not needed?)
106
107
h5. Bearer Resource Command (not needed?)
108
109
h5. Create Bearer Request / Response
110
111
h5. Update Bearer Request / Response (not needed?)
112
113
114 9 pespin
h4. SWm to AAA (DIAMETER) [3GPP TS 29.273]
115 2 laforge
116
h5. Diameter-EAP-Request (DER) / Diameter-EAP-Response (DEA)
117
118
h5. Diameter-AA-Request (AAR) / Diameter-AA-Response (AAA)
119
120
h5. Session-Termination-Request (STR) / Session-Termination-Answer (STA)
121
122
h5. Re-Auth-Requst (RAR) / Re-Auth-Answer (RAA)
123
124
h5. Abort-Session-Request (ASR) / Abort-Session-Answer (ASA)
125
126 11 pespin
h4. SWu to UE (IKEv2, ESP) (3GPP TS 33.402)
127 2 laforge
128 11 pespin
* Related: https://fabricioapps.blogspot.com/2017/10/untrusted-non-3gpp-ip-access-swu-ikev2.html
129 2 laforge
130
h4. Gxb to PCRF (not needed?)
131
132
133
h3. 3GPP AAA Server
134
135 10 pespin
h4. SWx to HSS (DIAMETER) [3GPP TS 29.273 sec 8,  3GPP TS 23.402 sec 12]
136 2 laforge
137
h5. Push-Profile-Request (PPR) / Push-Profile-Answer (PPA)
138
139
h5. Registration-Termination-Request (RTR) / Registration-Termination-Answer (RTA)
140
141
h5. Multimedia-Auth-Request (MAR) / Multimedia-Auth-Answer (MAA)
142
143 7 pespin
* 3GPP TS 29.273 8.2.2.1
144 8 pespin
* https://www.etsi.org/deliver/etsi_ts/129200_129299/129273/17.06.00_60/ts_129273v170600p.pdf
145 7 pespin
* https://dstest.info/DiaDict/Dictionary/Multimedia-Auth-Request_SWx.html
146
147 2 laforge
h5. Server-Assignment-Request (SAR) / Server-Assignment-Answer (SAA)
148
149 9 pespin
h4. S6b to PGW (DIAMETER) [3GPP TS 29.273]
150 2 laforge
151
FIXME
152
153
h4. SWm to ePDG (DIAMETER)
154
155 1 laforge
see above.
156 3 laforge
157
158 4 lynxis
h3. custom Interfaces / Procedures
159
160
h4. CEAI
161
162
FIXME
Add picture from clipboard (Maximum size: 48.8 MB)