8000 Tags · jeff277/mptcpd · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Tags: jeff277/mptcpd

Tags

v0.12

Toggle v0.12's commit message
mptcpd 0.12

- mptcpd will be hosted at https://github.com/multipath-tcp/mptcpd
  after this release.

- The payload sizes of path management commands sent to the kernel
  were reduced in some cases, slightly improving performance.

- Automatically set the "signal" flag when a TCP/IP address with a
  non-zero port is passed to the mptcpd_kpm_set_flags() function.  The
  "signal" flag is required when a port is specified.

- A potential memory violation that occurred when cleaning up
  resources in the case of a failed attempt to track a network
  address was corrected.

- Several order of operation problems in the `test-commands' unit test
  were addressed.  The `test-commands' unit test now succeeds as
  expected.

- Skip the listener manager unit test if the kernel doesn't support
  MPTCP.

v0.11

Toggle v0.11's commit message
mptcpd 0.11

- Support for the user space MPTCP path management generic netlink API
  in the Linux 5.19 kernel was implemented.

  - MPTCP address advertisements may now be managed through the
    mptcpd_pm_add_addr() and mptcpd_pm_remove_addr() functions.
    Listening sockets required for accepting subflow joins through
    advertised addresses will be handled automatically by mptcpd if
    not previously created through the mptcpd listener manager API
    described below.

  - The mptcpd_pm_add_addr() struct sockaddr parameter is now
    non-const to allow a zero valued TCP port to be updated with the
    ephemeral port chosen by the kernel and passed back to the user
    through that struct sockaddr parameter.

  - Subflows may be managed through mptcpd plugins through the
    mptcpd_pm_add_subflow(), mptcpd_pm_set_backup(), and
    mptcpd_pm_remove_subflow().

  - A new "mptcpd_lm" listener manager interface was added to the
    mptcpd library.  It allows plugins to explicitly manage listening
    sockets that are needed when advertising addresses, such as when
    creating listener pools.  The global mptcpd listener manager may
    be retrieved through the mptcpd_pm_get_lm() function.

- Propagate the "server side" flag to "new_connection" and
  "connection_established" plugin operations.

- Support a new "fullmesh" address flag in the mptcpd configuration
  file and command line "addr-flags" configuration option.  "fullmesh"
  is only relevant to the in-kernel path manager.  See the ip-mptcp(8)
  man page for details on the "fullmesh" address flag.

- Allow the mptcpd network monitor unit test to pass if it detects an
  active interface without any IPv4 or v6 addresses.  This can occur
  when an interface is attached to a bridge.  The bridge would have
  attached IP addresses but not the interface.

- Memory leaks that occured when parsing the "addr-flags" and
  "notify-flags" entries in the mptcpd configuration file were fixed.

- A use-after-free memory error was corrected in the mptcpd
  "load-plugins" configuration code.

- Improved the underlying mptcpd ID manager hash algorithm by replacing
  the existing trivial hash with the MurmurHash3 algorithm.

v0.10

Toggle v0.10's commit message
mptcpd 0.10

- Inconsistent byte order handling in mptcpd was corrected.  IP ports
  sent in path management commands and events now have the correct
  byte order.  Furthermore, the mptcpd unit test suite no longer
  assumes that the tests will be run on a little endian host.  IPv4
  addresses and IP ports used in the mptcpd unit test suite are now
  byte swapped as needed according to the endianness of the platform.
  As always, IPv4 addresses and IP ports passed through pointers to
  struct sockaddr should be in network byte order by convention.

- A potential memory violation caused when attempting to register NULL
  networking monitoring operations with mptcpd was fixed.

- Mptcpd now supports gcc 12.  Link-time errors found in gcc 12 mptcpd
  builds were fixed.

- ELL 0.45 or greater is supported.

- Code coverage was further expanded.

- The mptcpd network monitor supports loopback interface monitoring if
  so desired.

- Improved support for reproducible builds by disabling HTML
  timestamps in Doxygen generated mptcpd documentation.

- Some mptcpd unit tests will be skipped rather than allowed to fail
  on hosts running a kernel without MPTCP support.

v0.9

Toggle v0.9's commit message
mptcpd 0.9

- mptcpd
    - Several security hardening fixes were made including missing
      hardening flags for the `mptcpize' program and compile-time
      hardening (e.g. _FORTIFY_SOURCE) that was inadvertently disabled
      in some cases.

    - Systemd based start of mptcpd has been delayed until the
      multi-user environment is fully operational.

    - mptcpd will only support one kernel at run-time.  The kernel may
      be selected through the new "--with-kernel" `configure' script
      option, e.g. "./configure --with-kernel=upstream".  Supported
      kernels are "upstream" and "multipath-tcp.org".  The `configure'
      script will attempt to automatically detect the kernel, and
      fallback on the upstream kernel if it cannot do so.

    - mptcpd_addr_info is now an opaque structure.  Field accessor
      functions were added to the <mptcpd/addr_info.h> header,
      accordingly.

    - Address filtering based on default route availability was
      implemented in the mptcpd network monitor through a new
      "check_route" mptcpd command line option notify flag,
      e.g. --notify-flags=check_route.

    - mptcpd initialization order issues were addressed to ensure that
      the internal mptcpd state is stable and consistent prior to
      invoking user provided callbacks such as "pm_ready".

    - A "complete" callback parameter was added to
      mptcpd_kpm_get_addr() and mptcpd_kpm_dump_addr() to allow the
      user to be notified when these asynchronous calls complete.
      This is particularly useful for the case where no results are
      available, which consequently prevents the "results" callback
      from being called.

    - The mptcpd_kpm_add_addr() function no longer ignores the port
      parameter.

    - A new command line option "--load-plugins" was added to allow
      the user to specify which mptcpd plugins to load instead loading
      all plugins.

    - ELL >= 0.30 is now required.

    - The mptcpd unit test suite was expanded to further improve code
      coverage.

- mptcpize
    - mptcpize will now hijack socket() calls that specify the
      IPPROTO_IP protocol.

    - An issue that prevented mptcpize from updating systemd unit
      files on a different filesystem was corrected.

    - The libmptcpwrap library is now installed in ${libdir}/mptcpize
      instead of ${libdir}/mptcpd to differentiate it from mptcpd
      plugins.

v0.8

Toggle v0.8's commit message
mptcpd 0.8

- The mptcpd library API now splits path management operations
  specific to the in-kernel path manager found in the upstream Linux
  kernel into a separate "mptcpd_kpm" API namespace to differentiate
  ADD_ADDR and REMOVE_ADDR related operations between the in-kernel
  and user space cases.  The operations for the two are different and
  have different use cases.

- Two new mptcpd command line arguments were added: "--addr-flags" and
  "--notify-flags", along with the equivalent settings in the mptcpd
  system configuration file (e.g., /etc/mptcpd/mptcpd.conf).
  "addr-flags" are used when announcing an IP address.  Similar flags
  are used by the "ip mptcp" sub-command.  See the ip-mptcp(8) and man
  page for further details on these address related flags.
  "notify-flags" provides for further control over how plugins are
  notified of changes to local IP addresses.  See the mptcpd(8) man
  page shipped with this mptcpd release for further details.

- Improve the mptcpd "addr_adv" plugin by making it set suitable MPTCP
  resource limits in the kernel, such as expanding the maximum number
  of subflows to allow subflows associated with advertised IP
  addresses to be created.

- The mptcpd plugin directory name in the mptcpd system configuration
  file may now be left empty to improve "multilib" support found in
  some Linux distributions.  A compile-time default will be used if no
  plugin directory name is found in the mptcpd system configuration
  file or the mptcpd command line options.

- Mptcpd command line options now properly take precedence over the
  corresponding mptcpd system configuration setting.  This addresses
  an issue that prevented mptcpd from starting if a required setting
  was not specified in the mptcpd system configuration file even
  though the same setting was configured through the mptcpd command
  line.

- A new "mptcpize" program was added that allows legacy TCP-only
  applications to transparently use MPTCP by either of the following
  approaches:
    - leverage library interpositioning to transparently replace TCP
      socket calls with their MPTCP counterparts.
    - enable or disable TCP to MPTCP socket conversion through an
      existing systemd unit file.

- Build regressions against ELL versions 0.31 and 0.33 were
  corrected.

v0.7

Toggle v0.7's commit message
mptcpd 0.7

- MPTCP path management generic netlink events recently added to the
  upstream Linux kernel are now supported, and propagated to mptcpd
  plugins.  The same API is also found in the multipath-tcp.org
  kernel.  Differences between the two kernels are transparent to
  mptcpd plugins.

- Mptcpd now supports the upstream Linux kernel server-oriented
  MPTCP_PM_CMD_SET_FLAGS generic netlink command through the new
  mptcpd_pm_set_flags() function.  It allows the user to set MPTCP
  flags for a specific local IP address.

- An incorrect buffer size calculation when calling
  mptcpd_pm_add_addr() when using an IPv6 addresses on platforms
  running the upstream Linux kernel was corrected.

- An "operation not supported" error that occurred when attempting to
  retrieve MPTCP resource limits through the mptcpd_pm_get_limits()
  function was fixed.

- A network interface lookup problem in the "sspi" plugin was
  corrected.

- Building mptcpd against ELL 0.39 is now supported.

v0.6

Toggle v0.6's commit message
mptcpd 0.6

- Mptcpd now supports versions of the Embedded Linux Library (ELL)
  greater than 0.33.

- Plugins should use the new MPTCPD_PLUGIN_DEFINE() preprocessor macro
  instead of L_PLUGIN_DEFINE().

- A pointer to the mptcpd path manager object, i.e. struct mptcpd *pm,
  is now passed to the plugin init and exit functions.  This allows
  plugins to potentially perform mptcpd path manager related
  operations during initialization and finalization.

- Support for the MPTCP netlink path manager in the upstream Linux
  kernel is now available.  A new set of path management command
  functions corresponding to those available in the kernel netlink
  path management API has been added to the `<mptcpd/path_manager.h>'
  header.  The new functions allow plugins to retrieve IP address
  information, flush addresses, and modify MPTCP resource limits.

- The mptcpd_pm_add_addr() (formerly mptcpd_pm_send_addr()) and
  mptcpd_pm_remove_addr() function parameters have been modified in
  order to support both the upstream and multipath-tcp.org kernels.

- Mptcpd path management command functions declared in
  `<mptcpd/path_manager.h>' now return zero on success and -1 or an
  errno on failure instead of a bool.

- A MPTCP address ID manager "mptcpd_idm" interface was introduced
  that mptcpd plugins may leverage to map an IP address to a MPTCP
  address ID, as well as to track used and unused IDs.  The interface
  is defined in the new `<mptcpd/id_manager.h>' header.

- A new address advertising plugin, "addr_adv", has been added.  It
  simply triggers a MPTCP ADD_ADDR when a new IP address is detected
  by the mptcpd network monitor.  Similarly, a MPTCP REMOVE_ADDR is
  triggered when an IP address is no longer available.

- MPTCP netlink command error message logging was improved to be more
  descriptive when possible.

v0.5.1

Toggle v0.5.1's commit message
13 December 2020 - mptcpd 0.5.1

This is a minor release based on mptcpd 0.5 that contains the
following backported changes from the upcoming mptcpd 0.6 release:

- Mptcpd now supports versions of the Embedded Linux Library (ELL)
  greater than 0.33.

- Plugins should use the new MPTCPD_PLUGIN_DEFINE() preprocessor macro
  instead of L_PLUGIN_DEFINE().

- A pointer to the mptcpd path manager object, i.e. struct mptcpd *pm,
  is now passed to the plugin init and exit functions.  This allows
  plugins to potentially perform mptcpd path manager related
  operations during initialization and finalization.

v0.5

Toggle v0.5's commit message
mptcpd 0.5

This minor mptcpd release includes the following notable changes:

- Test plugins are no longer installed when running "make install".  A
  side benefit of the changes is that test plugins only build when the
  test suite is built via "make check" or "make distcheck".  Libtool
  relink warnings that occurred when building the tests have also been
  addressed.

- VPATH builds where the build directory and source directory
  differ (e.g. "mkdir build; cd build; ../configure; make") now
  succeed.

v0.4

Toggle v0.4's commit message
mptcpd 0.4

This is a minor mptcpd release.  It includes the following notable
changes:

- Plugins may now inform peers that an address is no longer being
  advertised through the new mptcpd_pm_remove_addr() function.  This
  corresponds to the MPTCP protocol REMOVE_ADDR option.

- Network monitoring related events are now propagated to plugins.
  Events are triggered upon the addition, update, and removal of a
  network interface (link), as well as the addition and removal of a
  network address.  Plugins interested in receiving any of these
  events need only implement the corresponding callback in the
  `mptcpd_plugin_ops' API found in `<mptcpd/plugin.h>'.

- Stub implementations for unused mptcpd plugin operations are no
  longer needed.  Simply set the unused field in the
  `mptcpd_plugin_ops' structure to NULL.

- This will be the last release to support the MPTCP generic netlink
  path management API in the multipath-tcp.org kernel.  Subsequent
  releases will support the new API found in the
  "multipath-tcp/mptcp_net-next" kernel on GitHub currently being used
  for development of patch submissions to the upstream Linux kernel
  network subsystem maintainers.
0