DHC                                                              T. Huth
Internet-Draft                                               J. Freimann
Intended status: Standards Track                  IBM Germany Research &
Expires: October 16, 2009 February 11, 2010                              Development GmbH
                                                               V. Zimmer
                                                                   Intel
                                                               D. Thaler
                                                               Microsoft
                                                          April 14,
                                                         August 10, 2009

                     DHCPv6 option for network boot
                  draft-ietf-dhc-dhcpv6-opt-netboot-04
                  draft-ietf-dhc-dhcpv6-opt-netboot-05

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on October 16, 2009. February 11, 2010.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.

Abstract

   The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) provides a
   framework for passing configuration information to nodes on a
   network.  This document describes new options for DHCPv6 which are
   required for booting a node from the network.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Options  . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
     3.1.  Boot File Uniform Resource Locator (URL) Option  . . . . .  4
     3.2.  Boot File Parameters Option  . . . . . . . . . . . . . . .  5
     3.3.  Client System Architecture Type Option . . . . . . . . . .  6
     3.4.  Client Network Interface Identifier Option . . . . . . . .  6  7
   4.  Appearance of the options  . . . . . . . . . . . . . . . . . .  7  8
   5.  Download protocol considerations . . . . . . . . . . . . . . .  7  8
   6.  IANA considerations  . . . . . . . . . . . . . . . . . . . . .  8
   7.  Security considerations  . . . . . . . . . . . . . . . . . . .  9
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  9
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  9 10
     9.1.  Normative References . . . . . . . . . . . . . . . . . . .  9 10
     9.2.  Informative References . . . . . . . . . . . . . . . . . . 10
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 11

1.  Introduction

   Network booting means

   This draft describes DHCPv6 options that can be used to provide
   configuration information for a node which should that must be booted fetches using the
   files required for booting via its network device
   network, rather than from a server. local storage.

   Network booting is, is used, for example, very useful in some environments where
   the
   administrators have to maintain a large number of nodes.  Since  By serving
   all boot and configuration files are stored on a from central server, the
   maintenance of all effort
   required to maintain these nodes can be kept simple this way. is greatly reduced.

   A typical boot file would be, for example, an operating system kernel
   or a boot loader program.  To be able to execute such a file, the
   firmware (BIOS) running on the client node must perform the following
   two steps (see Figure 1): First get all information which are is required
   for downloading and executing the boot file.  Second, download the
   boot file such as: and execute it.

                                            +------+
                    _______________________\| DHCP |
                   / 1 Get boot file info  /|Server|
           +------+                         +------+
           | Host |
           +------+                         +------+
                   \_______________________\| File |
                     2 Download boot file  /|Server|
                                            +------+

                      Figure 1: Network Boot Sequence

   Information that is required for booting over the network can include
   information about the server on which the boot files can be found,
   the protocol to be used for the download (for example HTTP [RFC2616]
   or TFTP [RFC1350]), the name of the boot file and additional
   parameters which should be passed to the OS kernel or boot loader
   program respectively.  As
   second step, download the boot file from the file server and execute
   it.

                                            +------+
                    _______________________\| DHCP |
                   / 1 Get boot file info  /|Server|
           +------+                         +------+
           | Host |
           +------+                         +------+
                   \_______________________\| File |
                     2 Download boot file  /|Server|
                                            +------+

                      Figure 1: Network Boot Sequence

   DHCPv6 allows client nodes to ask a DHCPv6 server for configuration
   parameters.  Contrary to its IPv4 predecessor, DHCPv6 does not yet
   define a way to query network boot options such as the IPv6 address
   of a boot file server and boot file names.  Therefore this  This document
   defines provides new DHCPv6 options which are required a client can
   request from the DHCPv6 server to satisfy its requirements for network booting
   clients.
   booting.

2.  Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

   Terminology specific to IPv6 and DHCPv6 are used in the same way as
   defined in the "Terminology" sections of RFC 3315 [RFC3315].

3.  Options

   As specified in the

   Option formats comply with DHCPv6 RFC [RFC3315], all values in the options
   are in network byte order.  Options are byte-aligned but are not
   aligned in any other way such as on 2 or 4 byte boundaries.  There is
   no padding between the options. per [RFC3315] (section 6).

3.1.  Boot File Uniform Resource Locator (URL) Option

   This option consists of an ASCII US-ASCII string.  It is used to convey an
   URL to a boot file.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       OPT_BOOTFILE_URL        |            option-len         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                                                               .
   .
   | precedence    |                  bootfile-url                 |
   +-+-+-+-+-+-+-+-+               (variable length)               .
   .                                                               .                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Format description:

   option-code       OPT_BOOTFILE_URL (TBD1).

   option-len        Length of the bootfile URL option in octets (not
                     including the size of the option-code and option-
                     len fields).

   bootfile-url      This ASCII string is

   precedence        A single unsigned octet indicating the order in
                     which this URL (conforming to
                     [RFC3986]) for a boot file. should be processed, if more than
                     one URL appears in the message.

   bootfile-url      This US-ASCII string starts
                     with the protocol which is used for downloading.
                     Separated by "://", the hostname or IPv6 address of the server hosting URL for the boot file follows, and then
                     the path, file name and query parts of the URL. file,
                     as defined in [RFC3986].  The string is not null-terminated.

   Note about the bootfile-url: This string can either contain a
   hostname or a literal IPv6 address to specify the server where NUL-
                     terminated.

   The node identifier in the
   boot file should URL must be downloaded from.  All clients which implement reachable using IPv6.  If the
   OPT_BOOTFILE_URL option MUST be able to handle
   URL is expressed using an IPv6 addresses here
   and SHOULD also be able to handle address rather than a hostname in domain name, the URL.  The IPv6
   address in the URL then MUST be enclosed in "[" and "]" characters,
   conforming to [RFC3986].  Clients SHOULD also be able to handle
   hostnames in the URLs.  However, in this case the firmware
   implementation on the client machine must support DNS, too.  Due to
   size limitations, this might not be possible in all firmware
   implementations, so that have DNS implementations
   should support for hostnames the use of domain names in the URLs is only
   optional. URL.

   Multiple occurrences of OPT_BOOTFILE_URL can MAY be present in a single
   DHCP message.  Clients MUST process them in according to the order in which they
   appear within value of
   the message.  The client starts with precedence field - the first file
   that lowest precedence should be downloaded and executed.  In case of a failure processed
   first.  If this fails, then the
   process second-lowest should continue be used, and so
   on.

   Servers SHOULD NOT send two Bootfile URL options with the second same
   precedence.  Clients receiving more than one OPT_BOOTFILE_URL option
   with the same precedence SHOULD discard any extra such options.  The
   order in which the client processes options is not specified, and so on.
   therefore server implementations cannot assume that the client will
   discard a particular such option.

   The value of the precedence field MUST NOT be zero.

3.2.  Boot File Parameters Option

   This option consists of multiple ASCII US-ASCII strings.  They are used to
   specify parameters for the boot file (e.g. parameters for the kernel
   or boot loader program).

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       OPT_BOOTFILE_PARAM      |            option-len         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | precedence    | param-len 1                   |  parameter 1  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   (variable length)   .
   .                                                    length)    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                                                               .
   .                       <multiple Parameters>                   .
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | param-len n                   |            parameter n        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         (variable length)     .
   .                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Format description:

   option-code       OPT_BOOTFILE_PARAM (TBD2).

   option-len        Length of the bootfile parameters option in octets
                     (not including the size of the option-code and
                     option-len fields).

   precedence        A one-octet quantity indicating the bootfile-url
                     option to which this set of parameters applies.

   param-len 1...n   This is a 16-bit integer which specifies the length
                     of the following parameter in octets (not including
                     the parameter-length field).

   parameters 1...n  These ASCII US-ASCII strings are parameters needed for
                     booting, e.g. kernel parameters.  The strings are
                     not null-terminated. NUL-terminated.

   The firmware MUST pass these parameters in the order they appear in order they appear in
   the OPT_BOOTFILE_PARAM option to the boot file which has been
   specified in the OPT_BOOTFILE_URL option.

   Multiple occurrences of OPT_BOOTFILE_PARAM MAY be present in a single
   DHCP message.  Clients MUST process them according to the value of
   the precedence field:

   o  If the precedence field of the Bootfile Parameters option is zero,
      the client SHOULD provide these parameters when it attempts to
      execute any Bootfile it has loaded using any of the provided
      Bootfile URL options.

   o  If the precedence field of the Bootfile Parameters option is
      nonzero, the client SHOULD provide these parameters only when it
      attempts to execute a Bootfile it loaded using a Bootfile URL
      option with a precedence field that has the same value.

   o  In the event that the client receives both a Bootfile Parameters
      option with a precedence field of zero and one with a precedence
      field that matches a certain Bootfile URL option, the OPT_BOOTFILE_PARAM client MUST
      use the Bootfile Parameters option to whose predence matches the boot file which has been
   specified in
      precedence of the OPT_BOOTFILE_URL Bootfile URL option.

3.3.  Client System Architecture Type Option

   This option provides parity with the Client System Architecture Type
   Option defined for DHCPv4 in [RFC4578] section 2.1.

   The format of the option is:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    OPTION_CLIENT_ARCH_TYPE    |         option-len            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                                                               .
   .              Architecture Type (variable length)              .
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   option-code        OPTION_CLIENT_ARCH_TYPE (TBD3).

   option-len         Length of the "processor architecture type" field
                      in octets (not including the option-code and
                      option-len fields).  It MUST be an even number
                      greater than zero.  See [RFC4578] section 2.1 for
                      details.

   Architecture Type  A list of one or more architecture types, as
                      specified in [RFC4578] section 2.1.

3.4.  Client Network Interface Identifier Option

   The Client Network Interface Identifier option is sent by a DHCP
   client to a DHCP server to provide information about its level of
   Universal Network Device Interface (UNDI) support (see also [PXE21]
   and [UEFI22]).

   This option provides parity with the Client Network Interface
   Identifier Option defined for DHCPv4 in [RFC4578] section 2.2.

   The format of the option is:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           OPTION_NII          |          option-len           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Major     |      Minor      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   option-code       OPTION_NII (TBD4).

   option-len        3
   Type              As specified in [RFC4578] section 2.2.

   Major             As specified in [RFC4578] section 2.2.

   Minor             As specified in [RFC4578] section 2.2.

4.  Appearance of the options

   These options MUST NOT appear in DHCPv6 messages other than the types
   Solicit, Advertise, Request, Renew, Rebind, Information-Request and
   Reply.

   The option-codes of these options MAY appear in the Option Request
   Option in the DHCPv6 message types Solicit, Request, Renew, Rebind,
   Information-Request and Reconfigure.

5.  Download protocol considerations

   Depending on the network infrastructure, various special requirements
   could be imposed on the download protocol, so this document does not
   force one protocol for all scenarios.  However, in case there there
   are no special requirements, the HTTP protocol SHOULD be used as
   download protocol.

   RFC 906 [RFC906] suggested to use TFTP for bootstrap loading.  Since
   TFTP is based on UDP, it has the advantage that it can also be used
   in firmware implementations which have to deal with size and
   complexity constraints and thus can not include a full-blown TCP/IP
   stack.  It can also be used in multicast mode (see [RFC2090]) which
   is useful when a lot of nodes boot the same boot file at the same
   time.  So if TFTP should be used as download protocol, the boot file
   URLs then must be specified according to RFC 3617 [RFC3617].

   However, TFTP also has some severe limitations, for example
   performance limitations due to acknowledging each packet and size
   limitations due to using only 16-bit packet counters.  So this
   specification suggests to use now the well-known and established
   hypertext transfer protocol (HTTP, see [RFC2616]) as default for
   network booting instead.  If a secure download is required, it is
   also possible to use HTTP with TLS (HTTPS, see [RFC2818]).

   An alternative approach to network booting is to bootstrap the system
   with iSCSI.  In this case, the URL in the OPT_BOOTFILE_URL option
   MUST be specified according to the "iscsi:" string definition in
   chapter 5 of [RFC4173].  Note that [RFC4173] also suggests that the
   "iscsi:" string should be specified in the so-called "Root Path"
   option.  However, this option does not exist for DHCPv6 yet, and with
   the OPT_BOOTFILE_URL it is also not necessary anymore.  So for IPv6
   iSCSI booting, the "iscsi:" string MUST be specified as protocol considerations

   The Bootfile URL in the
   OPT_BOOTFILE_URL option instead.

   If multiple interfaces are available does not place any constraints on the
   protocol used for booting, downloading the Bootfile, other than that it might must
   be a good
   strategy possible to send out requests on each interface specify it in parallel to speed
   up a URL.  For the discovery.  However how to handle multiple replies, i.e.
   replies from more than one DHCP server is not sake of administrative
   simplicity, we strongly recommend that, at a problem that can be
   easily solved on mininum, implementors of
   network boot loaders implement the well-known and established
   hypertext transfer protocol level.  It is up (HTTP, see [RFC2616]) for downloading.
   Please note that for IPv6, this supersedes [RFC906] which recommended
   to use TFTP for downloading (see [RFC3617] for TFTP URL definition).

   When using iSCSI for booting, the implementors to
   provide users with a possibility to either choose a network interface
   to boot from, or "iscsi:"-URI is formed as defined
   in [RFC4173].  The functionality attributed in RFC4173 to assign a preference to interfaces or even known
   DHCP servers. root path
   option is provided for IPv6 by the bootfile URL option instead.

6.  IANA considerations

   The following options need to be assigned by the IANA from the option
   number space defined in the chapter 22 of the DHCPv6 RFC [RFC3315].

            +-------------------------+-------+--------------+
            |       Option name       | Value | Specified in |
            +-------------------------+-------+--------------+
            |     OPT_BOOTFILE_URL    |  TBD1 |  Section 3.1 |
            |    OPT_BOOTFILE_PARAM   |  TBD2 |  Section 3.2 |
            | OPTION_CLIENT_ARCH_TYPE |  TBD3 |  Section 3.3 |
            |        OPTION_NII       |  TBD4 |  Section 3.4 |
            +-------------------------+-------+--------------+
   This document also introduces a new IANA registry for processor
   architecture types.  The name of this registry shall be "Processor
   Architecture Type".  Registry entries consist of a 16-bit integer
   recorded in decimal format, and a descriptive name.  The initial
   values of this registry can be found in [RFC4578] section 2.1.

   The assignment policy for values shall be Expert Review (see
   [RFC5226]), and any requests for values must supply the descriptive
   name for the processor architecture type.

7.  Security considerations

   The

   In untrusted networks, a rogue DHCPv6 server could send the new
   DHCPv6 options described in this document could be sent in
   untrusted networks by malicious people with a fake DHCPv6 server to
   confuse the booting clients. document.  The booting clients could
   then be provided with a wrong URL so that the boot either fails, or
   even worse, the client boots the wrong operating system which has
   been provided by a malicious file server.  To prevent this kind of
   attack, clients
   SHOULD can use authentication of DHCPv6 messages (see
   chapter 21. in [RFC3315]).

   Note also that DHCPv6 messages are sent unencrypted by default.  So
   the boot file URL options are sent unencrypted over the network, too.
   This can become a security risk since the URLs can contain sensitive
   information like user names and passwords (for example a URL like
   "ftp://username:password@servername/path/file").  At the current
   point in time, there is no possibility to send encrypted DHCPv6
   messages, so it is strongly recommended not to use sensitive
   information in the URLs in untrusted networks.

   Even if the DHCPv6 transaction is secured, this does not protect
   against attacks on the bootfile download channel.  Consequently, we
   recommend that either a protocol like HTTPS (see [RFC2817] and
   [RFC2818]) be used to prevent spoofing, or that the boot loader
   implementation implement a mechanism for signing boot images and a
   configurable signing key in memory, so that if a malicious image is
   provided, it can be detected and rejected.

8.  Acknowledgements

   The authors would like to thank Ruth Li, Dong Wei, Kathryn Hampton,
   Phil Dorah, Richard Chan, and Fiona Jensen for discussions that led
   to this document.

   The authors would also like to thank Ketan P. Pancholi and Pancholi, Alfred
   Hoenes
   Hoenes, Gabriel Montenegro and Ted Lemon for corrections and
   suggestions.

9.  References

9.1.  Normative References

   [PXE21]    Johnston, M., "Preboot Execution Environment (PXE)
              Specification", September 1999,
              <http://www.pix.net/software/pxeboot/archive/pxespec.pdf>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3315]  Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
              and M. Carney, "Dynamic Host Configuration Protocol for
              IPv6 (DHCPv6)", RFC 3315, July 2003.

   [RFC3617]  Lear, E., "Uniform Resource Identifier (URI) Scheme and
              Applicability Statement for the Trivial File Transfer
              Protocol (TFTP)", RFC 3617, October 2003.

   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, January 2005.

   [RFC4173]  Sarkar, P., Missimer, D., and C. Sapuntzakis,
              "Bootstrapping Clients using the Internet Small Computer
              System Interface (iSCSI) Protocol", RFC 4173,
              September 2005.

   [RFC4578]  Johnston, M. and S. Venaas, "Dynamic Host Configuration
              Protocol (DHCP) Options for the Intel Preboot eXecution
              Environment (PXE)", RFC 4578, November 2006.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

   [UEFI22]   UEFI Forum, "Unified Extensible Firmware Interface
              Specification, Version 2.2", September 2008,
              <http://www.uefi.org/>.

9.2.  Informative References

   [RFC1350]  Sollins, K., "The TFTP Protocol (Revision 2)", STD 33,
              RFC 1350, July 1992.

   [RFC2090]  Emberson, A., "TFTP Multicast Option", RFC 2090,
              February 1997.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC2817]  Khare, R. and S. Lawrence, "Upgrading to TLS Within
              HTTP/1.1", RFC 2817, May 2000.

   [RFC2818]  Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

   [RFC3617]  Lear, E., "Uniform Resource Identifier (URI) Scheme and
              Applicability Statement for the Trivial File Transfer
              Protocol (TFTP)", RFC 3617, October 2003.

   [RFC906]   Finlayson, R., "Bootstrap Loading using TFTP", RFC 906,
              June 1984.

Authors' Addresses

   Thomas H. Huth
   IBM Germany Research & Development GmbH
   Schoenaicher Strasse 220
   Boeblingen  71032
   Germany

   Phone: +49-7031-16-2183
   Email: thuth@de.ibm.com

   Jens T. Freimann
   IBM Germany Research & Development GmbH
   Schoenaicher Strasse 220
   Boeblingen  71032
   Germany

   Phone: +49-7031-16-1122
   Email: jfrei@de.ibm.com

   Vincent Zimmer
   Intel
   2800 Center Drive
   DuPont  WA 98327
   USA

   Phone: +1 253 371 5667
   Email: vincent.zimmer@intel.com
   Dave Thaler
   Microsoft
   One Microsoft Way
   Redmond  WA 98052
   USA

   Phone: +1 425 703-8835
   Email: dthaler@microsoft.com