Skip to content
Snippets Groups Projects
Commit f55b345f authored by Sagar Arora's avatar Sagar Arora :bicyclist_tone1: Committed by Raphael Defosseux
Browse files

Corrections on helm-chart:

* Adding back, plmn and mcc information for basic core
* Correcting the interfaces for smf, cu, cu-cp and cu-up
* Correcting the readme with steps to configure cu, cu-cp and cu-up
parent c43041d4
No related branches found
No related tags found
1 merge request!118Corrections on helm-chart
Showing
with 325 additions and 144 deletions
......@@ -33,4 +33,16 @@ helm dependency update
```
helm spray .
```
\ No newline at end of file
```
## Note:
If you want to use `oai-spgwu-tiny` with a single interface then you can enable any one out of three interfaces. Lets say we enable `multus.n3Interface.create`. Then change the below configuration parameters
```
n3If: "n3" # n3 if multus.n3Interface.create is true
n4If: "eth0" # n4 if multus.n4Interface.create is true
n6If: "eth0" # n6 multus.n6Interface.create is true
```
Make sure `n3` subnet is reachable from gNB.
\ No newline at end of file
......@@ -80,12 +80,14 @@ oai-amf:
imagePullSecrets:
- name: "regcred"
multus:
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n2Interface:
create: false
Ipadd: "172.21.6.94"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n2"
## If you do not have a gateway leave the field empty
Gateway:
## If you do not want to add any routes in your pod then leave this field empty
......@@ -103,6 +105,8 @@ oai-amf:
# Note only SST is mandatory for a slice SD is optional
sst1: "1"
sd1: "1"
mcc: "001"
mnc: "01"
tac: "0x0001"
nfRegistration: "yes"
smfSelection: "no" #Bug in SMF can not have SMF selection when using UDR to fetch user-information
......@@ -126,34 +130,42 @@ oai-spgwu-tiny:
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
defaultGateway: "172.21.7.254"
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n3Interface:
create: false
Ipadd: "172.21.6.95"
Ipadd: "172.21.8.95"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n3"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
## If you do not want to add any routes in your pod then leave this field empty
routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
Gateway: ""
## If you don't want to add a default route in your pod then replace this field with ""
routes: [{'dst': '10.8.0.0/24','gw': '172.21.11.254'}, {'dst': '10.9.0.0/24','gw': '172.21.11.254'}]
hostInterface: "bond0"
## For n4 it is better to re-use eth0 interface inside the pod (primary CNI of Kubernetes)
n4Interface:
create: false
Ipadd: "172.21.16.89"
Netmask: "22"
Ipadd: "192.168.24.2"
Netmask: "24"
# #name inside the pod is hardcoded right now
# name: "n4"
## If you do not have a gateway leave the field empty
Gateway: "172.21.19.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond1"
routes: ""
hostInterface: "bond0"
n6Interface:
create: false
Ipadd: "172.21.8.80"
Netmask: "22"
Ipadd: "192.168.22.2"
# #name inside the pod is hardcoded right now
# name: "n6"
Netmask: "24"
## If you do not have a gateway leave the field empty
Gateway: "172.21.11.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond2"
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
n3If: "eth0" # n3 if multus.n3Interface.create is true
......@@ -208,15 +220,23 @@ oai-smf:
pullPolicy: IfNotPresent
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
multus:
create: false
n4IPadd: "172.21.6.98"
n4Netmask: "22"
## If you don't have a gateway leave the field empty or commented
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n4Interface:
create: false
Ipadd: "192.168.24.3"
Netmask: "24"
## If you do not have a gateway leave the field empty
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
nodeSelector: {}
imagePullSecrets:
- name: "regcred"
config:
smfInterfaceNameForN4: "eth0" # if multus.n4Interface.create is true then n4 else eth0
smfInterfaceNameForSBI: "eth0"
useLocalSubscriptionInfo: "no" #this means ip-address information will be fetched from UDR
ueMtu: 1500
logLevel: "debug" #allowed info/error/debug
......
......@@ -42,6 +42,8 @@ oai-amf:
create: false
Ipadd: "172.21.6.94"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n2"
## If you do not have a gateway leave the field empty
Gateway:
## If you do not want to add any routes in your pod then leave this field empty
......@@ -87,34 +89,42 @@ oai-spgwu-tiny:
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
defaultGateway: "172.21.7.254"
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: ""
n3Interface:
create: false
Ipadd: "172.21.6.95"
Ipadd: "172.21.8.95"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n3"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
routes: [{'dst': '10.8.0.0/24','gw': '172.21.11.254'}, {'dst': '10.9.0.0/24','gw': '172.21.11.254'}]
hostInterface: "bond0"
## For n4 it is better to re-use eth0 interface inside the pod (primary CNI of Kubernetes)
n4Interface:
create: false
Ipadd: "172.21.16.89"
Netmask: "22"
Ipadd: "192.168.24.2"
Netmask: "24"
# #name inside the pod is hardcoded right now
# name: "n4"
## If you do not have a gateway leave the field empty
Gateway: "172.21.19.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond1"
routes: ""
hostInterface: "bond0"
n6Interface:
create: false
Ipadd: "172.21.8.80"
Netmask: "22"
Ipadd: "192.168.22.2"
# #name inside the pod is hardcoded right now
# name: "n6"
Netmask: "24"
## If you do not have a gateway leave the field empty
Gateway: "172.21.11.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond2"
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
n3If: "eth0" # n3 if multus.n3Interface.create is true
......@@ -147,19 +157,23 @@ oai-smf:
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
multus:
create: false
n4IPadd: "172.21.6.98"
n4Netmask: "22"
## If you don't want to add a gateway in your pod then leave this field empty
gateway: 172.21.7.254
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
defaultGateway: ""
n4Interface:
create: false
Ipadd: "192.168.24.3"
Netmask: "24"
## If you do not have a gateway leave the field empty
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
nodeSelector: {}
imagePullSecrets:
- name: "regcred"
nodeSelector: {}
config:
smfInterfaceNameForN4: "eth0" # if multus.n4Interface.create is true then n4 else eth0
smfInterfaceNameForSBI: "eth0"
ueMtu: 1500
dnsIpv4Address: "172.21.3.100" # configure the dns for UE don't use Kubernetes DNS
dnsSecIpv4Address: "172.21.3.100" # configure the dns for UE don't use Kubernetes DNS
......@@ -183,4 +197,4 @@ oai-smf:
nssaiSd1: "0xFFFFFF"
qosProfile5qi1: 1
sessionAmbrUl1: "1000Mbps"
sessionAmbrDl1: "1000Mbps"
sessionAmbrDl1: "1000Mbps"
\ No newline at end of file
......@@ -146,34 +146,42 @@ oai-spgwu-tiny:
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
defaultGateway: "172.21.7.254"
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: ""
n3Interface:
create: false
Ipadd: "172.21.6.95"
Ipadd: "172.21.8.95"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n3"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
routes: [{'dst': '10.8.0.0/24','gw': '172.21.11.254'}, {'dst': '10.9.0.0/24','gw': '172.21.11.254'}]
hostInterface: "bond0"
## For n4 it is better to re-use eth0 interface inside the pod (primary CNI of Kubernetes)
n4Interface:
create: false
Ipadd: "172.21.16.89"
Netmask: "22"
Ipadd: "192.168.24.2"
Netmask: "24"
# #name inside the pod is hardcoded right now
# name: "n4"
## If you do not have a gateway leave the field empty
Gateway: "172.21.19.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond1"
routes: ""
hostInterface: "bond0"
n6Interface:
create: false
Ipadd: "172.21.8.80"
Netmask: "22"
Ipadd: "192.168.22.2"
# #name inside the pod is hardcoded right now
# name: "n6"
Netmask: "24"
## If you do not have a gateway leave the field empty
Gateway: "172.21.11.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond2"
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
n3If: "eth0" # n3 if multus.n3Interface.create is true
......@@ -208,11 +216,17 @@ oai-smf:
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
multus:
create: false
n4IPadd: "172.21.6.98"
n4Netmask: "22"
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: ""
n4Interface:
create: false
Ipadd: "192.168.24.3"
Netmask: "24"
## If you do not have a gateway leave the field empty
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
includeTcpDumpContainer: false #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
......
......@@ -132,4 +132,4 @@ terminationGracePeriodSeconds: 5
nodeSelector: {}
nodeName:
\ No newline at end of file
nodeName:
......@@ -3,7 +3,7 @@
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-n2
name: {{ .Chart.Name }}-n4
spec:
config: '{
"cniVersion": "0.3.1",
......
......@@ -35,15 +35,17 @@ podSecurityContext:
## Change these ip-addresses according to your environment
multus:
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
defaultGateway: ""
n4Interface:
create: false
Ipadd: "172.21.6.202"
Netmask: "22"
Ipadd: "192.168.24.3"
Netmask: "24"
#name inside the pod is hardcoded right now
#name: "n4"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
#routes: [{'dst': '10.8.0.0/24','gw': '192.168.24.254'}, {'dst': '10.9.0.0/24','gw': '192.168.24.254'}]
hostInterface: "bond0"
config:
......
......@@ -62,7 +62,7 @@ The directory structure
|multus.n4Interface.create |true/false | |
|multus.n4Interface.Ipadd |Ip-Address | |
|multus.n4Interface.Netmask |Netmask | |
|multus.n4Interface.Gateway |Ip-Address | |
|multus.n4Interface.Gateway |Ip-Address |This interface is used to communicate with NRF |
|multus.n4Interface.routes |Json |Routes if you want to add in your pod|
|multus.n4Interface.hostInterface|host interface |Host interface on which pod will run |
|multus.n6Interface.create |true/false | |
......
......@@ -34,34 +34,40 @@ service:
multus:
## If you don't want to add a default route in your pod then leave this field empty
defaultGateway: "172.21.7.254"
defaultGateway: ""
n3Interface:
create: false
Ipadd: "172.21.6.95"
Ipadd: "172.21.12.95"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n3"
## If you do not have a gateway leave the field empty
Gateway: "172.21.7.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
routes: [{'dst': '10.8.0.0/24','gw': '172.21.15.254'}, {'dst': '10.9.0.0/24','gw': '172.21.15.254'}]
hostInterface: "bond0"
n4Interface:
create: false
Ipadd: "172.21.16.89"
Netmask: "22"
Ipadd: "192.168.24.2"
Netmask: "24"
# #name inside the pod is hardcoded right now
# name: "n4"
## If you do not have a gateway leave the field empty
Gateway: "172.21.19.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond1"
routes: ""
hostInterface: "bond0"
n6Interface:
create: false
Ipadd: "172.21.8.80"
Netmask: "22"
Ipadd: "192.168.22.2"
# #name inside the pod is hardcoded right now
# name: "n6"
Netmask: "24"
## If you do not have a gateway leave the field empty
Gateway: "172.21.11.254"
Gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes:
hostInterface: "bond2"
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6If is wrong then traffic will not be routed towards internet
config:
......
......@@ -43,8 +43,7 @@ The directory structure
## Parameters
[Values.yaml](./values.yaml) contains all the configurable parameters. Below table defines the configurable parameters. The ip-addresses of N2, E1 and F1C have to be pre-configured in the configuration. Most of the primary CNIs do not allow static ip-address allocation. To overcome this we are using multus-cni with static ip-address allocation. At minimum you have to create one multus interface which you can use for N2, E1 and F1C. If you want you can create dedicated interfaces for N2, E1 and F1C.
[Values.yaml](./values.yaml) contains all the configurable parameters. Below table defines the configurable parameters. The ip-addresses of E1, N2, and F1C have to be pre-configured in the configuration. Most of the primary CNIs do not allow static ip-address allocation. To overcome this we are using multus-cni with static ip-address allocation. At minimum you have to create one multus interface which you can use for E1, N2, and F1C.
|Parameter |Allowed Values |Remark |
|---------------------------------|-------------------------------|---------------------------------|
......@@ -78,9 +77,57 @@ The directory structure
|multus.f1cInterface.routes |Json |Routes you want to add in the pod|
|multus.f1cInterface.hostInterface|host interface |Host machine interface name |
The config parameters mentioned in `config` block of `values.yaml` are limited on purpose to maintain simplicity. They do not allow changing a lot of parameters of oai-gnb-cu. If you want to use your own configuration file for oai-gnb-cu-cp. It is recommended to copy it in `templates/configmap.yaml` and set `config.mountConfig` as `true`. The command line for gnb is provided in `config.useAdditionalOptions`.
The config parameters mentioned in `config` block of `values.yaml` are limited on purpose to maintain simplicity. They do not allow changing a lot of parameters of oai-gnb-cu-cp. If you want to use your own configuration file for oai-gnb-cu-cp. It is recommended to copy it in `templates/configmap.yaml` and set `config.mountConfig` as `true`. The command line arguments for oai-gnb-cu-cp is provided in `config.useAdditionalOptions`.
You can find [here](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/targets/PROJECTS/GENERIC-NR-5GC/CONF) different sample configuration files for different bandwidths and frequencies. The binary of oai-gnb is called as `nr-softmodem`. To know more about its functioning and command line parameters you can visit this [page](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/doc/RUNMODEM.md).
### Configure CU-CP with 1 interface
Minimum you need two interfaces for e1,f1 split. It is because in CU-UP F1U and N3 bind to the same 2152 port number for GTP.
Though you can use only 1 interface but then you need to change the port of F1U to 2153 or some other port number.
To enable choose any one of the interfaces out of three, lets say we will enable `multus.e1Interface.create`. This interface has name `e1` inside the pod.
If you want to use only one interface then you have to configure some parameters in `templates/configmap.yaml`. You can replace the below blocks with the blocks in templates/configmap.yaml
```
local_s_if_name = "e1";
local_s_address = "{{ .Values.multus.e1Interface.IPadd }}";
remote_s_address = "{{ .Values.config.f1duIpAddress }}";
local_s_portc = 501;
local_s_portd = 2153;
remote_s_portc = 500;
remote_s_portd = 2153;
```
```
E1_INTERFACE =
(
{
type = "cp";
ipv4_cucp = "{{ .Values.multus.e1Interface.IPadd }}";
port_cucp = 38462;
ipv4_cuup = "{{ .Values.config.e1IpAddress }}";
port_cuup = 38462;
}
)
```
```
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "e1";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "{{ .Values.multus.e1Interface.IPadd }}";
};
```
In helm-charts of oai-gnb-du you need to change in values.yaml config section below values
You can find [here](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/targets/PROJECTS/GENERIC-NR-5GC/CONF) different sample configuration files for different bandwidths and frequencies. The binary of oai-gnb is called as `nr-softmodem`. To know more about its functioning and command line parameters you can visit this [page](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/doc/RUNMODEM.md)
```
f1cuPort: "2153"
f1duPort: "2153"
```
## Advanced Debugging Parameters
......@@ -112,7 +159,12 @@ Only needed if you are doing advanced debugging
## How to use
Make sure core network is running before starting the `cu-cp`
0. Make sure the core network is running else you need to first start the core network. You can follow any of the below links
- [OAI 5G Core Basic](../../oai-5g-basic/README.md)
- [OAI 5G Core Mini](../../oai-5g-mini/README.md)
- Check properly that the n2 and n3 ip-address are configured via multus interface because we need multiple interfaces for cu-cp and cu-up deployment.
1. Configure the `parent` interface for `n2`, `e1` and `f1` based on your Kubernetes cluster worker nodes.
```bash
helm install oai-gnb-cu-cp .
......@@ -123,7 +175,7 @@ helm install oai-gnb-du ../oai-gnb-du
### Connect the UE
1. Configure the `oai-nr-ue` charts for `oai-gnb-du`, change `config.rfSimulator` to `oai-gnb-du` and `useAdditionalOptions` to "--sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time". As the configuration of cu/du is set at this frequency and resource block. If you mount your own configuration file then set the configuration of nr-ue accordingly.
1. Configure the `oai-nr-ue` charts for `oai-gnb-du`, change `config.rfSimulator` to `oai-gnb-du` and `useAdditionalOptions` to `"--sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time"`. As the configuration of cu/du is set at this frequency and resource block. If you mount your own configuration file then set the configuration of nr-ue accordingly.
```bash
helm install oai-nr-ue ../oai-nr-ue
......@@ -141,4 +193,4 @@ ping -I oaitun_ue1 8.8.8.8
## Note
1. If you are using multus then make sure it is properly configured and if you don't have a gateway for your multus interface then avoid using gateway and defaultGateway parameter. Either comment them or leave them empty. Wrong gateway configuration can create issues with pod networking and pod will not be able to resolve service names.
\ No newline at end of file
1. If you are using multus then make sure it is properly configured and if you don't have a gateway for your multus interface then avoid using gateway and defaultGateway parameter. Either comment them or leave them empty. Wrong gateway configuration can create issues with pod networking and pod will not be able to resolve service names.
......@@ -35,7 +35,7 @@ data:
tr_s_preference = "f1";
local_s_if_name = "net3";
local_s_if_name = "f1c";
local_s_address = "{{ .Values.multus.f1cInterface.IPadd }}";
remote_s_address = "{{ .Values.config.f1duIpAddress }}";
local_s_portc = 501;
......@@ -203,7 +203,7 @@ data:
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "net2";
GNB_INTERFACE_NAME_FOR_NG_AMF = "n2";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "{{ .Values.multus.n2Interface.IPadd }}";
};
}
......
......@@ -20,19 +20,22 @@ spec:
annotations:
k8s.v1.cni.cncf.io/networks: >-
[{
"name": "{{ .Chart.Name }}-net1"
"name": "{{ .Chart.Name }}-e1",
"interface": "e1"
{{- if .Values.multus.defaultGateway }}
,"default-route": ["{{ .Values.multus.defaultGateway }}"]
{{- end }}
}
{{- if .Values.multus.n2Interface.create }}
,{
"name": "{{ .Chart.Name }}-net2"
"name": "{{ .Chart.Name }}-n2",
"interface": "n2"
}
{{- end }}
{{- if .Values.multus.f1cInterface.create }}
,{
"name": "{{ .Chart.Name }}-net3"
"name": "{{ .Chart.Name }}-f1c",
"interface": "f1c"
}
{{- end }}
]
......
......@@ -3,7 +3,7 @@
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-net1
name: {{ .Chart.Name }}-e1
spec:
config: '{
"cniVersion": "0.3.1",
......@@ -31,7 +31,7 @@ spec:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-net2
name: {{ .Chart.Name }}-n2
spec:
config: '{
"cniVersion": "0.3.1",
......@@ -59,7 +59,7 @@ spec:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-net3
name: {{ .Chart.Name }}-f1c
spec:
config: '{
"cniVersion": "0.3.1",
......
......@@ -26,30 +26,36 @@ serviceAccount:
## Change these ip-addresses according to your environment
multus:
# if default gatway is empty then it will be removed
defaultGateway: "172.21.7.254"
# to remove the default gateway change it with ""
defaultGateway: ""
e1Interface:
create: true
IPadd: "172.21.6.90"
Netmask: "22"
IPadd: "192.168.18.12"
Netmask: "24"
# #name inside the pod is hardcoded right now
# name: "e1"
# if gatway is empty then it will be removed
#Gateway: "172.21.7.254"
#Gateway: ""
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
n2Interface:
create: true
IPadd: "172.21.6.98"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n2"
# if gatway is empty then it will be removed
#Gateway: "172.21.7.254"
#Gateway: ""
#routes:
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
f1cInterface:
create: true
IPadd: "172.21.6.92"
IPadd: "172.21.16.92"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "f1c"
# if gatway is empty then it will be removed
#Gateway: "172.21.7.254"
#Gateway: ""
#routes:
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
......@@ -65,9 +71,9 @@ config:
nssaiSst: "1" #currently only 4 standard values are allowed 1,2,3,4
nssaiSd: "0xffffff" #values in hexa-decimal format
amfIpAddress: "172.21.6.94" # amf ip-address
e1IpAddress: "172.21.6.91" ## CU-UP ip-address
#Normally you don't have to set this but at the moment there is a bug so we need to provide DU ip-address
f1duIpAddress: "172.21.6.100"
e1IpAddress: "192.168.18.13" ## CU-UP ip-address
#Normally you don't have to set this but at the moment it is required
f1duIpAddress: "172.21.16.100"
# Debugging section
podSecurityContext:
......
......@@ -78,10 +78,42 @@ The directory structure
|multus.f1uInterface.routes |Json |Routes you want to add in the pod|
|multus.f1uInterface.hostInterface|host interface |Host machine interface name |
The config parameters mentioned in `config` block of `values.yaml` are limited on purpose to maintain simplicity. They do not allow changing a lot of parameters of oai-gnb-cu. If you want to use your own configuration file for oai-gnb-cu-up. It is recommended to copy it in `templates/configmap.yaml` and set `config.mountConfig` as `true`. The command line for gnb is provided in `config.useAdditionalOptions`.
The config parameters mentioned in `config` block of `values.yaml` are limited on purpose to maintain simplicity. They do not allow changing a lot of parameters of oai-gnb-cu-cp. If you want to use your own configuration file for oai-gnb-cu-up. It is recommended to copy it in `templates/configmap.yaml` and set `config.mountConfig` as `true`. The command line arguments for oai-gnb-cu-up is provided in `config.useAdditionalOptions`.
You can find [here](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/targets/PROJECTS/GENERIC-NR-5GC/CONF) different sample configuration files for different bandwidths and frequencies. The binary of oai-gnb is called as `nr-softmodem`. To know more about its functioning and command line parameters you can visit this [page](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/doc/RUNMODEM.md)
### Configure CU-UP with 1 interface
Minimum you need two interfaces for e1,f1 split. It is because in CU-UP F1U and N3 bind to the same 2152 port number for GTP.
Though you can use only 1 interface but then you need to change the port of F1U to 2153 or some other port number.
To enable choose any one of the interfaces out of three, lets say we will enable `multus.e1Interface.create`. This interface has name `e1` inside the pod.
If you want to use only one interface then you have to configure some parameters in `templates/configmap.yaml`. You can replace the below blocks with the blocks in templates/configmap.yaml
```
local_s_if_name = "e1";
local_s_address = "{{ .Values.multus.e1Interface.IPadd }}";
remote_s_address = "{{ .Values.config.f1duIpAddress }}";
local_s_portc = 501;
local_s_portd = 2153;
remote_s_portc = 500;
remote_s_portd = 2153;
```
```
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "e1";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "{{ .Values.multus.e1Interface.IPadd }}";
GNB_INTERFACE_NAME_FOR_NGU = "e1";
GNB_IPV4_ADDRESS_FOR_NGU = "{{ .Values.multus.e1Interface.IPadd }}";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
```
## Advanced Debugging Parameters
Only needed if you are doing advanced debugging
......@@ -113,7 +145,13 @@ Only needed if you are doing advanced debugging
## How to use
Make sure core network and `oai-gnb-cu-cp` is running before starting the `cu-up`
0. Make sure the core network is running else you need to first start the core network. You can follow any of the below links
- [OAI 5G Core Basic](../../oai-5g-basic/README.md)
- [OAI 5G Core Mini](../../oai-5g-mini/README.md)
- Check properly that the n2 and n3 ip-address are configured via multus interface because we need multiple interfaces for cu-cp and cu-up deployment.
1. Configure the `parent` interface for `n3`, `e1` and `f1` based on your Kubernetes cluster worker nodes.
Make sure `oai-gnb-cu-cp` is running before starting the `cu-up`
```bash
helm install oai-gnb-cu-cp ../oai-gnb-cu-cp
......@@ -124,7 +162,7 @@ helm install oai-gnb-du ../oai-gnb-du
### Connect the UE
1. Configure the `oai-nr-ue` charts for `oai-gnb-du`, change `config.rfSimulator` to `oai-gnb-du` and `useAdditionalOptions` to "--sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time". As the configuration of cu/du is set at this frequency and resource block. If you mount your own configuration file then set the configuration of nr-ue accordingly.
1. Configure the `oai-nr-ue` charts for `oai-gnb-du`, change `config.rfSimulator` to `oai-gnb-du` and `useAdditionalOptions` to `--sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time`. As the configuration of cu/du is set at this frequency and resource block. If you mount your own configuration file then set the configuration of nr-ue accordingly.
```bash
helm install oai-nr-ue ../oai-nr-ue
......@@ -140,7 +178,6 @@ ping -I oaitun_ue1 12.1.1.1
ping -I oaitun_ue1 8.8.8.8
```
## Note
1. If you are using multus then make sure it is properly configured and if you don't have a gateway for your multus interface then avoid using gateway and defaultGateway parameter. Either comment them or leave them empty. Wrong gateway configuration can create issues with pod networking and pod will not be able to resolve service names.
\ No newline at end of file
......@@ -28,7 +28,7 @@ data:
tr_s_preference = "f1";
local_s_if_name = "net3";
local_s_if_name = "f1u";
local_s_address = "{{ .Values.multus.f1uInterface.IPadd }}";
remote_s_address = "{{ .Values.config.f1duIpAddress }}";
local_s_portc = 501;
......@@ -55,9 +55,9 @@ data:
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "net2";
GNB_INTERFACE_NAME_FOR_NG_AMF = "n3";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "{{ .Values.multus.n3Interface.IPadd }}";
GNB_INTERFACE_NAME_FOR_NGU = "net2";
GNB_INTERFACE_NAME_FOR_NGU = "n3";
GNB_IPV4_ADDRESS_FOR_NGU = "{{ .Values.multus.n3Interface.IPadd }}";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
......
......@@ -20,19 +20,22 @@ spec:
annotations:
k8s.v1.cni.cncf.io/networks: >-
[{
"name": "{{ .Chart.Name }}-net1"
"name": "{{ .Chart.Name }}-e1",
"interface": "e1"
{{- if .Values.multus.defaultGateway }}
,"default-route": ["{{ .Values.multus.defaultGateway }}"]
{{- end }}
}
{{- if .Values.multus.n3Interface.create }}
,{
"name": "{{ .Chart.Name }}-net2"
"name": "{{ .Chart.Name }}-n3",
"interface": "n3"
}
{{- end }}
{{- if .Values.multus.f1uInterface.create }}
,{
"name": "{{ .Chart.Name }}-net3"
"name": "{{ .Chart.Name }}-f1u",
"interface": "f1u"
}
{{- end }}
]
......
......@@ -3,7 +3,7 @@
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-net1
name: {{ .Chart.Name }}-e1
spec:
config: '{
"cniVersion": "0.3.1",
......@@ -31,7 +31,7 @@ spec:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-net2
name: {{ .Chart.Name }}-n3
spec:
config: '{
"cniVersion": "0.3.1",
......@@ -59,7 +59,7 @@ spec:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: {{ .Chart.Name }}-net3
name: {{ .Chart.Name }}-f1u
spec:
config: '{
"cniVersion": "0.3.1",
......
......@@ -26,30 +26,36 @@ serviceAccount:
## Change these ip-addresses according to your environment
multus:
#if defaultGateway is empty then it will be removed
defaultGateway: "172.21.7.254"
defaultGateway: ""
e1Interface:
create: true
IPadd: "172.21.6.91"
Netmask: "22"
IPadd: "192.168.18.13"
Netmask: "24"
# #name inside the pod is hardcoded right now
# name: "e1"
# if gatway is empty then it will be removed
Gateway:
#Gateway: ""
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
n3Interface:
create: true
IPadd: "172.21.6.97"
IPadd: "172.21.8.97"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "n3"
# if gatway is empty then it will be removed
Gateway:
#routes:
#Gateway: ""
#routes: []
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
f1uInterface:
create: true
IPadd: "172.21.6.93"
IPadd: "172.21.16.93"
Netmask: "22"
# #name inside the pod is hardcoded right now
# name: "f1u"
# if gatway is empty then it will be removed
Gateway:
#routes:
#Gateway: ""
#routes: []
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
## configuration file is in template/config.yaml
......@@ -63,10 +69,9 @@ config:
tac: "1" # check the information with AMF
nssaiSst: "1" #currently only 4 standard values are allowed 1,2,3,4
nssaiSd: "0xffffff" #values in hexa-decimal format
e1IpAddress: 172.21.6.90
e1IpAddress: 192.168.18.12
## Its the DU which communicates with the CU so no need for DU ip-address
f1duIpAddress: "172.21.6.100"
f1duIpAddress: "172.21.16.100"
## Debugging section
podSecurityContext:
......
......@@ -81,7 +81,9 @@ The directory structure
The config parameters mentioned in `config` block of `values.yaml` are limited on purpose to maintain simplicity. They do not allow changing a lot of parameters of oai-gnb-cu. If you want to use your own configuration file for oai-gnb-cu. It is recommended to copy it in `templates/configmap.yaml` and set `config.mountConfig` as `true`. The command line for gnb is provided in `config.useAdditionalOptions`.
The charts are configured to be used with primary CNI of Kubernetes. When you will mount the configuration file you have to define static ip-addresses for N2, N3 and F1. Most of the primary CNIs do not allow static ip-address allocation. To overcome this we are using multus-cni with static ip-address allocation. At minimum you have to create one multus interface which you can use for N2, N3 and F1. If you want you can create dedicated interfaces.
The charts are configured to be used with primary CNI of Kubernetes. When you will mount the configuration file you have to define static ip-addresses for N2, N3 and F1. Most of the primary CNIs do not allow static ip-address allocation. To overcome this we are using multus-cni with static ip-address allocation.
**NOTE**: At the moment we want minimum 1 multus interface which is used for `f1` you have to create one multus interface which you can use for F1 and for N2 and N3 you can use the `eth0` interface, the primary CNI of Kubernetes. If you want you can create dedicated interfaces too for F1, N2 and N3.
You can find [here](https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/targets/PROJECTS/GENERIC-NR-5GC/CONF) different sample configuration files for different bandwidths and frequencies. The binary of oai-gnb is called as `nr-softmodem`. To know more about its functioning and command line parameters you can visit this [page](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/doc/RUNMODEM.md)
......@@ -115,7 +117,12 @@ Only needed if you are doing advanced debugging
## How to use
1. If you want to mount your configuration file then you set can `config.mountConfig`. The configuration file should be added in `templates/configmap.yaml`. Once the CU is configured.
0. Make sure the core network is running else you need to first start the core network. You can follow any of the below links
- [OAI 5G Core Basic](../../oai-5g-basic/README.md)
- [OAI 5G Core Mini](../../oai-5g-mini/README.md)
1. Configure the `parent` interface for `f1` based on your Kubernetes cluster worker nodes.
2. If you want to mount your configuration file then you set can `config.mountConfig`. The configuration file should be added in `templates/configmap.yaml`. Once the CU is configured.
```bash
helm install oai-gnb-cu .
......@@ -127,7 +134,7 @@ helm install oai-gnb-cu .
helm install oai-gnb-du ../oai-gnb-du
```
3. Configure the `oai-nr-ue` charts for `oai-gnb-du`, change `config.rfSimulator` to `oai-gnb-du` and `useAdditionalOptions` to "--sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time". As the configuration of cu/du is set at this frequency and resource block. If you mount your own configuration file then set the configuration of nr-ue accordingly.
3. Configure the `oai-nr-ue` charts for `oai-gnb-du`, change `config.rfSimulator` to `oai-gnb-du` and `useAdditionalOptions` to `--sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time`. As the configuration of cu/du is set at this frequency and resource block. If you mount your own configuration file then set the configuration of nr-ue accordingly.
```bash
helm install oai-nr-ue ../oai-nr-ue
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment