AETHER-2175 Add ROC and SimApp for 4G/5G
Change-Id: I36e58853c2681eff4f80bcc50bcad548b9220e49
diff --git a/4g-core-values.yaml b/4g-core-values.yaml
new file mode 100644
index 0000000..3b1add4
--- /dev/null
+++ b/4g-core-values.yaml
@@ -0,0 +1,90 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+# cassandra values
+cassandra:
+ config:
+ cluster_size: 1
+ seed_size: 1
+resources:
+ enabled: false
+
+config:
+ managedByConfigPod:
+ enabled: true
+ # syncUrl: http://sdcore-adapter-v3.aether-roc.svc:8080/synchronize
+ config4g:
+ deploy: true
+ spgwc:
+ pfcp: true
+ cfgFiles:
+ cp.json:
+ ip_pool_config:
+ ueIpPool:
+ ip: "172.250.0.0"
+ mask: "255.255.0.0"
+ staticUeIpPool:
+ ip: "172.250.1.0"
+ mask: "255.255.255.0"
+ simapp:
+ cfgFiles:
+ simapp.yaml:
+ configuration:
+ provision-network-slice: true
+ sub-provision-endpt:
+ addr: config4g
+ port: 5000
+ subscribers:
+ - ueId-start: 208014567891201
+ ueId-end: 208014567891211
+ plmnId: 20801
+ opc: "d4416644f6154936193433dd20a0ace0"
+ op: ""
+ key: "465b5ce8b199b49faa5f0a2ee238a6bc"
+ sequenceNumber: 96
+ device-groups:
+ - name: "4g-oaisim-user"
+ imsis:
+ - "208014567891201"
+ - "208014567891202"
+ ip-domain-name: "pool1"
+ ip-domain-expanded:
+ dnn: internet
+ dns-primary: "8.8.8.8"
+ mtu: 1460
+ ue-ip-pool: "172.250.0.0/16"
+ site-info: "aiab"
+ network-slices:
+ - name: "default"
+ slice-id:
+ sd: "010203"
+ sst: 1
+ site-device-group:
+ - "4g-oaisim-user"
+ applications-information:
+ - app-name: "default-app"
+ end-port: 40000
+ endpoint: "1.1.1.1/32"
+ protocol: 17
+ start-port: 40000
+ deny-applications:
+ - "iot-app-deny"
+ permit-applications:
+ - "iot-app1-permit"
+ - "iot-app2-permit"
+ qos:
+ downlink: 20000000
+ traffic-class: "platinum"
+ uplink: 4000000
+ site-info:
+ gNodeBs:
+ - name: "aiab-gnb1"
+ tac: 1
+ plmn:
+ mcc: "208"
+ mnc: "01"
+ site-name: "aiab"
+ upf:
+ upf-name: "upf"
+ upf-port: 8805
diff --git a/aether-in-a-box-values.yaml b/5g-core-values.yaml
similarity index 62%
rename from aether-in-a-box-values.yaml
rename to 5g-core-values.yaml
index 7734d3a..eb80a69 100644
--- a/aether-in-a-box-values.yaml
+++ b/5g-core-values.yaml
@@ -2,11 +2,6 @@
#
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-# cassandra values
-cassandra:
- config:
- cluster_size: 1
- seed_size: 1
mongodb:
usePassword: false
persistence:
@@ -14,10 +9,10 @@
resources:
enabled: false
-# Enable Nodeport service in UPF to view BESS graph
-#service:
-# type: NodePort
config:
+ managedByConfigPod:
+ enabled: true
+ # syncUrl: http://sdcore-adapter-v3.aether-roc.svc:8080/synchronize
smf:
cfgFiles:
# https://github.com/free5gc/free5gc/blob/main/config/pcfcfg.yaml
@@ -45,86 +40,17 @@
MongoDBName: free5gc # database name in MongoDB
MongoDBUrl: mongodb://mongodb:27017
#MongoDBUrl: mongodb://mongodb:27017 #works with db in omec name space
- spgwc:
- pfcp: true
- cfgFiles:
- cp.json:
- ip_pool_config:
- ueIpPool:
- ip: "172.250.0.0"
- mask: "255.255.0.0"
- staticUeIpPool:
- ip: "172.250.1.0"
- mask: "255.255.255.0"
- upf:
- name: "oaisim"
- sriov:
- enabled: false
- hugepage:
- enabled: false
- cniPlugin: simpleovs
- ipam: static
- cfgFiles:
- upf.json:
- mode: af_packet
- cpiface:
- dnn: "8internet"
- hostname: "upf"
- enable_ue_ip_alloc: false
- ue_ip_pool: 172.250.0.0/16
- mme:
- cfgFiles:
- config.json:
- mme:
- logging: debug
- mcc:
- dig1: 2
- dig2: 0
- dig3: 8
- mnc:
- dig1: 0
- dig2: 1
- dig3: -1
- plmnlist:
- #plmn1 - aether common plmn, plmn2 is for comac-in-box
- plmn1: "mcc=208,mnc=01"
- apnlist:
- internet: "spgwc"
- hss:
- bootstrap:
- users:
- - apn: "internet"
- key: "465b5ce8b199b49faa5f0a2ee238a6bc"
- opc: "d4416644f6154936193433dd20a0ace0"
- sqn: 96
- imsiStart: "208014567891201"
- msisdnStart: "1122334455"
- count: 10
- # oaisim values
- enb:
- mme:
- address: 127.0.0.1
- networks:
- s1u:
- interface: enb
- plmn:
- mcc: "208"
- mnc: "01"
- mnc_length: 2
- ue:
- sim:
- msin: "4567891201"
- api_key: "465b5ce8b199b49faa5f0a2ee238a6bc"
- opc: "d4416644f6154936193433dd20a0ace0"
- msisdn: "1122334456"
simapp:
cfgFiles:
simapp.yaml:
configuration:
provision-network-slice: true
+ sub-provision-endpt:
+ addr: webui
+ port: 5000
subscribers:
- ueId-start: 2089300007487
- ueId-end: 2089300007487
+ ueId-end: 2089300007488
plmnId: 20893
opc: "981d464c7c52eb6e5036234984ad0bcf"
op: ""
diff --git a/Makefile b/Makefile
index a17129b..af38058 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,15 @@
RESOURCEDIR := $(MAKEDIR)/resources
WORKSPACE ?= $(HOME)
VENV ?= $(BUILD)/venv/aiab
-AIABVALUES ?= $(MAKEDIR)/aether-in-a-box-values.yaml
+
+4G_CORE_VALUES ?= $(MAKEDIR)/4g-core-values.yaml
+5G_CORE_VALUES ?= $(MAKEDIR)/5g-core-values.yaml
+OAISIM_VALUES ?= $(MAKEDIR)/oaisim-values.yaml
+ROC_VALUES ?= $(MAKEDIR)/roc-values.yaml
+UPF_VALUES ?= $(MAKEDIR)/upf-values.yaml
+RANSIM_VALUES ?= $(MAKEDIR)/ransim-values.yaml
+ROC_4G_MODELS ?= $(MAKEDIR)/roc-4g-models.json
+ROC_5G_MODELS ?= $(MAKEDIR)/roc-5g-models.json
KUBESPRAY_VERSION ?= release-2.14
DOCKER_VERSION ?= 19.03
@@ -150,8 +158,8 @@
kubectl delete net-attach-def core-net
touch $@
-registry-secret: $(RESOURCEDIR)/aether.registry.yaml
-$(RESOURCEDIR)/aether.registry.yaml:
+auth-secret: $(RESOURCEDIR)/aether.registry.yaml
+$(RESOURCEDIR)/aether.registry.yaml: configs/authentication
kubectl -n omec create secret docker-registry aether.registry \
--docker-server=https://registry.aetherproject.org \
--docker-username=${REGISTRY_USERNAME} \
@@ -163,49 +171,48 @@
kubectl -n omec get secret aether.registry || kubectl create -f $(RESOURCEDIR)/aether.registry.yaml
helm repo update
if [ "$(CHARTS)" == "local" ]; then helm dep up $(OMEC_CONTROL_PLANE_CHART); fi
- helm upgrade --install $(HELM_GLOBAL_ARGS) \
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
--namespace omec \
- --values $(AIABVALUES) \
+ --values $(4G_CORE_VALUES) \
+ sim-app \
+ $(OMEC_SUB_PROVISION_CHART) && \
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
+ --namespace omec \
+ --values $(4G_CORE_VALUES) \
omec-control-plane \
$(OMEC_CONTROL_PLANE_CHART) && \
- kubectl wait pod -n omec --for=condition=Ready -l release=omec-control-plane --timeout=300s && \
- helm upgrade --install $(HELM_GLOBAL_ARGS) \
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
--namespace omec \
- --values $(AIABVALUES) \
+ --values $(UPF_VALUES) \
omec-user-plane \
- $(OMEC_USER_PLANE_CHART) && \
- kubectl wait pod -n omec --for=condition=Ready -l release=omec-user-plane --timeout=300s
+ $(OMEC_USER_PLANE_CHART)
touch $@
$(M)/5g-core: | $(M)/helm-ready /opt/cni/bin/simpleovs /opt/cni/bin/static $(M)/fabric $(RESOURCEDIR)/aether.registry.yaml
kubectl get namespace omec 2> /dev/null || kubectl create namespace omec
- kubectl -n omec get secret aether.registry || kubectl creates -f $(RESOURCEDIR)/aether.registry.yaml
+ kubectl -n omec get secret aether.registry || kubectl create -f $(RESOURCEDIR)/aether.registry.yaml
helm repo update
if [ "$(CHARTS)" == "local" ]; then helm dep up $(5GC_CONTROL_PLANE_CHART); fi
- helm upgrade --install $(HELM_GLOBAL_ARGS) \
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
--namespace omec \
- --values $(AIABVALUES) \
+ --values $(5G_CORE_VALUES) \
sim-app \
$(OMEC_SUB_PROVISION_CHART) && \
- kubectl wait pod -n omec --for=condition=Ready -l release=sim-app --timeout=300s
- helm upgrade --install $(HELM_GLOBAL_ARGS) \
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
--namespace omec \
- --values $(AIABVALUES) \
+ --values $(UPF_VALUES) \
5g-core-up \
$(OMEC_USER_PLANE_CHART) && \
- kubectl wait pod -n omec --for=condition=Ready -l release=5g-core-up --timeout=300s
- helm upgrade --install $(HELM_GLOBAL_ARGS) \
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
--namespace omec \
- --values $(AIABVALUES) \
+ --values $(5G_CORE_VALUES) \
fgc-core \
$(5GC_CONTROL_PLANE_CHART) && \
- kubectl wait pod -n omec --for=condition=Ready -l release=fgc-core --timeout=300s && \
- helm upgrade --install $(HELM_GLOBAL_ARGS) \
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
--namespace omec \
- --values $(AIABVALUES) \
+ --values $(RANSIM_VALUES) \
5g-ransim-plane \
- $(5G_RAN_SIM_CHART) && \
- kubectl wait pod -n omec --for=condition=Ready -l release=5g-ransim-plane --timeout=300s
+ $(5G_RAN_SIM_CHART)
touch $@
# UE images includes kernel module, ue_ip.ko
@@ -225,7 +232,7 @@
$(M)/oaisim: | $(M)/ue-image $(M)/omec
sudo ip addr add 127.0.0.2/8 dev lo || true
$(eval mme_iface=$(shell ip -4 route list default | awk -F 'dev' '{ print $$2; exit }' | awk '{ print $$1 }'))
- helm upgrade --install $(HELM_GLOBAL_ARGS) --namespace omec oaisim cord/oaisim -f $(AIABVALUES) \
+ helm upgrade --install $(HELM_GLOBAL_ARGS) --namespace omec oaisim cord/oaisim -f $(OAISIM_VALUES) \
--set config.enb.networks.s1_mme.interface=$(mme_iface) \
--set images.pullPolicy=IfNotPresent
kubectl rollout status -n omec statefulset ue
@@ -237,6 +244,64 @@
done"
touch $@
+roc: $(M)/roc
+$(M)/roc: $(M)/helm-ready
+ kubectl get namespace aether-roc 2> /dev/null || kubectl create namespace aether-roc
+ helm repo update
+ if [ "$(CHARTS)" == "local" ]; then helm dep up $(AETHER_ROC_UMBRELLA_CHART); fi
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
+ --namespace kube-system \
+ --values $(ROC_VALUES) \
+ atomix-controller \
+ $(ATOMIX_CONTROLLER_CHART)
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
+ --namespace kube-system \
+ --values $(ROC_VALUES) \
+ atomix-raft-storage \
+ $(ATOMIX_RAFT_STORAGE_CHART)
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
+ --namespace kube-system \
+ --values $(ROC_VALUES) \
+ onos-operator \
+ $(ONOS_OPERATOR_CHART)
+ helm upgrade --install --wait $(HELM_GLOBAL_ARGS) \
+ --namespace aether-roc \
+ --values $(ROC_VALUES) \
+ aether-roc-umbrella \
+ $(AETHER_ROC_UMBRELLA_CHART)
+ touch $@
+
+# Load the ROC 4G models. Disable loading network slice from SimApp.
+roc-4g-models: $(M)/roc
+ sed -i 's/provision-network-slice: true/provision-network-slice: false/' $(4G_CORE_VALUES)
+ sed -i 's/# syncUrl/syncUrl/' $(4G_CORE_VALUES)
+ $(eval ONOS_CLI_POD := $(shell kubectl -n aether-roc get pods -l name=onos-cli -o name))
+ echo "ONOS CLI pod: ${ONOS_CLI_POD}"
+ until kubectl -n aether-roc exec ${ONOS_CLI_POD} -- \
+ curl -s -f -L -X PATCH "http://aether-roc-api:8181/aether-roc-api" \
+ --header 'Content-Type: application/json' \
+ --data-raw "$$(cat ${ROC_4G_MODELS})"; do sleep 5; done
+
+# Load the ROC 5G models. Disable loading network slice from SimApp.
+roc-5g-models: $(M)/roc
+ sed -i 's/provision-network-slice: true/provision-network-slice: false/' $(5G_CORE_VALUES)
+ sed -i 's/# syncUrl/syncUrl/' $(5G_CORE_VALUES)
+ $(eval ONOS_CLI_POD := $(shell kubectl -n aether-roc get pods -l name=onos-cli -o name))
+ echo "ONOS CLI pod: ${ONOS_CLI_POD}"
+ until kubectl -n aether-roc exec ${ONOS_CLI_POD} -- \
+ curl -s -f -L -X PATCH "http://aether-roc-api:8181/aether-roc-api" \
+ --header 'Content-Type: application/json' \
+ --data-raw "$$(cat ${ROC_5G_MODELS})"; do sleep 5; done
+
+roc-clean:
+ @echo "This could take 2-3 minutes..."
+ sed -i 's/provision-network-slice: false/provision-network-slice: true/' $(4G_CORE_VALUES)
+ sed -i 's/ syncUrl/ # syncUrl/' $(4G_CORE_VALUES)
+ sed -i 's/provision-network-slice: false/provision-network-slice: true/' $(5G_CORE_VALUES)
+ sed -i 's/ syncUrl/ # syncUrl/' $(5G_CORE_VALUES)
+ kubectl delete namespace aether-roc || true
+ rm -rf $(M)/roc
+
test: | $(M)/fabric $(M)/omec $(M)/oaisim
@sleep 5
@echo "Test1: ping from UE to SGI network gateway"
@@ -248,18 +313,12 @@
@echo "Finished to test"
reset-test:
- helm delete -n omec oaisim || true
- helm delete -n omec omec-control-plane || true
- helm delete -n omec omec-user-plane || true
+ kubectl delete namespace omec || true
kubectl delete po router || true
cd $(M); rm -f oaisim omec fabric
reset-5g-test:
- helm uninstall -n omec sim-app || true
- helm uninstall -n omec fgc-core || true
- helm uninstall -n omec 5g-core-up || true
- helm uninstall -n omec 5g-ransim-plane || true
- helm uninstall -n omec mongo || true
+ kubectl delete namespace omec || true
cd $(M); rm -f 5g-core
clean: reset-test
diff --git a/configs/authentication b/configs/authentication
index e8cd76a..1061631 100644
--- a/configs/authentication
+++ b/configs/authentication
@@ -9,4 +9,4 @@
# Configure auth for private Docker registry. Override with credentials
# obtained from https://registry.aetherproject.org.
REGISTRY_USERNAME := myuser
-REGISTRY_CLI_SECRET := my-cli-secret
\ No newline at end of file
+REGISTRY_CLI_SECRET := my-cli-secret
diff --git a/configs/latest b/configs/latest
index 0ddf53e..8b06999 100644
--- a/configs/latest
+++ b/configs/latest
@@ -6,4 +6,10 @@
OMEC_USER_PLANE_CHART := aether/omec-user-plane
OMEC_SUB_PROVISION_CHART := aether/omec-sub-provision
5GC_CONTROL_PLANE_CHART := aether/5g-control-plane
-5G_RAN_SIM_CHART := aether/5g-ran-sim
\ No newline at end of file
+5G_RAN_SIM_CHART := aether/5g-ran-sim
+
+# For installing the ROC
+AETHER_ROC_UMBRELLA_CHART := sdran/aether-roc-umbrella
+ATOMIX_CONTROLLER_CHART := atomix/atomix-controller
+ATOMIX_RAFT_STORAGE_CHART := atomix/atomix-raft-storage
+ONOS_OPERATOR_CHART := onosproject/onos-operator
diff --git a/configs/local b/configs/local
index f0ecf6f..751b9a7 100644
--- a/configs/local
+++ b/configs/local
@@ -6,4 +6,10 @@
OMEC_USER_PLANE_CHART := $(WORKSPACE)/cord/aether-helm-charts/omec/omec-user-plane
OMEC_SUB_PROVISION_CHART := $(WORKSPACE)/cord/aether-helm-charts/omec/omec-sub-provision
5GC_CONTROL_PLANE_CHART := $(WORKSPACE)/cord/aether-helm-charts/omec/5g-control-plane
-5G_RAN_SIM_CHART := $(WORKSPACE)/cord/aether-helm-charts/omec/5g-ran-sim
\ No newline at end of file
+5G_RAN_SIM_CHART := $(WORKSPACE)/cord/aether-helm-charts/omec/5g-ran-sim
+
+# For installing the ROC
+AETHER_ROC_UMBRELLA_CHART := $(WORKSPACE)/cord/sdran-helm-charts/aether-roc-umbrella
+ATOMIX_CONTROLLER_CHART := $(WORKSPACE)/cord/atomix-helm-charts/atomix-controller
+ATOMIX_RAFT_STORAGE_CHART := $(WORKSPACE)/cord/atomix-helm-charts/atomix-raft-storage
+ONOS_OPERATOR_CHART := $(WORKSPACE)/cord/onos-helm-charts/onos-operator
\ No newline at end of file
diff --git a/configs/rc-1.5 b/configs/rc-1.5
index c655621..217bb9a 100644
--- a/configs/rc-1.5
+++ b/configs/rc-1.5
@@ -2,8 +2,19 @@
#
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-OMEC_CONTROL_PLANE_CHART := aether/omec-control-plane --version 0.6.23
-OMEC_USER_PLANE_CHART := aether/omec-user-plane --version 0.3.33
-OMEC_SUB_PROVISION_CHART := aether/omec-sub-provision --version 0.0.6
-5GC_CONTROL_PLANE_CHART := aether/5g-control-plane --version 0.2.20
-5G_RAN_SIM_CHART := aether/5g-ran-sim --version 0.0.2
\ No newline at end of file
+OMEC_CONTROL_PLANE_CHART := aether/omec-control-plane --version 0.6.25
+OMEC_USER_PLANE_CHART := aether/omec-user-plane --version 0.3.36
+
+# Release version of omec-sub-provision is actually 0.0.6 but that version
+# is unable to configure network slices and device groups. That's only an
+# issue if not using the ROC. It is fixed in 0.1.1.
+OMEC_SUB_PROVISION_CHART := aether/omec-sub-provision --version 0.1.1
+
+5GC_CONTROL_PLANE_CHART := aether/5g-control-plane --version 0.2.21
+5G_RAN_SIM_CHART := aether/5g-ran-sim --version 0.0.2
+
+# For installing the ROC
+AETHER_ROC_UMBRELLA_CHART := sdran/aether-roc-umbrella --version 1.3.6
+ATOMIX_CONTROLLER_CHART := atomix/atomix-controller --version 0.6.8
+ATOMIX_RAFT_STORAGE_CHART := atomix/atomix-raft-storage --version 0.1.9
+ONOS_OPERATOR_CHART := onosproject/onos-operator --version 0.4.10
diff --git a/oaisim-values.yaml b/oaisim-values.yaml
new file mode 100644
index 0000000..708e258
--- /dev/null
+++ b/oaisim-values.yaml
@@ -0,0 +1,21 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+config:
+ enb:
+ mme:
+ address: 127.0.0.1
+ networks:
+ s1u:
+ interface: enb
+ plmn:
+ mcc: "208"
+ mnc: "01"
+ mnc_length: 2
+ ue:
+ sim:
+ msin: "4567891201"
+ api_key: "465b5ce8b199b49faa5f0a2ee238a6bc"
+ opc: "d4416644f6154936193433dd20a0ace0"
+ msisdn: "1122334456"
diff --git a/ransim-values.yaml b/ransim-values.yaml
new file mode 100644
index 0000000..00bb745
--- /dev/null
+++ b/ransim-values.yaml
@@ -0,0 +1,6 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+resources:
+ enabled: false
diff --git a/roc-4g-models.json b/roc-4g-models.json
new file mode 100644
index 0000000..28cfca1
--- /dev/null
+++ b/roc-4g-models.json
@@ -0,0 +1,185 @@
+{
+ "default-target": "connectivity-service-v3",
+ "Updates": {
+ "ap-list-3.0.0": {
+ "ap-list": [
+ {
+ "access-points": [
+ {
+ "address": "aiab-gnb1",
+ "enable": true,
+ "tac": "0001"
+ }
+ ],
+ "description": "AiaB Access Points",
+ "display-name": "AiaB APs",
+ "enterprise": "aiab-enterprise",
+ "id": "aiab-qa-app"
+ }
+ ]
+ },
+ "application-3.0.0": {
+ "application": [
+ {
+ "description": "AiaB - Test application",
+ "display-name": "TestApp",
+ "enterprise": "aiab-enterprise",
+ "endpoint": [
+ {
+ "address": "1.1.1.1",
+ "name": "aiab-testapp",
+ "port-end": 40000,
+ "port-start": 40000,
+ "protocol": "UDP"
+ }
+ ],
+ "id": "aiab-testapp"
+ }
+ ]
+ },
+ "connectivity-service-3.0.0": {
+ "connectivity-service": [
+ {
+ "core-5g-endpoint": "http://config4g.omec.svc:5000/config",
+ "description": "4G Integration Test",
+ "display-name": "ROC 4G Test Connectivity Service",
+ "id": "aiab-cs"
+ }
+ ]
+ },
+ "device-group-3.0.0": {
+ "device-group": [
+ {
+ "display-name": "AiaB Users",
+ "id": "aiab-device-group",
+ "imsis": [
+ {
+ "imsi-range-from": 208014567891201,
+ "imsi-range-to": 208014567891202,
+ "name": "aiab-imsis"
+ }
+ ],
+ "ip-domain": "aiab-ip-pool",
+ "site": "aiab-site"
+ }
+ ]
+ },
+ "enterprise-3.0.0": {
+ "enterprise": [
+ {
+ "connectivity-service": [
+ {
+ "connectivity-service": "aiab-cs",
+ "enabled": true
+ }
+ ],
+ "description": "AiaB Enterprise",
+ "display-name": "AiaB Corp.",
+ "id": "aiab-enterprise"
+ }
+ ]
+ },
+ "ip-domain-3.0.0": {
+ "ip-domain": [
+ {
+ "admin-status": "ENABLE",
+ "display-name": "IP pool",
+ "dns-primary": "8.8.8.8",
+ "id": "aiab-ip-pool",
+ "mtu": 1460,
+ "subnet": "172.250.0.0/16",
+ "enterprise": "aiab-enterprise"
+ }
+ ]
+ },
+ "site-3.0.0": {
+ "site": [
+ {
+ "description": "AiaB test site",
+ "display-name": "AiaB site",
+ "enterprise": "aiab-enterprise",
+ "id": "aiab-site",
+ "imsi-definition": {
+ "mcc": "208",
+ "mnc": "01",
+ "enterprise": 0,
+ "format": "SSSSSSSSSSSSSSS"
+ }
+ }
+ ]
+ },
+ "template-3.0.0": {
+ "template": [
+ {
+ "description": "Test Template",
+ "display-name": "Test Template",
+ "downlink": 200,
+ "id": "aiab-template",
+ "sd": 66051,
+ "sst": 1,
+ "traffic-class": "aiab-class-1",
+ "uplink": 40
+ }
+ ]
+ },
+ "traffic-class-3.0.0": {
+ "traffic-class": [
+ {
+ "description": "High Priority TC",
+ "display-name": "Class 1",
+ "id": "aiab-class-1",
+ "pdb": 100,
+ "pelr": 3,
+ "qci": 1
+ }
+ ]
+ },
+ "upf-3.0.0": {
+ "upf": [
+ {
+ "address": "upf",
+ "description": "AiaB UPF",
+ "display-name": "AiaB UPF",
+ "id": "aiab-upf",
+ "enterprise": "aiab-enterprise",
+ "port": 8805
+ }
+ ]
+ },
+ "vcs-3.0.0": {
+ "vcs": [
+ {
+ "id": "aiab-vcs",
+ "template": "aiab-template",
+ "enterprise": "aiab-enterprise",
+ "uplink": 40,
+ "downlink": 200,
+ "traffic-class": "aiab-class-1",
+ "description": "AiaB Virtual Connectivity Service",
+ "display-name": "AiaB VCS",
+ "device-group": [
+ {
+ "device-group": "aiab-device-group",
+ "enable": true
+ }
+ ],
+ "upf": "aiab-upf",
+ "sd": 66051,
+ "sst": 1,
+ "ap": "aiab-qa-app",
+ "application": [
+ {
+ "application": "aiab-testapp",
+ "allow": true
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "Deletes": {},
+ "Extensions": {
+ "model-version-101": "3.0.0",
+ "model-type-102": "Aether"
+ }
+}
diff --git a/roc-4g-models.json.license b/roc-4g-models.json.license
new file mode 100644
index 0000000..0508f22
--- /dev/null
+++ b/roc-4g-models.json.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
\ No newline at end of file
diff --git a/roc-5g-models.json b/roc-5g-models.json
new file mode 100644
index 0000000..b168ede
--- /dev/null
+++ b/roc-5g-models.json
@@ -0,0 +1,185 @@
+{
+ "default-target": "connectivity-service-v3",
+ "Updates": {
+ "ap-list-3.0.0": {
+ "ap-list": [
+ {
+ "access-points": [
+ {
+ "address": "aiab-gnb1",
+ "enable": true,
+ "tac": "0001"
+ }
+ ],
+ "description": "AiaB Access Points",
+ "display-name": "AiaB APs",
+ "enterprise": "aiab-enterprise",
+ "id": "aiab-qa-app"
+ }
+ ]
+ },
+ "application-3.0.0": {
+ "application": [
+ {
+ "description": "AiaB - Test application",
+ "display-name": "TestApp",
+ "enterprise": "aiab-enterprise",
+ "endpoint": [
+ {
+ "address": "1.1.1.1",
+ "name": "aiab-testapp",
+ "port-end": 40000,
+ "port-start": 40000,
+ "protocol": "UDP"
+ }
+ ],
+ "id": "aiab-testapp"
+ }
+ ]
+ },
+ "connectivity-service-3.0.0": {
+ "connectivity-service": [
+ {
+ "core-5g-endpoint": "http://webui.omec.svc:5000/config",
+ "description": "5G Integration Test",
+ "display-name": "ROC 5G Test Connectivity Service",
+ "id": "aiab-cs"
+ }
+ ]
+ },
+ "device-group-3.0.0": {
+ "device-group": [
+ {
+ "display-name": "AiaB Users",
+ "id": "aiab-device-group",
+ "imsis": [
+ {
+ "imsi-range-from": 2089300007487,
+ "imsi-range-to": 2089300007488,
+ "name": "aiab-imsis"
+ }
+ ],
+ "ip-domain": "aiab-ip-pool",
+ "site": "aiab-site"
+ }
+ ]
+ },
+ "enterprise-3.0.0": {
+ "enterprise": [
+ {
+ "connectivity-service": [
+ {
+ "connectivity-service": "aiab-cs",
+ "enabled": true
+ }
+ ],
+ "description": "AiaB Enterprise",
+ "display-name": "AiaB Corp.",
+ "id": "aiab-enterprise"
+ }
+ ]
+ },
+ "ip-domain-3.0.0": {
+ "ip-domain": [
+ {
+ "admin-status": "ENABLE",
+ "display-name": "IP pool",
+ "dns-primary": "8.8.8.8",
+ "id": "aiab-ip-pool",
+ "mtu": 1460,
+ "subnet": "172.250.0.0/16",
+ "enterprise": "aiab-enterprise"
+ }
+ ]
+ },
+ "site-3.0.0": {
+ "site": [
+ {
+ "description": "AiaB test site",
+ "display-name": "AiaB site",
+ "enterprise": "aiab-enterprise",
+ "id": "aiab-site",
+ "imsi-definition": {
+ "mcc": "208",
+ "mnc": "93",
+ "enterprise": 0,
+ "format": "SSSSSSSSSSSSSSS"
+ }
+ }
+ ]
+ },
+ "template-3.0.0": {
+ "template": [
+ {
+ "description": "Test Template",
+ "display-name": "Test Template",
+ "downlink": 200,
+ "id": "aiab-template",
+ "sd": 66051,
+ "sst": 1,
+ "traffic-class": "aiab-class-1",
+ "uplink": 40
+ }
+ ]
+ },
+ "traffic-class-3.0.0": {
+ "traffic-class": [
+ {
+ "description": "High Priority TC",
+ "display-name": "Class 1",
+ "id": "aiab-class-1",
+ "pdb": 100,
+ "pelr": 3,
+ "qci": 1
+ }
+ ]
+ },
+ "upf-3.0.0": {
+ "upf": [
+ {
+ "address": "upf",
+ "description": "AiaB UPF",
+ "display-name": "AiaB UPF",
+ "id": "aiab-upf",
+ "enterprise": "aiab-enterprise",
+ "port": 8805
+ }
+ ]
+ },
+ "vcs-3.0.0": {
+ "vcs": [
+ {
+ "id": "aiab-vcs",
+ "template": "aiab-template",
+ "enterprise": "aiab-enterprise",
+ "uplink": 40,
+ "downlink": 200,
+ "traffic-class": "aiab-class-1",
+ "description": "AiaB Virtual Connectivity Service",
+ "display-name": "AiaB VCS",
+ "device-group": [
+ {
+ "device-group": "aiab-device-group",
+ "enable": true
+ }
+ ],
+ "upf": "aiab-upf",
+ "sd": 66051,
+ "sst": 1,
+ "ap": "aiab-qa-app",
+ "application": [
+ {
+ "application": "aiab-testapp",
+ "allow": true
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "Deletes": {},
+ "Extensions": {
+ "model-version-101": "3.0.0",
+ "model-type-102": "Aether"
+ }
+}
diff --git a/roc-5g-models.json.license b/roc-5g-models.json.license
new file mode 100644
index 0000000..0508f22
--- /dev/null
+++ b/roc-5g-models.json.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
\ No newline at end of file
diff --git a/roc-values.yaml b/roc-values.yaml
new file mode 100644
index 0000000..5b1e11b
--- /dev/null
+++ b/roc-values.yaml
@@ -0,0 +1,47 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+global:
+ storage:
+ controller: "atomix-controller.kube-system:5679"
+ store:
+ consensus:
+ enabled: true
+ clusters: 1
+ replicas: 1
+ partitions: 1
+
+import:
+ aether-roc-gui:
+ v2_1:
+ enabled: false
+ v3:
+ enabled: true
+ sdcore-adapter:
+ v2_1:
+ enabled: false
+ v3:
+ enabled: true
+ sdcore-test-dummy:
+ enabled: false
+
+onos-gui:
+ ingress:
+ enabled: false
+ service:
+ type: NodePort
+
+aether-roc-gui-v3:
+ ingress:
+ enabled: false
+ service:
+ type: NodePort
+
+prometheus:
+ alertmanager:
+ persistentVolume:
+ enabled: false
+ server:
+ persistentVolume:
+ enabled: false
diff --git a/upf-values.yaml b/upf-values.yaml
new file mode 100644
index 0000000..7aa89f0
--- /dev/null
+++ b/upf-values.yaml
@@ -0,0 +1,24 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+resources:
+ enabled: false
+
+config:
+ upf:
+ name: "oaisim"
+ sriov:
+ enabled: false
+ hugepage:
+ enabled: false
+ cniPlugin: simpleovs
+ ipam: static
+ cfgFiles:
+ upf.json:
+ mode: af_packet
+ cpiface:
+ dnn: "internet"
+ hostname: "upf"
+ enable_ue_ip_alloc: false
+ ue_ip_pool: 172.250.0.0/16