This page will introduce the pre-installation before installing OMEC, which includes:
The introduction is based on multi-cluster: Edge and Central. If you want to install single cluster, you can ignore the central part.
Based on the description of "Generic Hardware Guidelines" https://guide.opencord.org/prereqs/hardware.html#generic-hardware-guidelines, we are going to introduce the specific requirements for COMAC in this page.
Compute Machines: Same as described in "Generic Hardware Guidelines" page. But you want to use multi-cluster COMAC, then you can prepare two same setups. Also, COMAC requires at least Intel XEON CPU with Haswell microarchitecture or better.
Network Cards: For 3GPP data plane, COMAC supports high performance with SR-IOV interfaces. So besides the first 1G NIC for management, COMAC also need another 10G NIC on computer machines for user data traffic.
Access Devices: In COMAC, the access devices here refer to Enodebs. The enodeb for this release we use Accelleran E1000. The rest of the hardware are same with "Hardware Requirements" section on "Generic Hardware Guidelines" page.
COMAC BOM Example:
One cluster with one OpenFlow switch setup example:
3x x86 server (10G NIC)
1x OpenFlow switch (40G NIC)
1x DAC breakout cable
5x Ethernet copper cables
2x layer 2 switches, one is for management, another is as converter between 1G and 10G NICs
In this section, we need to prepare some COMAC specific work before install K8S.
OS requirement
COMAC runs on K8S, so any OS distribution should work, we tested Ubuntu 16.04 and 18.04 so far.
Download repos
Download automation-tools, configurations and the helm charts:
git clone https://gerrit.opencord.org/automation-tools git clone https://gerrit.opencord.org/pod-configs git clone https://gerrit.opencord.org/helm-charts
SCTP Setup
The protocol for S1-MME interface is SCTP, but SCTP is not loaded by ubuntu OS by default. So we need to setup SCTP on all nodes:
sudo modprobe nf_conntrack_proto_sctp echo ‘nf_conntrack_proto_sctp’ >> /etc/modules
You can verify whether he sctp module is loaded by command:
sudo lsmod | grep sctp
SR-IOV Setup
In this release, we pre-setup the SR-IOV support on the nodes which will run SPGWU and CDN containers.
COMAC use “VFIO driver” for userspace APP with DPDK for SPGWU. To setup SR-IOV support on nodes, COMAC team provides a script inside automation-tools repo. This script will help you to setup the SR-IOV, including: check whether the hardware virtualization is enabled in BIOS, enable IOMMU, enable Hugepage, enable the SR-IOV, etc.
So what you need to do is just run the following command lines on the node with SR-IOV supported NIC:
git clone https://gerrit.opencord.org/automation-tools sudo automation-tools/comac/scripts/node-setup.sh <SR-IOV-supported-NIC-name>
You can verify it with command:
ip link show
You should see the 63 VF interfaces in the result like this: ![](../images/SR-IOV-result.png) COMAC use “*Netdevice driver*” for CDN. Run the following command on the node where you want to run CDN container: ```shell sudo su echo '8' > /sys/class/net/eth2/device/sriov_numvfs
You can verify it with command:
# ip link show
You should see the 8 VF interfaces in the result like this:
You can refer to the Kubernetes page for installation. In this section, we only describe the COMAC specific work.
As we described before, SCTP protocol is used on S1-MME interface between BBU and MME containers. To enable this feature, COMAC needs to enable the SCTP feature by adding the following line in "inventory/comac/extra-vars.yaml" file.
kube_feature_gates: [SCTPSupport=True]
In COMAC, most containers have multiple and different types of interfaces. Take the SPGWU container for example, one is used to talk to SPGWC for receiving police info and commands to setup GTP tunnels which does not need high performace, this interface is based on calico. The second and the third interfaces are S1U and SGI interfaces, which will run user traffic, those interfaces are based on SR-IOV.
Multus is a meta Container Network Interfaces (CNI) plugin that provides multiple network interface support to pods, which is needed by COMAC.
So in "inventory/comac/extra-vars.yaml" file, for the Container CNI plugins, COMAC needs to add the following lines:
kube_network_plugin: calico kube_network_plugin_multus: true multus_version: stable
helm init --wait --client-only helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/ helm repo add cord https://charts.opencord.org helm repo update helm install -n cord-platform cord/cord-platform --version 7.0.0 -f automation-tools/comac/sample/omec-override-values-multi.yaml
helm install -n comac-platform --version 0.0.6 cord/comac-platform --set mcord-setup.enabled=false --set etcd-cluster.enabled=false
You can refer to Trellis Underlay Fabric for more info on how to config the fabric.
You can modify the exmpale file "mcord-local-cluster-fabric-accelleran.yaml" according to your netowrk, and insert fabric configuration with command:
$ cd pod-configs/tosca-configs/mcord curl -H "xos-username: admin@opencord.org" -H "xos-password: letmein" -X POST --data-binary @mcord-local-cluster-fabric-accelleran.yaml http://<cluster-ip>:30007/run