multipath-tcp / mptcp

⚠️⚠️⚠️ Deprecated 🚫 Out-of-tree Linux Kernel implementation of MultiPath TCP. 👉 Use https://github.com/multipath-tcp/mptcp_net-next repo instead ⚠️⚠️⚠️
https://github.com/multipath-tcp/mptcp_net-next
Other
889 stars 335 forks source link

MPTCP v0.95.1 RTNETLINK error #441

Closed sdntechforum closed 3 years ago

sdntechforum commented 3 years ago

Hi,

I just complied the following version successfully, MPTCP is enabled. Now when I try to set mptcp subflow and endpoint, I am getting below error, any suggestions please ?

################# [sdntech@localhost ~]$ uname -r 4.19.196+ [sdntech@localhost ~]$ [sdntech@localhost ~]$ dmesg | grep MPTCP [ 0.467783] MPTCP: Stable release v0.95.1

[sdntech@localhost ~]$ sudo sysctl -a | grep mptcp.enabled net.mptcp.mptcp_enabled = 1 [sdntech@localhost ~]$ [sdntech@localhost ~]$ ip mptcp limit show RTNETLINK answers: No such file or directory Error talking to the kernel [sdntech@localhost ~]$

####################

Thanks, Amit

matttbe commented 3 years ago

Hi Amit,

I understand it starts to be confusing but ip mptcp is for the "Upstream" kernel (from v5.7): https://github.com/multipath-tcp/mptcp_net-next/wiki#upstream-vs-out-of-tree-implementations

If you prefer to use the out of tree kernel (MPTCP v0.95.1), you can have a look there on how to configure it: http://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP

Please note that the "upstream" kernel is still in development, some more features are still in development: https://github.com/multipath-tcp/mptcp_net-next/wiki#changelog

I hope you don't mind if I close this issue.

sdntechforum commented 3 years ago

Hi Matthieu,

Thanks for your reply, I could not compile the upstream kernel from mptcp_net_next hence I am using this one. I know I am asking naive questions but can you please help me understand how to control subflow/configure path mamanger in absence of ip mptcp cli ? Is there a blog, easy to consume documentation ? I am looking to contribute but not just ask questions in the long run. Appreciate your patient.

Thank you, Amit

On Mon, 2 Aug 2021 at 11:49, Matthieu Baerts @.***> wrote:

Hi Amit,

I understand it starts to be confusing but ip mptcp is for the "Upstream" kernel (from v5.7): https://github.com/multipath-tcp/mptcp_net-next/wiki#upstream-vs-out-of-tree-implementations

If you prefer to use the out of tree kernel (MPTCP v0.95.1), you can have a look there on how to configure it: http://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP

Please note that the "upstream" kernel is still in development, some more features are still in development: https://github.com/multipath-tcp/mptcp_net-next/wiki#changelog

I hope you don't mind if I close this issue.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/multipath-tcp/mptcp/issues/441#issuecomment-891133296, or unsubscribe https://github.com/notifications/unsubscribe-auth/APF4O7QEW2L5GJG3BYPVX3DT2247DANCNFSM5BKN56YA .

matttbe commented 3 years ago

Hi Amit,

Thanks for your reply, I could not compile the upstream kernel from mptcp_net_next hence I am using this one.

What did you try to compile exactly? Please note that you can also download already built versions for many distributions. E.g. for Ubuntu, you can download packages for the latest 5.13.x: https://kernel.ubuntu.com/~kernel-ppa/mainline/

For the out-of-tree kernel, you can use the 'fullmesh' path manager and blacklist interfaces you don't want to use, please see:

By default, the fullmesh path-manager will use all available IPs to announce IP (server) or create subflows (client). You can list the tracked IPs with cat /proc/net/mptcp_fullmesh

sdntechforum commented 3 years ago

Hi Mattieu,

Thanks for the details, I did configure the path manager as FullMesh and I have a RHEL client with MPTCP support. RHEL does send SYN with. MP_Capable flag however this host reply with Regular TCP hence I am not able to create an MPTCP connection. In RHEL implementation you need to intercept TCP call and change it MPTCP, is something like that we need to do in this code as well ?

Thanks, Amit

On Tue, 3 Aug 2021 at 10:57, Matthieu Baerts @.***> wrote:

Hi Amit,

Thanks for your reply, I could not compile the upstream kernel from mptcp_net_next hence I am using this one.

What did you try to compile exactly? Please note that you can also download already built versions for many distributions. E.g. for Ubuntu, you can download packages for the latest 5.13.x: https://kernel.ubuntu.com/~kernel-ppa/mainline/

For the out-of-tree kernel, you can use the 'fullmesh' path manager and blacklist interfaces you don't want to use, please see:

By default, the fullmesh path-manager will use all available IPs to announce IP (server) or create subflows (client). You can list the tracked IPs with cat /proc/net/mptcp_fullmesh

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/multipath-tcp/mptcp/issues/441#issuecomment-891917297, or unsubscribe https://github.com/notifications/unsubscribe-auth/APF4O7V2NPUCYDY2NMIDCCDT277W5ANCNFSM5BKN56YA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

matttbe commented 3 years ago

Hi Amit,

The issue is that RHEL8 is based on the "upstream" version where only the latest MPTCP protocol version is supported. For more details: https://github.com/multipath-tcp/mptcp_net-next/wiki#mptcpv0-vs-mptcpv1

If you want to have both Upstream and Out-of-tree versions talking to each others, you need to use MPTCP v0.96.

sdntechforum commented 3 years ago

Thank you Matthieu. A couple of questions - is v0.96 stable and recommended ? Is it possible to upgrade from 0.95 to 0.96 or I need to compile from source code. On github, is there a specific link for v0.96, last time I did wget the git repo and compile, it gave me 0.95 by default.

Thanks, Amit

On Wed, 4 Aug 2021 at 03:10, Matthieu Baerts @.***> wrote:

Hi Amit,

The issue is that RHEL8 is based on the "upstream" version where only the latest MPTCP protocol version is supported. For more details: https://github.com/multipath-tcp/mptcp_net-next/wiki#mptcpv0-vs-mptcpv1

If you want to have both Upstream and Out-of-tree versions talking to each others, you need to use MPTCP v0.96.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/multipath-tcp/mptcp/issues/441#issuecomment-892421397, or unsubscribe https://github.com/notifications/unsubscribe-auth/APF4O7WYNT6HVAWCKYAO773T3DRWTANCNFSM5BKN56YA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

matttbe commented 3 years ago

is v0.96 stable and recommended?

There is no stable version yet but it passes all tests we have so far. We still want to add more tests coverage (WIP) and fix interop issue (see #427, that might be an issue for you). We will certainly create a new version after that.

Is it possible to upgrade from 0.95 to 0.96 or I need to compile from source code.

You need to compile the new version. This one is based on 5.4 version.

On github, is there a specific link for v0.96, last time I did wget the git repo and compile, it gave me 0.95 by default.

You can clone the repo and switch to the mptcp_v0.96 branch (or use git clone -b mptcp_v0.96). Or download: https://github.com/multipath-tcp/mptcp/archive/refs/heads/mptcp_v0.96.zip

sdntechforum commented 3 years ago

Thank you Matthieu, I managed to build the 0.96 kernel from the code provided and it can run MPTCP sockets with success.

On a different note while enabling the networking options, I kept LIA congestion control as modular not built in -

CONFIG_TCP_CONG_LIA=m

CONFIG_TCP_CONG_OLIA=y

Due to this, after booting with new kernel I am able to set TCP_COngestion_COntrol to OLIA but not LIA,

@.*** ~]# sysctl net.ipv4.tcp_available_congestion_control

net.ipv4.tcp_available_congestion_control = reno cubic olia wvegas balia mctcpdesync

@. ~]$ sudo sysctl net.ipv4.tcp_congestion_control=lia [sudo] password for asingh47: sysctl: setting key "net.ipv4.tcp_congestion_control": No such file or directory net.ipv4.tcp_congestion_control = lia @. ~]$ @. ~]$ @. ~]$ sudo sysctl net.ipv4.tcp_congestion_control=olia net.ipv4.tcp_congestion_control = olia

SInce I want to use LIA, I am afraid I have to recompile the kernel, I tried a couple of things like setting up with sysctl and modprobe but no luck. Appreciate if you could think of something ?

Thanks,

Amit

On Wed, 4 Aug 2021 at 11:07, Matthieu Baerts @.***> wrote:

is v0.96 stable and recommended?

There is no stable version yet but it passes all tests we have so far. We still want to add more tests coverage (WIP) and fix interop issue (see

427 https://github.com/multipath-tcp/mptcp/issues/427, that might be

an issue for you). We will certainly create a new version after that.

Is it possible to upgrade from 0.95 to 0.96 or I need to compile from source code.

You need to compile the new version. This one is based on 5.4 version.

On github, is there a specific link for v0.96, last time I did wget the git repo and compile, it gave me 0.95 by default.

You can clone the repo and switch to the mptcp_v0.96 branch (or use git clone -b mptcp_v0.96). Or download: https://github.com/multipath-tcp/mptcp/archive/refs/heads/mptcp_v0.96.zip

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/multipath-tcp/mptcp/issues/441#issuecomment-892737837, or unsubscribe https://github.com/notifications/unsubscribe-auth/APF4O7UMYSLT4G4APWTOO2DT3FJUZANCNFSM5BKN56YA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

matttbe commented 3 years ago

Hi Amit,

SInce I want to use LIA, I am afraid I have to recompile the kernel, I tried a couple of things like setting up with sysctl and modprobe but no luck. Appreciate if you could think of something ?

Not sure I can help more if modprobe -v doesn't help. Maybe try insmod -v <fullpath> + dmesg to get more details? Might be easier to recompile.

sdntechforum commented 3 years ago

Thanks Matthieu, recompiling, will keep you posted.

On Thu, 5 Aug 2021 at 09:48, Matthieu Baerts @.***> wrote:

Hi Amit,

SInce I want to use LIA, I am afraid I have to recompile the kernel, I tried a couple of things like setting up with sysctl and modprobe but no luck. Appreciate if you could think of something ?

Not sure I can help more if modprobe -v doesn't help. Maybe try insmod -v

+ dmesg to get more details? Might be easier to recompile. — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub , or unsubscribe . Triage notifications on the go with GitHub Mobile for iOS or Android .
sdntechforum commented 3 years ago

I confirm that I got v0.96 installed and can initiate multiple subflow between client and server. Thank you very much for your kind assistance.

Regards, Amit

On Thu, 5 Aug 2021 at 13:39, SDN TechForum @.***> wrote:

Thanks Matthieu, recompiling, will keep you posted.

On Thu, 5 Aug 2021 at 09:48, Matthieu Baerts @.***> wrote:

Hi Amit,

SInce I want to use LIA, I am afraid I have to recompile the kernel, I tried a couple of things like setting up with sysctl and modprobe but no luck. Appreciate if you could think of something ?

Not sure I can help more if modprobe -v doesn't help. Maybe try insmod -v + dmesg to get more details? Might be easier to recompile.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/multipath-tcp/mptcp/issues/441#issuecomment-893474955, or unsubscribe https://github.com/notifications/unsubscribe-auth/APF4O7VEP7CTFD56LJQMP3TT3KJERANCNFSM5BKN56YA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .