AETHER-17 Add support of BESS upf to comac-in-a-box

Also converged various configs under config.spgwu

Change-Id: I4f3383bb280494326a417ec6172427f806829f71
diff --git a/omec/omec-user-plane/Chart.yaml b/omec/omec-user-plane/Chart.yaml
index 59b50bc..b3e54c4 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.4
+version: 0.1.5
diff --git a/omec/omec-user-plane/templates/config/_spgwu.json.tpl b/omec/omec-user-plane/templates/config/_spgwu.json.tpl
index ba36cc7..e667a86 100644
--- a/omec/omec-user-plane/templates/config/_spgwu.json.tpl
+++ b/omec/omec-user-plane/templates/config/_spgwu.json.tpl
@@ -1,6 +1,7 @@
 {
-  "ue_cidr": {{ .Values.networks.ue.subnet | quote }},
-  "enb_cidr": {{ .Values.networks.enb.subnet | quote }},
+  "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 }}
   },
diff --git a/omec/omec-user-plane/templates/networks.yaml b/omec/omec-user-plane/templates/networks.yaml
index 40ca04b..d9bd41a 100644
--- a/omec/omec-user-plane/templates/networks.yaml
+++ b/omec/omec-user-plane/templates/networks.yaml
@@ -9,15 +9,15 @@
 kind: NetworkAttachmentDefinition
 metadata:
   name: s1u-net
-{{- if $.Values.networks.sriov.enabled }}
+{{- if $.Values.config.spgwu.sriov.enabled }}
   annotations:
     k8s.v1.cni.cncf.io/resourceName: intel.com/sriov_vfio_s1u_net
 {{- end }}
 spec:
   config: '{
-    "type": {{ .Values.networks.cniPlugin | quote }},
+    "type": {{ .Values.config.spgwu.cniPlugin | quote }},
     "ipam": {
-        "type": {{ .Values.networks.ipam | quote }}
+        "type": {{ .Values.config.spgwu.ipam | quote }}
     }
   }'
 ---
@@ -25,14 +25,14 @@
 kind: NetworkAttachmentDefinition
 metadata:
   name: sgi-net
-{{- if $.Values.networks.sriov.enabled }}
+{{- if $.Values.config.spgwu.sriov.enabled }}
   annotations:
     k8s.v1.cni.cncf.io/resourceName: intel.com/sriov_vfio_sgi_net
 {{- end }}
 spec:
   config: '{
-    "type": {{ .Values.networks.cniPlugin | quote }},
+    "type": {{ .Values.config.spgwu.cniPlugin | quote }},
     "ipam": {
-        "type": {{ .Values.networks.ipam | quote }}
+        "type": {{ .Values.config.spgwu.ipam | quote }}
     }
   }'
diff --git a/omec/omec-user-plane/templates/service-spgwu.yaml b/omec/omec-user-plane/templates/service-spgwu.yaml
index efa09ba..ddb2967 100644
--- a/omec/omec-user-plane/templates/service-spgwu.yaml
+++ b/omec/omec-user-plane/templates/service-spgwu.yaml
@@ -34,4 +34,4 @@
   - name: bess-web
     protocol: TCP
     port: 8000
-    nodePort: {{ .Values.config.bess.web.nodePort }}
+    nodePort: {{ .Values.config.spgwu.bess.web.nodePort }}
diff --git a/omec/omec-user-plane/templates/statefulset-spgwu.yaml b/omec/omec-user-plane/templates/statefulset-spgwu.yaml
index 57fc312..963f27a 100644
--- a/omec/omec-user-plane/templates/statefulset-spgwu.yaml
+++ b/omec/omec-user-plane/templates/statefulset-spgwu.yaml
@@ -46,8 +46,9 @@
         imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
         command: ["sh", "-xec"]
         args:
-        - ip route add {{ .Values.networks.enb.subnet }} via {{ .Values.networks.s1u.gateway }};
-          ip route add default via {{ .Values.networks.sgi.gateway }} metric 110;
+        - ip route replace {{ .Values.config.spgwu.enb.subnet }} via {{ .Values.config.spgwu.s1u.gateway }};
+          ip route replace default via {{ .Values.config.spgwu.sgi.gateway }} metric 110;
+          iptables -I OUTPUT -p icmp --icmp-type port-unreachable -j DROP;
         securityContext:
           capabilities:
             add:
@@ -66,7 +67,13 @@
             - NET_ADMIN
         stdin: true
         tty: true
-        command: ["/bin/bash", "-xc", "bessd -f -grpc-url=0.0.0.0:10514;"]
+        command: ["/bin/bash", "-xc"]
+        args:
+        {{- if .Values.config.spgwu.hugepage.enabled }}
+          - bessd -f -grpc-url=0.0.0.0:10514
+        {{- else }}
+          - bessd -m 0 -f -grpc-url=0.0.0.0:10514
+        {{- end }}
         lifecycle:
           postStart:
             exec:
@@ -81,7 +88,10 @@
           {{- if .Values.resources.enabled }}
 {{ toYaml .Values.resources.bess.requests | indent 12 }}
           {{- end }}
-          {{- if .Values.networks.sriov.enabled }}
+          {{- if .Values.config.spgwu.hugepage.enabled }}
+            hugepages-1Gi: 2Gi
+          {{- end }}
+          {{- if .Values.config.spgwu.sriov.enabled }}
             intel.com/sriov_vfio_s1u_net: 1
             intel.com/sriov_vfio_sgi_net: 1
           {{- end }}
@@ -89,7 +99,10 @@
           {{- if .Values.resources.enabled }}
 {{ toYaml .Values.resources.bess.limits | indent 12 }}
           {{- end }}
-          {{- if .Values.networks.sriov.enabled }}
+          {{- if .Values.config.spgwu.hugepage.enabled }}
+            hugepages-1Gi: 2Gi
+          {{- end }}
+          {{- if .Values.config.spgwu.sriov.enabled }}
             intel.com/sriov_vfio_s1u_net: 1
             intel.com/sriov_vfio_sgi_net: 1
           {{- end }}
@@ -97,8 +110,10 @@
           - name: CONF_FILE
             value: /etc/bess/conf/spgwu.json
         volumeMounts:
+        {{- if .Values.config.spgwu.hugepage.enabled }}
           - name: hugepages
             mountPath: /dev/hugepages
+        {{- end }}
           - name: configs
             mountPath: /etc/bess/conf
         {{- if .Values.config.coreDump.enabled }}
@@ -161,9 +176,11 @@
         configMap:
           name: spgwu
           defaultMode: 493
+    {{- if .Values.config.spgwu.hugepage.enabled }}
       - name: hugepages
         emptyDir:
           medium: HugePages
+    {{- end }}
     {{- if .Values.config.coreDump.enabled }}
       - name: host-rootfs
         hostPath:
diff --git a/omec/omec-user-plane/values.yaml b/omec/omec-user-plane/values.yaml
index eaba8c9..5877ed7 100644
--- a/omec/omec-user-plane/values.yaml
+++ b/omec/omec-user-plane/values.yaml
@@ -5,8 +5,8 @@
 images:
   tags:
     init: docker.io/omecproject/pod-init:1.0.0
-    bess: registry.central.aetherproject.net/upf-epc-bess:0.1.0-dev
-    cpiface: registry.central.aetherproject.net/upf-epc-cpiface:0.1.0-dev
+    bess: docker.io/omecproject/upf-epc-bess:master-latest
+    cpiface: docker.io/omecproject/upf-epc-cpiface:master-latest
   pullPolicy: Always
 
 nodeSelectors:
@@ -19,11 +19,9 @@
   enabled: true
   bess:
     requests:
-      hugepages-1Gi: 2Gi
       cpu: 2
       memory: 256Mi
     limits:
-      hugepages-1Gi: 2Gi
       cpu: 2
       memory: 256Mi
   routectl:
@@ -52,42 +50,44 @@
   coreDump:
     enabled: false
     path: /tmp/coredump
-  # Provide UPF interface driver.
-  # Available options are dpdk, af_xdp, af_packet.
-  mode: "dpdk"
   spgwu:
-    name: "dp-staging"
+    hugepage:
+      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
     s1u:
       device: s1u
-      ip: 192.168.252.7/24
+      subnet: 192.168.252.0/24
+      gateway: 192.168.252.1
+      ip: 192.168.252.3/24
     sgi:
       device: sgi
-      ip: 192.168.250.7/24
+      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.omec.svc.staging.central
+        addr: spgwc-headless
         port: 21
-  bess:
-    web:
-      nodePort: 36000
-
-networks:
-  sriov:
-    enabled: true
-  cniPlugin: vfioveth
-  # Dynamic IP allocation is not supported for the user plane interfaces
-  ipam: static
-  enb:
-    subnet: 192.168.251.0/24
-  ue:
-    subnet: 10.250.0.0/16
-  sgi:
-    subnet: 192.168.250.0/24
-    gateway: 192.168.250.1
-  s1u:
-    subnet: 192.168.252.0/24
-    gateway: 192.168.252.1
+    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