-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathoscar-open5gs-intro.html
More file actions
227 lines (200 loc) · 10.5 KB
/
oscar-open5gs-intro.html
File metadata and controls
227 lines (200 loc) · 10.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Open5GS – Status</title>
<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
<meta name="author" content="Hakim El Hattab">
<meta name="apple-mobile-web-app-capable" content="yes">
<parameter name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="dist/reset.css">
<link rel="stylesheet" href="dist/reveal.css">
<link rel="stylesheet" href="dist/theme/black.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="plugin/highlight/monokai.css">
<style>
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5 {
text-transform: none;
}
.timing {
color: #ff6b6b;
font-size: 0.8em;
position: absolute;
top: 10px;
right: 10px;
background: rgba(0,0,0,0.7);
padding: 5px;
border-radius: 3px;
}
</style>
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h2>Open5GS: An Open Source Mobile Core Journey</h2>
<p><small>Introduction, Architecture, Use Cases & Deployment</small></p>
<p style="text-align: right;">Sukchan Lee</p>
<aside class="notes">
Hi everyone, thanks for joining this session. I'm Sukchan Lee, and I started Open5GS as a personal project a few years back. Today I'd like to share what we've built and learned along the way. I'll try to cover the technical aspects, the project structure, and honestly, I'm still amazed by how supportive our community has become. When I first started coding this, I never imagined it would grow into what it is today.
</aside>
</section>
<section>
<h2>Our Humble Beginnings</h2>
<ul>
<li>February 1st, 2017: Started coding from scratch</li>
<li>Pure hobby project—no external funding</li>
<li>10 months to first release</li>
<li>Collaborated with Jihoon Lee & Jinyoung Park</li>
<li>Forked as Open5GS; 5G stack launched in 2020</li>
</ul>
<aside class="notes">
So, back in February 2017, I was just curious about how mobile networks actually work under the hood. I started writing code from scratch, purely as a hobby - no funding, no grand plan, just me trying to figure things out. It took about 10 months of evenings and weekends to get something working. I was lucky to have Jihoon and Jinyoung helping out during those early days. When they decided to pursue the commercial route with NextEPC, I kept the open-source version going as Open5GS. Adding 5G support in 2020 was... well, let's just say it was a learning experience.
</aside>
</section>
<section>
<h2>Overview of Open5GS Functionality</h2>
<ul>
<li>Supports both 4G EPC and 5G Core Networks</li>
<li>Modular, service-based architecture</li>
<li>Key components: AMF, SMF, UPF, NRF, SEPP</li>
<li>Robust protocol support: HTTP/2, TLS, PFCP, Diameter</li>
</ul>
<aside class="notes">
What we ended up building is a system that handles both 4G and 5G networks. I tried to make it modular from the start because, honestly, debugging monolithic telecom code is a nightmare. The architecture includes the standard components you'd expect - AMF for access management, SMF for sessions, UPF for the data plane. We support the usual protocols like HTTP/2, TLS, PFCP. Nothing revolutionary, just trying to implement the specs correctly and make it actually work in practice.
</aside>
</section>
<section>
<h2>Architecture & Core Components</h2>
<p><small>Flexible, Modular, and Secure</small></p>
<ul>
<li>Common libraries: core, security, s1ap, ngap, nas</li>
<li>Dedicated directories for network functions</li>
<li>Seamless integration with legacy 4G systems</li>
<li>Advanced security: TLS and encrypted identifiers</li>
</ul>
<aside class="notes">
From a developer's perspective, I tried to structure things the way I'd want to work with them. We have shared libraries for common stuff like core functions, security, and protocol handling. Each network function has its own directory - makes sense, at least to me. The 4G integration came from necessity - people needed to migrate gradually, not do a big-bang replacement. Security was something I was probably paranoid about from the beginning, implementing TLS everywhere and features like SUCI protection. Better safe than sorry, especially in telecom.
</aside>
</section>
<section>
<h2>Community Support</h2>
<ul>
<li>GitHub <a href="https://github.com/open5gs/open5gs/issues" target="_blank">issues</a> for bug reports and feature requests</li>
<li>Active <a href="https://github.com/open5gs/open5gs/discussions" target="_blank">discussions</a> for project topics</li>
<li>Real-time help via <a href="https://discord.com/invite/GreNkuc" target="_blank">Discord</a> community</li>
</ul>
<aside class="notes">
I have to say, our community really surprised me. We use GitHub for the usual bug reports and feature requests, which works well enough. But the Discord server has become something special - people help each other out there way more than I ever expected. I try to jump in when I can, but honestly, the community often knows the answers better than I do. It's become this place where telecom engineers, researchers, and curious developers all help each other figure things out.
</aside>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="zoom">
<h2>Contributors as of June 9th, 2025</h2>
<table>
<thead>
<tr>
<th>Account</th>
<th>Commits</th>
<th>Additions</th>
<th>Deletions</th>
</tr>
</thead>
<tbody>
<tr>
<td>acetcom</td>
<td>3,804</td>
<td>5,553,489</td>
<td>3,619,620</td>
</tr>
<tr>
<td>pespin</td>
<td>205</td>
<td>38,330</td>
<td>17,236</td>
</tr>
<tr>
<td>bmeglic</td>
<td>96</td>
<td>7,885</td>
<td>1,952</td>
</tr>
<tr>
<td>jyounggo</td>
<td>43</td>
<td>2,908</td>
<td>423</td>
</tr>
<tr>
<td>herlesupreeth</td>
<td>40</td>
<td>3,346</td>
<td>2,299</td>
</tr>
</tbody>
</table>
<p>About 95 <a href="https://github.com/open5gs/open5gs/graphs/contributors" target="_blank">contributors</a> have participated</p>
<aside class="notes">
These numbers still seem unreal to me sometimes. Yeah, I've made most of the commits - that's what happens when you start a project from scratch and spend 8+ years on it. But having 95 people contribute code, documentation, bug reports... that's incredible. Every contribution matters, from major features to fixing typos in documentation. Some of these contributors have become essential to the project. I'm genuinely grateful for everyone who's taken the time to help improve Open5GS.
</aside>
</section>
<section style="text-align: left;">
<h2>Licensing & Business Model</h2>
<p>
Dual licensing model for maximum flexibility:
</p>
<ul>
<li>
<strong>Open Source:</strong> GNU AGPL v3.0 for research and open projects
</li>
<li>
<strong>Commercial:</strong> Proprietary licenses available for enterprise
</li>
</ul>
<aside class="notes">
The licensing model wasn't something I planned from day one, but it evolved as the project grew. AGPL v3.0 works well for researchers and open-source projects - you can use it, modify it, just share your improvements back. For companies that need proprietary modifications or can't work with copyleft licenses, we work with partners to provide commercial licensing. It's not the most elegant solution, but it seems to work for both keeping the project sustainable and serving different use cases.
</aside>
</section>
<section style="text-align: left;">
<h2>Our Partners</h2>
<p>Leading partners for complete mobile solutions:</p>
<ul>
<li><strong>NewPlane:</strong> Commercial licensing & enterprise support</li>
<li><strong>NextEPC:</strong> High-performance systems with DPDK acceleration</li>
<li><strong>sysmocom:</strong> Open source consulting & training services</li>
</ul>
<aside class="notes">
I'm fortunate to work with some great partners who understand both the technical and business sides of this. NewPlane is focused on commercial licensing and enterprise support – areas where they bring a lot of value and experience. NextEPC brings high-performance implementations with DPDK acceleration, which is pretty cool to see. And sysmocom has deep expertise in open-source telecom - they help people actually deploy and run these systems successfully. Together, we cover everything from hobbyists experimenting at home to production deployments.
</aside>
</section>
<section>
<h2>Thank You!</h2>
<p>Questions? Let's connect and collaborate!</p>
<p><small>GitHub: open5gs/open5gs | Discord: discord.com/invite/GreNkuc</small></p>
<aside class="notes">
Thanks for listening, and especially thanks to those joining online. I'd love to hear your questions or ideas - whether you're just curious about how this stuff works, thinking about using Open5GS for research, or want to contribute to the project. Feel free to reach out on GitHub or join our Discord. The community is always welcoming to newcomers, and there's always something interesting to work on together.
</aside>
</section>
</div>
</div>
<script src="dist/reveal.js"></script>
<script src="plugin/zoom/zoom.js"></script>
<script src="plugin/notes/notes.js"></script>
<script src="plugin/search/search.js"></script>
<script src="plugin/markdown/markdown.js"></script>
<script src="plugin/highlight/highlight.js"></script>
<script>
// Also available as an ES module, see:
// https://revealjs.com/initialization/
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [ RevealZoom, RevealNotes, RevealSearch, RevealMarkdown, RevealHighlight ]
});
</script>
</body>
</html>