mptcp-pm: A Multipath TCP path manager

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

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]

Properties

Versions 0.0.1, 0.0.2, 0.0.3, 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:13Z

Modules

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


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

Acknowledgements

This work is sponsored by NGI.