Project

General

Profile

EPDG implementation plan » History » Version 3

laforge, 11/15/2021 07:37 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 3 laforge
h2. 3GPP Interfaces and Procedures
88 2 laforge
89
h3. ePDG
90
91
92
h4. S2b to PGW (GTPv2C)
93
94
h5. Create Session Request / Response
95
96
h5. Delete Session Request / Response
97
98
h5. Modify Bearer Request /  Respone (not needed?)
99
100
h5. Modify Bearere Command (not needed?)
101
102
h5. Bearer Resource Command (not needed?)
103
104
h5. Create Bearer Request / Response
105
106
h5. Update Bearer Request / Response (not needed?)
107
108
109
h4. SWm to AAA (DIAMETER)
110
111
h5. Diameter-EAP-Request (DER) / Diameter-EAP-Response (DEA)
112
113
h5. Diameter-AA-Request (AAR) / Diameter-AA-Response (AAA)
114
115
h5. Session-Termination-Request (STR) / Session-Termination-Answer (STA)
116
117
h5. Re-Auth-Requst (RAR) / Re-Auth-Answer (RAA)
118
119
h5. Abort-Session-Request (ASR) / Abort-Session-Answer (ASA)
120
121
122
h4. SWu to UE (IKEv2, ESP)
123
124
125
h4. Gxb to PCRF (not needed?)
126
127
128
h3. 3GPP AAA Server
129
130
h4. SWx to HSS (DIAMETER)
131
132
h5. Push-Profile-Request (PPR) / Push-Profile-Answer (PPA)
133
134
h5. Registration-Termination-Request (RTR) / Registration-Termination-Answer (RTA)
135
136
h5. Multimedia-Auth-Request (MAR) / Multimedia-Auth-Answer (MAA)
137
138
h5. Server-Assignment-Request (SAR) / Server-Assignment-Answer (SAA)
139
140
141
h4. S6b to PGW (DIAMETER)
142
143
FIXME
144
145
h4. SWm to ePDG (DIAMETER)
146
147 1 laforge
see above.
148 3 laforge
149
150
h3. custom Interfaces / Procedures
151
152
h4. CEAI
153
154
FIXME
Add picture from clipboard (Maximum size: 48.8 MB)