Commit 65036309 authored by sagar arora's avatar sagar arora

Adding 7.2 containerfiles and docker-compose

Signed-off-by: sagar arora's avatararora <sagar.arora@eurecom.fr>
parent 297ef9d1
<table style="border-collapse: collapse; border: none;">
<tr style="border-collapse: collapse; border: none;">
<td style="border-collapse: collapse; border: none;">
<a href="http://www.openairinterface.org/">
<img src="../../../doc/images/oai_final_logo.png" alt="" border=3 height=50 width=150>
</img>
</a>
</td>
<td style="border-collapse: collapse; border: none; vertical-align: center;">
<b><font size = "5">OAI O-RAN 7.2 Front-haul Docker Compose</font></b>
</td>
</tr>
</table>
![Docker deploy 7.2](docker-deploy-oai-7-2.png)
This docker-compose is designed to use `OAI-gNB` with a 7.2 compatible Radio Unit. Before using this docker compose you have to configure the host machine as per the [ORAN_FHI7.2_Tutorial](../../../doc/ORAN_FHI7.2_Tutorial.md). The container image used by the docker compose file is tested only on `Ubuntu 22.04` docker host. The image is present in our official docker hub account `docker.io/oaisoftwarealliance/oai-gnb-7.2:develop`.
## Build Image (Optional)
If you wish to make your own image after modification or from a specific branch then you can build it manually,
```bash
cd ../../../
docker build -f docker/Dockerfile.base.ubuntu22 -t ran:base:latest .
docker build -f docker/Dockerfile.fhi72.build.ubuntu22 -t ran:build:latest .
docker build -f docker/Dockerfile.fhi72.gNB.ubuntu22 -t oai-gnb-7.2:<your-image-tag> .
```
The new image will be `oai-gnb-7.2:<your-image-tag>`. You will have to replace this new image with `docker.io/oaisoftwarealliance/oai-gnb-7.2:develop`.
## Configure Networking
### SR-IOV Virtual Functions (VFs)
In docker-compose environment there is no automated method to configure the VFs on the fly. The user will have to manually configure C/U plane VFs before starting the container `OAI-gNB`. You can follow the step [configure-network-interfaces-and-dpdk-vfs](../../../doc/ORAN_FHI7.2_Tutorial.md#configure-network-interfaces-and-dpdk-vfs).
### Interface towards AMF (N2)
For N2 interface we are using `macvlan` driver of docker.
You can use the `bridge` driver, in situation
- When the core network is running on the same machine
- or different machine but you have configured needed `ip route` and forwarding to access the core network from RAN host.
To configure docker `macvlan` network you need to choose `ipam.config` and `driver_opts.parent` are per your environment
```
oai-net:
driver: macvlan
name: oai-net
ipam:
config:
- subnet: "172.21.16.0/22"
ip_range: "172.21.18.20/32"
gateway: "172.21.19.254"
driver_opts:
com.docker.network.bridge.name: "oai-net"
parent: enp193s0f0
```
To configure `bridge` network you need to choose `ipam.config.subnet` as per your environment.
```
oai-net:
driver: bridge
name: oai-net
ipam:
config:
- subnet: 192.168.72.128/26
driver_opts:
com.docker.network.bridge.name: "oai-net"
```
## Deploy OAI-gNB Container
The [configuration file](../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf) used in by this docker compose is configured for VVDN GEN 3 RU (firmware version 03-v3.0.5).
```bash
docker-compose up -d
```
services:
oai-gnb:
image: docker.io/oaisoftwarealliance/oai-gnb-7.2:develop
privileged: true
container_name: oai-gnb
environment:
TZ: Europe/Paris
USE_ADDITIONAL_OPTIONS: --sa --thread-pool 13,14,15,16,17,18
devices:
- /dev/vfio:/dev/vfio/
volumes:
- ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf:/tmp/gnb.conf
- /dev/hugepages:/dev/hugepages
cpuset: "0,1,2,8,9,10,13,14,15,16,17,18"
networks:
oai-net:
ipv4_address: 172.21.18.20
healthcheck:
test: /bin/bash -c "pgrep nr-softmodem"
interval: 10s
timeout: 5s
retries: 5
networks:
oai-net:
driver: macvlan
name: oai-net
ipam:
config:
- subnet: "172.21.16.0/22"
ip_range: "172.21.18.20/32"
gateway: "172.21.19.254"
driver_opts:
com.docker.network.bridge.name: "oai-net"
parent: enp193s0f0
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2024-05-27T11:27:32.381Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" version="24.4.8" etag="Tu2LWHXXymc2V8xZ0cDf" type="google">
<diagram name="Page-1" id="OGevCmJqFMRY4jlIOEzr">
<mxGraphModel dx="1434" dy="759" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;rotation=90;fillColor=#4473c5;strokeColor=#FFFFFF;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="536.82" y="81.77" width="406.06" height="540.1" as="geometry" />
</mxCell>
<mxCell id="3" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="190" y="299.61" width="150" height="90" as="geometry" />
</mxCell>
<mxCell id="4" value="OAI-gNB" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="225" y="309.61" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="5" value="OAI-gNB Host Machine" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="200" y="269.61" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;strokeColor=#FFFFFF;endArrow=oval;endFill=1;" edge="1" source="7" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="676.4549999999999" y="347.52" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="7" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;AMF&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;fontFamily=Helvetica;fontSize=14;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="635.8999999999999" y="454.3100000000002" width="81.11" height="40" as="geometry" />
</mxCell>
<mxCell id="8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;jumpSize=10;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=oval;endFill=1;strokeColor=#FFFFFF;fillColor=#FFFFFF;fontFamily=Helvetica;fontSize=12;" edge="1" source="9" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="770.51" y="347.52" as="targetPoint" />
<Array as="points">
<mxPoint x="772.51" y="347.52" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="9" value="SMF" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;fontFamily=Helvetica;fontSize=14;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="731.29" y="456.30999999999995" width="78.22" height="40" as="geometry" />
</mxCell>
<mxCell id="10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;jumpSize=10;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=oval;endFill=1;strokeColor=#FFFFFF;fillColor=#FFFFFF;fontFamily=Helvetica;fontSize=12;" edge="1" source="11" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="867.5100000000001" y="345" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="11" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;NRF&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;fontFamily=Helvetica;fontSize=14;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="829.7299999999998" y="208.37000000000023" width="76.66" height="40" as="geometry" />
</mxCell>
<mxCell id="12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=oval;endFill=1;strokeColor=#FFFFFF;fontFamily=Helvetica;fontSize=12;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" source="13" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="578.51" y="345" as="targetPoint" />
<mxPoint x="505.7299999999998" y="406.68000000000006" as="sourcePoint" />
<Array as="points">
<mxPoint x="578.51" y="305.0000000000001" />
<mxPoint x="578.51" y="305.0000000000001" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="13" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Database&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=14;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="544.46" y="262.37" width="68.05" height="40" as="geometry" />
</mxCell>
<mxCell id="14" value="" style="endArrow=none;html=1;fillColor=#B266FF;strokeColor=#FFFFFF;startArrow=none;startFill=0;jumpSize=10;endFill=0;fontFamily=Helvetica;fontSize=12;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="540.8399999999999" y="345.68000000000006" as="sourcePoint" />
<mxPoint x="932.5100000000002" y="346" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="15" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;Namf&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="679.5" y="386.68000000000006" width="39.51" height="20" as="geometry" />
</mxCell>
<mxCell id="16" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;Nsmf&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="774.9799999999999" y="385.37000000000006" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="17" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;Nnrf&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="874.5599999999998" y="306.19000000000017" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#FFFFFF;endArrow=oval;endFill=1;fontFamily=Helvetica;fontSize=12;" edge="1" source="19" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="702.51" y="345" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="19" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;AUSF&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;fontFamily=Helvetica;fontSize=14;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="668.8299999999999" y="251.68000000000018" width="68.34" height="40" as="geometry" />
</mxCell>
<mxCell id="20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=oval;endFill=1;strokeColor=#FFFFFF;fontFamily=Helvetica;fontSize=12;" edge="1" source="21" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="789.51" y="345" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="21" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;UDM&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;fontFamily=Helvetica;fontSize=14;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="755.76" y="251.68000000000018" width="66.75" height="40" as="geometry" />
</mxCell>
<mxCell id="22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=oval;endFill=1;strokeColor=#FFFFFF;fontFamily=Helvetica;fontSize=12;" edge="1" source="23" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="622.51" y="345" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="23" value="UDR" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;fontFamily=Helvetica;fontSize=14;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="587.4499999999998" y="208.37000000000023" width="70" height="40" as="geometry" />
</mxCell>
<mxCell id="24" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;Nausf&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="704.4599999999998" y="319.61000000000024" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="25" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;Nudm&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="793.6899999999998" y="311.6800000000002" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="26" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;Nudr&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="622.51" y="315.37000000000023" width="60" height="20" as="geometry" />
</mxCell>
<mxCell id="27" value="&lt;span style=&quot;font-style: normal ; letter-spacing: normal ; text-align: center ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(68 , 115 , 197) ; font-size: 12px&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px&quot;&gt;Service Base Network&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="944.06" y="336.6099999999999" width="68.45" height="20" as="geometry" />
</mxCell>
<mxCell id="28" value="" style="endArrow=none;html=1;strokeWidth=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#FFFFFF;fontFamily=Helvetica;exitX=0.798;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" source="2" target="7" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="480" y="473.70000000000005" as="sourcePoint" />
<mxPoint x="656.4099999999999" y="436.68000000000006" as="targetPoint" />
<Array as="points">
<mxPoint x="591.51" y="474" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="29" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;N2: 172.21.6.200&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="527.7499999999999" y="446.3100000000004" width="113.68" height="20" as="geometry" />
</mxCell>
<mxCell id="30" value="&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;background-color: rgb(68, 115, 197);&quot;&gt;Openshift Cluster&lt;br&gt;&lt;/span&gt;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=16;" vertex="1" parent="1">
<mxGeometry x="658.2" y="160" width="176.78" height="30" as="geometry" />
</mxCell>
<mxCell id="31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=oval;endFill=1;strokeColor=#FFFFFF;" edge="1" source="32" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="902.5100000000001" y="347.52" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="32" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;UPF&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;fontFamily=Helvetica;fontSize=14;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="859.2900000000001" y="456.30999999999995" width="88.22" height="40" as="geometry" />
</mxCell>
<mxCell id="33" value="&lt;span style=&quot;font-style: normal; letter-spacing: normal; text-align: center; text-indent: 0px; text-transform: none; word-spacing: 0px; background-color: rgb(68, 115, 197); font-size: 12px;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;font-size: 12px;&quot;&gt;N3 172.21.6.201&lt;/font&gt;&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1;fontFamily=Helvetica;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="704.4599999999999" y="530.0000000000003" width="113.68" height="20" as="geometry" />
</mxCell>
<mxCell id="34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.828;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#FFFFFF;endArrow=none;endFill=0;" edge="1" source="32" target="2" parent="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="903" y="523" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" source="37" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="312.5" y="389.6100000000001" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" source="37" target="2" parent="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="37" value="Midhaul/&lt;br&gt;Backhaul&lt;br&gt;Switch" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="340" y="450" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="38" value="Fronthaul&lt;br&gt;PTP Aware&lt;br&gt;Switch" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="118" y="446.31" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" source="40" target="38" parent="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="218" y="486" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="40" value="" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="200" y="360" width="29.61" height="29.61" as="geometry" />
</mxCell>
<mxCell id="41" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="200" y="378.61" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="42" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="220" y="378.61" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="43" value="" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="300" y="360" width="29.61" height="29.61" as="geometry" />
</mxCell>
<mxCell id="44" value="O-RU" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="40" y="320.45" width="60" height="39.55" as="geometry" />
</mxCell>
<mxCell id="45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.013;entryY=0.421;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" source="44" target="38" parent="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="70" y="480" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="46" value="VF-C" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="221" y="392.61" width="35" height="20.39" as="geometry" />
</mxCell>
<mxCell id="47" value="VF-U" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="178" y="392.61" width="35" height="20.39" as="geometry" />
</mxCell>
<mxCell id="48" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="200" y="120.00000000000001" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="49" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="200" y="150" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="50" value="Virtual Function U Plane" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="237" y="110" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="51" value="Virtual Function C Plane" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="237" y="140" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="52" value="" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="201" y="180" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="53" value="Physical Interface" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="237" y="175" width="140" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
#/*
# * 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
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for Ubuntu 22.04
#
#---------------------------------------------------------------------
FROM ubuntu:jammy AS ran-base
ARG NEEDED_GIT_PROXY
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/Paris
ENV BUILD_UHD_FROM_SOURCE=True
ENV UHD_VERSION=4.4.0.0
#install developers pkg/repo
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
#gcc needed for build_oai
build-essential \
psmisc \
git \
gcc-12 \
g++-12 \
xxd \
# python3-pip for conf template generation
python3-pip && \
pip3 install --ignore-installed pyyaml && \
## setting to gcc 12 and g++ 12 as default
ln -s -f /usr/bin/gcc-12 /usr/bin/gcc && \
ln -s -f /usr/bin/g++-12 /usr/bin/g++
# Add "Tini - A tiny but valid init for containers", https://github.com/krallin/tini
# it will be copied into target containers, to print exit numbers and handle signals properly
ENV TINI_VERSION v0.19.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
# In some network environments, GIT proxy is required
RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi"
# Copying only the needed files to create ran-base
WORKDIR /oai-ran/cmake_targets/tools
COPY cmake_targets/tools/build_helper \
cmake_targets/tools/uhd-4.x-tdd-patch.diff \
./
WORKDIR /oai-ran/cmake_targets
COPY cmake_targets/build_oai .
WORKDIR /oai-ran
COPY oaienv .
#run build_oai -I to get the builder image
RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai -I -w USRP --install-optional-packages
#/*
# * 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
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface RAN Build for FHI 7.2
# Valid for UBUNTU 22.04
#
#---------------------------------------------------------------------
FROM ran-base:latest as ran-base
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
meson \
wget \
xz-utils \
pkg-config \
libnuma-dev && \
rm -rf /var/lib/apt/lists/*
RUN rm -Rf /oai-ran
WORKDIR /oai-ran
COPY . .
## Download and build DPDK
RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \
tar -xvf dpdk-20.11.9.tar.xz && \
cd dpdk-stable-20.11.9 && \
meson build && \
ninja -C build && \
ninja install -C build
## Build Fronthaul library
RUN git clone https://gerrit.o-ran-sc.org/r/o-du/phy.git /opt/phy && \
cd /opt/phy && \
git checkout oran_e_maintenance_release_v1.0 &&\
git apply /oai-ran/cmake_targets/tools/oran_fhi_integration_patches/E/oaioran_E.patch && \
cd /opt/phy/fhi_lib/lib && \
RTE_SDK=/oai-ran/dpdk-stable-20.11.9/ XRAN_DIR=/opt/phy/fhi_lib make XRAN_LIB_SO=1
## Build and install OAI
#run build_oai to build the target image
RUN /bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai \
--gNB \
--build-lib "telnetsrv enbscope uescope nrscope nrqtscope" \
-t oran_fhlib_5g --cmake-opt -Dxran_LOCATION=/opt/phy/fhi_lib/lib -P \
--build-e2 --cmake-opt -DXAPP_MULTILANGUAGE=OFF \
$BUILD_OPTION && \
# Mainly to see if the sanitize option was perfectly executed
ldd ran_build/build/nr-softmodem && \
ldd ran_build/build/liboran_fhlib_5g.so && \
ldd /opt/phy/fhi_lib/lib/build/libxran.so
#/*
# * 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
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for Ubuntu22.04
#
#---------------------------------------------------------------------
FROM ran-base:latest as gnb-base
FROM ran-build:latest AS gnb-build
#start from scratch for target executable
FROM ubuntu:jammy as oai-gnb
ARG BUILD_OPTION
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
software-properties-common \
procps \
pkg-config \
libsctp1 \
tzdata \
libblas3 \
libatlas3-base \
libconfig9 \
openssl \
net-tools \
iperf \
iproute2 \
iputils-ping \
gdb \
pciutils \
libpcap-dev \
xz-utils \
libnuma-dev \
python3 \
python3-six \
python3-requests &&\
# if the --sanitize option was used to build, additional packages are required
/bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \
libasan5 \
libubsan1 \
liblapacke; fi' && \
rm -rf /var/lib/apt/lists/*
WORKDIR /opt/oai-gnb/bin
COPY --from=gnb-build \
/oai-ran/cmake_targets/ran_build/build/nr-softmodem ./
COPY ./docker/scripts/gnb_entrypoint.sh ./entrypoint.sh
COPY --from=gnb-build \
/oai-ran/cmake_targets/ran_build/build/librfsimulator.so \
/oai-ran/cmake_targets/ran_build/build/liboai_transpro.so \
/oai-ran/cmake_targets/ran_build/build/libcoding.so \
/oai-ran/cmake_targets/ran_build/build/libparams_libconfig.so \
/oai-ran/cmake_targets/ran_build/build/libdfts.so \
/oai-ran/cmake_targets/ran_build/build/libldpc*.so \
/oai-ran/cmake_targets/ran_build/build/libtelnetsrv.so \
/oai-ran/cmake_targets/ran_build/build/libtelnetsrv_ci.so \
/usr/local/lib/
## Libxran library
COPY --from=gnb-build \
/opt/phy/fhi_lib/lib/build/libxran.so \
/opt/phy/fhi_lib/lib/build/
## DPDK libraries
COPY --from=gnb-build /usr/local/lib/x86_64-linux-gnu /usr/local/lib/x86_64-linux-gnu/
# Copying liboost files
COPY --from=gnb-base \
/usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_regex.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_thread.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.74.0 \
/usr/lib/x86_64-linux-gnu/
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so /usr/local/lib/liboai_device.so" && \
ldconfig && \
ldd /opt/oai-gnb/bin/nr-softmodem
WORKDIR /opt/oai-gnb
COPY --from=gnb-base /tini /tini
ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb/bin/entrypoint.sh"]
CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
......@@ -177,8 +177,8 @@ gNBs =
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.108/22";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.108/22";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20/22";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20/22";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
......@@ -226,7 +226,7 @@ RUs = (
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 6;
ru_thread_core = 9;
sl_ahead = 5;
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000];
......@@ -277,7 +277,7 @@ log_config : {
fhi_72 = {
dpdk_devices = ("0000:31:06.0", "0000:31:06.1");
system_core = 0;
io_core = 4;
io_core = 1;
worker_cores = (2);
du_addr = ("76:76:64:6e:00:01", "76:76:64:6e:00:01");
ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment