cncf / cnf-testbed

ARCHIVED: 🧪🛏️Cloud-native Network Function (CNF) Testbed --> See LFN Cloud Native Telecom Initiative https://wiki.lfnetworking.org/pages/viewpage.action?pageId=113213592
https://wiki.lfnetworking.org/pages/viewpage.action?pageId=113213592
Apache License 2.0
163 stars 51 forks source link

Create a multi-node bridged network version of the GoEPC use case #330

Closed taylor closed 4 years ago

taylor commented 4 years ago

Multi-node bridged network GoEPC userplane use case using Multus

This is a POC step in reaching the goal of a multi-node segmented and routed user plane

Tasks:


Testing:

taylor commented 4 years ago

Acceptance Criteria:

Prereqs:

Multus multi-node bridged network user plane is successfully deployed

Test HTTP GET to the end-point server

Expected results: You should see a successful HTTP request (200 OK), followed by index.html being saved.

Test ICMP/ping to the end-point server

Expected results:

Testing that there are 3 nodes with services split across them

Validate that the user equipment and eNB are on the same node

kubectl describe pods <enb-pod> | grep Node
kubectl describe pods <ue-pod> | grep Node

Validate that the user equipment and eNB are not running on the same node as the EPC user plane components

kubectl describe pods <mme-pod> | grep Node
kubectl describe pods <sgw-pod> | grep Node
kubectl describe pods <pgw-pod> | grep Node

Validate that the HTTP end point server is not running on the same node as the EPC user plane components

kubectl describe pods <http-pod> | grep Node

Validate that the HTTP end point server is not running on the same node as the user equipment and eNB

kubectl describe pods <http-pod> | grep Node
denverwilliams commented 4 years ago

Tasks:

michaelspedersen commented 4 years ago

The initial implementation for this has been added to the go-gtp branch (available in PR).

The Helm charts are in a separate directory, examples/use_case/gogtp-k8s/k8s_multi_node, so deployment is done using helm install ./gogtp/ instead of helm install -e multihost=true. This was a deliberate choice to avoid impacting existing code prior to having the new implementation added.

Also, the host environment must be configured prior to running the multi-node example. I have created an ansible playbook that works similar to how we have been configuring for use with vSwitch (VPP) previously. I have not yet updated the Makefile to simplify this step, but it should be easy to expand the existing vswitch case to also include the multinode config (e.g. using || (OR) and pointing towards the correct playbook). Similar to the Helm charts, I decided to push this initial version to make sure it is available in Github prior to integrating it with existing code.

michaelspedersen commented 4 years ago

Makefile has been update in go-gtp branch, and documentation has been updated to reference this when deploying the use-case

michaelspedersen commented 4 years ago

Example use-case for this is available in examples/use_case/gogtp-k8s/k8s_multi_node. Closing this ticket