A minimal Multipath TCP client
Project description
pyftpclient
Minimal Python FTP client in order to allow File Transfer on top of Multipath TCP (MPTCP). For a deeper read about Multipath TCP please consult this webpage.
Table of Contents
Getting Started
There are no extra python dependencies needed since the client extends the CPython FTP client.
In order to use Multipath TCP you have to ensure that your operating system support Multipath TCP. However for portability reasons if the operating system doesn't support Multipath TCP then the implementation falls back to a normal TCP connection.
Enabling MPTCP
Linux
Multipath TCP is supported in the official linux kernel starting from version 5.6.
In order to verify is Multipath TCP is enabled, run the following command :
sudo sysctl -a | grep mptcp.enabled
The expected result should be net.mptcp.enabled = 1
. It is possible that the output is net.mptcp.enabled = 0
. If you want to enable it run :
sudo sysctl -w net.mptcp.enabled=1
Some FTP commands (especially PORT
) are changed when passing through the internet by middleboxes. In order for MTCP to detect such changes both the client and sender have to enable the MTCP Checksum. If the checksum calculated and sent by the sender mismatch the one calculated by the receiver, then the connections fallsback to a TCP connection to preserve the established connection. More about the topic on this page.
To enable the MPTCP checksum run :
sudo sysctl -w net.mptcp.checksum_enabled=1
Windows
No support
MacOS
TODO Add support for FTP over TLS
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for mftpclient-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e87006bfc8c4d190f9cd8581a8c21bc36567b90ddbff11025cec7fd118669753 |
|
MD5 | bbcbe822e324ad9aff6ca825fe69593b |
|
BLAKE2b-256 | 55733a8b2f4e497192d724a6af924b4120b6a234eca1238a42ea3dbaeb85b9e8 |