mptcp-pm: A Multipath TCP path manager

[ gpl, library, mptcp, network, program ] [ Propose Tags ]

Multipath TCP (www.multipath-tcp.org) starting from version 0.95 provides a netlink path manager module. This package implements the userspace component in charge of controlling MPTCP subflow establishement and various behaviors.


[Skip to Readme]

Modules

  • Net
    • Net.Bitset
    • Net.IPAddress
    • Net.Mptcp
      • Net.Mptcp.Constants
      • Net.Mptcp.PathManager
        • Net.Mptcp.PathManager.Default
    • Net.SockDiag
      • Net.SockDiag.Constants
    • Net.Tcp
      • Net.Tcp.Constants
      • Net.Tcp.Definitions

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5
Change log CHANGELOG
Dependencies aeson, aeson-extra, aeson-pretty, base (>=4.12 && <4.17), bytestring, bytestring-conversion, cereal, containers, enumset, filepath, hslogger, ip, katip, mptcp-pm, mtl, netlink (>=1.1.2.0), optparse-applicative, process, temporary, text, transformers, unordered-containers [details]
License GPL-3.0-only
Author
Maintainer teto
Category Network
Home page https://github.com/teto/netlink_pm
Source repo head: git clone https://github.com/teto/mptcp-pm
Uploaded by teto at 2021-05-18T23:22:28Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables mptcp-manager
Downloads 1148 total (16 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2021-05-19 [all 2 reports]

Readme for mptcp-pm-0.0.3

[back to package description]

This is a userspace path manager for the linux multipath TCP kernel, starting from version v0.95.

This allows to monitor MPTCP connections and control what subflows to create and with a custom kernel it can even set specific values for the congestion windows.

Compilation

For now we need a custom version of netlink With a custom netlink and kernel Compile the custom netlink library with

$ cabal configure --enable-library-profiling

You may need some headers as well (NOTE: reference cabal.project instead):

kernel $ make headers_install
$ cabal configure --package-db ~/netlink-hs/dist/package.conf.inplace --extra-include-dirs=~/mptcp/build/usr/include -v3 --enable-profiling

To compile the doc (and understand why HLS fails displaying anything) cabal haddock --all

Usage

The netlink module asks for GENL_ADMIN_PERM which requires the CAP_NET_ADMIN privilege. You can assign this privilege via:

sudo setcap cap_net_admin+ep hs/dist-newstyle/build/x86_64-linux/ghc-8.6.3/netlink-pm-1.0.0/x/daemon/build/daemon/daemon

Enter the development shell and start the daemon:

$ nix develop
$ cabal run daemon

TODO

  • remove the need for MptcpSocket everywhere: it's just needed to write the header, which could be added/modifier later instead ! (to increase purity in the library)
  • we need to better keep track of subflow status (established vs WIP) ?
  • pass local/server IPs as commands to the PM ?
  • generate completion scripts via --zsh-completion-script

Acknowledgements

This work is sponsored by NGI.