summaryrefslogtreecommitdiff
path: root/2021
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2021-11-30 13:39:40 +0100
committerHarald Welte <laforge@osmocom.org>2021-11-30 13:39:40 +0100
commit068b912bf1fd2505bb6f9db85ae790d1c0168dfa (patch)
tree4f05b0ccc7b61ae6a692928125b438bef5a44e25 /2021
parent64fe89853559c477fb1fcf46f7cafe0d736c7b6f (diff)
add slides of osmodevcall on CUPS
Diffstat (limited to '2021')
-rw-r--r--2021/osmodevcall-cups_pfcp/cups-arch-ref-model.pngbin0 -> 67713 bytes
-rw-r--r--2021/osmodevcall-cups_pfcp/cups-packet-processing.pngbin0 -> 69086 bytes
-rw-r--r--2021/osmodevcall-cups_pfcp/cups-pfcp-stacking.pngbin0 -> 14843 bytes
-rw-r--r--2021/osmodevcall-cups_pfcp/osmodevcall-e1_tdm_pdh_sdh.adoc182
4 files changed, 182 insertions, 0 deletions
diff --git a/2021/osmodevcall-cups_pfcp/cups-arch-ref-model.png b/2021/osmodevcall-cups_pfcp/cups-arch-ref-model.png
new file mode 100644
index 0000000..4d23801
--- /dev/null
+++ b/2021/osmodevcall-cups_pfcp/cups-arch-ref-model.png
Binary files differ
diff --git a/2021/osmodevcall-cups_pfcp/cups-packet-processing.png b/2021/osmodevcall-cups_pfcp/cups-packet-processing.png
new file mode 100644
index 0000000..46608a7
--- /dev/null
+++ b/2021/osmodevcall-cups_pfcp/cups-packet-processing.png
Binary files differ
diff --git a/2021/osmodevcall-cups_pfcp/cups-pfcp-stacking.png b/2021/osmodevcall-cups_pfcp/cups-pfcp-stacking.png
new file mode 100644
index 0000000..b7081e7
--- /dev/null
+++ b/2021/osmodevcall-cups_pfcp/cups-pfcp-stacking.png
Binary files differ
diff --git a/2021/osmodevcall-cups_pfcp/osmodevcall-e1_tdm_pdh_sdh.adoc b/2021/osmodevcall-cups_pfcp/osmodevcall-e1_tdm_pdh_sdh.adoc
new file mode 100644
index 0000000..c0470ac
--- /dev/null
+++ b/2021/osmodevcall-cups_pfcp/osmodevcall-e1_tdm_pdh_sdh.adoc
@@ -0,0 +1,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