<?xml version="1.0" encoding="US-ASCII"?>
<!-- This file is based on the template for creating an Internet Draft using
     xml2rfc, which is available here: http://xml.resource.org. -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced.
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC1350 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1350.xml">
<!ENTITY RFC2090 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2090.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2616 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
<!ENTITY RFC2818 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2818.xml">
<!ENTITY RFC3315 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml">
<!ENTITY RFC3617 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3617.xml">
<!ENTITY RFC3986 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3986.xml">
<!ENTITY RFC4173 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4173.xml">
<!ENTITY RFC4578 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4578.xml">
<!ENTITY RFC5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds
     might want to use. -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="3"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-dhc-dhcpv6-opt-netboot-04" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN"
     they will automatically be output with "(if approved)" -->

  <!-- ************************ FRONT MATTER ********************** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary
         if the full title is longer than 39 characters -->

    <title abbrev="DHCPv6 option for network boot">DHCPv6 option for network boot</title>

    <author fullname="Thomas H. Huth" initials="T.H.H." surname="Huth">
      <organization>IBM Germany Research &amp; Development GmbH</organization>
      <address>
        <postal>
          <street>Schoenaicher Strasse 220</street>
          <code>71032</code>
          <city>Boeblingen</city>
          <country>Germany</country>
        </postal>
        <phone>+49-7031-16-2183</phone>
        <email>thuth@de.ibm.com</email>
      </address>
    </author>

    <author fullname="Jens T. Freimann" initials="J.T.F." surname="Freimann">
      <organization>IBM Germany Research &amp; Development GmbH</organization>
      <address>
        <postal>
          <street>Schoenaicher Strasse 220</street>
          <code>71032</code>
          <city>Boeblingen</city>
          <country>Germany</country>
        </postal>
        <phone>+49-7031-16-1122</phone>
        <email>jfrei@de.ibm.com</email>
      </address>
    </author>

    <author fullname="Vincent Zimmer" initials="V.Z." surname="Zimmer">
      <organization>Intel</organization>
      <address>
        <postal>
          <street>2800 Center Drive</street>
          <code>WA 98327</code>
          <city>DuPont</city>
          <country>USA</country>
        </postal>
        <phone>+1 253 371 5667</phone>
        <email>vincent.zimmer@intel.com</email>
      </address>
    </author>

    <author fullname="Dave Thaler" initials="D.T." surname="Thaler">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <street>One Microsoft Way</street>
          <code>WA 98052</code>
          <city>Redmond</city>
          <country>USA</country>
        </postal>
        <phone>+1 425 703-8835</phone>
        <email>dthaler@microsoft.com</email>
      </address>
    </author>

    <date year="2009" />

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>DHC</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.
         If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->
    <keyword>boot</keyword>
    <keyword>IPv6</keyword>
    <keyword>DHCPv6</keyword>

    <abstract>
      <t>
       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.
      </t>
    </abstract>
  </front>

  <!-- ******************** THE MIDDLE ********************* -->

  <middle>

<section title="Introduction">
<t>
Network booting means that a node which should be booted fetches
the files required for booting via its network device from a server.
Network booting is, for example, very useful in environments where the
administrators have to maintain a large number of nodes.
Since all boot and configuration files are stored on a central server, the
maintenance of all nodes can be kept simple this way.
</t>
<t>
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
<xref target="bootsteps"/>): First get all information which are required for
downloading and executing the boot file such as:
the server on which the boot files can be found, the protocol to be used for the
download (for example <xref target="RFC2616">HTTP</xref> or
<xref target="RFC1350">TFTP</xref>), 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.
</t>
<t>
 <figure anchor="bootsteps" title="Network Boot Sequence">
  <artwork><![CDATA[
                                         +------+
                 _______________________\| DHCP |
                / 1 Get boot file info  /|Server|
        +------+                         +------+
        | Host |
        +------+                         +------+
                \_______________________\| File |
                  2 Download boot file  /|Server|
                                         +------+
  ]]></artwork>
 </figure>
</t>
<t>
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 document defines new
DHCPv6 options which are required for network booting clients.
</t>


</section>  <!-- End of introduction -->

<section title="Conventions">
<t>
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
<xref target="RFC2119">RFC 2119</xref>.
</t>
<t>
Terminology specific to IPv6 and DHCPv6 are used in the same way as defined
in the "Terminology" sections of <xref target="RFC3315">RFC 3315</xref>.
</t>
</section>


<section anchor="options" title="Options">

<t>
As specified in the <xref target="RFC3315">DHCPv6 RFC</xref>, 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.
</t>

<section anchor="booturl"
         title="Boot File Uniform Resource Locator (URL) Option">

<t>
 This option consists of an ASCII string. It is used
 to convey an URL to a boot file.
</t>

<t>
 <figure>
  <artwork><![CDATA[
 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         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
.               bootfile-url (variable length)                  .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
 </figure>
</t>

<t>
 Format description:
 <list style="hanging" hangIndent='18'>
  <t hangText="option-code">
   OPT_BOOTFILE_URL (TBD1).
  </t>
  <t hangText="option-len">
   Length of the bootfile URL option in octets (not including
   the size of the option-code and option-len fields).
  </t>
  <t hangText="bootfile-url">
   This ASCII string is the URL (conforming to <xref target='RFC3986'/>) for a
   boot file. This string starts with the protocol which is used for downloading.
   Separated by "://", the hostname or IPv6 address of the server hosting
   the boot file follows, and then the path, file name
   and query parts of the URL. The string is not null-terminated.
  </t>
 </list>
</t>

<t>
Note about the bootfile-url: This string can either contain a hostname
or a literal IPv6 address to specify the server where the boot file should be
downloaded from.
All clients which implement the OPT_BOOTFILE_URL option
MUST be able to handle IPv6 addresses here and SHOULD also be able to handle a
hostname in the URL.
The IPv6 address in the URL then MUST be enclosed in "[" and "]"
characters, conforming to <xref target='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 support for hostnames in the URLs is only optional.
</t>
<t>
 Multiple occurrences of OPT_BOOTFILE_URL can be present in a
 single DHCP message. Clients MUST process them in the order
 in which they appear within the message. The client starts with
 the first file that should be downloaded and executed.
 In case of a failure the process should continue with the second one
 and so on.
</t>

</section>


<section anchor="bootparam"
         title="Boot File Parameters Option">

<t>
This option consists of multiple ASCII strings. They are used to specify
parameters for the boot file (e.g. parameters for the kernel or boot loader
program).
</t>

<t>
 <figure>
  <artwork><![CDATA[
 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         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| param-len 1                   |            parameter 1        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         (variable length)     .
.                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.                                                               .
.                       <multiple Parameters>                   .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| param-len n                   |            parameter n        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         (variable length)     .
.                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
 </figure>
</t>

<t>
 Format description:
 <list style="hanging" hangIndent='18'>
  <t hangText="option-code">
   OPT_BOOTFILE_PARAM (TBD2).
  </t>
  <t hangText="option-len">
   Length of the bootfile parameters option in octets (not including
   the size of the option-code and option-len fields).
  </t>
  <t hangText="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).
  </t>
  <t hangText="parameters 1...n">
   These ASCII strings are parameters needed for booting, e.g. kernel parameters.
   The strings are not null-terminated.
  </t>
 </list>
</t>

<t>
 The firmware MUST pass these parameters in the order they appear in the
 OPT_BOOTFILE_PARAM option to the boot file which has been specified in the
 OPT_BOOTFILE_URL option.
</t>

</section>


<section anchor="clientarch"
         title="Client System Architecture Type Option">

<t>
 This option provides parity with the Client System Architecture Type
 Option defined for DHCPv4 in <xref target="RFC4578"/> section 2.1.
</t>

<t>
 The format of the option is:
 <figure>
  <artwork><![CDATA[
 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)              .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
 </figure>
</t>

<t>
 <list style="hanging" hangIndent='19'>
  <t hangText="option-code">
   OPTION_CLIENT_ARCH_TYPE (TBD3).
  </t>
  <t hangText="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 <xref target="RFC4578"/> section 2.1 for details.
  </t>
  <t hangText="Architecture Type">
   A list of one or more architecture types, as specified in
   <xref target="RFC4578"/> section 2.1.
  </t>
 </list>
</t>

</section>

<section anchor="clientnii"
         title="Client Network Interface Identifier Option">

<t>
 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 <xref target="PXE21"/> and <xref target="UEFI22"/>).
</t>
<t>
 This option provides parity with the Client Network Interface
 Identifier Option defined for DHCPv4 in <xref target="RFC4578"/> section 2.2.
</t>

<t>
 The format of the option is:
 <figure>
  <artwork><![CDATA[
 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      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]></artwork>
 </figure>
</t>

<t>
 <list style="hanging" hangIndent='18'>
  <t hangText="option-code">
   OPTION_NII (TBD4).
  </t>
  <t hangText="option-len">
   3
  </t>
  <t hangText="Type">
   As specified in <xref target="RFC4578"/> section 2.2.
  </t>
  <t hangText="Major">
   As specified in <xref target="RFC4578"/> section 2.2.
  </t>
  <t hangText="Minor">
   As specified in <xref target="RFC4578"/> section 2.2.
  </t>
 </list>
</t>

</section>

</section>  <!-- end of options section -->


<section anchor="Appearance" title="Appearance of the options">
<t>
 These options MUST NOT appear in DHCPv6 messages other than the types
 Solicit, Advertise, Request, Renew, Rebind, Information-Request and Reply.
</t>
<t>
 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.
</t>
</section>

<section anchor="Downloadprotocol" title="Download protocol considerations">
<t>
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.
</t>
<t>
<xref target="RFC906">RFC 906</xref> 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 <xref target="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 <xref target="RFC3617">RFC 3617</xref>.
</t>
<t>
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 <xref target="RFC2616"/>) as default
for network booting instead.
If a secure download is required, it is also possible to use HTTP with TLS
(HTTPS, see <xref target="RFC2818"/>).
</t>
<t>
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 <xref target="RFC4173"/>.
Note that <xref target="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 URL in the OPT_BOOTFILE_URL option instead.
</t>

<t>
 If multiple interfaces are available for booting, it might be a good strategy
 to send out requests on each interface in parallel to speed up the discovery.

 However how to handle multiple replies, i.e. replies from more
 than one DHCP server is not a problem that can be easily solved on
 the protocol level. It is up to the implementors to provide users
 with a possibility to either choose a network interface to boot from,
 or to assign a preference to interfaces or even known DHCP servers.
</t>
</section>

    <!-- Possibly a 'Contributors' section ... -->

<section anchor="IANA" title="IANA considerations">

 <t>
  The following options need to be assigned by the IANA from the option number
  space defined in the chapter 22 of the <xref target="RFC3315">DHCPv6 RFC</xref>.
 </t>
 
 <texttable>

  <ttcol align="center">Option name</ttcol>
  <ttcol align="center">Value</ttcol>
  <ttcol align="center">Specified in</ttcol>

  <c>OPT_BOOTFILE_URL</c>
  <c>TBD1</c>
  <c><xref target="booturl"/></c>

  <c>OPT_BOOTFILE_PARAM</c>
  <c>TBD2</c>
  <c><xref target="bootparam"/></c>

  <c>OPTION_CLIENT_ARCH_TYPE</c>
  <c>TBD3</c>
  <c><xref target="clientarch"/></c>

  <c>OPTION_NII</c>
  <c>TBD4</c>
  <c><xref target="clientnii"/></c>

 </texttable>

 <t>
  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 <xref target="RFC4578"/> section 2.1.
 </t>
 <t>
  The assignment policy for values shall be Expert Review (see
  <xref target="RFC5226"/>), and any requests for values must supply the
  descriptive name for the processor architecture type.
 </t>

</section>


<section anchor="Security" title="Security considerations">
<t>
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. The clients could 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 use authentication of DHCPv6 messages
(see chapter 21. in <xref target="RFC3315"/>).
</t>
<t>
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.
</t>
</section>

<section anchor="Acknowledgements" title="Acknowledgements">
<t>
 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.
</t>
<t>
 The authors would also like to thank Ketan P. Pancholi and Alfred Hoenes for
 corrections and suggestions.
</t>
</section>

  </middle>

  <!-- ************************* BACK MATTER ********************** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2119; here
        (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?>
        here (for I-Ds:
	include="reference.I-D.narten-iana-considerations-rfc2434bis.xml" )

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included
     files in the same directory as the including file. You can also define the
     XML_LIBRARY environment variable with a value containing a set of
     directories to search.  These can be either in the local filing system or
     remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
      &RFC2119;
      &RFC3315;
      &RFC3617;
      &RFC3986;
      &RFC4173;
      &RFC4578;
      &RFC5226;

      <reference anchor="PXE21"
        target="http://www.pix.net/software/pxeboot/archive/pxespec.pdf">
        <front>
          <title>Preboot Execution Environment (PXE) Specification</title>
          <author fullname="M. Johnston" initials="M.J." surname="Johnston">
            <organization>Intel Corp.</organization>
          </author>
          <date month="September" year="1999"/>
        </front>
      </reference>

      <reference anchor="UEFI22" target="http://www.uefi.org/">
        <front>
          <title>Unified Extensible Firmware Interface Specification,
            Version 2.2</title>
          <author fullname="UEFI Forum">
            <organization>UEFI Forum</organization>
          </author>
          <date month="September" year="2008"/>
        </front>
      </reference>

    </references>

    <references title="Informative References">
      &RFC1350;
      &RFC2090;
      &RFC2616;
      &RFC2818;

      <reference anchor="RFC906">
        <front>
          <title>Bootstrap Loading using TFTP</title>
          <author fullname="Ross Finlayson" initials="R.F." surname="Finlayson">
            <organization>Stanford University</organization>
          </author>
          <date month="June" year="1984"/>
        </front>
        <seriesInfo name="RFC" value="906"/>
      </reference>
    </references>

    <!--
    <section anchor="app-additional" title="Additional Stuff">
      <t>This becomes an Appendix.</t>
    </section>
    -->

    <!-- Change Log

v00 2008-08-19   Initial version
v01 2008-10-14   Remark about iSCSI booting
v02 2008-11-18   Changed NULL terminated fields, wording, IANA considerations
v03 2009-02-04   Merged text with remote boot draft from V. Zimmer & D. Thaler
v04 2009-04-06   Fixed some typos, change some wordings (stress HTTP instead of
                 TFTP), added remark about HTTPS and fixed the FIXME in 3.3
     -->
  </back>
</rfc>
