← Back to team overview

linuxdcpp-team team mailing list archive

[Bug 1506210] Re: Decision on how to move forward with IPv6 connectivity setup

 

Changes that largely implements what's discussed above is committed.
Problems still to solve (above what's described in comment #4):
- Ports and mapper settings still shared between v4 and v6 although SettingsManager items and GUI parts added for the separate v6 settings (unused/disabled respectively for now)
- IPv4 'Disabled' state has no effect on NMDC connections
- Switching off Automatic detection does not restore manual incoming ports settings despite the autoSettings map is correctly erased. A subsequent settings save or a restart needed to get the correct manually set values back.

** Changed in: dcplusplus
       Status: Confirmed => In Progress

-- 
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to DC++.
https://bugs.launchpad.net/bugs/1506210

Title:
  Decision on how to move forward with IPv6 connectivity setup

Status in DC++:
  In Progress

Bug description:
  Recently we have added a bunch of code containing IPv6 improvements. The code originates from AirDC which iceman50 modified for Dice++.
  In his initial commit http://sourceforge.net/p/dcplusplus/code/ci/a783fa70a1a616a5d74c829a80d75ca810876665/ we can basically see the
  way he used/modified this code for Dice++. It introduces a bunch of new settings but some of them has only defaults and aren't propagated in the UI.

  Above a few small bugs the main problem with the initial commit is
  that it breaks the zero configuration (so one magic switch does
  everything and the user should not need to configure anything in most
  cases) logic for auto connectivity setup that we've implemented for
  DC++ before and which has proven to be highly successful throughout
  the DC community.

  Notably the patch adds *two* (one more) checkboxes for Automatic
  Connectivity Detection, one for each protocol (v4/v6). This layout
  would require the average user to know about IP protocols and such to
  decide things, a requirement of special knowledge of networking to set
  up connectivity at times, which we have already avoided years ago.

  Hence a decision made to make things easier to the user and not to
  break the existing layout, see commit
  http://sourceforge.net/p/dcplusplus/code/ci/f8c7501e096576e0e04066da81f0a4c0058b303e/

  At the same time there was a (not too fruitful) discussion about
  improving the added IPv6 auto setup (since the implementation in the
  patch doesn't do much, e.g. don't run mappers at all and knowledge
  about the necessity of mapping / hole-punching on v6 is
  missing/ambigous among the people discussing the problem) which ended
  up with a change in the v6 IP comparsion in the detection code (see
  the comments in the source in the commit).

  It turned out later that these later changes cause connectivity issues
  in both an auto detected or in a manual setup on an IPv4 only
  environment.

  After some investigation while exmining the AirDC source code and connectivity setup UI layout it has become evident that they use a different logic in connectivity setup than we do. They have only one pane in the settings dialog (called ProtocolPage in their source) where you can separately set the auto detection/manual setup for both v4 and v6 protocols as well as there's settings to completly disable the connectivity of any of the protocols. Moreover in their setup, the manual enable/disable switch has an effect to the automatic detection: if the manual connectivity is set to disabled for a protocol then it also blocks the auto detection for the said protocol.
  This logic is completly different to ours, however, the code supporting this logic is already added to DC++ through the initial commit. Basically this, with the later changes committed, causes C-C connectivity issues in the tip revision of DC++ as of the day this report is posted.

  AirDC also propagates all manual connectivity settings for v6
  something which we should add to our UI anyway. The following patch
  from Pretorian does most of it: http://pastie.org/10479684

  However, we should decide in what way do we implement our v6
  connectivity setup. Basically I can think of two ways, as follows:

  #1
  We keep our old logic so there's only one checkbox for Automatic Connectivity Setup. This either runs detection for both protocol or only for v4 for the time beeing. For the new manual v6 connectivity settings we set the v6 connectivity disabled by default.

  Advantage: no change from the user's point of view. Still zero config setup that's easy to support.
  Disadvantages:
  - no way to set the auto detection to run for one protocol while use manual config for the other.
  - requires changes to the ConnectivityManager code in added from AirDC

  #2
  We switch to a pair of auto detect checkboxes for one both protocols.
  Advantages:
  - the initial patch can be used more or less, with the exception of the manual enable/disable connectivity switches have effect on the automatic detection. We clearly don't need that.
  - there's a way to set the auto detection to run for one protocol while use manual config for the other.
  Disadvantage: change from the simple UI/logic we used to have which can make support cases more difficult at times.

  Any of the two ways we choose I suggest keeping the v6
  detection/manual connectivity disabled by default until we know more
  about topologies, mapping, what's when we got a public IP but we're
  behind a firewall, etc... since we already experienced that wrongly
  enabled v6 connectivity can cause C-C connectivity issues on ADC hubs.

  Ideas, opinions, suggestions welcome!

To manage notifications about this bug go to:
https://bugs.launchpad.net/dcplusplus/+bug/1506210/+subscriptions


References