fix(nr-ue): apply ip rules/route
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
@@ -596,20 +596,6 @@ class Containerize():
|
|||||||
else:
|
else:
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
||||||
# HACK TO REMOVE LATER WHEN FIX
|
|
||||||
res = re.search('oai-nr-ue', self.services[0])
|
|
||||||
if res is not None:
|
|
||||||
cmd = 'docker exec rfsim5g-oai-nr-ue /bin/bash -c "ip route del default"'
|
|
||||||
logging.debug(cmd)
|
|
||||||
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
|
|
||||||
cmd = 'docker exec rfsim5g-oai-nr-ue /bin/bash -c "ip route del 12.1.1.0/24"'
|
|
||||||
logging.debug(cmd)
|
|
||||||
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
|
|
||||||
cmd = 'docker exec rfsim5g-oai-nr-ue /bin/bash -c "ip route add default via 12.1.1.2 dev oaitun_ue1"'
|
|
||||||
logging.debug(cmd)
|
|
||||||
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
|
|
||||||
# END OF HACK TO REMOVE LATER WHEN FIX
|
|
||||||
|
|
||||||
if count == 100 and healthy == self.nb_healthy[0]:
|
if count == 100 and healthy == self.nb_healthy[0]:
|
||||||
HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m')
|
logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m')
|
||||||
@@ -628,7 +614,7 @@ class Containerize():
|
|||||||
logging.debug(cmd)
|
logging.debug(cmd)
|
||||||
subprocess.run(cmd, shell=True)
|
subprocess.run(cmd, shell=True)
|
||||||
|
|
||||||
# if the containers are running, recover the logs!
|
# if the containers are running, recover the logs!
|
||||||
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
|
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
|
||||||
logging.debug(cmd)
|
logging.debug(cmd)
|
||||||
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
|
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
|
||||||
@@ -831,7 +817,9 @@ class Containerize():
|
|||||||
logging.debug('\u001B[1;34m Jitter : ' + jitter + '\u001B[0m')
|
logging.debug('\u001B[1;34m Jitter : ' + jitter + '\u001B[0m')
|
||||||
self.IperfExit(HTML, iperfStatus, msg)
|
self.IperfExit(HTML, iperfStatus, msg)
|
||||||
else:
|
else:
|
||||||
|
iperfStatus = False
|
||||||
logging.error('problem?')
|
logging.error('problem?')
|
||||||
|
self.IperfExit(HTML, iperfStatus, 'problem?')
|
||||||
if iperfStatus:
|
if iperfStatus:
|
||||||
logging.info('\u001B[1m Iperf Test PASS\u001B[0m')
|
logging.info('\u001B[1m Iperf Test PASS\u001B[0m')
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,130 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
|
except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.openairinterface.org/?page_id=698
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
contact@openairinterface.org
|
||||||
|
|
||||||
|
-->
|
||||||
|
<testCaseList>
|
||||||
|
<htmlTabRef>rfsim-4gnr</htmlTabRef>
|
||||||
|
<htmlTabName>Testing 4G NR RF sim in containers</htmlTabName>
|
||||||
|
<htmlTabIcon>wrench</htmlTabIcon>
|
||||||
|
<repeatCount>4</repeatCount>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
100011
|
||||||
|
000011
|
||||||
|
000001
|
||||||
|
000012
|
||||||
|
000002
|
||||||
|
000013
|
||||||
|
000001
|
||||||
|
000014
|
||||||
|
000002
|
||||||
|
020011
|
||||||
|
020012
|
||||||
|
030011
|
||||||
|
030012
|
||||||
|
100011
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="000011">
|
||||||
|
<class>DeployGenObject</class>
|
||||||
|
<desc>Deploy Cassandra Database</desc>
|
||||||
|
<yaml_path>yaml_files/4g_rfsimulator</yaml_path>
|
||||||
|
<services>cassandra db_init</services>
|
||||||
|
<nb_healthy>1</nb_healthy>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000001">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>30</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000002">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000012">
|
||||||
|
<class>DeployGenObject</class>
|
||||||
|
<desc>Deploy OAI 4G CoreNetwork</desc>
|
||||||
|
<yaml_path>yaml_files/4g_rfsimulator</yaml_path>
|
||||||
|
<services>oai_hss oai_mme oai_spgwc oai_spgwu trf_gen</services>
|
||||||
|
<nb_healthy>6</nb_healthy>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000013">
|
||||||
|
<class>DeployGenObject</class>
|
||||||
|
<desc>Deploy OAI 4G eNB RF sim</desc>
|
||||||
|
<yaml_path>yaml_files/4g_rfsimulator</yaml_path>
|
||||||
|
<services>enb</services>
|
||||||
|
<nb_healthy>7</nb_healthy>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000014">
|
||||||
|
<class>DeployGenObject</class>
|
||||||
|
<desc>Deploy OAI 4G NR-UE RF sim</desc>
|
||||||
|
<yaml_path>yaml_files/4g_rfsimulator</yaml_path>
|
||||||
|
<services>oai_ue0</services>
|
||||||
|
<nb_healthy>8</nb_healthy>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="020011">
|
||||||
|
<class>PingFromContainer</class>
|
||||||
|
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||||
|
<container_name>rfsim4g-oai-lte-ue0</container_name>
|
||||||
|
<options>-I oaitun_ue1 -c 20 192.168.61.11</options>
|
||||||
|
<loss_threshold>5</loss_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="020012">
|
||||||
|
<class>PingFromContainer</class>
|
||||||
|
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||||
|
<container_name>rfsim4g-trf-gen</container_name>
|
||||||
|
<options>-c 20 12.0.0.2</options>
|
||||||
|
<loss_threshold>5</loss_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="030011">
|
||||||
|
<class>IperfFromContainer</class>
|
||||||
|
<desc>Iperf UDP Downlink</desc>
|
||||||
|
<server_container_name>rfsim4g-oai-lte-ue0</server_container_name>
|
||||||
|
<client_container_name>rfsim4g-trf-gen</client_container_name>
|
||||||
|
<server_options>-B 12.0.0.2 -u -i 1 -s</server_options>
|
||||||
|
<client_options>-c 12.0.0.2 -u -i 1 -t 30 -b 4M</client_options>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="030012">
|
||||||
|
<class>IperfFromContainer</class>
|
||||||
|
<desc>Iperf UDP Uplink</desc>
|
||||||
|
<server_container_name>rfsim4g-trf-gen</server_container_name>
|
||||||
|
<client_container_name>rfsim4g-oai-lte-ue0</client_container_name>
|
||||||
|
<server_options>-u -i 1 -s</server_options>
|
||||||
|
<client_options>-B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 2M</client_options>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="100011">
|
||||||
|
<class>UndeployGenObject</class>
|
||||||
|
<desc>Undeploy all OAI 4G stack</desc>
|
||||||
|
<yaml_path>yaml_files/4g_rfsimulator</yaml_path>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
|
this work for additional information regarding copyright ownership.
|
||||||
|
The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
|
except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.openairinterface.org/?page_id=698
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
contact@openairinterface.org
|
||||||
|
|
||||||
|
-->
|
||||||
|
<testCaseList>
|
||||||
|
<htmlTabRef>rfsim-4gnr</htmlTabRef>
|
||||||
|
<htmlTabName>Testing 4G NR RF sim in containers</htmlTabName>
|
||||||
|
<htmlTabIcon>wrench</htmlTabIcon>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
100011
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="100011">
|
||||||
|
<class>UndeployGenObject</class>
|
||||||
|
<desc>Undeploy all OAI 4G stack</desc>
|
||||||
|
<yaml_path>yaml_files/4g_rfsimulator</yaml_path>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
@@ -25,6 +25,7 @@
|
|||||||
<htmlTabName>Testing 5G NR RF sim in containers</htmlTabName>
|
<htmlTabName>Testing 5G NR RF sim in containers</htmlTabName>
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
<htmlTabIcon>wrench</htmlTabIcon>
|
||||||
<TestCaseRequestedList>
|
<TestCaseRequestedList>
|
||||||
|
100001
|
||||||
000001
|
000001
|
||||||
000002
|
000002
|
||||||
000003
|
000003
|
||||||
|
|||||||
@@ -218,34 +218,6 @@ oaitun_ue1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
|
|||||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||||
```
|
```
|
||||||
|
|
||||||
**CAUTION: THESE NEXT FEW COMMANDS ARE A HACK. RAN developers SHALL FIX THIS!**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ docker exec -it rfsim5g-oai-nr-ue /bin/bash
|
|
||||||
|
|
||||||
# Check the current routes
|
|
||||||
|
|
||||||
root@bb4d400a832d:/opt/oai-nr-ue# ip route
|
|
||||||
default via 192.168.71.129 dev eth0
|
|
||||||
12.1.1.0/24 dev oaitun_ue1 proto kernel scope link src 12.1.1.2
|
|
||||||
192.168.71.128/26 dev eth0 proto kernel scope link src 192.168.71.137
|
|
||||||
|
|
||||||
# Remove the default and PDN routes
|
|
||||||
|
|
||||||
root@bb4d400a832d:/opt/oai-nr-ue# ip route del default
|
|
||||||
root@bb4d400a832d:/opt/oai-nr-ue# ip route del 12.1.1.0/24
|
|
||||||
|
|
||||||
# Force the default route through oaitun_ue1 tunnel
|
|
||||||
|
|
||||||
root@bb4d400a832d:/opt/oai-nr-ue# ip route add default via 12.1.1.2 dev oaitun_ue1
|
|
||||||
|
|
||||||
# Check the new routes
|
|
||||||
|
|
||||||
root@bb4d400a832d:/opt/oai-nr-ue# ip route
|
|
||||||
default via 12.1.1.2 dev oaitun_ue1
|
|
||||||
192.168.71.128/26 dev eth0 proto kernel scope link src 192.168.71.137
|
|
||||||
```
|
|
||||||
|
|
||||||
# 3. Check traffic #
|
# 3. Check traffic #
|
||||||
|
|
||||||
## 3.1. Check your Internet connectivity ##
|
## 3.1. Check your Internet connectivity ##
|
||||||
|
|||||||
@@ -344,6 +344,19 @@ int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifname)
|
|||||||
LOG_E(OIP,"Interface %s couldn't be configured (ip address %s, mask %s broadcast address %s)\n",
|
LOG_E(OIP,"Interface %s couldn't be configured (ip address %s, mask %s broadcast address %s)\n",
|
||||||
interfaceName, ipAddress, netMask, broadcastAddress);
|
interfaceName, ipAddress, netMask, broadcastAddress);
|
||||||
|
|
||||||
|
int res;
|
||||||
|
char command_line[500];
|
||||||
|
res = sprintf(command_line,
|
||||||
|
"ip rule add from %s/32 table %d && "
|
||||||
|
"ip rule add to %s/32 table %d && "
|
||||||
|
"ip route add default dev %s%d table %d",
|
||||||
|
ipAddress, interface_id - 1 + 10000,
|
||||||
|
ipAddress, interface_id - 1 + 10000,
|
||||||
|
UE_NAS_USE_TUN ? "oaitun_ue" : "oip",
|
||||||
|
interface_id, interface_id - 1 + 10000);
|
||||||
|
|
||||||
|
background_system(command_line);
|
||||||
|
|
||||||
return returnValue;
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user