Project

General

Profile

EPDG implementation plan » History » Version 6

lynxis, 07/19/2023 11:06 PM

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
h4. SWm to AAA (DIAMETER)
115
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
127
h4. SWu to UE (IKEv2, ESP)
128
129
130
h4. Gxb to PCRF (not needed?)
131
132
133
h3. 3GPP AAA Server
134
135
h4. SWx to HSS (DIAMETER)
136
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
h5. Server-Assignment-Request (SAR) / Server-Assignment-Answer (SAA)
144
145
146
h4. S6b to PGW (DIAMETER)
147
148
FIXME
149
150
h4. SWm to ePDG (DIAMETER)
151
152 1 laforge
see above.
153 3 laforge
154
155 4 lynxis
h3. custom Interfaces / Procedures
156
157
h4. CEAI
158
159
FIXME
Add picture from clipboard (Maximum size: 48.8 MB)