Currently, OpenOLT supports Broadcom's BAL API, version 3.4.9.6.
The following proprietary source code is required to build the OpenOLT agent.
SW-BCM686OLT_<BAL_VER>.tgz
- Broadcom BAL source and Maple/Aspen SDKsdk-all-<SDK_VER>.tar.gz
- Broadcom Qumran SDKACCTON_BAL_<BAL_VER>-<ACCTON_VER>.patch
- Accton/Edgecore's patchPHOENIX_BAL_<BAL_VER>_<PHOENIX_VER>.patch
- Phoenix/Radisys patchThe versions currently supported by the OpenOLT agent for Accton/Edgecore ASXvOLT16/ASGvOLT64 are:
SW-BCM686OLT_3_4_9_6.tgz
sdk-all-6.5.13.tar.gz
ACCTON_BAL_3.4.9.6-V202012040101.patch
. This is downloadable from the common CSP CS00003233745.The versions currently supported by the OpenOLT agent for Phoenix/Radisys RLT-3200G-W are:
SW-BCM686OLT_3_4_9_8.tgz
sdk-all-6.5.13.tar.gz
PHOENIX_BAL_3.4.9.8_V20210420.patch
. This is downloadable from the common CSP CS00003233745.NOTE: the repository does not contain the above three source packages. These are needed to build the OpenOLT agent executable. Contact Dave Baron at Broadcom to access the source packages.
Hardware :
CPU: Dual-core (4 Threads) up.
Memory: 6GB
Storage: 50GB of free space.
Software :
OpenOLT agent for Accton/Edgecore ASXvOLT16/ASGvOLT64 builds on Debian GNU/Linux 8.11.1 (jessie) and for Phoenix/Radisys RLT-3200G-W builds on Debian GNU/Linux 9.13 (stretch). The Debian 8.11.1 jessie ISO installer image is downloadble from here and Debian 9.13 stretch ISO installer image is downloadable from here.
At least 4G of ram and 4G of swap - compilation is memory intensive
Essential tools for building packages
Install the following packages for Accton/Edgecore ASXvOLT16/ASGvOLT64 based build
sudo apt-get update && sudo apt-get install -y git pkg-config build-essential autoconf libgflags-dev clang libc++-dev unzip libssl-dev gawk debhelper debhelper dh-systemd init-system-helpers curl cmake ccache g++-4.9 wget ca-certificates lcov libgoogle-glog-dev libpcap-dev
Run the below commands to ensure that g++-4.9 and gcc-4.9 are default g++ and gcc compiler versions.
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
Install the following packages for Phoenix/Radisys RLT-3200G-W based build
sudo apt-get update && sudo apt-get install -y git pkg-config build-essential autoconf libgflags-dev clang libc++-dev unzip libssl-dev gawk debhelper debhelper dh-systemd init-system-helpers curl cmake ccache g++ wget ca-certificates lcov libgoogle-glog-dev libpcap-dev libjansson-dev
Run the below commands to ensure that g++-6 and gcc-6 are default g++ and gcc compiler versions.
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 20
Follow the instructions here to install docker-ce
. It is not necessary to install docker-ce-cli
and containerd.io
.
cd /tmp git clone -b v3.5.1 https://gitlab.kitware.com/cmake/cmake.git cd /tmp/cmake ./bootstrap make sudo make install
cd /tmp git clone -b v1.31.1 https://github.com/grpc/grpc cd /tmp/grpc git submodule update --init mkdir -p cmake/build cd cmake/build cmake ../.. -DgRPC_INSTALL=ON \ -DCMAKE_BUILD_TYPE=Release \ -DgRPC_ABSL_PROVIDER=module \ -DgRPC_CARES_PROVIDER=module \ -DgRPC_PROTOBUF_PROVIDER=module \ -DgRPC_RE2_PROVIDER=module \ -DgRPC_SSL_PROVIDER=module \ -DgRPC_ZLIB_PROVIDER=module make sudo make install # copy library and grpc_cpp_plugin to path below. sudo cp `find . -name "*.a"` /usr/local/lib/ sudo cp `find . -name grpc_cpp_plugin` /usr/local/bin/
git clone -b v20.08 https://github.com/seladb/PcapPlusPlus.git ./configure-linux.sh —default make all sudo make install
By default the apt-get install an older version of git (2.1.4) on debian jessie 8.11.1. This older version does not support some of the latest git options. You may want to install a later version of git using procedure below.
sudo apt-get remove --purge git ## Removes older verion of git sudo apt update sudo apt install make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip wget https://github.com/git/git/archive/v2.18.0.zip -O git.zip unzip git.zip cd git-* make prefix=/usr/local all sudo make prefix=/usr/local install
Edgecore ASXvOLT16/ASGvOLT64 build environment note :
Radisys RLT-3200G-W build environment note :
Clone the openolt
repository either from OpenCORD Gerrit:
git clone https://gerrit.opencord.org/openolt
Copy the Broadcom source and patch files to the openolt/agent/download directory:
cd <dir containing Broadcom source and patch files> cp ACCTON_BAL_3.4.9.6-V202012040101.patch SW-BCM686OLT_3_4_9_6.tgz sdk-all-6.5.13.tar.gz <cloned openolt repo path>/agent/download
Run the configure script to generate the appropriate Makefile scaffolding for the desired target:
cd openolt/agent ./configure
Run make. This can take a while to complete the first time, since it builds ONL and the Broadcom SDKs. Following runs will be much faster, as they only build the OpenOLT agent source.
make OPENOLTDEVICE=asfvolt16
Note that the required ONL version 4.14
is built as part of the above build procedure and is available at path build/onl/OpenNetworkLinux/RELEASE/jessie/amd64/ONL-onl-4.14_ONL-OS8_2020-01-30.0413-72b95a7_AMD64_INSTALLED_INSTALLER
. This ONL Installer should be used to flash the OS on the OLT.
If you need to use a specific version of voltha-protos, then specify the git tag/branch corresponding to that specific version:
make OPENOLTDEVICE=asfvolt16 OPENOLT_PROTO_VER=master
By default, the OPENOLT_PROTO_VER
defaults to git tag v4.2.0 of the voltha-protos repo.
Optionally, for the NNI port default setting, the options could make the default setting of the NNI port speed.
make OPENOLTDEVICE=asfvolt16 PORT_100G_SPEED=40000
make OPENOLTDEVICE=asfvolt16 PORT_100G_SPEED=10000
make OPENOLTDEVICE=asgvolt64 PORT_100G_SPEED=100000 PORT_25G_SPEED=20000
make OPENOLTDEVICE=asgvolt64 PORT_100G_SPEED=100000 PORT_25G_SPEED=10000
make OPENOLTDEVICE=asgvolt64 PORT_100G_SPEED=100000 PORT_25G_SPEED=1000
If the build process succeeds, libraries and executables will be created in the openolt/agent/build directory.
Optionally, build the debian package that will be installed on the OLT.
make OPENOLTDEVICE=asfvolt16 deb
If the build process succeeds, a .deb
package will be created as well in the openolt/agent/build
directory.
Run make with inband option as specified below to build all-in-one ONL image packed with Openolt debian package and Inband OLT startup scripts(Scripts to enable Inband channel and start dev_mgmt_daemon and openolt services). This can take a while to complete the first time, since it builds ONL and the Broadcom SDKs. Following runs will be much faster, as they try to build OpenOLT agent source and Inband ONL with modified Openolt deb package.
make OPENOLTDEVICE=asfvolt16 INBAND=y VLAN_ID=<INBAND_VLAN> e.g: make OPENOLTDEVICE=asfvolt16 INBAND=y VLAN_ID=5
If no VLAN_ID is specified in above command it defaults to 4093.
Note that the required INBAND ONL version 4.14
is built as part of the above build procedure and is available at path build/onl/OpenNetworkLinux/RELEASE/jessie/amd64/ONL-onl-4.14_ONL-OS8_2020-04-22. 2206-b4af32e_AMD64_INSTALLED_INSTALLER\.
This ONL Installer should be used to flash the OS on the OLT.
NOTE: To compile for ASGvOLT 64 port GPON OLT, set OPENOLTDEVICE
to asgvolt64
during build procedure like below.
make OPENOLTDEVICE=asgvolt64
To cleanup the repository and start the build procedure again, run:
# cleans up the agent objects, protos compiled artificats and openolt deb packages make OPENOLTDEVICE=asfvolt16 clean # cleans up the agent objects, protos compiled artificats, openolt deb packages and bal sources make OPENOLTDEVICE=asfvolt16 distclean
Clone the openolt
repository either from OpenCORD Gerrit:
git clone https://gerrit.opencord.org/openolt
Copy the Broadcom source and patch files to the openolt/agent/download directory:
cd <dir containing Broadcom source and patch files> cp PHOENIX_BAL_3.4.9.8_V20210420.patch SW-BCM686OLT_3_4_9_8.tgz sdk-all-6.5.13.tar.gz <cloned openolt repo path>/agent/download
Run the configure script to generate the appropriate Makefile scaffolding for the desired target:
cd openolt/agent ./configure
Run make. This can take a while to complete the first time, since it builds ONL and the Broadcom SDKs. Following runs will be much faster, as they only build the OpenOLT agent source.
make OPENOLTDEVICE=rlt-3200g-w
NOTE: To compile for Radisys RLT-1600G-W 16 port GPON OLT, set OPENOLTDEVICE
to rlt-1600g-w
during build procedure like below.
make OPENOLTDEVICE=rlt-1600g-w
To compile for Radisys RLT-1600X-W 16 port GPON OLT, set OPENOLTDEVICE
to rlt-1600x-w
during build procedure like below.
make OPENOLTDEVICE=rlt-1600x-w
Note that the required ONL version 4.19
is built as part of the above build procedure and is available at path build/onl/OpenNetworkLinux/RELEASE/stretch/amd64/ONL-onl-4.19_ONL-OS9_2021-03-30.0455-72b95a7_AMD64_INSTALLED_INSTALLER
. This ONL Installer should be used to flash the OS on the OLT.
If you need to use a specific version of voltha-protos, then specify the git tag/branch corresponding to that specific version:
make OPENOLTDEVICE=rlt-3200g-w OPENOLT_PROTO_VER=master
By default, the OPENOLT_PROTO_VER
defaults to git tag v4.2.0 of the voltha-protos repo.
If the build process succeeds, libraries and executables will be created in the openolt/agent/build directory.
Command to build debian package that will be installed on the OLT with default QSFP NNI port speed as 40g and SFP NNI port speed as 10g in case of RLT-3200G-w and RLT-1600G-w and with default QSFP NNI port speed as 100g and SFP NNI port speed as 25g in case of RLT_1600X-W. NNI port speed configuration not included during inital make to reduce build time in case of different NNI port speed requirement.
make OPENOLTDEVICE=rlt-3200g-w deb
Optionally, debian package can be built with other NNI port speed options as below for RLT-3200G-W/RLT-1600G-W/RLT-1600X-W,
make OPENOLTDEVICE=rlt-3200g-w deb PORT_QSFP_SPEED=10g PORT_SFP_SPEED=10g
make OPENOLTDEVICE=rlt-1600x-w deb PORT_QSFP_SPEED=40g PORT_SFP_SPEED=10g
make OPENOLTDEVICE=rlt-1600x-w deb PORT_QSFP_SPEED=10g PORT_SFP_SPEED=10g
If the build process succeeds, a .deb
package will be created as well in the openolt/agent/build
directory.
To cleanup the repository and start the build procedure again, run:
# cleans up the agent objects, protos compiled artificats and openolt deb packages make OPENOLTDEVICE=rlt-3200g-w clean # cleans up the agent objects, protos compiled artificats, openolt deb packages and bal sources make OPENOLTDEVICE=rlt-3200g-w distclean