January 13, 2000 (Check here for the latest version.)
The information in this file applies to both the source and binary-only distributions of this release.
Note that since these API changes included the addition of a new
field to the IPv6 socket address structure, binaries from previous
releases will not work with this one. If you have your own
applications, they must be recompiled. The new
sin6_scope_id
field must be initialized; the best way to
do this is to set the entire sockaddr structure to zero before use:
memset(&sin6, 0, sizeof(struct sockaddr_sin6))
.
Our syntax for a literal IPv6 address with scope-id is "scope-id/address". For example, 5/fe80::260:8ff:fe16:6e15 where 5 is an interface index because it's a link-local address. getaddrinfo parses this syntax.
Another major stack improvement is Plug and Play and Power Management support for Windows 2000. USB and PCMCIA network interfaces can now be added to or removed from the system on the fly and the stack will reconfigure itself accordingly. Similarly, you can disconnect and reconnect network links or hibernate and resume your system and the MSR IPv6 stack will do the right thing. You can even dynamically unload and reload the stack without rebooting.
There is a new 6to4cfg program that automates 6to4 configuration. 6to4cfg makes it very easy to setup a 6to4 gateway router and connect your site to the 6bone via 6to4. See our 6to4 documentation.
There are plenty of minor improvements and fixes. We've improved our support for multicast (MLD) and anycast. We've implemented the UDP lite proposal. And we've fixed some problems with our existing correspondent node support (for mobile IP) and the Network Address and Protocol Translator.
We've reorganized our header files so that you can build user-level applications that use IPv6 without needing the SDK or DDK. Our own source tree still requires the SDK and DDK.
To uninstall on NT 4, go to the Control Panel's "Network" applet (an alternative way to do this is to right-click on "Network Neighborhood" and select "Properties") and select the "Protocols" tab. Select the IPv6 Protocol from the list and click "Remove".
To uninstall on Windows 2000, go to the Control Panel's "Network Connections" panel (an alternative way to do this is to right-click on "My Network Places" and select "Properties") and right-click on the "Local Area Connection". Choose "Properties". Go to the "General" tab. Select the IPv6 Protocol and then click on "Uninstall". Note that the user interface for Windows 2000 differs slightly from beta to beta, so these instructions are approximate.
If you plan to run our stack on an existing NT 4.0 system, we recommend that you update it to the latest Service Pack level. Service Pack updates are available for free download from http://support.microsoft.com/Support/NTServer/Content/ServicePacks/default.asp.
The binary form of this release is only available for the Intel x86 architecture, which is also the only NT-supported platform we've tested on.
We currently have support for Ethernet and FDDI interfaces. Any Ethernet or FDDI card that is supported by NT 4.0 should work with our release, however, we've only tested about a dozen Ethernet cards and one FDDI card.
[If you have the binary-only distribution, you can skip down to Installation]
If you do not have some of these tools and wish to acquire them, you will need to join Microsoft's Developer Network (MSDN) at the Professional Subscription level or greater. Please see http://msdn.microsoft.com/developer/default.htm for more information. Educational institutions may be eligible for special academic prices, please see your local academic reseller for pricing and availability.
Most of our development has occurred on machines running NT 4.0 w/ SP3 or later, Visual C++ 5.0 or 6.0, Platform SDK of Oct '97, and the NT DDK Version 4.0. Having precisely these same versions of the compiler and SDK shouldn't be necessary; however, we haven't done extensive testing of other configurations.
Assuming you have the DDK build environment set up correctly (test by building
one or more of the samples included in the DDK), building our entire tree can
be accomplished simply by running "build" in the msripv6 directory.
To build just a single component, cd to that component's directory and
run build there.
For example, to build the core IPv6 stack, run build in the
msripv6\tcpip6
directory.
The resulting binary is tcpip6.sys
.
(Build likes to complain about include files that don't end with a blank line and include files it can't find directly. You can ignore these messages)
kit
subdirectory of msripv6. Run the
mkkit.cmd
script with the path to an existing directory in
which to place the completed kit as an argument (for example,
"mkkit C:\Ipv6Kit
").
C:\IPv6Kit
").
IPv6 should now install itself.
The above install procedure will copy the files from the install kit into the
appropriate places and add entries to the system registry for IPv6
configuration.
If you later modify IPv6 components, you can replace just the
affected file or files without having to uninstall/install IPv6 again.
The protocol stack itself (tcpip6.sys
) is installed in your
%SystemRoot%\system32\drivers
directory.
The Winsock helper dynamically linked library for the INET6 address family
(wship6.dll
) and all the user apps and utilities
(ipv6.exe
, ping6.exe
, tracert6.exe
,
ttcp.exe
, etc) live in the %SystemRoot%\system32
directory.
Go to the Control Panel's "Network Connections" panel (an alternative way
to do this is to right-click on "My Network Places" and select "Properties")
and right-click on the "Local Area Connection".
Choose "Properties". Go to the "General" tab. Click on "Add".
Choose "Protocol" and click on "Add". Click on "Have Disk...".
When it asks you for a disk, give it the full pathname to where you downloaded
our binary distribution kit (or where you placed the kit you created yourself
-- in the example above, this was "C:\IPv6Kit
").
IPv6 should now install itself.
Note that unlike NT 4, you do not have to reboot at this point. IPv6 starts immediately once installed.
The above install procedure will copy the files from the install kit into the
appropriate places and add entries to the system registry for IPv6
configuration.
If you later modify IPv6 components, you can replace just the
affected file or files without having to uninstall/install IPv6 again.
The protocol stack itself (tcpip6.sys
) is installed in your
%SystemRoot%\system32\drivers
directory.
The Winsock helper dynamically linked library for the INET6 address family
(wship6.dll
) and all the user apps and utilities
(ipv6.exe
, ping6.exe
, tracert6.exe
,
ttcp.exe
, etc) live in the %SystemRoot%\system32
directory.
Some manual configuration is required for more advanced features.
We have extra information files describing these
in the docs
subdirectory of the distribution tree.
In particular, we have pages describing how to set up a
connection to the 6bone or a
6to4 gateway, the use of the
ipv6 command to configure interfaces, addresses,
and routing,
and how to configure IP security.
ipv6.exe
) to retrieve and display various
types of information from the stack.
You can use this to view the state of interfaces, the neighbor cache,
binding cache, destination cache (called the route cache in our
implementation), and the route table.
This utility can also be used to manually configure interfaces,
addresses and route table entries.
There are also two separate utilities (ipsecgui.exe
and
ipsec.exe
) for configuring IPSec policies and associations.
Also included with this release are ping6, tracert6, and ttcp.
These work similarly to their v4 counterparts and are installed into
%SystemRoot%\system32
by the above installation procedure.
The ttcp utility now supports IPv4 as well.
We also include mldtest and testsend in the binary distribution, but they
are not installed anywhere by default.
Implementers may be interested in our hrdtest utility, which generates packets with various combinations (both legal and not) of IPv6 extension headers.
COPYRIGHT.h
" of the NcFTP download).
Also included in the NcFTP download is the pdcurses (public domain curses)
package which is needed to build NcFTP (and is also not covered by our
license).
For more information about building/running NcFTP with our stack, see the
readme.msr
file included in the NcFTP download.
We've also made available (via a separate download file) a version of
the freely available Fnord! web sever which we've ported to run on our
stack.
Please note that this code is not covered by our license, but rather
the GNU Public License (as given in the file
"license.txt
" of the Fnord download).
For more inforation about building/running Fnord! with our stack, see the
readme.msr
file included in the Fnord download.
We hope to increase the number of example applications for use with our stack over time. We also accept donations. If you have any freely redistributable (in both source and binary form) network applications of general interest that can run on our stack, please let us know.
wininet.dll
for NT 4.0 that makes
IE 4.01 SP1 cognizant of IPv6.
In our very brief testing, it appeared to work with IE 5 as well.
One caveat is that changing your existing wininet.dll
to
our version may break something else; we haven't tested this as
extensively as the real product.
In fact, we've only tested basic web browsing with http and ftp URLS.
We recommend you save your existing version in case you need to back out
of this change.
We only have a modified wininet.dll
for NT 4.0 at the moment;
this will not work on Windows 2000.
To install, rename your existing wininet.dll
to something else
(e.g. wininet.old
) and copy our wininet.dll
to
%SystemRoot%\system32\wininet.dll
and reboot. The rename step
is important since you can't overwrite an in-use dll.
Note you also need the fixes to afd.sys
and (on pre-SP4 systems)
msafd.dll
mentioned below for this to work.
Internet Explorer understands the RFC 2732 syntax for embedding IPv6 literal addresses in URLs. For example, http://[2002:836b:4179::836b:4179] as well as http://ipv6.research.microsoft.com. However, Internet Explorer does not yet support the use of scope-ids with embedded IPv6 literal addresses.
The good news it that most of these problems have since been fixed in Service Pack 4 (and later) for NT 4.0 and in Windows 2000.
There is protocol specific code in afd.sys
to which we had to
add an IPv6 case.
Rename your existing version to something else and copy our
afd.sys
(for NT 4.0 with SP3 or less) or afd.sp4
(for NT 4.0 SP4 or later) to %SystemRoot%\system32\drivers\afd.sys
and reboot. This is fixed in Windows 2000.
The Winsock getsockname call on AF_INET6 sockets triggers a bug in
msafd.dll
related to the longer addresses.
If you decide you wish to fix this (see warning above), rename your existing
%SystemRoot%\System32\msafd.dll
to something else and replace it
with the one we've included in this release.
This fix is required for most ftp clients to work properly.
This is fixed in SP4 (and later) and in Windows 2000.
The nslookup utility will incorrectly print the results of a AAAA record query
(some parts of the address are byte-swapped).
If you decide you wish to fix this (see warning above), replace your existing
%SystemRoot%\System32\nslookup.exe
with the one we've included
in this release.
This is fixed in SP4 (and later) and in Windows 2000.
Our IPv6 TCP implementation doesn't have all the post-NT 4.0 fixes and improvements that Microsoft has since shipped in the Service Packs and in Windows 2000.
If you are configuring a router that should forward packets to/from 6to4, configured tunnels, or automatic tunnels, then you must enable forwarding on all 6over4 interfaces.
There is a bug in Windows 2000 name resolution that causes the following problem. If your machine has a v6 address in the DNS, and you try to look it up on the machine itself (eg lookup "aname" while running on aname), then the IPv6 name resolution will fail. (The problem has to do with Netbios name resolution getting in the way.) Qualifying the name (for example using "aname.acompany.com") works around the bug.
Our DNS resolver code understands A and AAAA records but not A6 records. The resolver only uses IPv4 packets to communicate with DNS servers; it can not run over IPv6 even when it is looking up AAAA records. We do not support Dynamic DNS updates.
subscribe msripv6-users yourfirstname yourlastname