Complete UPF section with DBUF and PFCP agent instructions
Change-Id: Ic310a5991660a465889c936434d3dceac3ea7bbe
diff --git a/advanced/upf.rst b/advanced/upf.rst
index e92e831..f8a4d82 100644
--- a/advanced/upf.rst
+++ b/advanced/upf.rst
@@ -84,7 +84,7 @@
protocol, such as message parsing, state machines, and other bookkeeping can be
common to many different UPF realizations. For this reason, SD-Fabric relies on
an implementation of the PFCP protocol realized as an external microservice
-named “PFCP-Agent”, which is provided by the SD-Core project.
+named “PFCP Agent”, which is provided by the SD-Core project.
The UP4 App abstracts the whole fabric as one virtual big switch with UPF
capabilities, we call this the One-Big-UPF abstraction. Such abstraction allows
@@ -112,7 +112,28 @@
Downlink Buffering (DBUF)
-------------------------
-TODO Carmelo: overview of DBUF
+A UPF is required to buffer packets when UEs are in idle-mode or during
+handovers, this is usually called *downlink buffering*, as it applies only to
+the downlink direction of traffic. Most switches provide buffering capabilities
+to handle congestion, they cannot hold packets indefinitely. For this reason, we
+provide DBUF, a microservice
+responsible for providing the downlink buffering capabilities to P4-UPF.
+
+.. image:: ../images/dbuf.png
+ :width: 400px
+
+When a UE goes idle and turns off its radio, or during handovers, the mobile
+core control plane uses PFCP to update the Forwarding Action Rules (FARs) for
+that UE to enter buffering* mode. When this happens, UP4 updates the switch rules to
+steer packets to DBUF using GTP-U tunnels.
+
+UP4 uses gRPC to communicate with DBUF. DBUF notifies UP4 about buffering
+events, which are relayed to the mobile core control plane as Downlink Data
+Notifications (DDN). When a UE becomes available again, UP4 triggers a buffer
+drain on DBUF and updates the switch rules to start sending traffic to the UE again.
+
+Deploying DBUF is optional (can be enabled in the SD-Fabric Helm Chart).
+DBUF feature requires SR-IOV and DHCP support on NICs and Kubernetes CNIs.
ONOS Configuration
------------------
@@ -121,7 +142,7 @@
independently to ONOS. Th first is used to configure the UP4 ONOS application
and defines UPF-related information such as S1U Address, network devices
implementing UPF etc. The second one, instead, is used to configure parameters
-related to the Downlink Buffering (DBUF) functionality.
+related to the DBUF functionality.
Here's a list of fields that you can configure via the UPF Network Configuration
for UP4:
@@ -174,14 +195,14 @@
downlink buffering functionality. Here's a list of fields that you can
configure:
-* ``serviceAddr``: The address DBUF service management interface in the form
- IP:port. This address is used to communicate with the DBUF service via gRPC
- (for example, to trigger the drain operation, or receive notification for
+* ``serviceAddr``: The address of the DBUF service management interface in the
+ form IP:port. This address is used to communicate with the DBUF service via
+ gRPC (for example, to trigger the drain operation, or receive notification for
buffered packets).
* ``dataplaneAddr``: The address of the DBUF service data plane interface in the
- form IP:port. Packets sent to this address by the UPF will be buffered by
- DBUF. The IP address must be a routable fabric address.
+ form IP:port. Packets sent to this address by the UPF switches will be
+ buffered by DBUF. The IP address must be a routable fabric address.
Here is an example of netcfg for DBUF:
@@ -198,32 +219,21 @@
}
}
-SD-Core Configuration
----------------------
+.. note::
+ When deploying DBUF using the SD-Fabric Helm Chart you do **NOT** need to
+ provide the ``"dbuf"`` part of the UP4 config. That will be pushed
+ automatically by the DBUF Kubernetes pod.
-TODO Carmelo:
+PFCP Agent Configuration
+------------------------
-* Assuming SD-Core is already installed...
-* Instructions to install PFCP Agent for UP4
-* Reference for helm values configuration
+PFCP Agent can be deployed as part of the SD-Fabric Helm Chart.
-Should be similar to BESS install instructions (where the same helm chart
-installs both PFCP agent and BESS):
-https://docs.aetherproject.org/master/edge_deployment/bess_upf_deployment.html
-
-But using this helm chart (without BESS), just PFCP Agent:
-https://gerrit.opencord.org/plugins/gitiles/aether-helm-charts/+/refs/heads/master/omec/omec-upf-pfcp-agent/
+See the Helm Chart documentation for more information on the configuration
+parameters. Once deployed, use ``kubectl get services -n sdfabric`` to find out
+the exact UDP endpoint used to listen for PFCP connection requests.
UP4 Troubleshooting
-------------------
See :ref:`troubleshooting_guide`.
-
-DBUF
-----
-
-
-``TODO Carmelo`` overview
-
-
-``TODO Hung-Wei`` deployment instructions (helm chart)
diff --git a/images/dbuf.png b/images/dbuf.png
new file mode 100644
index 0000000..5c3e7d4
--- /dev/null
+++ b/images/dbuf.png
Binary files differ