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

Reply via email to