Thanks a lot Rick for you reply. Yes in fact that's why I was looking into using IPv6 as Microsoft suggests. My main reason for wanting to use IPv6 cause as you well stated the IPv4 solutions are merely hacks that cannot guarantee a working solution due to different scenarios - especially the fact that UPnP is not supported by all hardware as yet.
The issue you mentioned about the OS limitation is not particularly an issue since this is a University degree project. Using IPv6 will be a great benefit in terms of academic content. Guess the only issue then is to learn how to use netsh :) Cheers, Mark -----Original Message----- From: Moderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Rick Byers Sent: Thursday, 04 September, 2003 16:13 To: [EMAIL PROTECTED] Subject: Re: [ADVANCED-DOTNET] .NET P2P Network Programming By "the NAT problem", I assume you mean restoring end-to-end connectivity on the Internet (when it is not intentionally disrupted by a firewall). There are all sorts of ways of doing this with IPv4 ("bi-directional' connections, UPnP, etc) but in my opinion they're all just hacks that greatly increase the complexity of the problem and only work around specific cases of the problem (eg. with 'bi-directional' channels, one end has to be directly connected to the Internet). Microsoft is taking a longer term approach by encouraging the use of IPv6 which has an expanded address space and makes NAT unnecessary. In fact, MS's P2P SDK (http://www.microsoft.com/windowsxp/p2p/) requires IPv6. In an ideal world, everyone would just upgrade their routers to support IPv6 and we could just forget about NATs. Unfortunately this is an excruciatingly slow transition, its even taken Microsoft many years to release an os (Windows Server 2003) with a production quality IPv6 stack, other OSes like NetBSD have had one since before 1999. So a lot of effort is required to tunnel IPv6 traffic over the existing IPv4 internet, including dealing with IPv4 NATs. First of all, I think encouraging the use of IPv6 is a great approach because its the only way we'll ever make the transition, I'm extremely happy with Microsoft's position (there is no technical reason their P2P stuff couldn't support IPv4 as well as IPv6). Microsoft's Teredo technology (http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/Teredo.asp) is designed to tunnel IPv6 traffic across an IPv4 NAT. Like the other IPv4 NAT technologies, its still a hack that we'd be much better off without. However, in my opinion, its a much more reliable, efficient and elegant solution to NAT traversal than any of the other choices. Its interesting to note that there is nothing special about IPv6 that makes teredo NAT traversal possible, you could implement something similar using IPv4 (although I'm very happy Microsoft hasn't). Anyway, enough ranting background material and on to your question. Teredo is an OS-level technology, and there is nothing you have to do to make use of it from within an application. So, yes, using .NET (v1.1 and up) you can write IPv6 networking code (or better yet, IP version agnostic networking code) and rely on the underlying OS networking layer to take care of all the NAT traversal for you. Of course you'll have to learn to configure, manage, and possibly debug the IPv6 support in Windows (If you've never used 'netsh' before, its time to learn). The biggest problem with this approach is OS support. Windows Server 2003 is the only MS OS that supports IPv6 natively, but the stack is available as a 'recommended upgrade' for Windows XP. For anything older than XP, you're pretty much out of luck. Hope this helps, Rick ----- Original Message ----- From: "Mark Anthony Spiteri" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, September 01, 2003 6:51 PM Subject: .NET P2P Network Programming > Currently I am planning my final year project which will > basically entail am online framework for group based collaboration using > .NET for Tablet PC's. This will be a Peer-to-Peer project that will handle > such things as instant messaging, shared notice board, whiteboard, dynamic > shared file systems, VoIP and so on. On of the problems currently at hand is > to deal with the NAT problem. One solution is to program for IPv6 as > Microsoft suggests. > > I have found ways of programming with IPv6 in .NET however I am unsure if it > is possible to integrate with the Teredo infrastructure proposed by > Microsoft in order to deal with the NAT issue. Is this at all possible in > .NET? > > Cheers, > Mark > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > NEW! ASP.NET courses you may be interested in: > > 2 Days of ASP.NET, 29 Sept 2003, in Redmond > http://www.develop.com/courses/2daspdotnet > > Guerrilla ASP.NET, 13 Oct 2003, in Boston > http://www.develop.com/courses/gaspdotnet > > View archives and manage your subscription(s) at http://discuss.develop.com > =================================== This list is hosted by DevelopMentorR http://www.develop.com NEW! ASP.NET courses you may be interested in: 2 Days of ASP.NET, 29 Sept 2003, in Redmond http://www.develop.com/courses/2daspdotnet Guerrilla ASP.NET, 13 Oct 2003, in Boston http://www.develop.com/courses/gaspdotnet View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentorŪ http://www.develop.com NEW! ASP.NET courses you may be interested in: 2 Days of ASP.NET, 29 Sept 2003, in Redmond http://www.develop.com/courses/2daspdotnet Guerrilla ASP.NET, 13 Oct 2003, in Boston http://www.develop.com/courses/gaspdotnet View archives and manage your subscription(s) at http://discuss.develop.com