Vista: How PPPv6 support works?

I have seen lots of email coming around on how IPv6 supports works on WAN links in Vista. Or in other words how PPPv6 works

Lets start by some fundamentals first:

PPP is the protocol which is normally used to connect to your ISP over dial-up links (i.e. PPP over dialup) OR broadband networks (i.e. PPP over Ethernet) OR to your corporate network (i.e. PPP over PPTP/L2TP based VPN tunnel). PPP provides capability to authenticate the user (using protocols like MSCHAPv2, EAP-TLS, PEAP etc) and get the IP address information from the server (using IPv4CP OR IPv6CP). And then depending upon IPv4CP or IPv6CP success, IPv4 OR IPv6 stack is plumbed on top of PPP.

The fundamental difference in the way IPv4 is configured on top of PPP vs IPv6 is:

IPv4CP phase of PPP provides a way to transfer IP address + DNS server address from server to the client.

Whereas, IPv6CP provides way to transfer only lower-half (or 64 bit interface-identifier) of IPv6 address from server to the client. This means upper half (or 64 bit IPv6 prefix) needs to be sent to client through some other ways. Vista PPP client + Longhorn server based PPP (or RRAS server) supports sending IPv6 prefix through IPv6 router advertisement (or RA) mechanism. This means once the PPP is up, IPv6 RA is sent from the server to the client to hand-out the IPv6 prefix to the client. And then DHCPv6 Inform is sent from client to server to get the DNS related information from the server.

So the flow on the client side will look like

1) Establish link (i.e. dialup or VPN etc) connectivity between PPP client and server

2) PPP goes through LCP, Authentication, IPv4CP and/or IPv6 CP phase.

3) If both IPv4 and IPv6CP fails, the PPP connection is disconnected.

If IPv4CP comes up, PPP is attached as IPv4 interface.  

If IPv6CP comes up, then it is attached as IPv6 interface.

4) Client IPv6 stack begins the IPV6 address autoconfigration process and sends IPv6 router solicitation packet to the PPP server.

5) Upstream router (i.e. PPP server) if configured properly sends IPv6 router advertisment packet (containing IPv6 prefix, route information) to the client.

6) Client then sends DHCPv6 Inform (or DHCPv6 stateless client) to the server to get the rest of the information (like DNS server address, DNS suffix etc).

7) Client is ready to use IPv6 interface for sending/receiving IPv6 packets.

Note: Last 4 steps remain same for LAN interface too. Think PPP IPv6CP as a way to provde interface-id to the IPv6 stack - which in LAN interface may be derived from MAC address.

Now comes to some aspects where some implementation differ:

Some PPPv6 server vendors expect client to send DHCPv6 prefix requesting client packet to the server - to obtain the prefix to be assigned to PPP or WAN link. Vista client does not send this because:

1) DHCPv6 prefix delegation mechanism is for a router "A" to request its upstream router "B" to get (or delegate) a prefix, which router "A" can send to its LAN clients on the downstream direction.

2) DHCPv6 prefix delegation mechanism is not the right mechanism to obtain prefix for the interface on which the router is requesting to upstream router. Also this is not the mechnism to be used by IPv6 host (and note in PPPv6 client scenario I mentioned above, client is really behave as host and not a router). 

Vista does supports sending DHCPv6 prefix requesting packet only in scenario where internet connection sharing (or ICS) is enabled. i.e. Vista box is running as a ICS "router". In this scenario, once the public IPv6 interface comes up (say PPPv6 over Ethernet is enabled as public interface on ICS), Vista will send DHCPv6 PD to get a prefix which ICS assigns to the LAN (or private interface). And the LAN machines behind Vista ICS box can then get this prefix via IPV6 router advertisement packets sent on LAN interface.

Please send me email at rrasblog@microsoft.com in case you have further queries

Till then - have fun and welcome to IPv6 world

Samir Jain
Lead Program Manager
RRAS, Windows Enterprise Networking

[This posting is provided "AS IS" with no warranties, and confers no rights.]