AETHER-45 Add support of latest features in BESS based SPGWU
This patchset resolves the issues below.
Also enable PFCP by default.
- AETHER-370 Add support of UP4 pipeline
- AETHER-371 Add support of PFCP iface
- AETHER-373 Make upf.json fully configurable
Change-Id: I665168156968c090f3c297228b7b35f3dc0d8ace
diff --git a/omec/omec-control-plane/values.yaml b/omec/omec-control-plane/values.yaml
index 92838bc..0bd8c67 100644
--- a/omec/omec-control-plane/values.yaml
+++ b/omec/omec-control-plane/values.yaml
@@ -9,9 +9,9 @@
init: docker.io/omecproject/pod-init:1.0.0
hssdb: docker.io/omecproject/c3po-hssdb:master-latest
hss: docker.io/omecproject/c3po-hss:master-latest
- mme: docker.io/omecproject/openmme:master-latest
+ mme: docker.io/omecproject/nucleus:master-latest
mmeExporter: docker.io/omecproject/mme-exporter:paging-latest
- spgwc: docker.io/omecproject/ngic-cp:central-cp-multi-upfs-latest
+ spgwc: docker.io/omecproject/spgwc:master-latest
depCheck: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1
pullPolicy: IfNotPresent
@@ -235,7 +235,7 @@
phoneType: "iPhone11-Pro"
spgwc:
deploy: true
- pfcp: false
+ pfcp: true
apn: internet
# ueStaticPool is used only when multiUpfs is not enabled.
# In case of multiUpfs, use app_config.cfg to provide static pool per DP.
diff --git a/omec/omec-user-plane/Chart.yaml b/omec/omec-user-plane/Chart.yaml
index b3e54c4..590b524 100644
--- a/omec/omec-user-plane/Chart.yaml
+++ b/omec/omec-user-plane/Chart.yaml
@@ -7,4 +7,4 @@
name: omec-user-plane
icon: https://guide.opencord.org/logos/cord.svg
-version: 0.1.5
+version: 0.2.1
diff --git a/omec/omec-user-plane/templates/bin/_bessd-poststart.sh.tpl b/omec/omec-user-plane/templates/bin/_bessd-poststart.sh.tpl
index d073f81..b9e20fd 100644
--- a/omec/omec-user-plane/templates/bin/_bessd-poststart.sh.tpl
+++ b/omec/omec-user-plane/templates/bin/_bessd-poststart.sh.tpl
@@ -6,6 +6,6 @@
set -ex
-until bessctl run /opt/bess/bessctl/conf/spgwu; do
+until bessctl run /opt/bess/bessctl/conf/up4; do
sleep 2;
done;
diff --git a/omec/omec-user-plane/templates/config/_spgwu.json.tpl b/omec/omec-user-plane/templates/config/_spgwu.json.tpl
deleted file mode 100644
index e667a86..0000000
--- a/omec/omec-user-plane/templates/config/_spgwu.json.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "mode": {{ .Values.config.spgwu.mode | quote }},
- "ue_cidr": {{ .Values.config.spgwu.ue.subnet | quote }},
- "enb_cidr": {{ .Values.config.spgwu.enb.subnet | quote }},
- "s1u": {
- "ifname": {{ .Values.config.spgwu.s1u.device | quote }}
- },
- "sgi": {
- "ifname": {{ .Values.config.spgwu.sgi.device | quote }}
- },
- "workers": {{ .Values.config.spgwu.workers }},
- "max_sessions": {{ .Values.config.spgwu.maxSessions }}
-}
diff --git a/omec/omec-user-plane/templates/config/_spgwu.json.tpl.license b/omec/omec-user-plane/templates/config/_spgwu.json.tpl.license
deleted file mode 100644
index 889687c..0000000
--- a/omec/omec-user-plane/templates/config/_spgwu.json.tpl.license
+++ /dev/null
@@ -1,3 +0,0 @@
-SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
-
-SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
diff --git a/omec/omec-user-plane/templates/configmap-spgwu.yaml b/omec/omec-user-plane/templates/configmap-spgwu.yaml
index 583f283..5829656 100644
--- a/omec/omec-user-plane/templates/configmap-spgwu.yaml
+++ b/omec/omec-user-plane/templates/configmap-spgwu.yaml
@@ -12,7 +12,8 @@
labels:
{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 4 }}
data:
- spgwu.json: |
-{{ tuple "config/_spgwu.json.tpl" . | include "omec-user-plane.template" | indent 4 }}
+{{- range $key, $value := .Values.config.spgwu.cfgFiles }}
+ {{ $key }}: {{ toJson $value | quote }}
+{{- end }}
bessd-poststart.sh: |
{{ tuple "bin/_bessd-poststart.sh.tpl" . | include "omec-user-plane.template" | indent 4 }}
diff --git a/omec/omec-user-plane/templates/service-spgwu.yaml b/omec/omec-user-plane/templates/service-spgwu.yaml
index ddb2967..d310b29 100644
--- a/omec/omec-user-plane/templates/service-spgwu.yaml
+++ b/omec/omec-user-plane/templates/service-spgwu.yaml
@@ -15,10 +15,6 @@
clusterIP: None
selector:
{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 4 }}
- ports:
- - name: zmq
- protocol: TCP
- port: {{ .Values.config.spgwu.zmq.recvPort }}
---
apiVersion: v1
kind: Service
diff --git a/omec/omec-user-plane/templates/statefulset-spgwu.yaml b/omec/omec-user-plane/templates/statefulset-spgwu.yaml
index 963f27a..1379d8f 100644
--- a/omec/omec-user-plane/templates/statefulset-spgwu.yaml
+++ b/omec/omec-user-plane/templates/statefulset-spgwu.yaml
@@ -4,16 +4,19 @@
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
*/}}
+{{- $upfConfig := index .Values.config.spgwu.cfgFiles "upf.json" }}
+{{- $s1uConfig := index $upfConfig "s1u" }}
+{{- $sgiConfig := index $upfConfig "sgi" }}
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: spgwu
- serviceName: spgwu-headless
labels:
{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 4 }}
spec:
replicas: 1
+ serviceName: spgwu-headless
selector:
matchLabels:
{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 6 }}
@@ -25,12 +28,12 @@
k8s.v1.cni.cncf.io/networks: '[
{
"name": "s1u-net",
- "interface": {{ .Values.config.spgwu.s1u.device | quote }},
+ "interface": {{ index $s1uConfig "ifname" | quote }},
"ips": {{ .Values.config.spgwu.s1u.ip | quote }}
},
{
"name": "sgi-net",
- "interface": {{ .Values.config.spgwu.sgi.device | quote }},
+ "interface": {{ index $sgiConfig "ifname" | quote }},
"ips": {{ .Values.config.spgwu.sgi.ip | quote }}
}
]'
@@ -64,7 +67,6 @@
capabilities:
add:
- IPC_LOCK
- - NET_ADMIN
stdin: true
tty: true
command: ["/bin/bash", "-xc"]
@@ -108,7 +110,7 @@
{{- end }}
env:
- name: CONF_FILE
- value: /etc/bess/conf/spgwu.json
+ value: /etc/bess/conf/upf.json
volumeMounts:
{{- if .Values.config.spgwu.hugepage.enabled }}
- name: hugepages
@@ -129,8 +131,8 @@
command: ["/opt/bess/bessctl/conf/route_control.py"]
args:
- -i
- - {{ .Values.config.spgwu.s1u.device }}
- - {{ .Values.config.spgwu.sgi.device }}
+ - {{ index $s1uConfig "ifname" }}
+ - {{ index $sgiConfig "ifname" }}
{{- if .Values.resources.enabled }}
resources:
{{ toYaml .Values.resources.routectl | indent 10 }}
@@ -144,33 +146,31 @@
{{ toYaml .Values.resources.web | indent 10 }}
{{- end }}
- name: cpiface
- image: {{ .Values.images.tags.cpiface | quote }}
+ {{- if eq .Values.config.spgwu.cpiface.mode "zmq" }}
+ image: {{ .Values.images.tags.zmqiface | quote }}
imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
env:
- - name: ZMQD_IP
- valueFrom:
- fieldRef:
- fieldPath: status.podIP
- name: GLOG_v
value: "1"
command: ["zmq-cpiface"]
args:
- - --hostname
- - {{ .Values.config.spgwu.name | quote }}
- - --zmqd_nb_ip
- - {{ .Values.config.spgwu.zmq.spgwc.addr | quote }}
- - --zmqd_nb_port
- - {{ .Values.config.spgwu.zmq.spgwc.port | quote }}
- - --zmqd_recv_port
- - {{ .Values.config.spgwu.zmq.recvPort | quote }}
- - --zmqd_ip
- - $(ZMQD_IP)
- - --s1u_sgw_ip
- - {{ (split "/" .Values.config.spgwu.s1u.ip)._0 | quote }}
+ - --json_config
+ - /tmp/conf/upf.json
+ {{- else }}
+ image: {{ .Values.images.tags.pfcpiface | quote }}
+ imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
+ command: ["pfcpiface"]
+ args:
+ - -config
+ - /tmp/conf/upf.json
+ {{- end }}
{{- if .Values.resources.enabled }}
resources:
{{ toYaml .Values.resources.cpiface | indent 10 }}
{{- end }}
+ volumeMounts:
+ - name: configs
+ mountPath: /tmp/conf
volumes:
- name: configs
configMap:
diff --git a/omec/omec-user-plane/values.yaml b/omec/omec-user-plane/values.yaml
index 5877ed7..648dca7 100644
--- a/omec/omec-user-plane/values.yaml
+++ b/omec/omec-user-plane/values.yaml
@@ -6,7 +6,8 @@
tags:
init: docker.io/omecproject/pod-init:1.0.0
bess: docker.io/omecproject/upf-epc-bess:master-latest
- cpiface: docker.io/omecproject/upf-epc-cpiface:master-latest
+ pfcpiface: docker.io/omecproject/upf-epc-pfcpiface:master-latest
+ zmqiface: docker.io/omecproject/upf-epc-cpiface:master-latest
pullPolicy: Always
nodeSelectors:
@@ -55,39 +56,33 @@
enabled: true
sriov:
enabled: true
- # Provide UPF interface driver.
- # Available options are dpdk, af_xdp, af_packet.
- mode: "dpdk"
- name: "dp-name"
- workers: 1
- maxSessions: 50000
- # Provide the S1U and SGI networks facing device name and IP address
+ # Dynamic IP allocation is not supported yet
+ ipam: static
+ cniPlugin: vfioveth
+ enb:
+ subnet: 192.168.251.0/24
s1u:
- device: s1u
- subnet: 192.168.252.0/24
gateway: 192.168.252.1
ip: 192.168.252.3/24
sgi:
- device: sgi
- subnet: 192.168.250.0/24
gateway: 192.168.250.1
ip: 192.168.250.3/24
- enb:
- subnet: 192.168.251.0/24
- ue:
- subnet: 10.250.0.0/16
- zmq:
- recvPort: 20
- spgwc:
- addr: spgwc-headless
- port: 21
+ cfgFiles:
+ upf.json:
+ mode: dpdk
+ workers: 1
+ max_sessions: 50000
+ cpiface:
+ nb_dst_ip: spgwc-headless
+ hostname: upf-bess
+ s1u:
+ ifname: s1u
+ sgi:
+ ifname: sgi
+ measure: true
bess:
web:
nodePort: 36000
- # Dynamic IP allocation is not supported for the user plane interfaces
- ipam: static
- cniPlugin: vfioveth
- hugepage:
- enabled: true
- sriov:
- enabled: true
+ cpiface:
+ # pfcp or zmq
+ mode: pfcp