Compare commits

..

No commits in common. "master" and "6.0.0-1" have entirely different histories.

8 changed files with 145 additions and 171 deletions

3
.gitignore vendored
View File

@ -1,2 +1,5 @@
*.tar.gz
*.sif
.docker_build
overlay/
shared/

View File

@ -1,5 +1,5 @@
--- a/epan/epan.h 2024-04-20 00:34:15.534364916 -0700
+++ b/epan/epan.h 2024-04-20 00:34:25.094467480 -0700
--- epan.h.old 2024-04-20 00:34:15.534364916 -0700
+++ epan.h 2024-04-20 00:34:25.094467480 -0700
@@ -10,9 +10,6 @@
#ifndef __EPAN_H__
#define __EPAN_H__

View File

@ -1,25 +0,0 @@
diff --git a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf
index fd478d8969..b3b89250e0 100644
--- a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf
+++ b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf
@@ -145,7 +145,7 @@ PH-TypeListMCG
PH-TypeListSCG
RA-ReportList-r16
RACH-ConfigCommon
-RadioBearerConfig
+RadioBearerConfig @radio_bearer_conf
ReferenceTime-r16
RRCReconfiguration @rrc_reconf
RRCReconfigurationComplete
diff --git a/epan/dissectors/packet-nr-rrc.c b/epan/dissectors/packet-nr-rrc.c
index 75977474c0..cfa8602711 100644
--- a/epan/dissectors/packet-nr-rrc.c
+++ b/epan/dissectors/packet-nr-rrc.c
@@ -112214,6 +112214,7 @@ proto_register_nr_rrc(void) {
register_dissector("nr-rrc.ue_nr_cap", dissect_nr_rrc_UE_NR_Capability_PDU, proto_nr_rrc);
register_dissector("nr-rrc.sbcch.sl.bch", dissect_SBCCH_SL_BCH_Message_PDU, proto_nr_rrc);
register_dissector("nr-rrc.scch", dissect_SCCH_Message_PDU, proto_nr_rrc);
+ register_dissector("nr-rrc.radio_bearer_conf", dissect_nr_rrc_RadioBearerConfig_PDU, proto_nr_rrc);
/*--- End of included file: packet-nr-rrc-dis-reg.c ---*/

97
Dockerfile Normal file
View File

@ -0,0 +1,97 @@
FROM ubuntu:22.04
ARG MAX_THREADS=1
ARG WS_VER=3.4.0
ARG MI_BRANCH=ubuntu22-py310
ARG WIRESHARK_URL=http://www.mobileinsight.net/wireshark-${WS_VER}-rbc-dissector.tar.xz
ADD 00-cpp_compat.patch /build/00-cpp_compat.patch
# Run apt update
RUN set -ex; \
export DEBIAN_FRONTEND=noninteractive; \
apt-get update; \
apt-get upgrade -y; \
apt-get install -y \
git \
python3 \
python3-pip \
python3-wxgtk4.0 \
python3-matplotlib \
cmake \
pkg-config \
wget \
libglib2.0-dev \
bison \
flex \
libpcap-dev \
libgcrypt-dev \
qtbase5-dev \
qtchooser \
qt5-qmake \
qtbase5-dev-tools \
qttools5-dev \
qtmultimedia5-dev \
libqt5svg5-dev \
libc-ares-dev \
libsdl2-mixer-2.0-0 \
libsdl2-image-2.0-0 \
libsdl2-2.0-0;
# Download resources
RUN set -ex; \
mkdir -p /build; \
cd /build; \
wget "$WIRESHARK_URL" -nv -O "wireshark-$WS_VER.tar.xz"; \
tar -xf "wireshark-$WS_VER.tar.xz"; \
git clone "https://github.com/mobile-insight/mobileinsight-core.git"; \
git -C mobileinsight-core checkout "$MI_BRANCH";
# Compile and install wireshark
RUN set -ex; \
cd "/build/wireshark-$WS_VER"; \
patch epan/epan.h < /build/00-cpp_compat.patch; \
cmake -DBUILD_wireshark=OFF .; \
make -j "$MAX_THREADS"; \
make install; \
ldconfig;
# Compile and install Wireshark dissector
Run set -ex; \
cd /build/mobileinsight-core/ws_dissector; \
g++ ws_dissector.cpp packet-aww.cpp -o ws_dissector \
$(pkg-config --libs --cflags glib-2.0) \
-I"/build/wireshark-$WS_VER" \
-L"/usr/local/lib" \
-lwireshark \
-lwsutil \
-lwiretap; \
strip ws_dissector; \
install -Dm 755 ws_dissector /usr/local/bin/ws_dissector;
# Compile and install MobileInsight
Run set -ex; \
cd /build/mobileinsight-core; \
pip3 install pyserial; \
python3 setup.py install;
# Install MobileInsight GUI
Run set -ex; \
cd /build/mobileinsight-core; \
mkdir -p /usr/local/share/mobileinsight; \
cp -r gui/* /usr/local/share/mobileinsight;\
ln -s /usr/local/share/mobileinsight/mi-gui /usr/local/bin/mi-gui;
# Install examples
Run set -ex; \
cd /build/mobileinsight-core; \
cp -r examples /opt/mobileinsight-examples;
# Link python3 to python
Run set -ex; \
cd /usr/bin; \
ln -s python3 python;
# Cleanup
Run set -ex; \
apt-get autoclean -y; \
rm -rf /build;

View File

@ -1,30 +1,44 @@
APPTAINER ?= singularity
DOCKER ?= docker
APPTAINER ?= apptainer
OVERLAY_DIR ?= ./overlay
NUM_THREADS ?= $(shell grep -c processor /proc/cpuinfo)
SHARED_DIR ?= ./shared
MAX_THREADS ?= $(shell grep -c processor /proc/cpuinfo)
UID := $(shell id -u)
GID := $(shell id -g)
.DEFAULT_GOAL := mobileinsight.sif
.DEFAULT_GOAL := .docker_build
mobileinsight.sif: mobileinsight.def
"$(APPTAINER)" build --build-arg="NUM_THREADS=$(NUM_THREADS)" "$@" "$<"
.docker_build: Dockerfile
"$(DOCKER)" build --build-arg "MAX_THREADS=$(MAX_THREADS)" -t mobileinsight .
touch "$@"
mobileinsight-spark.sif: with-spark.def mobileinsight.sif
mobileinsight.tar.gz: .docker_build
"$(DOCKER)" save mobileinsight:latest | gzip > "$@"
mobileinsight.sif: mobileinsight.def .docker_build
"$(APPTAINER)" build "$@" "$<"
prepare:
run: .docker_build
@mkdir -p "$(SHARED_DIR)"
@test -n "$(shell docker image ls -q mobileinsight)" \
|| (echo Cannot find image mobileinsight:latest, has it been built yet? 1>&2 \
&& false)
@"$(DOCKER)" run --rm -it --privileged -v "$(SHARED_DIR):/mnt" \
-e TERM -u root --entrypoint bash mobileinsight:latest
app-run: mobileinsight.sif
@mkdir -p "$(OVERLAY_DIR)"
@lsmod | grep overlay > /dev/null || sudo modprobe overlay
run: mobileinsight.sif prepare
@$(APPTAINER) run --overlay "$(OVERLAY_DIR)" \
-B "/run/user/$(UID)" mobileinsight.sif
run-spark: mobileinsight-spark.sif prepare
@$(APPTAINER) run --overlay "$(OVERLAY_DIR)" \
-B "/run/user/$(UID)" mobileinsight-spark.sif
clean:
rm -rf *.sif $(OVERLAY_DIR)
"$(DOCKER)" container prune
"$(DOCKER)" image prune -a
rm -f .docker_build mobileinsight.tar.gz mobileinsight.sif
.PHONY: prepare run run-spark clean
clean-data:
rm -rf $(OVERLAY_DIR) $(SHARED_DIR)
.PHONY: sc-run run clean clean-data

View File

@ -1,21 +1,13 @@
MobileInsight Apptainer
=======================
Single launch binary for
[MobileInsight](https://github.com/mobile-insight/mobileinsight-core) in an
Ubuntu 22.04 SIF portable container.
Single launch binary for MobileInsight in a Ubuntu 22.04 portable container.
Dependencies
------------
Either one of the following dependencies is needed to run or build SIF images:
- [Apptainer](https://apptainer.org/)
- [Singularity](https://sylabs.io/singularity/)
To use the `make run` command, the overlay Linux kernel module must also be
available on the system. This allows you to make changes to the SIF file using
an overlay filesystem.
The host side only needs `apptainer` or `singularity` to function. A gui is
needed to launch the log viewer.
Usage
-----
@ -29,18 +21,17 @@ $ ./mobileinsight.sif python3 "$PYTHON_ARGS"
# Start a bash shell inside the container
$ ./mobileinsight.sif bash
# Only available in spark version
#
# Start a pyspark interpreter
$ ./mobileinsight-spark.sif pyspark
```
Examples are stored in /opt/mobileinsight-examples.
Build
-----
Building
--------
Run `make mobileinsight.sif` or `make mobileinsight-spark.sif` to build the
corresponding apptainer image. The spark version includes both `mobileinsight`
along with `pyspark` for distributed log processing.
To build the apptainer, the following dependencies are needed on the host
machine:
1. Apptainer or Singularity
2. Docker
Run `make mobileinsight.sif` to build the apptainer image.

View File

@ -1,94 +1,5 @@
BootStrap: docker
From: ubuntu:22.04
%arguments
NUM_THREADS=1
WS_VER=3.4.0
MI_COMMIT=4b204e0
%files
00-cpp_compat.patch /build/00-cpp_compat.patch
01-radio_bearer_config.patch /build/01-radio_bearer_config.patch
%post
# Update and install dependencies
mkdir -p /build
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get upgrade -y
apt-get install -y \
git \
python3 \
python3-pip \
python3-venv \
python3-wxgtk4.0 \
python3-matplotlib \
cmake \
pkg-config \
wget \
libglib2.0-dev \
bison \
flex \
libpcap-dev \
libgcrypt-dev \
qtbase5-dev \
qtchooser \
qt5-qmake \
qtbase5-dev-tools \
qttools5-dev \
qtmultimedia5-dev \
libqt5svg5-dev \
libc-ares-dev \
libsdl2-mixer-2.0-0 \
libsdl2-image-2.0-0 \
libsdl2-2.0-0
pip3 install pyserial
# Download resources
cd /build
wget "https://github.com/wireshark/wireshark/archive/refs/tags/v{{ WS_VER }}.tar.gz" \
-nv -O "wireshark-{{ WS_VER }}.tar.xz"
tar -xf "wireshark-{{ WS_VER }}.tar.xz"
git clone "https://github.com/mobile-insight/mobileinsight-core.git"
git -C mobileinsight-core checkout "{{ MI_COMMIT }}"
# Compile and install wireshark
cd "/build/wireshark-{{ WS_VER }}"
for patch in /build/*.patch; do
patch -p1 < "$patch"
done
cmake -DBUILD_wireshark=OFF .
make -j "{{ NUM_THREADS }}"
make install
ldconfig
# Compile and install Wireshark dissector
cd /build/mobileinsight-core/ws_dissector
g++ ws_dissector.cpp packet-aww.cpp -o ws_dissector \
$(pkg-config --libs --cflags glib-2.0) \
-I"/build/wireshark-{{ WS_VER }}" \
-L"/usr/local/lib" \
-lwireshark \
-lwsutil \
-lwiretap
strip ws_dissector
install -Dm 755 ws_dissector /usr/local/bin/ws_dissector
# Compile and install MobileInsight
cd /build/mobileinsight-core
python3 setup.py install
mkdir -p /usr/local/share/mobileinsight
cp -r gui/* /usr/local/share/mobileinsight
ln -s /usr/local/share/mobileinsight/mi-gui /usr/local/bin/mi-gui
cp -r examples /opt/mobileinsight-examples
# Link python3 to python
cd /usr/bin
ln -s python3 python
# Cleanup
apt-get autoclean -y
rm -rf /build
BootStrap: docker-daemon
From: mobileinsight:latest
%runscript
set -e
@ -98,4 +9,3 @@ From: ubuntu:22.04
else
"$@"
fi

View File

@ -1,16 +0,0 @@
Bootstrap: localimage
From: mobileinsight.sif
%post
# Update and install dependencies
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get upgrade -y
apt-get install -y \
python3-pandas \
openjdk-8-jre-headless \
scala
pip3 install pyspark[sql]==3.5.1 dill==0.3.8
# Cleanup
apt-get autoclean -y