# 國防 Final Demo Setup(Still editing)
## EdgeNode
### Service Ports
- Openflow: 6653
- Web UI: 7000
- Video Server: 8000
- Flask API: 8080
- ONOS UI: 8181
- Text Server: 9000
### Setup Steps
1. Start database(MySQL & Redis) and dhcp server
```bash=
cd ~/mosaic/edge-node
docker-compose up
```
2. Deploy services on K8S, including
- SDN Controller (ONOS)
- Reverse Proxy (for HTTPS connection)
- Web UI
- Flask
- Video Server
- Text Server
```bash=
cd ~/mosaic/edge-node/k8s-files
microk8s.kubectl apply -k .
```
3. Connect SDN switch to controller
To check the status of the switch
URL: http://172.18.2.1:8181/onos/ui
User: onos
Password: rocks
To connect switch to controller:
```bash=
ssh rootFLC@192.168.100.238
# Password: root5638889
ssh swc
ovs-vsctl set-controller eth1 tcp:172.18.1.1:6653
```
4. Install ONOS application
```bash=
# Check the pod name
microk8s.kubectl get po
# Execute the ONOS pod
microk8s.kubectl exec -it $ONOS_POD_NAME bash
# Install application
cd ~/worker-app
onos-app localhost install! target/worker-app-1.0-SNAPSHOT.oar
# Uninstall application
onos-app localhost uninstall nycu.nems.worker
# Compile application
cd ~/worker-app
mvn clean install -Dmaven.test.skip=true
```
### Some commands
```bash=
# Deploy & delete using kustomization
microk8s.kubectl apply -k .
microk8s.kubectl delete -k .
# Deploy & delete an object
microk8s.kubectl apply -f $FILE_PATH
microk8s.kubectl delete [svc|deploy] $NAME
# Show pods or services
microk8s.kubectl get [po|svc]
# Show everything
microk8s.kubectl get all
# Check log of a pod
microk8s.kubectl logs $POD_NAME
# Execute in a pod
microk8s.kubectl exec -it $POD_NAME bash
```
## UPF Setting
Start the VM on gNB and run "sudo ./setup.sh"
```bash=
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD 1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.60.0.0/16 -o enp0s3 -j SNAT --to 172.18.2.201
sudo iptables -t nat -A PREROUTING -d 172.18.2.201/32 -j DNAT --to 10.60.0.1
sudo ip a add 172.18.2.201/24 dev enp0s3
```
Then run UPF
```bash=
cd free5gc/NFs/upf/build
bin/free5gc-upfd
```
If encounter gtp5g module problem, install module and run UPF again.
```bash=
cd ~/gtp5g
make
sudo make install
```
## 5GC Setting
Run core network:
```bash=
cd ~/free5gc
sudo ./run_cplane.sh
```
If encounter any problem:
```bash=
cd ~/free5gc
sudo ./force_kill.sh
```
## gNB Setting
OAI setup reference:
https://hackmd.io/li9sepD2TCWZ9vYIpyICTQ
```bash=
cd ~/openairinterface5g/cmake_targets/ran_build/build/
sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf -E --sa
```
## UE Setting
#### NOTE: Make sure Wi-Fi is off!!
```bash=
cd ~/quectel-CM
sudo ./quectel-CM -s internet 0
```