aMule Forum
English => Feature requests => Topic started by: KyroMaster on January 11, 2007, 11:21:53 AM
-
There's already an implementation of NAT-Traversal in eMule from DavidXantanos of NeoMule. Since this is IMHO an essential feature for some users (it's just not possible for some people to have the ports forwarded) it could be integrated into aMule so that it'll be the killer feature ;)
-
IIRC NAT-Traversal needs server somewhere in-the-middle between clients. Who's running this server?
-
I think he means UDP hole-punching, there are various Mods implementing this...
more: http://gnunet.org/papers/nat.pdf
more: http://forum.emule-project.net/index.php?showtopic=109446&hl=transversal
I think it's a great feature, but it's probably quite an effort to port this to amule...
(ps: i'm just re-reading the thread in the emule-forum, Kry doesn't seem to be very positive about this... )
-
Originally posted by kreegee
(ps: i'm just re-reading the thread in the emule-forum, Kry doesn't seem to be very positive about this... )
Kry is NEVER positive.
Anyway, as I explained (and SS explained) on that thread, that code uses Kad to exploit everyone as the middle server for the connection. Kad can't be touched, period.
-
Anyway, as I explained (and SS explained) on that thread, that code uses Kad to exploit everyone as the middle server for the connection. Kad can't be touched, period.
page 2 of the thread holds a updated version:
In sample 2 we don't longer use the kad tag.
The Sample have an new own improved Source Exchange Neo XS
It should have in the usual case less overhead than the official XS (for HighID clients we attach less information’s).
The Neo XS have a NanoTag® based format it provides for LowID clients additional information’s necessary to connect them, it’s the buddy ID, and the IP/Port of the current buddy. It also provides secure connection information’s for the ISP Traversal, but this code part is disabled.
-
Originally posted by kreegee
more: http://forum.emule-project.net/index.php?showtopic=109446&hl=transversal
I think it's a great feature, but it's probably quite an effort to port this to amule...
Link is broken. However, using other client as server-in-middle is nice idea.
-
Link works for me, you probably need to be logged in to read the dev-forum...
-
So does this have a chance to get implemented? This would make aMule much more popular IMHO since the official client doesnt have this feature and is also rather unmaintainted right now.
NAT traversal is essential for many people and the popular clients all implement it.
-
The official client is unmantained? Care to explain?
-
IMHO it's unmaintained ;)
There was a time when new versions were released every one to two months, the last new version is over half a year old now, and important features like nat traversal are implemented in mods only.
Perhaps it's not unmaintained, but it seems so :(
Do you know whether there's any active development going on apart from the mods?
-
Yes, there is a lot of active development and there will be a new release soon. And no, nat traversal is not a good solution. Some people seems to be of the opinion that the official client doesn't include things because it's "neglected". No, it doesn't include things mods do because they are WRONG. That simple.
-
Why is nat traversal wrong? I agree that some people are too lazy to configure their routers ;)
But for many other people (and often these are the ones with the bg internet lines) threre's simply no port forwarding possible. What I also suggested to neomule was for example that when nat traversal is enabled the minimum upload is raised from 10 to 20, so people with small dsl lines can't really use nat traversal.
-
Yes, there is a lot of active development and there will be a new release soon. And no, nat traversal is not a good solution. Some people seems to be of the opinion that the official client doesn't include things because it's "neglected". No, it doesn't include things mods do because they are WRONG. That simple.
Well, NATs are EVIL, if you happen to be behind NAT and you can't control it.And some lame\evil ISPs in my country are offering NATed Internet only (sic!).They're saving some small moneys on IP range allocation.And there may be very bad case when there is no other ISPs in same area so you either eat this sh*t or f__koff and rest from internet, at all - that's all choice.Situation is not willing to improve in future, since IP v4 addresspace is getting close to it's natural (2^32) limits so it will be worse and worse in future.
And So, let's take a look what is good and bad in NAT traversal.
- BAD: this requires 3rd party.Clients can be used to coordinate traversal.This however will increase overhead a bit.This is not good.Fortunately, overhead is quite small.
- GOOD: due to traversal, LowID can send data to LowID and amount of transferred data is much more than overhead so it can be worth of efforts.Since this increases P2P network efficiency in total(more data transferred, more chunks available, rare files spread better, etc) feature not seems to be evil.The only real problem is that users will have fewer reasons to struggle for HighID.
P.S. and about similar issue in 2.1.3... I'm not firewalled (or, to be exact, I'm using NATing router but I did forwarded necessary ports so everything works OK, Kad getting OK, ed2k getting HighID, etc).However, I never seen "Connecting via Kad" connection state success.Such sources are hanging in this state for a while, then always (?) getting dropped due to timeout.Therefore it looks like callback tends to always (?) fail for whatever reasons.The only way to get LowIDs as source seems to be source exchange, then looks like they can be used.This causes some sources lost, especially unfair on rare files.Note: I'm using Kad only.I'm usually do not connect to ed2k.Everything works fine, files are shared and uploaded (to LowIDs as well, proves once more my unfirewalled state).Except this issue with callback.Is this known or fixed?Or this is my issue only?Are there advanced logging in aMule and\or way to enable hardcore packets debugging? (Yes, I know what I'm doing.I'm somewhat familiar with ED2k packets and a bit with Kad too, though I did not tracked Kad development for some time unfortunately so I know not all Kad packets and not aware of Kad 2.0 implementation).
-
Situation is not willing to improve in future, since IP v4 addresspace is getting close to it's natural (2^32) limits so it will be worse and worse in future.
Have you heard about IPv6?
-
I want to suggest a solution and think it`s better not to start a new thread.
IIRC NAT-Traversal needs server somewhere in-the-middle between clients. Who's running this server?
You could solve that simple thought a new option. "Firewall Helper", with small tooltip something like "If you are a high id user your comp will be used as a firewall helper. This adds a little more overhead to you but it helps the network."
Just deactivate this option as default. Those who want to use it, them may use it. Even if I am a high id user I think it helps the network a lot if low id can connect to low id.
It`s maybe just not a good idea to activate this option for everyone as default. But if everyone can decide what to do no one could feel mad. Imho nat to nat could be one of the most important new features.
-
Yes, there is a lot of active development and there will be a new release soon. And no, nat traversal is not a good solution. Some people seems to be of the opinion that the official client doesn't include things because it's "neglected". No, it doesn't include things mods do because they are WRONG. That simple.
Well, NATs are EVIL, if you happen to be behind NAT and you can't control it.And some lame\evil ISPs in my country are offering NATed Internet only (sic!).They're saving some small moneys on IP range allocation.And there may be very bad case when there is no other ISPs in same area so you either eat this sh*t or f__koff and rest from internet, at all - that's all choice.Situation is not willing to improve in future, since IP v4 addresspace is getting close to it's natural (2^32) limits so it will be worse and worse in future.
And So, let's take a look what is good and bad in NAT traversal.
- BAD: this requires 3rd party.Clients can be used to coordinate traversal.This however will increase overhead a bit.This is not good.Fortunately, overhead is quite small.
- GOOD: due to traversal, LowID can send data to LowID and amount of transferred data is much more than overhead so it can be worth of efforts.Since this increases P2P network efficiency in total(more data transferred, more chunks available, rare files spread better, etc) feature not seems to be evil.The only real problem is that users will have fewer reasons to struggle for HighID.
P.S. and about similar issue in 2.1.3... I'm not firewalled (or, to be exact, I'm using NATing router but I did forwarded necessary ports so everything works OK, Kad getting OK, ed2k getting HighID, etc).However, I never seen "Connecting via Kad" connection state success.Such sources are hanging in this state for a while, then always (?) getting dropped due to timeout.Therefore it looks like callback tends to always (?) fail for whatever reasons.The only way to get LowIDs as source seems to be source exchange, then looks like they can be used.This causes some sources lost, especially unfair on rare files.Note: I'm using Kad only.I'm usually do not connect to ed2k.Everything works fine, files are shared and uploaded (to LowIDs as well, proves once more my unfirewalled state).Except this issue with callback.Is this known or fixed?Or this is my issue only?Are there advanced logging in aMule and\or way to enable hardcore packets debugging? (Yes, I know what I'm doing.I'm somewhat familiar with ED2k packets and a bit with Kad too, though I did not tracked Kad development for some time unfortunately so I know not all Kad packets and not aware of Kad 2.0 implementation).
Quote.
IPv6 is not an affordable solutions with many Internet Providers: mainstream public doesn't know about the issues of being NATted, and tends to prefer ISPs which give a larger bandwidth without caring being NATted or not. This is obviously bad, but there is not much we can do about it.
Linuxfever's idea is quite good imho. With this feature enabled, aMule would easily become more popular than eMule in many countries.
P.S.: but in no way i'd prefer to see the 2.2.0 release date posticipated again in order to add this feature :-D
-
Hi,
NAT is evil and IPV6 wont solve this issue, NAT will remain. But the good news is NAT will have a standard behavior at some point in the future as the problem is the same in the VoIP field of use. RFC are coming. As now the STUN technology help in some cases, or the more advanced ICE technology. But to pass all NAT you must have something relaying the traffic. That just sucks.
IMHO something similar to STUN in a more p2p fashion (other clients acting as STUN server instead of a central server) is a must have for aMule. It will not solve all issues with NAT but it will improve the situation for a low additional bandwidth.
Regards.
-
Hi,
For a more theoretical paper, it seems to me this one is useful :
http://www.brynosaurus.com/pub/net/p2pnat/
Peer-to-Peer Communication Across Network Address Translators
Bryan Ford
Massachusetts Institute of Technology
baford (at) mit.edu
Pyda Srisuresh
Caymas Systems, Inc.
srisuresh (at) yahoo.com
Dan Kegel
dank (at) kegel.com
1 Introduction
2 General Concepts
3 UDP Hole Punching
4 TCP Hole Punching
5 Properties of P2P-Friendly NATs
6 Evaluation of Existing NATs
7 Related Work
8 Conclusion
Bryan Ford 2005-02-17
They also implemented a tool to test NAT:
http://midcom-p2p.sourceforge.net/
NAT Check
Version 3, with UDP and TCP support
Check Your Network Address Translator
for Compatibility with Peer-to-Peer Protocols
This IETF working group is interesting for this topic too:
http://www.ietf.org/html.charters/behave-charter.html
Regards