Hi Philip,
Thank you very much for the detailed instructions!
It was still not completely straight forward to do the compilation,
because of my proxy, but I finally managed to do it. However, the
installation of the packages failed due to an unsatisfied dependency (at
least is seems to be so).
I document also my compilation steps below, just in case, if someone
else will be in the same situation of using a proxy. You can jump to the
"PROBLEM" label.
On 11/12/2022 12:52 AM, filvarga wrote:
Hi Gabor,
I would suggest using ubuntu 20.04 to build your .deb packages and
then upload them to the servers.
Basically you would do this:
1) git clone https://github.com/FDio/vpp.git && cd vpp
2) git checkout v22.06
Everything worked fine up to this point.
However, the following command did not succeed, because it wanted to
download something, but I do not have a direct Internet access on the
StarBED nodes. I use a proxy, it is set for git as follows:
root@p106:~# cat .gitconfig
[http]
proxy = http://172.16.46.241:8080
3) make install-ext-dep
The output of this command was the following:
make -C build/external install-deb
make[1]: Entering directory '/root/vpp/build/external'
make[2]: Entering directory '/root/vpp/build/external'
dpkg-buildpackage: info: source package vpp-ext-deps
dpkg-buildpackage: info: source version 22.06-7
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by VPP Dev <vpp-dev@lists.fd.io>
dpkg-buildpackage: info: host architecture amd64
dpkg-source --before-build .
debian/rules clean
make[3]: Entering directory '/root/vpp/build/external/deb'
dh clean
debian/rules override_dh_clean
make[4]: Entering directory '/root/vpp/build/external/deb'
make -C .. clean
make[5]: Entering directory '/root/vpp/build/external'
make[5]: Leaving directory '/root/vpp/build/external'
make[4]: Leaving directory '/root/vpp/build/external/deb'
make[3]: Leaving directory '/root/vpp/build/external/deb'
debian/rules build
make[3]: Entering directory '/root/vpp/build/external/deb'
dh build
dh_update_autotools_config
dh_autoreconf
create-stamp debian/debhelper-build-stamp
make[3]: Leaving directory '/root/vpp/build/external/deb'
debian/rules binary
make[3]: Entering directory '/root/vpp/build/external/deb'
dh binary
dh_testroot
dh_prep
debian/rules override_dh_install
make[4]: Entering directory '/root/vpp/build/external/deb'
make -C .. install
make[5]: Entering directory '/root/vpp/build/external'
mkdir -p downloads
Downloading http://github.com/01org/intel-ipsec-mb/archive/v1.2.tar.gz
% Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:02:09 --:--:-- 0
curl: (28) Failed to connect to github.com port 80: Connection timed out
make[5]: *** [packages/ipsec-mb.mk:48: downloads/v1.2.tar.gz] Error 28
make[5]: Leaving directory '/root/vpp/build/external'
make[4]: *** [debian/rules:25: override_dh_install] Error 2
make[4]: Leaving directory '/root/vpp/build/external/deb'
make[3]: *** [debian/rules:17: binary] Error 2
make[3]: Leaving directory '/root/vpp/build/external/deb'
dpkg-buildpackage: error: debian/rules binary subprocess returned exit
status 2
make[2]: *** [Makefile:74: vpp-ext-deps_22.06-7_amd64.deb] Error 2
make[2]: Leaving directory '/root/vpp/build/external'
make[1]: *** [Makefile:81: install-deb] Error 2
make[1]: Leaving directory '/root/vpp/build/external'
make: *** [Makefile:627: install-ext-deps] Error 2
root@p106:~/vpp#
As far as I understand, I should set the proxy for your downloader,
which seems to be curl. So, I tried with:
export http_proxy="http://172.16.46.241:8080"
Now, the downloader seemed to go one step further, but finally it failed:
root@p106:~/vpp# make install-ext-dep
make -C build/external install-deb
make[1]: Entering directory '/root/vpp/build/external'
make[2]: Entering directory '/root/vpp/build/external'
dpkg-buildpackage: info: source package vpp-ext-deps
dpkg-buildpackage: info: source version 22.06-7
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by VPP Dev <vpp-dev@lists.fd.io>
dpkg-buildpackage: info: host architecture amd64
dpkg-source --before-build .
debian/rules clean
make[3]: Entering directory '/root/vpp/build/external/deb'
dh clean
debian/rules override_dh_clean
make[4]: Entering directory '/root/vpp/build/external/deb'
make -C .. clean
make[5]: Entering directory '/root/vpp/build/external'
make[5]: Leaving directory '/root/vpp/build/external'
make[4]: Leaving directory '/root/vpp/build/external/deb'
make[3]: Leaving directory '/root/vpp/build/external/deb'
debian/rules build
make[3]: Entering directory '/root/vpp/build/external/deb'
dh build
dh_update_autotools_config
dh_autoreconf
create-stamp debian/debhelper-build-stamp
make[3]: Leaving directory '/root/vpp/build/external/deb'
debian/rules binary
make[3]: Entering directory '/root/vpp/build/external/deb'
dh binary
dh_testroot
dh_prep
debian/rules override_dh_install
make[4]: Entering directory '/root/vpp/build/external/deb'
make -C .. install
make[5]: Entering directory '/root/vpp/build/external'
mkdir -p downloads
Downloading http://github.com/01org/intel-ipsec-mb/archive/v1.2.tar.gz
% Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:--
--:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- 0:02:11
--:--:-- 0
curl: (28) Failed to connect to github.com port 443: Connection timed out
make[5]: *** [packages/ipsec-mb.mk:48: downloads/v1.2.tar.gz] Error 28
make[5]: Leaving directory '/root/vpp/build/external'
make[4]: *** [debian/rules:25: override_dh_install] Error 2
make[4]: Leaving directory '/root/vpp/build/external/deb'
make[3]: *** [debian/rules:17: binary] Error 2
make[3]: Leaving directory '/root/vpp/build/external/deb'
dpkg-buildpackage: error: debian/rules binary subprocess returned exit
status 2
make[2]: *** [Makefile:74: vpp-ext-deps_22.06-7_amd64.deb] Error 2
make[2]: Leaving directory '/root/vpp/build/external'
make[1]: *** [Makefile:81: install-deb] Error 2
make[1]: Leaving directory '/root/vpp/build/external'
make: *** [Makefile:627: install-ext-deps] Error 2
root@p106:~/vpp#
Even though I haven't seen an "https:" in the URL, I tried (as a last
chance):
export https_proxy="http://172.16.46.241:8080"
And it worked!!! :-)
4) make install-dep
5) make pkg-deb-debug
They were all OK.
Copy all of the .deb packages from the ./build-root directory to your
server and install them manually with dpkg.
PROBLEM:
Before installing the .deb files, I just checked, if I removed the
previously used non-debug version. (Yes, I did, but I willfully left
there the configuration files as you can see below.)
root@p109:~/vpp-debug/build-root# apt list vpp
Listing... Done
vpp/now 22.06-release amd64 [residual-config]
root@p109:~/vpp-debug/build-root# dpkg -i *.deb
Selecting previously unselected package libvppinfra.
(Reading database ... 67940 files and directories currently installed.)
Preparing to unpack libvppinfra_22.06-release_amd64.deb ...
Unpacking libvppinfra (22.06-release) ...
Selecting previously unselected package libvppinfra-dev.
Preparing to unpack libvppinfra-dev_22.06-release_amd64.deb ...
Unpacking libvppinfra-dev (22.06-release) ...
Selecting previously unselected package python3-vpp-api.
Preparing to unpack python3-vpp-api_22.06-release_amd64.deb ...
Unpacking python3-vpp-api (22.06-release) ...
Selecting previously unselected package vpp.
Preparing to unpack vpp_22.06-release_amd64.deb ...
start-stop-daemon: unable to stat /usr/bin/vpp (No such file or directory)
Unpacking vpp (22.06-release) ...
Selecting previously unselected package vpp-dbg.
Preparing to unpack vpp-dbg_22.06-release_amd64.deb ...
Unpacking vpp-dbg (22.06-release) ...
Selecting previously unselected package vpp-dev.
Preparing to unpack vpp-dev_22.06-release_amd64.deb ...
Unpacking vpp-dev (22.06-release) ...
Selecting previously unselected package vpp-plugin-core.
Preparing to unpack vpp-plugin-core_22.06-release_amd64.deb ...
Unpacking vpp-plugin-core (22.06-release) ...
Selecting previously unselected package vpp-plugin-devtools.
Preparing to unpack vpp-plugin-devtools_22.06-release_amd64.deb ...
Unpacking vpp-plugin-devtools (22.06-release) ...
Selecting previously unselected package vpp-plugin-dpdk.
Preparing to unpack vpp-plugin-dpdk_22.06-release_amd64.deb ...
Unpacking vpp-plugin-dpdk (22.06-release) ...
dpkg: dependency problems prevent configuration of libvppinfra:
libvppinfra depends on libc6 (>= 2.29); however:
Version of libc6:amd64 on system is 2.28-10+deb10u1.
dpkg: error processing package libvppinfra (--install):
dependency problems - leaving unconfigured
Setting up libvppinfra-dev (22.06-release) ...
dpkg: dependency problems prevent configuration of vpp:
vpp depends on libvppinfra (= 22.06-release); however:
Package libvppinfra is not configured yet.
vpp depends on libc6 (>= 2.29); however:
Version of libc6:amd64 on system is 2.28-10+deb10u1.
dpkg: error processing package vpp (--install):
dependency problems - leaving unconfigured
Setting up vpp-dbg (22.06-release) ...
Setting up vpp-dev (22.06-release) ...
dpkg: dependency problems prevent configuration of vpp-plugin-core:
vpp-plugin-core depends on vpp (= 22.06-release); however:
Package vpp is not configured yet.
vpp-plugin-core depends on libvppinfra; however:
Package libvppinfra is not configured yet.
dpkg: error processing package vpp-plugin-core (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of vpp-plugin-devtools:
vpp-plugin-devtools depends on vpp (= 22.06-release); however:
Package vpp is not configured yet.
vpp-plugin-devtools depends on libvppinfra; however:
Package libvppinfra is not configured yet.
dpkg: error processing package vpp-plugin-devtools (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of vpp-plugin-dpdk:
vpp-plugin-dpdk depends on vpp (= 22.06-release); however:
Package vpp is not configured yet.
dpkg: error processing package vpp-plugin-dpdk (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of python3-vpp-api:
python3-vpp-api depends on vpp (= 22.06-release); however:
Package vpp is not configured yet.
dpkg: error processing package python3-vpp-api (--install):
dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.28-10+deb10u1) ...
Errors were encountered while processing:
libvppinfra
vpp
vpp-plugin-core
vpp-plugin-devtools
vpp-plugin-dpdk
python3-vpp-api
root@p109:~/vpp-debug/build-root#
As you can see above, the previously used and removed version of VPP was
also 22.06. And that one could be installed, and it worked well on my
system (except the segmentation fault when I tried to use stateful
NAT64). Perhaps the problem could be that the libc version of the Ubuntu
server that I used for the build was too high...
Please advise me, how to continue from this point.
Best regards,
Gábor
The easiest way for me to figure out the issue would be for you to
just attach with gdb to vpp running single-worker.
1) sudo gdb --pid=$(pidof vpp)
2) Then just hit c so VPP continues to run
3) Simulate what caused the crash
4) in the gdb execute `bt`
And just send me the result of running bt.
But if it is too much you could also configure core dumps and upload
so I can check it for you.
Best regards,
Filip Varga
st 9. 11. 2022 o 8:37 Gabor LENCSE <len...@hit.bme.hu> napísal(a):
Dear Filip,
Thank you very much for your prompt reply!
I have attached the startup.conf files for the case with 2 workers
(startup.conf-mc1wc02) and for the case when I used only the main
core (startup.conf-mc0). In both cases, 4 CPU cores (0-3) were
enabled and cores 0-2 were excluded from the Linux scheduler using
the "maxcpus=4" and "isolcpus=0-2" kernel command line parameters,
respectively.
I am new to FD.io VPP. Could you please advise me if there are
pre-built debug packages available for Debian 10, and if yes,
where can I find them?
If I need to compile them myself, could you please give me a
pointer, how I can do it?
I am currently using servers in NICT StarBED, Japan. This is a
test-bed environment, and I can download packages only using a
http or ftp proxy. (Or I can download them on my Windows laptop
and upload them through a gateway.)
Thank you very much in advance!
Best regards,
Gábor
On 11/9/2022 4:04 PM, filvarga wrote:
Hi Gabor,
I will look into it and get back to you. Meanwhile could you run
the same test with a debug build and post the results ? Maybe
even core dump. Also please post your startup.conf file
Best regards,
Filip Varga
st 9. 11. 2022 o 7:50 Gabor LENCSE <len...@hit.bme.hu> napísal(a):
Dear VPP Developers,
I am a researcher and I would like to benchmark the
performance of the stateful NAT64 implementation of FD.io VPP.
Unfortunately, VPP crashed with segmentation fault.
Some details:
I used two Dell PowerEdge R430 servers as the Tester and the
DUT (Device Under Test), two 10GbE interfaces of which were
interconnected by direct cables. On the DUT, I used Debian
Linux 10.13 with 4.19.0-20-amd64 kernel and the version of
FD.io VPP was 22.06. The following packages were installed:
libvppinfra, vpp, vpp-plugin-core, vpp-plugin-dpdk.
I used the following commands to set up Stateful NAT64:
root@p109:~/DUT-settings# cat set-vpp
vppctl set interface state TenGigabitEthernet5/0/0 up
vppctl set interface state TenGigabitEthernet5/0/1 up
vppctl set interface ip address TenGigabitEthernet5/0/0
2001:2::1/64
vppctl set interface ip address TenGigabitEthernet5/0/1
198.19.0.1/24 <http://198.19.0.1/24>
vppctl ip route add 2001:2::/64 via 2001:2::1
TenGigabitEthernet5/0/0
vppctl ip route add 198.19.0.0/24 <http://198.19.0.0/24> via
198.19.0.1 TenGigabitEthernet5/0/1
vppctl set ip neighbor static TenGigabitEthernet5/0/0
2001:2::2 a0:36:9f:74:73:64
vppctl set ip neighbor static TenGigabitEthernet5/0/1
198.19.0.2 a0:36:9f:74:73:66
vppctl set interface nat64 in TenGigabitEthernet5/0/0
vppctl set interface nat64 out TenGigabitEthernet5/0/1
vppctl nat64 add prefix 64:ff9b::/96
vppctl nat64 add pool address 198.19.0.1
As for VPP, first I used two workers, but then I also tried
without workers, using only the main core. Unfortunately, VPP
crashed in both cases, but with somewhat different messages
in the syslog. (Previously I tested both setups with IPv6
packet forwarding and they worked with an excellent
performance.)
The error messages in the syslog when I used two workers:
Nov 7 16:32:02 p109 vnet[2479]: received signal SIGSEGV, PC
0x7fa86f138168, faulting address 0x4f8
Nov 7 16:32:02 p109 vnet[2479]: #0 0x00007fa8b2158137
0x7fa8b2158137
Nov 7 16:32:02 p109 vnet[2479]: #1 0x00007fa8b2086730
0x7fa8b2086730
Nov 7 16:32:02 p109 vnet[2479]: #2 0x00007fa86f138168
0x7fa86f138168
Nov 7 16:32:02 p109 vnet[2479]: #3 0x00007fa86f11d228
0x7fa86f11d228
Nov 7 16:32:02 p109 vnet[2479]: #4 0x00007fa8b20fbe62
0x7fa8b20fbe62
Nov 7 16:32:02 p109 vnet[2479]: #5 0x00007fa8b20fda4f
vlib_worker_loop + 0x5ff
Nov 7 16:32:02 p109 vnet[2479]: #6 0x00007fa8b2135e79
vlib_worker_thread_fn + 0xa9
Nov 7 16:32:02 p109 vnet[2479]: #7 0x00007fa8b2135290
vlib_worker_thread_bootstrap_fn + 0x50
Nov 7 16:32:02 p109 vnet[2479]: #8 0x00007fa8b207bfa3
start_thread + 0xf3
Nov 7 16:32:02 p109 vnet[2479]: #9 0x00007fa8b1d75eff clone
+ 0x3f
Nov 7 16:32:02 p109 systemd[1]: vpp.service: Main process
exited, code=killed, status=6/ABRT
The error messages in the syslog when I used only the main core:
Nov 7 16:48:57 p109 vnet[2606]: received signal SIGSEGV, PC
0x7fbe1d24a168, faulting address 0x1a8
Nov 7 16:48:57 p109 vnet[2606]: #0 0x00007fbe6026a137
0x7fbe6026a137
Nov 7 16:48:57 p109 vnet[2606]: #1 0x00007fbe60198730
0x7fbe60198730
Nov 7 16:48:57 p109 vnet[2606]: #2 0x00007fbe1d24a168
0x7fbe1d24a168
Nov 7 16:48:57 p109 vnet[2606]: #3 0x00007fbe1d22f228
0x7fbe1d22f228
Nov 7 16:48:57 p109 vnet[2606]: #4 0x00007fbe6020de62
0x7fbe6020de62
Nov 7 16:48:57 p109 vnet[2606]: #5 0x00007fbe602127d1
vlib_main + 0xd41
Nov 7 16:48:57 p109 vnet[2606]: #6 0x00007fbe6026906a
0x7fbe6026906a
Nov 7 16:48:57 p109 vnet[2606]: #7 0x00007fbe60169964
0x7fbe60169964
Nov 7 16:48:57 p109 systemd[1]: vpp.service: Main process
exited, code=killed, status=6/ABRT
As for the first time I started with quite high load, I
suspected that I exhausted some sort of resources, so I tried
with much lower load, but the same thing happened even when I
sent only a single packet.
I used siitperf as Tester:
https://github.com/lencsegabor/siitperf
And I followed this methodology:
https://datatracker.ietf.org/doc/html/draft-ietf-bmwg-benchmarking-stateful
Previously my tests were successful with the following
stateful NAT64 implementations:
- Jool
- tayga+iptables
- OpenBSD PF
Could you please help me why VPP crashes, and how I could
make it work?
Thank you very much for your help in advance!
Best regards,
Gábor Lencse
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22191): https://lists.fd.io/g/vpp-dev/message/22191
Mute This Topic: https://lists.fd.io/mt/94908130/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-