Open abhinaba-fbr opened 2 years ago
It looks like you're running mptcpd
directly from the command line in the /usr/local/libexec
directory, i.e.:
$ cd /usr/local/libexec
# ./mptcpd
Is that correct? If so, you'll need to make sure the library search path LD_LIBRARY_PATH
environment variable includes /usr/local/lib
since that directory is typically not searched by default. For example, something like the following should work:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib ./mptcpd
This is basically what the mptcpd
systemd unit file does. In mptcp.service
:
.,..
[Service]
Type=simple
DynamicUser=yes
Environment=LD_LIBRARY_PATH=/usr/local/lib
ExecStart=/usr/local/libexec/mptcpd --log=journal
...
HTH!
Hello @ossama-othman
Thanks for your reply. It helped me in starting the mptcp daemon.
However, I m actually trying to emulate a very simple experiment using mptcpd. Where I created this topology -
I started the mptcp daemon in both the machines, with default settings (i.e sspi plugin is loaded).
However I receive the following output on running iperf3 - On the server side -
root@abhinaba-VivoBook:~# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib /usr/local/libexec/mptcpd -d
configuration.c:mptcpd_config_create() path manager plugin directory: /usr/local/lib/mptcpd
configuration.c:mptcpd_config_create() default path manager plugin: sspi
path_manager.c:family_appeared() "mptcp_pm" generic netlink family appeared
MPTCP address advertiser path manager initialized.
MPTCP single-subflow-per-interface path manager initialized.
No network interface with given IP address.
Unable to track new connection
sspi_connection_established is unimplemented.
No network interface with given IP address.
Unable to track new connection
sspi_connection_established is unimplemented.
Untracked connection closed.
Untracked connection closed.
On the client side
root@abhinaba-VivoBook:~# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib /usr/local/libexec/mptcpd -d
configuration.c:mptcpd_config_create() path manager plugin directory: /usr/local/lib/mptcpd
configuration.c:mptcpd_config_create() default path manager plugin: sspi
path_manager.c:family_appeared() "mptcp_pm" generic netlink family appeared
MPTCP address advertiser path manager initialized.
MPTCP single-subflow-per-interface path manager initialized.
sspi_connection_established is unimplemented.
sspi_connection_established is unimplemented.
Untracked connection closed.
And on capturing the packets in wireshark, I observed new subflow creation is not taking place.
Is there some configuration that needs to be done from our end? In the plugins or the path-managers.
Hello, @abhinaba-fbr What kernel version did you use ?? did you make endpoint configuration with iptools? on client and server .. did you use mptcpsize with iperf3??
Hello @vandit86
Kernel version used is v5.19 Initially I did not configure the endpoints. Later I did make endpoints using ip mptcp, on both client and server and also used mptcpize with iperf3.
However, I observed the subflow is created if I keep pm_type=0 (Kernel mode). Started the mptcpd in both client and server. Once I changed it to pm_type=1 (userspace), and configure endpoints using ip mptcp, no additional subflow is being created.
I have few additional question? 1) If we are using mptcpd what is the need of configuring endpoints using ip mptcp. Isn't ip mptcp used for in-kernel path management?
2) Mptcpd is capable for both in-kernel and userspace path management. But how does mptcpd behave differently when pm_type is changed?
3) Is the sspi implementation currently in intel/mptcpd incomplete? Since I see several APIs (sspi_connection_established and sspi_new_address) are unimplemented.
Just for a bit clarification. What do you mean by PM logic, do you mean plugins (like add_adv and sspi) or we need to implement/modify PM handling operations (mptcpd/path_manager.c) as well?
I m planning to implement my own plugin, is there any documentations, which I can follow to understand the code-base and working of mptcpd.
Just for a bit clarification. What do you mean by PM logic, do you mean plugins (like add_adv and sspi) or we need to implement/modify PM handling operations (mptcpd/path_manager.c) as well?
yes in PM logic in plugin
I m planning to implement my own plugin, is there any documentations, which I can follow to understand the code-base and working of mptcpd.
see examples in plugins folder : e.x. sspi
Okay. Thanks.
I will look into it.
Hi, I am new to mptcpd. I have just installed mptcpd 0.9 on ubuntu 22.04, configured the routing table and endpoint by iproute2 and did some tests by mptcpize run iperf. I notice that mptcpd provides us with a way to customize our own path manager somehow. But I don't really understand what sspi is doing? Are there any more easy examples to help me start? Thank you so much.
Hello
I have installed mptcpd 0.11 as per the instructions provided in github. Once installed I m trying to run the binary of mptcpd present in
/usr/local/libexec/
. However I encountered an error which mentions./mptcpd: symbol lookup error: ./mptcpd: undefined symbol: mptcpd_lm_destroy
. Is there any other configuration that I need to make sure before running the binary. Or is it an issue that needs to be fixed in mptcpd 0.11?Thanks in advance