linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #08513
[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