summaryrefslogtreecommitdiff
path: root/2021/osmodevcall-cups_pfcp/osmodevcall-e1_tdm_pdh_sdh.adoc
blob: c0470acca9d5f9de8479ba489358cd56ba651044 (plain)
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
Control/User Plane Separation (CUPS) and PFCP
=============================================
:author:	Harald Welte <laforge@osmocom.org>
:copyright:	2021 by Harald Welte (License: CC-BY-SA)
:backend:	slidy
:max-width:	45em

== Overview

What this talk is about

* Relatively modern extension to 3GPP architecture
* splitting control and user plane in EPC

== Acronyms

* SGW: Serving Gateway (4G successor of SGSN)
* PGW: Packet Gateway (4G successor of GGSN)
* CUPS: Control / User Plane Separation
* PFCP: Packet Forwarding Control Protocol

== SGW and PGW in EPC

== CUPS

* CUPS completed in June 2017 (3GPP Release 14)
* Separates the SGW and PGW into Control + User Plane
* a bit like the split of MSC into MSC + MSC Server much earlier
* Control Plane note process only signaling
* User Plane nodes process only user plane
** SGW becomes SGW-C and SGW-U
** PGW becomes PGW-C and PGW-U
* CUPS described in 3GPP TS 23.214

== CUPS Architecture Reference Model

image::cups-arch-ref-model.png[width=850]

== Why CUPS

* scale out of user plane (significant increase in cellular bandwidth since 4G)
* control plane is typically not so performance constrained
* 1:N or N:M relation between control and user plane nodes
* ability to move de-centralized UPF closer to the edge
** reduces latency of user plane
** keeps hierarchical model of control plane in core network

== CUPS Interfaces / PFCP protocol

* Sxa interface between SGW-C and SGW-U
* Sxb interface between PGW-C and PGW-U
* based on new protocol PFCP
** based on UDP/IP, structurally similar to GTPv2C
*** UDP port 8805
** 3GPP spec enables interoperability, i.e. different vendors/equipment for control and user plane
* PFCP described in 3GPP TS 29.244

== CUPS Packet Processing Abstraction

image::cups-pfcp-stacking.png[width=850]

== Functions of CUPS

* Traffic Detection
* Charging / Usage Monitoring
* GTP-U IP / TEIDu allocation
* UE IP address allocation/renewal/release
* Control of User plane forwarding
** forwarding UE - PDN
** forwarding subject to buffering
*** e.g. to trigger paging in SGW)
** forwarding with "end marker"
*** used during hand-over

== Key PFCP concepts

* _Association_
** User Plane and Control Plane instance get to know each other
** Only one Association for each tuple of (CP + UP) element
* _Session_
** For each tunnel (bearer)

== Key PFCP _node related_ procedures

* Association setup / update / release
** only one association exists between each pair of CP + UP nodes
* Heartbeat

== Key PFCP _session related_ procedures

There are the following three key procedures:

* Sx session establishment
* Sx session modification
* Sx session termination

There is one session per EPC bearer.

Each session then consists of a potentially lengthy list of _rules_.

== CUPS Packet Processing Abstraction

image::cups-packet-processing.png[width=850]

== PDR: Packet Detection Rule

* Packet Detection Information
** Source Interface
** UE IP address
** local F-TEID
** SDF filters
* outer header removal
* FAR (Forwarding Action Rule) ID
* list of URR (Usage Reporting Rule) IDs
* list of QER (QoS Enforcement Rule) IDs

== FAR: Forwarding Action Rule

* Destination Interface
* Outer header creation
* Session End Marker
* Transport Level Marking
* Forwarding Policy
* Container for Header Enrichment
* Buffer Control Information
* Delay Downlink Packet Notification Info
* Extended Buffering Info

== URR: Usage Reporting Rule

* Reporting Triggers
* Measurement Thresholds (Periodic / Volume / Time / Event)
* Inactivity detection time
* Measurement Method + Information

== QER: QoS Enforcement Rule

* Maximum Bitrate
* Guaranteed Bitrate
* Packet Rate

== BAR: Buffering Action Rule

* FIXME


== CUPS and 5G

* 4G PGW-U becomes the 5G UPF (User Plane Function)
* 4G PGW-C becomes the 5G SMF (Session Management Function)
* Protocol to control it remains PFCP

== CUPS and 2G/3G

* Not explicitly specified (AFAICT)
* Any GTPv1C control plane instance can of course off-load its user plane to a UPF
* Whether or not CUPS is used is an implementation detail

== Open Source around CUPS

There are already several FOSS implementations of PFCP and CUPS

* open5gs
** control plane: C language smf
** user plane: C language userland with normal socket API
* ergw
** Erlang ergw control plane
** VPP/DPDK based UPF
* OMEC
** ngic-rtc: BESS/DPDK based user plane
** upf-epc: revised version of ngic-rtc user plane
* Free5GC
** custom non-mainline Linux kernel module for GTP handling
** https://github.com/free5gc/gtp5g.git
* soon likely also an osmocom project (osmo-upf)
** no dependency on out-of-mainline kernel code
** yet faster than a socket-API based userspace process


== EOF

End of File
personal git repositories of Harald Welte. Your mileage may vary