Skip to content

Re-integrate v0.13.0 routing code as "integrated default BDM"

Felix Walter requested to merge feature/builtin-compat-bdm into master

Description

This makes µD3TN behave the same as v0.13.0 when executed without an additional commandline argument. A new commandline argument -d / --external-dispatch is added, which enables the use of external BDMs. The default forwarding implementation is now again provided using the v0.13 code, extracted from e1621765 and adapted to the new agent-based forwarding implementation.

Central changes to the old code include:

  • A new "Routing Agent" that handles incoming configuration commands, FIB updates, and BDM dispatch requests.
  • The use of the BDM authorization flag to authorize contact configuration commands.
  • The Contact Manager now only triggers the creation and removal of links / FIB entries; bundle dispatch is triggered through the FIB and BDM callback functions of the Routing Agent.
  • The fragmentation logic is adapted to store the original bundle along with an offset and length value, instead of pre-creating and storing the fragments.
  • The bundle re-scheduling logic integrated into the Routing Agent is simplified and does not support changing the fragmentation parameters. A new function is added to the Router that searches for a new route for such fragments that were already scheduled at some point, considering them as un-fragmentable bundle with overridden fragment offset and length.

Checklist for MR author

  • This MR does not introduce backwards-incompatible API changes.

  • This MR does not introduce new functionality without corresponding tests. It does not break or disable existing tests.

  • I am not aware of new interactions that could be prone to race conditions.

  • I have no security related reservations or thoughts I would like to share about the changes introduced by this MR.

  • The documentation (architecture, developer, operator, user) is in line with the changes in the MR.

  • My contribution adheres to the Contribution Guidelines. Specifically:

    • I provide my contribution under the terms and conditions of the Apache 2.0 license. I am aware of the patent grant that is part of this license and certify conformance.
    • I certify conformance with the DCO. All commits contain the corresponding signoff line.
    • I am aware that my contribution will become part of µD3TN, which is currently dual-licensed under AGPLv3 and a proprietary license offered by D3TN, and may potentially become part of software using other compatible licensing schemes in the future.

Checklist for MR reviewers

Note: Approving the MR is equivalent to confirming all items below.

  • I reviewed the changes.
  • I reviewed the commits.
  • I reviewed the statements made above; they are correct as far as I can judge. I have nothing to criticize.
  • New code in core components has good testability.
  • I reviewed the related Issue(s). The stated tasks have been addressed and the changes reflect the issue decisions.

Merge request reports