add slides of osmodevcall on CUPS
This commit is contained in:
parent
64fe898535
commit
068b912bf1
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
Binary file not shown.
After Width: | Height: | Size: 68 KiB |
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
|
@ -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
|
Loading…
Reference in New Issue