<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc inline="yes"?>
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-pcapng-01" category="info" tocInclude="true" sortRefs="false" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="pcapng">PCAP Next Generation (pcapng) Capture File Format</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-pcapng-01"/>
    <author initials="M." surname="Tuexen" fullname="Michael Tuexen" role="editor">
      <organization abbrev="Muenster Univ. of Appl. Sciences">Muenster University of Applied Sciences</organization>
      <address>
        <postal>
          <street>Stegerwaldstrasse 39</street>
          <city>Steinfurt</city>
          <code>48565</code>
          <country>DE</country>
        </postal>
        <email>tuexen@fh-muenster.de</email>
      </address>
    </author>
    <author initials="F." surname="Risso" fullname="Fulvio Risso">
      <organization>Politecnico di Torino</organization>
      <address>
        <postal>
          <street>Corso Duca degli Abruzzi, 24</street>
          <city>Torino</city>
          <code>10129</code>
          <country>IT</country>
        </postal>
        <email>fulvio.risso@polito.it</email>
      </address>
    </author>
    <author initials="J." surname="Bongertz" fullname="Jasper Bongertz">
      <organization abbrev="Airbus DS CyberSecurity">Airbus Defence and Space CyberSecurity</organization>
      <address>
        <postal>
          <street>Kanzlei 63c</street>
          <city>Meerbusch</city>
          <code>40667</code>
          <country>DE</country>
        </postal>
        <email>jasper@packet-foo.com</email>
      </address>
    </author>
    <author initials="G." surname="Combs" fullname="Gerald Combs">
      <organization abbrev="Wireshark">Wireshark Foundation</organization>
      <address>
        <postal>
          <street>339 Madson Pl</street>
          <city>Davis</city>
          <region>CA</region>
          <code>95618</code>
          <country>US</country>
        </postal>
        <email>gerald@wireshark.org</email>
      </address>
    </author>
    <author initials="G." surname="Harris" fullname="Guy Harris">
      <organization/>
      <address>
        <email>gharris@sonic.net</email>
      </address>
    </author>
    <author initials="E." surname="Chaudron" fullname="Eelco Chaudron">
      <organization abbrev="Red Hat">Red Hat</organization>
      <address>
        <postal>
          <street>De Entree 238</street>
          <city>Amsterdam</city>
          <code>1101 EE</code>
          <country>NL</country>
        </postal>
        <email>eelco@redhat.com</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael C. Richardson">
      <organization abbrev="Sandelman">Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
        <uri>http://www.sandelman.ca/</uri>
      </address>
    </author>
    <date year="2023" month="July" day="23"/>
    <abstract>
      <?line 85?>

<t>This document describes a format to record captured packets to a
file. This format is extensible; Wireshark can currently read and write
it, and libpcap can currently read some pcapng files.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-opsawg-pcapng/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        opsawg Working Group mailing list (<eref target="mailto:opsawg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/opsawg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/IETF-OPSAWG-WG/pcapng"/>.</t>
    </note>
  </front>
  <middle>
    <?line 92?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The problem of exchanging packet traces becomes more and more
critical every day; unfortunately, no standard solutions exist for
this task right now. One of the most accepted packet interchange
formats is the one defined by libpcap, which is rather old and is
lacking in functionality for more modern applications particularly
from the extensibility point of view.</t>
      <t>This document proposes a new format for recording packet traces. The
following goals are being pursued:</t>
      <dl>
        <dt>Extensibility:</dt>
        <dd>
          <t>It should be possible to add new standard capabilities to the file
format over time, and third parties should be able to enrich the
information embedded in the file with proprietary extensions, with
tools unaware of newer extensions being able to ignore them.</t>
        </dd>
        <dt>Portability:</dt>
        <dd>
          <t>A capture trace must contain all the information needed to read data
independently from network, hardware and operating system of the
machine that made the capture.</t>
        </dd>
        <dt>Merge/Append data:</dt>
        <dd>
          <t>It should be possible to add data at the end of a given file, and
the resulting file must still be readable.</t>
        </dd>
      </dl>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
      <section anchor="acronyms">
        <name>Acronyms</name>
        <t>The following acronyms are used throughout this document:</t>
        <dl>
          <dt>SHB:</dt>
          <dd>
            <t>Section Header Block</t>
          </dd>
          <dt>IDB:</dt>
          <dd>
            <t>Interface Description Block</t>
          </dd>
          <dt>ISB:</dt>
          <dd>
            <t>Interface Statistics Block</t>
          </dd>
          <dt>EPB:</dt>
          <dd>
            <t>Enhanced Packet Block</t>
          </dd>
          <dt>SPB:</dt>
          <dd>
            <t>Simple Packet Block</t>
          </dd>
          <dt>NRB:</dt>
          <dd>
            <t>Name Resolution Block</t>
          </dd>
          <dt>CB:</dt>
          <dd>
            <t>Custom Block</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="general-file-structure">
      <name>General File Structure</name>
      <section anchor="section_block">
        <name>General Block Structure</name>
        <t>A capture file is organized in blocks, that are appended one to
another to form the file. All the blocks share a common format, which
is shown in <xref target="formatblock"/>.</t>
        <figure anchor="formatblock">
          <name>Basic block structure.</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                          Block Type                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 /                          Block Body                           /
   /              variable length, padded to 32 bits               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The fields have the following meaning:</t>
        <ul spacing="normal">
          <li>Block Type (32 bits): a unique unsigned value that
identifies the block. Values whose Most Significant Bit
(MSB) is equal to 1 are reserved for local use. They can be
used to make extensions to the file format to save private
data to the file. The list of currently defined types can
be found in <xref target="section_block_code_registry"/>.</li>
          <li>Block Total Length (32 bits): an unsigned value giving
the total size of this block, in octets. For instance, the
length of a block that does not have a body is 12 octets: 4
octets for the Block Type, 4 octets for the initial Block
Total Length and 4 octets for the trailing Block Total
Length. This value MUST be a multiple of 4.</li>
          <li>Block Body: content of the block.</li>
          <li>Block Total Length: total size of this block, in octets. This
field is duplicated to permit backward file navigation.</li>
        </ul>
        <t>This structure, shared among all blocks, makes it easy to process a
file and to skip unneeded or unknown blocks. Some blocks can contain
other blocks inside (nested blocks). Some of the blocks are mandatory,
i.e. a capture file is not valid if they are not present, other are
optional.</t>
        <t>The General Block Structure allows defining other blocks if needed.
A parser that does not understand them can simply ignore their
content.</t>
      </section>
      <section anchor="block-types">
        <name>Block Types</name>
        <t>The currently standardized Block Type codes are specified in <xref target="section_block_code_registry"/>; they have been grouped in the
following four categories:</t>
        <t>(1) Mandatory: The following block MUST appear at least once in each file:</t>
        <ul spacing="normal">
          <li>
            <xref target="section_shb">Section Header Block</xref>: it defines the most important characteristics of the
capture file.</li>
        </ul>
        <t>(2) Optional: The following blocks MAY appear in a file:</t>
        <ul spacing="normal">
          <li>
            <xref target="section_idb">Interface Description Block</xref>:
it defines the most important characteristics of the interface(s)
used for capturing traffic. This block is required in certain
cases, as described later.</li>
          <li>
            <xref target="section_epb">Enhanced Packet Block</xref>: it
contains a single captured packet, or a portion of it. It
represents an evolution of the original, now obsolete, <xref target="appendix_pb">Packet Block</xref>. If this appears in a
file, an Interface Description Block is also required, before this
block.</li>
          <li>
            <xref target="section_spb">Simple Packet Block</xref>: it
contains a single captured packet, or a portion of it, with only a
minimal set of information about it. If this appears in a file, an
Interface Description Block is also required, before this
block.</li>
          <li>
            <xref target="section_nrb">Name Resolution Block</xref>: it
defines the mapping from numeric addresses present in the packet
capture and the canonical name counterpart.</li>
          <li>
            <xref target="section_isb">Interface Statistics Block</xref>: it
defines how to store some statistical data (e.g. packet dropped,
etc) which can be useful to understand the conditions in which the
capture has been made. If this appears in a file, an Interface
Description Block is also required, before this block.</li>
          <li>
            <xref target="section_custom_block">Custom Block</xref>: it
contains vendor-specific data in a portable fashion.</li>
        </ul>
        <t>(3) Obsolete: The following block SHOULD NOT appear in newly written
files (but is documented in the Appendix for reference):</t>
        <ul spacing="normal">
          <li>
            <xref target="appendix_pb">Packet Block</xref>: it contains a
single captured packet, or a portion of it. It is OBSOLETE, and
superseded by the <xref target="section_epb">Enhanced Packet Block</xref>.</li>
        </ul>
        <t>(4) Experimental: The following blocks are considered interesting but
the authors believe that they deserve more in-depth discussion before
being defined:</t>
        <ul spacing="normal">
          <li>Alternative Packet Blocks</li>
          <li>Compression Block</li>
          <li>Encryption Block</li>
          <li>Fixed Length Block</li>
          <li>Directory Block</li>
          <li>Traffic Statistics and Monitoring Blocks</li>
          <li>Event/Security Blocks</li>
        </ul>
        <t>Requests for new standardized Block Type codes should be made by
creating a pull request to update this document as described in
<xref target="section_block_code_registry"/>.</t>
      </section>
      <section anchor="logical-block-hierarchy">
        <name>Logical Block Hierarchy</name>
        <t>The blocks build a logical hierarchy as they refer to each other. <xref target="block-hierarchy"/> shows the logical hierarchy of the
currently defined blocks in the form of a "tree view":</t>
        <figure anchor="block-hierarchy">
          <name>Logical Block Hierarchy of a pcapng File</name>
          <artwork align="left"><![CDATA[
Section Header
|
+- Interface Description
|  +- Simple Packet
|  +- Enhanced Packet
|  +- Interface Statistics
|
+- Name Resolution
]]></artwork>
        </figure>
        <t>For example: each captured packet refers to a specific capture
interface, the interface itself refers to a specific section.</t>
      </section>
      <section anchor="physical-file-layout">
        <name>Physical File Layout</name>
        <t>The file MUST begin with a Section Header Block. However, more than
one Section Header Block can be present in the capture file, each one
covering the data following it until the next one (or the end of
file). A Section includes the data delimited by two Section Header
Blocks (or by a Section Header Block and the end of the file),
including the first Section Header Block.</t>
        <t>In case an application cannot read a Section because of different
version number, it MUST skip everything until the next Section Header
Block. Note that, in order to properly skip the blocks until the next
section, all blocks MUST have the fields Type and Length at the
beginning. In order to properly skip blocks in the backward direction,
all blocks MUST have the Length repeated at the end of the block.
These are mandatory requirements that MUST be maintained in future
versions of the block format.</t>
        <t><xref target="fssample-SHB"/> shows a typical file layout, with a
single Section Header that covers the whole file.</t>
        <figure anchor="fssample-SHB">
          <name>File structure example: Typical layout with a single Section Header Block</name>
          <artwork align="left"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB v1.0  |                      Data                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t><xref target="fssample-SHB3"/> shows a file that contains three headers, and is normally the result
of file concatenation. An application that understands only version
1.0 of the file format skips the intermediate section and restart
processing the packets after the third Section Header.</t>
        <figure anchor="fssample-SHB3">
          <name>File structure example: three Section Header Blocks in a single file</name>
          <artwork align="left"><![CDATA[
|--   1st Section   --|--   2nd Section   --|--  3rd Section  --|
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB v1.0  |  Data   | SHB V1.1  |  Data   | SHB V1.0  |  Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t><xref target="fssample-minimum"/> shows a file comparable to a "classic libpcap" file - the minimum for
a useful capture file. It contains a single Section Header Block
(SHB), a single Interface Description Block (IDB) and a few Enhanced
Packet Blocks (EPB).</t>
        <figure anchor="fssample-minimum">
          <name>File structure example: a pcapng file similar to a classical libpcap file</name>
          <artwork align="left"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB | IDB | EPB | EPB |    ...    | EPB |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t><xref target="fssample-full"/> shows a complex example file. In addition to the minimum file above,
it contains packets captured from three interfaces, capturing on the
third of which begins after packets have arrived on other interfaces,
and also includes some Name Resolution Blocks (NRB) and an Interface
Statistics Block (ISB).</t>
        <figure anchor="fssample-full">
          <name>File structure example: complex pcapng file</name>
          <artwork align="left"><![CDATA[
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SHB | IDB | IDB | EPB | NRB |...| IDB | EPB | ISB | NRB | EPB |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The last example should make it obvious that the block structure
makes the file format very flexible compared to the classical libpcap
format.</t>
      </section>
      <section anchor="section_opt">
        <name>Options</name>
        <t>All the block bodies MAY embed optional fields.
Optional fields can be used to insert some information that may be
useful when reading data, but that is not really needed for packet
processing. Therefore, each tool can either read the content of the
optional fields (if any), or skip some of them or even all at
once.</t>
        <t>A block that may contain options must be structured so that
the number of octets of data in the Block Body that precede the
options can be determined from that data; that allows the
beginning of the options to be found.  That is true for all
standard blocks that support options; for Custom Blocks that
support options, the Custom Data must be structured in such a
fashion.  This means that the Block Length field (present in
the General Block Structure, see <xref target="section_block"/>) can be used to determine how
many octets of optional fields, if any, are present in the block.
That number can be used to determine whether the block has
optional fields (if it is zero, there are no optional fields),
to check, when processing optional fields, whether any optional
fields remain, and to skip all the optional fields at once.</t>
        <t>Options are a list of Type - Length - Value fields, each one
containing a single value:</t>
        <ul spacing="normal">
          <li>Option Type (16 bits): an unsigned value that contains
the code that specifies the type of the current TLV record.
Option types whose Most Significant Bit is equal to one are
reserved for local use; therefore, there is no guarantee
that the code used is unique among all capture files
(generated by other applications), and is most certainly not
portable.  For cross-platform globally unique
vendor-specific extensions, the Custom Option MUST be used
instead, as defined in <xref target="section_custom_option"/>).</li>
          <li>Option Length (16 bits): an unsigned value that contains
the actual length of the following 'Option Value' field
without the padding octets.</li>
          <li>Option Value (variable length): the value of the given
option, padded to a 32-bit boundary. The actual length of
this field (i.e. without the padding octets) is specified
by the Option Length field.</li>
        </ul>
        <t>Requests for new standardized option codes for a given block
should be made by creating a pull request to update this document
as described in <xref target="section_block_code_registry"/>.</t>
        <t>A given option may have a fixed length, in which case all
instances of that option have a length that is equal to the
specified fixed length, or a variable length, in which case
the option has a minimum length and all instances of that
option must have a length equal to or greater than the specified
minimum length. The length of fixed-length options, and the
minimum length of variable-length options, is specified in the
description of the option; if the minimum length of a
variable-length option is not specified, a zero-length option is
valid. Software that reads these files SHOULD report options
that have an invalid length as errors; the software MAY stop
processing the file if it sees an option that has invalid
length, or MAY ignore the option and continue processing it.
Software that writes these files MUST NOT write files with
options that have invalid lengths.</t>
        <t>If an option's value is a string, the value is not necessarily
zero-terminated. Software that reads these files MUST NOT assume that
strings are zero-terminated, and MUST treat a zero-value octet as a
string terminator.</t>
        <t>Some options may be repeated several times; for example, a
block can have multiple comments, and an Interface Description
Block can give multiple IPv4 or IPv6 addresses for the
interface if it has multiple IPv4 or IPv6 addresses assigned to
it.  Other options may appear at most once in a given block.</t>
        <t>The option list is terminated by an option which uses the
special 'End of Option' code (opt_endofopt).  Code that
writes pcapng files MUST put an opt_endofopt option at the end
of an option list.  Code that reads pcapng files MUST NOT assume
an option list will have an opt_endofopt option at the end; it
MUST also check for the end of the block, and SHOULD treat
blocks where the option list has no opt_endofopt option as if
the option list had an opt_endofopt option at the end.</t>
        <t>The format of the optional fields is shown in <xref target="formatopt"/>.</t>
        <figure anchor="formatopt">
          <name>Options Format</name>
          <artwork align="center"><![CDATA[
                     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 Type              |         Option Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                       Option Value                            /
/              variable length, padded to 32 bits               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                                                               /
/                 . . . other options . . .                     /
/                                                               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Option Type == opt_endofopt |   Option Length == 0          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The following codes can always be present in any optional field:</t>
        <table anchor="optionsall">
          <name>Common Options</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Type</th>
              <th align="left">Length</th>
              <th align="left">Multiple allowed?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">opt_endofopt</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">opt_comment</td>
              <td align="left">1</td>
              <td align="left">variable</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">opt_custom</td>
              <td align="left">2988/2989/19372/19373</td>
              <td align="left">variable, minimum 4</td>
              <td align="left">yes</td>
            </tr>
          </tbody>
        </table>
        <dl indent="8" newline="true">
          <dt>opt_endofopt:</dt>
          <dd>
            <t>The
opt_endofopt option delimits the end of the optional fields. This
option MUST NOT be repeated within a given list of options.</t>
          </dd>
        </dl>
        <dl indent="8" newline="true">
          <dt>opt_comment:</dt>
          <dd>
            <t>The
opt_comment option is a UTF-8 string containing human-readable
comment text that is associated to the current block. Line
separators SHOULD be a carriage-return + linefeed ('\r\n') or just
linefeed ('\n'); either form may appear and be considered a line
separator. The string is not zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "This packet is the beginning of all of our
problems", "Packets 17-23 showing a bogus TCP retransmission!\r\n
This is reported in bugzilla entry 1486.\nIt will be fixed in the
future.".</t>
        <dl indent="8" newline="true">
          <dt>opt_custom:</dt>
          <dd>
            <t>This option is
described in detail in <xref target="section_custom_option"/>.</t>
          </dd>
        </dl>
        <section anchor="section_custom_option">
          <name>Custom Options</name>
          <t>Customs Options are used for portable, vendor-specific data
related to the block they're in. A Custom Option can be in any block
type that can have options, can be repeated any number of times in a
block, and may come before or after other option types - except the
opt_endofopt option, which is always the last option. Different Custom
Options, of different type codes and/or different Private Enterprise
Numbers, may be used in the same pcapng file. See <xref target="section_vendor"/> for additional details.</t>
          <figure anchor="formatcustomopt">
            <name>Custom Options Format</name>
            <artwork align="center"><![CDATA[
                     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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Custom Option Type        |         Option Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Private Enterprise Number (PEN)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                        Custom Data                            /
/              variable length, padded to 32 bits               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>The Custom Option has the following fields:</t>
          <ul spacing="normal">
            <li>
              <t>Custom Option Type: The type code number for the Custom Option, which
can be one of the following decimal numbers:  </t>
              <dl indent="8" newline="true">
                <dt>2988:</dt>
                <dd>
                  <t>This option type code
identifies a Custom Option containing a UTF-8 string in the
Custom Data portion.  The string is not zero-terminated.
  This Custom Option can be safely copied to a new file if
the pcapng file is manipulated by an application; otherwise
19372 should be used instead. See <xref target="section_vendor_copy"/> for details.</t>
                </dd>
              </dl>
              <dl indent="8" newline="true">
                <dt>2989:</dt>
                <dd>
                  <t>This option type code
identifies a Custom Option containing binary octets in the
Custom Data portion. This Custom Option can be safely copied
to a new file if the pcapng file is manipulated by an
application; otherwise 19372 should be used instead. See <xref target="section_vendor_copy"/> for details.</t>
                </dd>
              </dl>
              <dl indent="8" newline="true">
                <dt>19372:</dt>
                <dd>
                  <t>This option type code
identifies a Custom Option containing a UTF-8 string in the
Custom Data portion.  The string is not zero-terminated.
This Custom Option should not be copied to a new file if
the pcapng file is manipulated by an application. See <xref target="section_vendor_copy"/> for details.</t>
                </dd>
              </dl>
              <dl indent="8" newline="true">
                <dt>19373:</dt>
                <dd>
                  <t>This option type code
identifies a Custom Option containing binary octets in the
Custom Data portion. This Custom Option should not be copied
to a new file if the pcapng file is manipulated by an
application. See <xref target="section_vendor_copy"/> for
details.</t>
                </dd>
              </dl>
            </li>
            <li>Option Length: as described in <xref target="section_block"/>,
this contains the length of the option's value, which includes the
4-octet Private Enterprise Number and variable-length Custom Data
fields, without the padding octets.</li>
            <li>Private Enterprise Number: An IANA-assigned Private Enterprise
Number identifying the organization which defined the Custom
Option. See <xref target="section_vendor_uses"/> for details. The
PEN MUST be encoded using the same endianness as the Section
Header Block it is within the scope of.</li>
            <li>Custom Data: the custom data, padded to a 32 bit boundary.</li>
          </ul>
        </section>
      </section>
      <section anchor="data-format">
        <name>Data format</name>
        <section anchor="endianness">
          <name>Endianness</name>
          <t>Data contained in each section will always be saved according to
the characteristics (little endian / big endian) of the capturing
machine. This refers to all the fields that are saved as numbers and
that span over two or more octets.</t>
          <t>The approach of having each section saved in the native format of
the generating host is more efficient because it avoids translation
of data when reading / writing on the host itself, which is the most
common case when generating/processing capture captures.</t>
          <t>Please note: The endianness is indicated by the <xref target="section_shb">Section Header Block</xref>. Since this block
can appear several times in a pcapng file, a single file can contain
both endianness variants.</t>
        </section>
        <section anchor="alignment">
          <name>Alignment</name>
          <t>All fields of this specification use proper alignment for 16-
and 32-bit values. This makes it easier and faster to read/write
file contents if using techniques like memory mapped files.</t>
          <t>The alignment octets (marked in this document e.g. with "padded to
32 bits") MUST be filled with zeroes.</t>
          <t>Please note: 64-bit values are not aligned to 64-bit boundaries.
This is because the file is naturally aligned to 32-bit boundaries
only. Special care MUST be taken when reading and writing such
values. (Note also that some 64-bit values are represented as a
64-bit integer in the endianness of the machine that wrote the
file, and others are represented as 2 32-bit values, one
containing the upper 32 bits of the value and one containing
the lower 32 bits of the value, each written as 32-bit
integers in the endianness of the machine that wrote the file.
Neither of these formats guarantee 64-bit alignment.)</t>
        </section>
        <section anchor="strings">
          <name>Strings</name>
          <t>If a string is specified as being encoded as UTF-8, software that reads
that string MUST NOT assume that the string's value is valid UTF-8, and
MAY discard a string that are is valid UTF-8 or MAY repair the string by
replacing invalid octet sequences with valid sequences such as the
sequence for a Unicode REPLACEMENT CHARACTER; software that writes that
string fields MUST write only a valid UTF-8 string.</t>
        </section>
      </section>
    </section>
    <section anchor="section_block_definition">
      <name>Block Definition</name>
      <t>This section details the format of the blocks currently defined.</t>
      <section anchor="section_shb">
        <name>Section Header Block</name>
        <t>The Section Header Block (SHB) is mandatory. It identifies the
beginning of a section of the capture file. The Section Header
Block does not contain data but it rather identifies a list of blocks
(interfaces, packets) that are logically correlated. Its format is
shown in <xref target="format_shb"/>.</t>
        <figure anchor="format_shb">
          <name>Section Header Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                   Block Type = 0x0A0D0D0A                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                      Byte-Order Magic                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |          Major Version        |         Minor Version         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                                                               |
   |                          Section Length                       |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The meaning of the fields is:</t>
        <ul spacing="normal">
          <li>
            <t>Block Type: The block type of the Section Header Block is the
integer corresponding to the 4-char string "\n\r\r\n"
(0x0A0D0D0A). This particular value is used for 2 reasons:  </t>
            <ol spacing="normal" type="1"><li>This number is used to detect if a file has been transferred
  via FTP or HTTP from a machine to another with an inappropriate
  ASCII conversion. In this case, the value of this field will
  differ from the standard one ("\n\r\r\n") and the reader can
  detect a possibly corrupted file.</li>
              <li>This value is palindromic, so that the reader is able to
  recognize the Section Header Block regardless of the endianness
  of the section. The endianness is recognized by reading the Byte
  Order Magic, which is located 8 octets after the Block Type.</li>
            </ol>
          </li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
          <li>Byte-Order Magic (32 bits): an unsigned magic number,
whose value is the hexadecimal number 0x1A2B3C4D. This
number can be used to distinguish sections that have been
saved on little-endian machines from the ones saved on
big-endian machines, and to heuristically identify pcapng
files.</li>
          <li>Major Version (16 bits): an unsigned value, giving the
number of the current major version of the format. The
value for the current version of the format is 1.</li>
          <li>Minor Version (16 bits): an unsigned value, giving the
number of the current minor version of the format. The
value for the current version of the format is 0.</li>
          <li>Section Length (64 bits): a signed value specifying the
length in octets of the following section, excluding the
Section Header Block itself.  This field can be used to skip
the section, for faster navigation inside large files. If
the Section Length is -1 (0xFFFFFFFFFFFFFFFF), this means
that the size of the section is not specified, and the only
way to skip the section is to parse the blocks that it
contains. Please note that if this field is valid (i.e.
not negative), its value is always a multiple of 4, as all
the blocks are aligned to and padded to 32-bit (4 octet)
boundaries. Also, special care should be taken in accessing
this field: since the alignment of all the blocks in the
file is 32-bits, this field is not guaranteed to be aligned
to a 64-bit boundary.  This could be a problem on 64-bit
processors.</li>
          <li>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</li>
        </ul>
        <t>Writers of pcapng files MUST NOT write SHBs with a Major Version other
than 1 or a Minor Version other than 0.  If they do so, they will write
a file that many readers of pcapng files, such as programs using libpcap
to read pcapng files (including, but not limited to, tcpdump),
Wireshark, and possibly other programs not to be able to read their
files.</t>
        <t>Some pcapng file writers have used a minor version of 2, but the file
format did not change incompatibly (new block types were added); Readers
of pcapng files MUST treat a Minor Version of 2 as equivalent to a Minor
Version of 0 (and, if they also write a pcapng file based on the results
of reading one or more pcapng files, they MUST NOT, as per the previous
sentence, write an SHB with a Minor Version of 2, even if they read an
SHB with a Minor Version of 2).  As indicated above, using a minor
version number other than 0 when writing a section of a pcapng file will
produce a section that most existing software will not be able to read;
future versions of some of that software will be able to read sections
with a version of 1.2, but older copies of that software that are not
updated to the latest version will still not be able to read them.</t>
        <t>The Major Version would be changed only if a new version of this
specification, for a later major version of the file format, were
created.  Such a version would only be created if the format were to
change in such a way that code that reads the new format could not read
the old format (i.e., code to read both formats would have to check the
version number and use different code paths for the two formats) and
code that reads the old format could not read the new format.  An
incompatible change to the format of an existing block or an existing
option would be such a change; the addition of a new block or a new
option would not be such a change.  An example of such an incompatible
change would be the addition of an additional field to the Section
Header Block, following the Minor Version field and before the Snaplen
field; software expecting the new SHB format would not correctly read
the old SHB format, and software expecting the old SHB format would not
correctly read the new SHB format.  (Note that a change to the SHB must
leave the Block Type, Block Total Length, Byte-Order Magic, Major
Version, and Minor Version fields at the same offsets from the beginning
of the SHB and with the same lengths, must keep the value of the Block
Type the same, must keep the two possible values of the Byte-Order
Magic the same, depending on the block's byte order, so that the rest of
the SHB can be correctly interpreted.)</t>
        <t>The Minor Version would be changed only if a new version of this
specification, for a later minor version of the file format, were
created.  Such a version would only be created if the format were to
change in such a way that code that reads the new format could read the
old format without checking the version number but code that reads the
old format could not read all files in the new format.  A
backward-compatible change to the format of an existing block or an
existing option would be such a change; the addition of a new block or
a new option would not be such a change.  An example of such a
backward-compatible but not forward-compatible change would be a change
to the Interface Description block (see below) to use the current
Reserved field to indicate the presence of additional fields before the
Options, with a zero value indicate no such fields are present.</t>
        <t>I.e., adding new block types or options would not require that either
the Major Version or the Minor Version be changed, as code that does not
know about the block type or option should just skip it; only if
skipping a block or option does not work should the minor version number
be changed.</t>
        <t>Aside from the options defined in <xref target="section_opt"/>, the
following options are valid within this block:</t>
        <table anchor="options_shb">
          <name>Section Header Block Options</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Type</th>
              <th align="left">Length</th>
              <th align="left">Multiple allowed?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">shb_hardware</td>
              <td align="left">2</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">shb_os</td>
              <td align="left">3</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">shb_userappl</td>
              <td align="left">4</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
          </tbody>
        </table>
        <dl indent="8" newline="true">
          <dt>shb_hardware:</dt>
          <dd>
            <t>The
shb_hardware option is a UTF-8 string containing the description
of the hardware used to create this section. The string is
not zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "x86 Personal Computer", "Sun Sparc Workstation".</t>
        <dl indent="8" newline="true">
          <dt>shb_os:</dt>
          <dd>
            <t>The shb_os option
is a UTF-8 string containing the name of the operating system used
to create this section. The string is not zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "Windows XP SP2", "openSUSE 10.2".</t>
        <dl indent="8" newline="true">
          <dt>shb_userappl:</dt>
          <dd>
            <t>The
shb_userappl option is a UTF-8 string containing the name of the
application used to create this section. The string is not
zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "dumpcap V0.99.7".</t>
        <t>[Open issue: does a program which re-writes a capture file change
the original hardware/os/application info?]</t>
      </section>
      <section anchor="section_idb">
        <name>Interface Description Block</name>
        <t>An Interface Description Block (IDB) is the container for
information describing an interface on which packet data is
captured.</t>
        <t>Tools that write / read the capture file associate an incrementing
unsigned 32-bit number (starting from '0') to each Interface
Definition Block, called the Interface ID for the interface in
question. This number is unique within each Section and
identifies the interface to which the IDB refers; it is only
unique inside the current section, so, two Sections can have
different interfaces identified by the same Interface ID values.
This unique identifier is referenced by other blocks, such as
Enhanced Packet Blocks and Interface Statistic Blocks, to
indicate the interface to which the block refers (such the
interface that was used to capture the packet that an Enhanced
Packet Block contains or to which the statistics in an Interface
Statistic Block refer).</t>
        <t>Within a section, there must be an Interface Description Block for each
interface to which another block within that section refers.  Blocks
such as an Enhanced Packet Block or an Interface Statistics Block
contain an Interface ID value referring to a particular interface, and a
Simple Packet Block implicitly refers to an interface with an Interface
ID of 0.  If the file does not contain any blocks that use an Interface
ID, then the file does not need to have any IDBs.</t>
        <t>There is no requirement that all Interface Description Blocks occur
within a section before all blocks of other types, as long as the
Interface Description Block for an interface occurs before any block
that refers to that interface.</t>
        <t>An Interface Description Block is valid only inside the section
to which it belongs. The structure of an Interface Description Block is
shown in <xref target="format_idb"/>.</t>
        <figure anchor="format_idb">
          <name>Interface Description Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                    Block Type = 0x00000001                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |           LinkType            |           Reserved            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                            SnapLen                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The meaning of the fields is:</t>
        <ul spacing="normal">
          <li>Block Type: The block type of the Interface Description Block
is 1.</li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
          <li>LinkType (16 bits): an unsigned value that defines the
link layer type of this interface.  The list of Standardized
Link Layer Type codes is available in <xref target="I-D.richardson-opsawg-pcaplinktype"/>.</li>
          <li>Reserved (16 bits): not used - MUST be filled with 0 by
pcapng file writers, and MUST be ignored by pcapng file
readers.</li>
          <li>SnapLen (32 bits): an unsigned value indicating the
maximum number of octets captured from each packet.  The
portion of each packet that exceeds this value will not be
stored in the file. A value of zero indicates no limit.</li>
          <li>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</li>
        </ul>
        <t>In addition to the options defined in <xref target="section_opt"/>,
the following options are valid within this block:</t>
        <table anchor="optionsifb">
          <name>Interface Description Block Options</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Type</th>
              <th align="left">Length</th>
              <th align="left">Multiple allowed?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">if_name</td>
              <td align="left">2</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_description</td>
              <td align="left">3</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_IPv4addr</td>
              <td align="left">4</td>
              <td align="left">8</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">if_IPv6addr</td>
              <td align="left">5</td>
              <td align="left">17</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">if_MACaddr</td>
              <td align="left">6</td>
              <td align="left">6</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_EUIaddr</td>
              <td align="left">7</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_speed</td>
              <td align="left">8</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_tsresol</td>
              <td align="left">9</td>
              <td align="left">1</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_tzone</td>
              <td align="left">10</td>
              <td align="left">4</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_filter</td>
              <td align="left">11</td>
              <td align="left">variable, minimum 1</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_os</td>
              <td align="left">12</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_fcslen</td>
              <td align="left">13</td>
              <td align="left">1</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_tsoffset</td>
              <td align="left">14</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_hardware</td>
              <td align="left">15</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_txspeed</td>
              <td align="left">16</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">if_rxspeed</td>
              <td align="left">17</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
          </tbody>
        </table>
        <dl indent="8" newline="true">
          <dt>if_name:</dt>
          <dd>
            <t>The if_name option
is a UTF-8 string containing the name of the device used to
capture data. The string is not zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "eth0", "\Device\NPF_{AD1CE675-96D0-47C5-ADD0-2504B9126B68}".</t>
        <dl indent="8" newline="true">
          <dt>if_description:</dt>
          <dd>
            <t>The
if_description option is a UTF-8 string containing the description
of the device used to capture data. The string is not
zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "Wi-Fi", "Local Area Connection", "Wireless
Network Connection", "First Ethernet Interface".</t>
        <dl indent="8" newline="true">
          <dt>if_IPv4addr:</dt>
          <dd>
            <t>The if_IPv4addr
option is an IPv4 network address and corresponding netmask for
the interface. The first four octets are the IP address, and
the next four octets are the netmask. This option can be repeated
multiple times within the same Interface Description Block when
multiple IPv4 addresses are assigned to the interface. Note that
the IP address and netmask are both treated as four octets, one
for each octet of the address or mask; they are not 32-bit
numbers, and thus the endianness of the SHB does not affect
this field's value.</t>
          </dd>
        </dl>
        <t>Examples: '192 168 1 1 255 255 255 0'.</t>
        <dl indent="8" newline="true">
          <dt>if_IPv6addr:</dt>
          <dd>
            <t>The
if_IPv6addr option is an IPv6 network address and corresponding
prefix length for the interface. The first 16 octets are the
IP address and the next octet is the prefix length. This option
can be repeated multiple times within the same Interface
Description Block when multiple IPv6 addresses are assigned to
the interface.</t>
          </dd>
        </dl>
        <t>Example: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344/64 is written
(in hex) as '20 01 0d b8 85 a3 08 d3 13 19 8a 2e 03 70 73 44
40'.</t>
        <dl indent="8" newline="true">
          <dt>if_MACaddr:</dt>
          <dd>
            <t>The if_MACaddr
option is the Interface Hardware EUI-48 (MAC) address (48 bits), if
available.</t>
          </dd>
        </dl>
        <t>Example: '00 01 02 03 04 05'.</t>
        <dl indent="8" newline="true">
          <dt>if_EUIaddr:</dt>
          <dd>
            <t>The if_EUIaddr
option is the Interface Hardware EUI-64 address (64 bits), if
available.</t>
          </dd>
        </dl>
        <t>Example: '02 34 56 FF FE 78 9A BC'.</t>
        <dl indent="8" newline="true">
          <dt>if_speed:</dt>
          <dd>
            <t>The if_speed
option is a 64-bit unsigned value indicating the interface
speed, in bits per second.</t>
          </dd>
        </dl>
        <t>Example: the 64-bit decimal number 100000000 for 100Mbps.</t>
        <dl indent="8" newline="true">
          <dt>if_tsresol:</dt>
          <dd>
            <t>The if_tsresol
option identifies the resolution of timestamps. If the Most
Significant Bit is equal to zero, the remaining bits indicates the
resolution of the timestamp as a negative power of 10 (e.g. 6
means microsecond resolution, timestamps are the number of
microseconds since 1970-01-01 00:00:00 UTC). If the Most
Significant Bit is equal to one, the remaining bits indicates
the resolution as negative power of 2 (e.g. 10 means 1/1024
of second). If this option is not present, a resolution of
10^-6 is assumed (i.e. timestamps have the same resolution of
the standard 'libpcap' timestamps).</t>
          </dd>
        </dl>
        <t>Example: '6'.</t>
        <dl indent="8" newline="true">
          <dt>if_tzone:</dt>
          <dd>
            <t>The if_tzone
option identifies the time zone for GMT support (TODO: specify
better).</t>
          </dd>
        </dl>
        <t>Example: TODO: give a good example.</t>
        <dl indent="8" newline="true">
          <dt>if_filter:</dt>
          <dd>
            <t>The if_filter
option identifies the filter (e.g. "capture only TCP traffic")
used to capture traffic. The first octet of the Option Data keeps a
code of the filter used (e.g. if this is a libpcap string, or BPF
bytecode, and more). More details about this format will be
presented in Appendix XXX (TODO). (TODO: better use different
options for different fields? e.g. if_filter_pcap, if_filter_bpf,
...)</t>
          </dd>
        </dl>
        <t>Example: '00'"tcp port 23 and host 192.0.2.5".</t>
        <dl indent="8" newline="true">
          <dt>if_os:</dt>
          <dd>
            <t>The if_os option is
a UTF-8 string containing the name of the operating system of the
machine in which this interface is installed. This can be
different from the same information that can be contained by the
Section Header Block (<xref target="section_shb"/>) because the
capture can have been done on a remote machine. The string is
not zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "Windows XP SP2", "openSUSE 10.2".</t>
        <dl indent="8" newline="true">
          <dt>if_fcslen:</dt>
          <dd>
            <t>The if_fcslen
option is an 8-bit unsigned integer value that specifies the
length of the Frame Check Sequence (in bits) for this interface.
For link layers whose FCS length can change during time, the
Enhanced Packet Block epb_flags Option can be used in each
Enhanced Packet Block (see <xref target="section_epb_flags"/>).</t>
          </dd>
        </dl>
        <t>Example: '4'.</t>
        <dl indent="8" newline="true">
          <dt>if_tsoffset:</dt>
          <dd>
            <t>The
if_tsoffset option is a 64-bit signed integer value that
specifies an offset (in seconds) that must be added to the
timestamp of each packet to obtain the absolute timestamp of
a packet. If the option is missing, the timestamps stored
in the packet MUST be considered absolute timestamps.  The
time zone of the offset can be specified with the option
if_tzone. TODO: won't a if_tsoffset_low for fractional
second offsets be useful for highly synchronized capture
systems?</t>
          </dd>
        </dl>
        <t>Example: '1234'.</t>
        <dl indent="8" newline="true">
          <dt>if_hardware:</dt>
          <dd>
            <t>The
if_hardware option is a UTF-8 string containing the description
of the interface hardware. The string is not zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "Broadcom NetXtreme", "Intel(R) PRO/1000 MT
Network Connection", "NETGEAR WNA1000Mv2 N150 Wireless USB
Micro Adapter".</t>
        <dl indent="8" newline="true">
          <dt>if_txspeed:</dt>
          <dd>
            <t>The
if_txrxspeeds option is a 64-bit unsigned value
indicating the interface transmit speed in bits per
second.</t>
          </dd>
        </dl>
        <t>Example: the 64-bit decimal number 1024000 for
1024Kbps.</t>
        <dl indent="8" newline="true">
          <dt>if_rxspeed:</dt>
          <dd>
            <t>The
if_rxspeed option is a 64-bit unsigned value
indicating the interface receive speed, in bits per
second.</t>
          </dd>
        </dl>
        <t>Example: the 64-bit decimal number 8192000 for
8192Kbps.</t>
        <t>If the interface transmit speed and receive speed are the
same, the if_speed option MUST be used and the if_txspeed and
if_rxspeed options MUST NOT be used.  If the transmit speed is
unknown, the if_speed and if_txspeed options MUST NOT be used;
if the receive speed is unknown, the if_speed and if_rxspeed
options MUST NOT be used.</t>
      </section>
      <section anchor="section_epb">
        <name>Enhanced Packet Block</name>
        <t>An Enhanced Packet Block (EPB) is the standard container for
storing the packets coming from the network. The Enhanced Packet Block
is optional because packets can be stored either by means of this
block or the Simple Packet Block, which can be used to speed up
capture file generation; or a file may have no packets in it. The
format of an Enhanced Packet Block is shown in <xref target="format_epb"/>.</t>
        <t>The Enhanced Packet Block is an improvement over the original, now
obsolete, <xref target="appendix_pb">Packet Block</xref>:</t>
        <ul spacing="normal">
          <li>it stores the Interface Identifier as a 32-bit integer value.
This is a requirement when a capture stores packets coming from a
large number of interfaces;</li>
          <li>unlike the <xref target="appendix_pb">Packet Block</xref>, the
number of packets dropped by the capture system between this
packet and the previous one is not stored in the header, but
rather in an option of the block itself.</li>
        </ul>
        <figure anchor="format_epb">
          <name>Enhanced Packet Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                    Block Type = 0x00000006                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                         Interface ID                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                        Timestamp (High)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                        Timestamp (Low)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 |                    Captured Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 |                    Original Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 /                                                               /
   /                          Packet Data                          /
   /              variable length, padded to 32 bits               /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The Enhanced Packet Block has the following fields:</t>
        <ul spacing="normal">
          <li>Block Type: The block type of the Enhanced Packet Block is 6.</li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
          <li>Interface ID (32 bits): an unsigned value that specifies the
interface on which this packet was received or transmitted;
the correct interface will be the one whose Interface
Description Block (within the current Section of the file) is
identified by the same number (see <xref target="section_idb"/>)
of this field. The interface ID MUST be valid, which means that an
matching interface description block MUST exist.</li>
          <li>Timestamp (High) and Timestamp (Low): upper 32 bits and
lower 32 bits of a 64-bit timestamp. The timestamp is a
single 64-bit unsigned integer that represents the number of
units of time that have elapsed since 1970-01-01 00:00:00 UTC.
The length of a unit of time is specified by the 'if_tsresol'
option (see <xref target="format_idb"/>) of the Interface
Description Block referenced by this packet. Note that,
unlike timestamps in the libpcap file format, timestamps in
Enhanced Packet Blocks are not saved as two 32-bit values
that represent the seconds and microseconds that have
elapsed since 1970-01-01 00:00:00 UTC. Timestamps in Enhanced
Packet Blocks are saved as two 32-bit words that represent
the upper and lower 32 bits of a single 64-bit quantity.</li>
          <li>Captured Packet Length (32 bits): an unsigned value that
indicates the number of octets captured from the packet
(i.e. the length of the Packet Data field). It will be the
minimum value among the Original Packet Length and the
snapshot length for the interface (SnapLen, defined in <xref target="format_idb"/>). The value of this field does
not include the padding octets added at the end of the Packet
Data field to align the Packet Data field to a 32-bit
boundary.</li>
          <li>
            <t>Original Packet Length (32 bits): an unsigned value that
indicates the actual length of the packet when it was
transmitted on the network.  It can be different from
the Captured Packet Length if the packet has been truncated
by the capture process; it SHOULD NOT be less than the Captured Packet
Length.  </t>
            <t>
A pcapng file writer MAY write an Original Packet Length that is less
than the Captured Packet Length if both the Captured Packet Length and
the Original Packet length came from a file in which a packet had an
Original Packet Length less than the Captured Packet Length;
otherwise, it MUST write an Original Packet Length that is greater
than or equal to the Captured Packet Length.  </t>
            <t>
A pcapng file reader MAY convert an Original Packet Length that is
less than the Captured Packet Length to a value that is greater than
or equal to the Captured Packet Length.</t>
          </li>
          <li>Packet Data: the data coming from the network, including
link-layer headers. The actual length of this field is
Captured Packet Length plus the padding to a 32-bit
boundary. The format of the link-layer headers depends on
the LinkType field specified in the Interface Description
Block (see <xref target="section_idb"/>) and it is specified
in the entry for that format in <xref target="I-D.richardson-opsawg-pcaplinktype"/>.</li>
          <li>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</li>
        </ul>
        <t>In addition to the options defined in <xref target="section_opt"/>,
the following options are valid within this block:</t>
        <table anchor="options_epb">
          <name>Enhanced Packet Block Options</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Type</th>
              <th align="left">Length</th>
              <th align="left">Multiple allowed?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">epb_flags</td>
              <td align="left">2</td>
              <td align="left">4</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">epb_hash</td>
              <td align="left">3</td>
              <td align="left">variable, minimum hash type-dependent</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">epb_dropcount</td>
              <td align="left">4</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">epb_packetid</td>
              <td align="left">5</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">epb_queue</td>
              <td align="left">6</td>
              <td align="left">4</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">epb_verdict</td>
              <td align="left">7</td>
              <td align="left">variable, minimum verdict type-dependent</td>
              <td align="left">yes</td>
            </tr>
            <tr>
              <td align="left">epb_processid_threadid</td>
              <td align="left">8</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
          </tbody>
        </table>
        <dl indent="8" newline="true">
          <dt>epb_flags:</dt>
          <dd>
            <t>The epb_flags
option is a 32-bit flags word containing link-layer information. A
complete specification of the allowed flags can be found in <xref target="section_epb_flags"/>.</t>
          </dd>
        </dl>
        <t>Example: '0'.</t>
        <dl indent="8" newline="true">
          <dt>epb_hash:</dt>
          <dd>
            <t>The epb_hash
option contains a hash of the packet. The first octet specifies the
hashing algorithm, while the following octets contain the actual
hash, whose size depends on the hashing algorithm, and hence from
the value in the first octet. The hashing algorithm can be: 2s
complement (algorithm octet = 0, size = XXX), XOR (algorithm octet =
1, size=XXX), CRC32 (algorithm octet = 2, size = 4), MD-5
(algorithm octet = 3, size = 16), SHA-1 (algorithm octet = 4,
size = 20), Toeplitz (algorithm octet = 5, size = 4). The hash covers
only the packet, not the header added by the capture driver: this
gives the possibility to calculate it inside the network card. The
hash allows easier comparison/merging of different capture files,
and reliable data transfer between the data acquisition system and
the capture library.</t>
          </dd>
        </dl>
        <t>Examples: '02 EC 1D 87 97', '03 45 6E C2 17 7C 10 1E 3C 2E 99 6E C2 9A 3D
50 8E'.</t>
        <dl indent="8" newline="true">
          <dt>epb_dropcount:</dt>
          <dd>
            <t>The
epb_dropcount option is a 64-bit unsigned integer value
specifying the number of packets lost (by the interface and
the operating system) between this packet and the preceding
one for the same interface or, for the first packet for an
interface, between this packet and the start of the capture
process.</t>
          </dd>
        </dl>
        <t>Example: '0'.</t>
        <dl indent="8" newline="true">
          <dt>epb_packetid:</dt>
          <dd>
            <t>The
epb_packetid option is a 64-bit unsigned integer that uniquely
identifies the packet. If the same packet is seen by multiple
interfaces and there is a way for the capture application to
correlate them, the same epb_packetid value must be used. An
example could be a router that captures packets on all its
interfaces in both directions. When a packet hits interface A
on ingress, an EPB entry gets created, TTL gets decremented,
and right before it egresses on interface B another EPB entry
gets created in the trace file. In this case, two packets are
in the capture file, which are not identical but the
epb_packetid can be used to correlate them.</t>
          </dd>
        </dl>
        <t>Example: '0'.</t>
        <dl indent="8" newline="true">
          <dt>epb_queue:</dt>
          <dd>
            <t>The epb_queue
option is a 32-bit unsigned integer that identifies on which queue
of the interface the specific packet was received.</t>
          </dd>
        </dl>
        <t>Example: '0'.</t>
        <dl indent="8" newline="true">
          <dt>epb_verdict:</dt>
          <dd>
            <t>The epb_verdict
option stores a verdict of the packet. The verdict indicates what
would be done with the packet after processing it. For example, a
firewall could drop the packet. This verdict can be set by various
components, i.e. Hardware, Linux's eBPF TC or XDP framework, etc.
etc. The first octet specifies the verdict type, while the
following octets contain the actual verdict data, whose size
depends on the verdict type, and hence from the value in the first
octet. The verdict type can be: Hardware (type octet = 0, size =
variable), Linux_eBPF_TC (type octet = 1, size = 8 (64-bit unsigned
integer), value = TC_ACT_* as defined in the Linux <eref target="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/pkt_cls.h">pck_cls.h</eref> include), Linux_eBPF_XDP (type octet = 2, size = 8 (64-bit unsigned
integer), value = xdp_action as defined in the Linux <eref target="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/bpf.h">pbf.h</eref> include).</t>
          </dd>
        </dl>
        <t>Example: '02 00 00 00 00 00 00 00 02' for Linux_eBPF_XDP with
verdict XDP_PASS.</t>
        <dl indent="8" newline="true">
          <dt>epb_processid_threadid:</dt>
          <dd>
            <t>The epb_processid_threadid
option stores the numeric process identifier and thread identifier
of the process which originated the packet as unsigned 32-bit
integers. The value 0 can be used for each if the concept of a
process or thread identifier does not make sense in context (e.g.
for inbound packets) or if the operating system capturing the
packets has no concept of processes or threads, respectively.</t>
          </dd>
        </dl>
        <t>Example: '00 00 04 D2 00 00 00 00' for process 1234 and an unknown
thread.</t>
        <section anchor="section_epb_flags">
          <name>Enhanced Packet Block Flags Word</name>
          <t>The Enhanced Packet Block Flags Word is a 32-bit value that
contains link-layer information about the packet.</t>
          <t>The word is encoded as an unsigned 32-bit integer, using the
endianness of the Section Header Block scope it is in. In the
following table, the bits are numbered with 0 being the
least-significant bit and 31 being the most-significant bit of
the 32-bit unsigned integer. The meaning of the bits is the
following:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Bit Number</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0-1</td>
                <td align="left">Inbound / Outbound packet (00 = information not available, 01 = inbound, 10 = outbound)</td>
              </tr>
              <tr>
                <td align="left">2-4</td>
                <td align="left">Reception type (000 = not specified, 001 = unicast, 010 = multicast, 011 = broadcast, 100 = promiscuous).</td>
              </tr>
              <tr>
                <td align="left">5-8</td>
                <td align="left">FCS length, in octets (0000 if this information is not available). This value overrides the if_fcslen option of the Interface Description Block, and is used with those link layers (e.g. PPP) where the length of the FCS can change during time.</td>
              </tr>
              <tr>
                <td align="left">9-15</td>
                <td align="left">Reserved (MUST be set to zero).</td>
              </tr>
              <tr>
                <td align="left">16-31</td>
                <td align="left">link-layer-dependent errors (Bit 31 = symbol error, Bit 30 = preamble error, Bit 29 = Start Frame Delimiter error, Bit 28 = unaligned frame error, Bit 27 = wrong Inter Frame Gap error, Bit 26 = packet too short error, Bit 25 = packet too long error, Bit 24 = CRC error, other?? are 16 bit enough?).</td>
              </tr>
            </tbody>
          </table>
          <t>NOTE: in earlier versions of this specification, the bits
were specified as being numbered with 0 being the
most-significant bit and 31 being the least-significant bit
of the 32-bit unsigned integer, rather than with 0 being the
least-significant bit and 31 being the most-significant bit.
Several implementations number the bits with 0 being the
least-significant bit, and no known implementations number
them with 0 being the most-significant bit, so the
specification was changed to reflect that reality.</t>
        </section>
      </section>
      <section anchor="section_spb">
        <name>Simple Packet Block</name>
        <t>The Simple Packet Block (SPB) is a lightweight container for
storing the packets coming from the network. Its presence is
optional.</t>
        <t>A Simple Packet Block is similar to an Enhanced Packet Block (see <xref target="section_epb"/>), but it is smaller, simpler to process
and contains only a minimal set of information. This block is
preferred to the standard Enhanced Packet Block when performance or
space occupation are critical factors, such as in sustained traffic
capture applications. A capture file can contain both Enhanced Packet
Blocks and Simple Packet Blocks: for example, a capture tool could
switch from Enhanced Packet Blocks to Simple Packet Blocks when the
hardware resources become critical.</t>
        <t>The Simple Packet Block does not contain the Interface ID field.
Therefore, it MUST be assumed that all the Simple Packet Blocks have
been captured on the interface previously specified in the first
Interface Description Block.</t>
        <t><xref target="format_spb"/> shows the format of the Simple Packet
Block.</t>
        <figure anchor="format_spb">
          <name>Simple Packet Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                    Block Type = 0x00000003                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                    Original Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 /                                                               /
   /                          Packet Data                          /
   /              variable length, padded to 32 bits               /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The Simple Packet Block has the following fields:</t>
        <ul spacing="normal">
          <li>Block Type: The block type of the Simple Packet Block is 3.</li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
          <li>Original Packet Length (32 bits): an unsigned value
indicating the actual length of the packet when it was
transmitted on the network. It can be different from length
of the Packet Data field's length if the packet has been
truncated by the capture process, in which case the SnapLen
value in <xref target="section_idb"/> will be less than this
Original Packet Length value, and the SnapLen value MUST be
used to determine the size of the Packet Data field
length.</li>
          <li>Packet Data: the data coming from the network, including
link-layer headers. The length of this field can be derived
from the field Block Total Length, present in the Block
Header, and it is the minimum value among the SnapLen
(present in the Interface Description Block) and the
Original Packet Length (present in this header). The format
of the data within this Packet Data field depends on the
LinkType field specified in the Interface Description Block
(see <xref target="section_idb"/>) and it is specified in
the entry for that format in <xref target="I-D.richardson-opsawg-pcaplinktype"/>.</li>
        </ul>
        <t>The Simple Packet Block does not contain the timestamp because this
is often one of the most costly operations on PCs. Additionally, there
are applications that do not require it; e.g. an Intrusion Detection
System is interested in packets, not in their timestamp.</t>
        <t>A Simple Packet Block cannot be present in a Section that has more
than one interface because of the impossibility to refer to the
correct one (it does not contain any Interface ID field).</t>
        <t>The Simple Packet Block is very efficient in term of disk space: a
snapshot whose length is 100 octets requires only 16 octets of overhead,
which corresponds to an efficiency of more than 86%.</t>
      </section>
      <section anchor="section_nrb">
        <name>Name Resolution Block</name>
        <t>The Name Resolution Block (NRB) is used to support the correlation
of numeric addresses (present in the captured packets) and their
corresponding canonical names and it is optional. Having the literal
names saved in the file prevents the need for performing name
resolution at a later time, when the association between names and
addresses may be different from the one in use at capture time.
Moreover, the NRB avoids the need for issuing a lot of DNS requests
every time the trace capture is opened, and also provides name
resolution when reading the capture with a machine not connected to
the network.</t>
        <t>A Name Resolution Block is often placed at the beginning of the
file, but no assumptions can be taken about its position. Multiple
NRBs can exist in a pcapng file, either due to memory constraints or
because additional name resolutions were performed by file processing
tools, like network analyzers.</t>
        <t>A Name Resolution Block need not contain any Records, except the
nrb_record_end Record which MUST be the last Record. The addresses and
names in NRB Records MAY be repeated multiple times; i.e., the same IP
address may resolve to multiple names, the same name may resolve to
the multiple IP addresses, and even the same address-to-name pair may
appear multiple times, in the same NRB or across NRBs.</t>
        <t>The format of the Name Resolution Block is shown in <xref target="format_nrb"/>.</t>
        <figure anchor="format_nrb">
          <name>Name Resolution Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                    Block Type = 0x00000004                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |      Record Type              |      Record Value Length      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 /                       Record Value                            /
   /              variable length, padded to 32 bits               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .                                                               .
   .                  . . . other records . . .                    .
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Record Type = nrb_record_end |   Record Value Length = 0     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The Name Resolution Block has the following fields:</t>
        <ul spacing="normal">
          <li>Block Type: The block type of the Name Resolution Block is 4.</li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
        </ul>
        <t>This is followed by zero or more Name Resolution Records (in the
TLV format), each of which contains an association between a network
address and a name. An nrb_record_end MUST be added after the last
Record, and MUST exist even if there are no other Records in the NRB.
There are currently three possible types of records:</t>
        <table anchor="nrrecords">
          <name>Name Resolution Block Records</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Type</th>
              <th align="left">Length</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">nrb_record_end</td>
              <td align="left">0x0000</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">nrb_record_ipv4</td>
              <td align="left">0x0001</td>
              <td align="left">variable</td>
            </tr>
            <tr>
              <td align="left">nrb_record_ipv6</td>
              <td align="left">0x0002</td>
              <td align="left">variable</td>
            </tr>
            <tr>
              <td align="left">nrb_record_eui48</td>
              <td align="left">0x0003</td>
              <td align="left">variable</td>
            </tr>
            <tr>
              <td align="left">nrb_record_eui64</td>
              <td align="left">0x0004</td>
              <td align="left">variable</td>
            </tr>
          </tbody>
        </table>
        <dl indent="8" newline="true">
          <dt>nrb_record_end:</dt>
          <dd>
            <t>The
nrb_record_end record delimits the end of name resolution
records. This record is needed to determine when the list of name
resolution records has ended and some options (if any) begin.</t>
          </dd>
        </dl>
        <dl indent="8" newline="true">
          <dt>nrb_record_ipv4:</dt>
          <dd>
            <t>The
nrb_record_ipv4 record specifies an IPv4 address (contained in the
first 4 octets), followed by one or more zero-terminated UTF-8
strings containing the DNS entries for that address. The minimum
valid Record Length for this Record Type is thus 6: 4 for the IP
octets, 1 character, and a zero-value octet terminator. Note that
the IP address is treated as four octets, one for each octet of
the IP address; it is not a 32-bit word, and thus the endianness
of the SHB does not affect this field's value.</t>
          </dd>
        </dl>
        <t>Example: '127 0 0 1'"localhost".</t>
        <t>[Open issue: is an empty string (i.e., just a zero-value octet)
valid?]</t>
        <dl indent="8" newline="true">
          <dt>nrb_record_ipv6:</dt>
          <dd>
            <t>The
nrb_record_ipv6 record specifies an IPv6 address (contained in the
first 16 octets), followed by one or more zero-terminated strings
containing the DNS entries for that address. The minimum valid
Record Length for this Record Type is thus 18: 16 for the IP
octets, 1 character, and a zero-value octet terminator.</t>
          </dd>
        </dl>
        <t>Example: '20 01 0d b8 00 00 00 00 00 00 00 00 12 34 56
78'"somehost".</t>
        <t>[Open issue: is an empty string (i.e., just a zero-value octet)
valid?]</t>
        <dl indent="8" newline="true">
          <dt>nrb_record_eui48 / nrb_record_eui64:</dt>
          <dd>
            <t>The
nrb_record_eui48 / nrb_record_eui64 records specify an EUI (or MAC)
address (contained in the first 6 octets for eui48, 8 octets for eui64),
followed by one or more zero-terminated strings containing names resolved
for that address.  As above, the minimum valid Record Length is 8 for
EUI-48 and 10 for EUI-64.  There is no presumption implied in how these
names were acquired unless the DNS server options listed below are present
in the NRB.</t>
          </dd>
        </dl>
        <t>Example: '02 ca ff ee f0 0d'"teapot under test".</t>
        <t>[Open issue: is an empty string (i.e., just a zero-value octet)
valid?]</t>
        <t>Record Types other than those specified earlier MUST be ignored and
skipped past. More Record Types will likely be defined in the future,
and MUST NOT break backwards compatibility.</t>
        <t>Each Record Value is aligned to and padded to a 32-bit boundary.
The corresponding Record Value Length reflects the actual length of
the Record Value; it does not include the lengths of the Record Type
field, the Record Value Length field, any padding for the Record
Value, or anything after the Record Value. For Record Types with name
strings, the Record Length does include the zero-value octet
terminating that string. A Record Length of 0 is valid, unless
indicated otherwise.</t>
        <t>After the list of Name Resolution Records, optionally, a list of
options (formatted according to the rules defined in <xref target="section_opt"/>) can be present.</t>
        <t>In addition to the options defined in <xref target="section_opt"/>,
the following options are valid within this block:</t>
        <table anchor="options_nrb">
          <name>Name Resolution Block Options</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Type</th>
              <th align="left">Length</th>
              <th align="left">Multiple allowed?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ns_dnsname</td>
              <td align="left">2</td>
              <td align="left">variable</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">ns_dnsIP4addr</td>
              <td align="left">3</td>
              <td align="left">4</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">ns_dnsIP6addr</td>
              <td align="left">4</td>
              <td align="left">16</td>
              <td align="left">no</td>
            </tr>
          </tbody>
        </table>
        <dl indent="8" newline="true">
          <dt>ns_dnsname:</dt>
          <dd>
            <t>The ns_dnsname
option is a UTF-8 string containing the name of the machine (DNS
server) used to perform the name resolution. The string is not
zero-terminated.</t>
          </dd>
        </dl>
        <t>Example: "our_nameserver".</t>
        <dl indent="8" newline="true">
          <dt>ns_dnsIP4addr:</dt>
          <dd>
            <t>The
ns_dnsIP4addr option specifies the IPv4 address of the DNS server.
Note that the IP address is treated as four octets, one for each
octet of the IP address; it is not a 32-bit word, and thus the
endianness of the SHB does not affect this field's value.</t>
          </dd>
        </dl>
        <t>Example: '192 168 0 1'.</t>
        <dl indent="8" newline="true">
          <dt>ns_dnsIP6addr:</dt>
          <dd>
            <t>The
ns_dnsIP6addr option specifies the IPv6 address of the DNS
server.</t>
          </dd>
        </dl>
        <t>Example: '20 01 0d b8 00 00 00 00 00 00 00 00 12 34 56 78'.</t>
      </section>
      <section anchor="section_isb">
        <name>Interface Statistics Block</name>
        <t>The Interface Statistics Block (ISB) contains the capture
statistics for a given interface and it is optional. The statistics
are referred to the interface defined in the current Section
identified by the Interface ID field. An Interface Statistics Block is
normally placed at the end of the file, but no assumptions can be
taken about its position - it can even appear multiple times for the
same interface.</t>
        <t>The format of the Interface Statistics Block is shown in <xref target="format_isb"/>.</t>
        <figure anchor="format_isb">
          <name>Interface Statistics Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                   Block Type = 0x00000005                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                         Interface ID                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                        Timestamp (High)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                        Timestamp (Low)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The fields have the following meaning:</t>
        <ul spacing="normal">
          <li>Block Type: The block type of the Interface Statistics Block is
5.</li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
          <li>Interface ID: specifies the interface these statistics refers
to; the correct interface will be the one whose Interface
Description Block (within the current Section of the file) is
identified by same number (see <xref target="section_idb"/>) of
this field.</li>
          <li>Timestamp: time this statistics refers to. The format of the
timestamp is the same already defined in the Enhanced Packet Block
(<xref target="section_epb"/>); the length of a unit of time is
specified by the 'if_tsresol' option (see <xref target="format_idb"/>) of the Interface Description Block
referenced by this packet.</li>
          <li>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</li>
        </ul>
        <t>All the statistic fields are defined as options in order to deal
with systems that do not have a complete set of statistics. Therefore,
In addition to the options defined in <xref target="section_opt"/>,
the following options are valid within this block:</t>
        <table anchor="options_isb">
          <name>Interface Statistics Block Options</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Type</th>
              <th align="left">Length</th>
              <th align="left">Multiple allowed?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">isb_starttime</td>
              <td align="left">2</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">isb_endtime</td>
              <td align="left">3</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">isb_ifrecv</td>
              <td align="left">4</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">isb_ifdrop</td>
              <td align="left">5</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">isb_filteraccept</td>
              <td align="left">6</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">isb_osdrop</td>
              <td align="left">7</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">isb_usrdeliv</td>
              <td align="left">8</td>
              <td align="left">8</td>
              <td align="left">no</td>
            </tr>
          </tbody>
        </table>
        <dl indent="8" newline="true">
          <dt>isb_starttime:</dt>
          <dd>
            <t>The
isb_starttime option specifies the time the capture started; time
will be stored in two blocks of four octets each. The format of the
timestamp is the same as the one defined in the Enhanced Packet
Block (<xref target="section_epb"/>); the length of a unit
of time is specified by the 'if_tsresol' option (see <xref target="format_idb"/>) of the Interface Description Block
referenced by this packet.</t>
          </dd>
        </dl>
        <t>Example: '96 c3 04 00 73 89 6a 65', in Little Endian, decodes
to 2012-06-29 06:17:00.834163 UTC.</t>
        <dl indent="8" newline="true">
          <dt>isb_endtime:</dt>
          <dd>
            <t>The isb_endtime
option specifies the time the capture ended; time will be stored
in two blocks of four octets each. The format of the timestamp is
the same as the one defined in the Enhanced Packet Block (<xref target="section_epb"/>); the length of a unit of time is specified
by the 'if_tsresol' option (see <xref target="format_idb"/>) of
the Interface Description Block referenced by this packet.</t>
          </dd>
        </dl>
        <t>Example: '97 c3 04 00 aa 47 ca 64', in Little Endian, decodes
to 2012-06-29 07:28:25.298858 UTC.</t>
        <dl indent="8" newline="true">
          <dt>isb_ifrecv:</dt>
          <dd>
            <t>The isb_ifrecv
option specifies the 64-bit unsigned integer number of packets
received from the physical interface starting from the beginning
of the capture.</t>
          </dd>
        </dl>
        <t>Example: the decimal number 100.</t>
        <dl indent="8" newline="true">
          <dt>isb_ifdrop:</dt>
          <dd>
            <t>The isb_ifdrop
option specifies the 64-bit unsigned integer number of packets
dropped by the interface due to lack of resources starting from
the beginning of the capture.</t>
          </dd>
        </dl>
        <t>Example: '0'.</t>
        <dl indent="8" newline="true">
          <dt>isb_filteraccept:</dt>
          <dd>
            <t>The
isb_filteraccept option specifies the 64-bit unsigned integer
number of packets accepted by filter starting from the beginning
of the capture.</t>
          </dd>
        </dl>
        <t>Example: the decimal number 100.</t>
        <dl indent="8" newline="true">
          <dt>isb_osdrop:</dt>
          <dd>
            <t>The isb_osdrop
option specifies the 64-bit unsigned integer number of packets
dropped by the operating system starting from the beginning of the
capture.</t>
          </dd>
        </dl>
        <t>Example: '0'.</t>
        <dl indent="8" newline="true">
          <dt>isb_usrdeliv:</dt>
          <dd>
            <t>The
isb_usrdeliv option specifies the 64-bit unsigned integer number
of packets delivered to the user starting from the beginning of
the capture. The value contained in this field can be different
from the value 'isb_filteraccept - isb_osdrop' because some
packets could still be in the OS buffers when the capture
ended.</t>
          </dd>
        </dl>
        <t>Example: '0'.</t>
        <t>All the fields that refer to packet counters are 64-bit values,
represented with the octet order of the current section. Special care
must be taken in accessing these fields: since all the blocks are
aligned to a 32-bit boundary, such fields are not guaranteed to be
aligned on a 64-bit boundary.</t>
      </section>
      <section anchor="section_dsb">
        <name>Decryption Secrets Block</name>
        <t>A Decryption Secrets Block (DSB) stores (session) secrets that
enable decryption of packets within the capture file. The format of
these secrets is defined by the Secrets Type.</t>
        <t>Multiple DSBs can exist in a pcapng file, but they SHOULD be written
before packet blocks that require those secrets. Tools MAY limit
decryption to secrets that appear before packet blocks.</t>
        <t>The structure of a
Decryption Secrets Block is shown in <xref target="format_dsb"/>.</t>
        <figure anchor="format_dsb">
          <name>Decryption Secrets Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                   Block Type = 0x0000000A                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                          Secrets Type                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                         Secrets Length                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 /                                                               /
   /                          Secrets Data                         /
   /              (variable length, padded to 32 bits)             /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                                                               /
   /                       Options (variable)                      /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Block Total Length                      /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The Decryption Secrets Block has the following fields.</t>
        <ul spacing="normal">
          <li>Block Type: The block type of the Decryption Secrets Block is
10.</li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
          <li>Secrets Type (32 bits): an unsigned integer identifier
that describes the format of the following Secrets field.
Requests for new Secrets Type codes should be made by creating
a pull request to update this document as described in
<xref target="section_block_code_registry"/>.</li>
          <li>Secrets Length (32 bits): an unsigned integer that indicates
the size of the following Secrets field, without any padding
octets.</li>
          <li>Secrets Data: binary data containing secrets, padded to a 32 bit
boundary.</li>
          <li>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.
No DSB-specific options are currently defined.</li>
        </ul>
        <t>The following is a list of Secrets Types.</t>
        <dl indent="8" newline="true">
          <dt>0x544c534b:</dt>
          <dd>
            <t>TLS Key Log. This
format is described at <eref target="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format">NSS Key Log Format</eref>. Every line MUST be properly terminated with
either carriage return and linefeed ('\r\n') or linefeed ('\n').
Tools MUST be able to handle both line endings.</t>
          </dd>
        </dl>
        <dl indent="8" newline="true">
          <dt>0x57474b4c:</dt>
          <dd>
            <t>WireGuard Key Log.
Every line consists of the key type, equals sign ('='), and the
base64-encoded 32-byte key with optional spaces before and in between.
The key type is one of LOCAL_STATIC_PRIVATE_KEY,
REMOTE_STATIC_PUBLIC_KEY, LOCAL_EPHEMERAL_PRIVATE_KEY,
or PRESHARED|_KEY. This matches the output of <eref target="https://git.zx2c4.com/WireGuard/tree/contrib/examples/extract-handshakes/README">extract-handshakes.sh</eref>, which is part of the <eref target="https://www.wireguard.com/">WireGuard</eref> project.
A PRESHARED_KEY line is linked to a session matched by a previous
LOCAL_EPHEMERAL_PRIVATE_KEY line.
Every line MUST be properly terminated with
either carriage return and linefeed ('\r\n') or linefeed ('\n').
Tools MUST be able to handle both line endings.</t>
          </dd>
        </dl>
        <t>Warning: LOCAL_STATIC_PRIVATE_KEY and potentially PRESHARED_KEY
  are long-term secrets, users SHOULD only store non-production keys,
  or ensure proper protection of the pcapng file.</t>
        <dl indent="8" newline="true">
          <dt>0x5a4e574b:</dt>
          <dd>
            <t>ZigBee NWK Key
and ZigBee PANID for that network. Network Key as described in
the <eref target="https://zigbeealliance.org/">ZigBee Specification</eref> 05-3473-21 (R21) section 4.2.2.
The NWK Key is a 16 octet binary AES-128 key used to secure NWK Level frames
within a single PAN. The NWK key is immediately followed by the
2 octet (16 bit) network PANID in little endian format. If and when
the NWK Key changes a new DSB will contain the new NWK Key.</t>
          </dd>
        </dl>
        <dl indent="8" newline="true">
          <dt>0x5a415053:</dt>
          <dd>
            <t>ZigBee APS Key.
Application Support Link Key as described in the <eref target="https://zigbeealliance.org/">ZigBee Specification</eref> 05-3473-21 (R21) section 4.4. Each 16 octet binary AES-128 key secures
frames exchanged between a pair of network nodes. The APS Key is
immediately followed by the 2 octet (16 bit) network PANID in
little endian format. The PANID is followed by the 2 octet (16 bit)
short addresses, in little endian format, of the nodes to which
the APS Key applies. The numerically lower short address shall come
first. There is an APS Key DSB for each node pair for which the
Link Key is known. As new links are formed, new DSBs contain the
new Keys. If the APS Key changes for an existing link, it is
contained in a new DSB with the new APS Key.</t>
          </dd>
        </dl>
        <figure anchor="format_zigbee_nwk">
          <name>ZigBee NWK Key Data Format</name>
          <artwork align="center"><![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
   +---------------------------------------------------------------+
 0 |                   Block Type = 0x0000000A                     |
   +---------------------------------------------------------------+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                  Secrets Type = 0x5a4e574b                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                         Secrets Length                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                            AES-128                            |
   |                            NKW Key                            |
   |                          (16 octets)                          |
   |                           (128 bits)                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32 |          PAN ID               |           padding (0)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
36 /                                                               /
   /                       Options (variable)                      /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Block Total Length                      /
   +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <figure anchor="format_zigbee_aps">
          <name>ZigBee APS Key Data Format</name>
          <artwork align="center"><![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
   +---------------------------------------------------------------+
 0 |                   Block Type = 0x0000000A                     |
   +---------------------------------------------------------------+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                  Secrets Type = 0x5a415053                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                         Secrets Length                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                            AES-128                            |
   |                            APS Key                            |
   |                          (16 octets)                          |
   |                           (128 bits)                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32 |           PAN ID              |     Low Node Short Address    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
36 |    High Node Short Address    |         padding (0)           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
40 /                                                               /
   /                       Options (variable)                      /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Block Total Length                      /
   +---------------------------------------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="section_custom_block">
        <name>Custom Block</name>
        <t>A Custom Block (CB) is the container for storing custom data that
is not part of another block; for storing custom data as part of
another block, see <xref target="section_custom_option"/>. The Custom
Block is optional, can be repeated any number of times, and can appear
before or after any other block except the first Section Header Block
which must come first in the file. Different Custom Blocks, of
different type codes and/or different Private Enterprise Numbers, may
be used in the same pcapng file. The format of a Custom Block is shown
in <xref target="format_custom_block"/>.</t>
        <figure anchor="format_custom_block">
          <name>Custom Block Format</name>
          <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |             Block Type = 0x00000BAD or 0x40000BAD             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                Private Enterprise Number (PEN)                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 /                                                               /
   /                          Custom Data                          /
   /              variable length, padded to 32 bits               /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The Custom Block uses the type code 0x00000BAD (2989 in decimal)
for a custom block that pcapng re-writers can copy into new files, and
the type code 0x40000BAD (1073744813 in decimal) for one that should
not be copied. See <xref target="section_vendor_copy"/> for details.</t>
        <t>The Custom Block has the following fields:</t>
        <ul spacing="normal">
          <li>Block Type: The block type of the Custom Block is 0x00000BAD or
0x40000BAD, as described previously.</li>
          <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
          <li>Private Enterprise Number (32 bits): An IANA-assigned
Private Enterprise Number identifying the organization which
defined the Custom Block.  See <xref target="section_vendor_uses"/> for details.  The PEN MUST be
encoded using the same endianness as the Section Header
Block it is within the scope of.</li>
          <li>Custom Data: the custom data, padded to a 32 bit boundary.</li>
          <li>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.
Note that custom options for the Custom Block still use the custom
option format and type code, as described in <xref target="section_custom_option"/>.</li>
        </ul>
      </section>
    </section>
    <section anchor="section_vendor">
      <name>Vendor-Specific Custom Extensions</name>
      <t>This section uses the term "vendor" to describe an organization which
extends the pcapng file with custom, proprietary blocks or options. It
should be noted, however, that the "vendor" is just an abstract entity
that agrees on a custom extension format: for example it may be a
manufacturer, industry association, an individual user, or collective
group of users.</t>
      <section anchor="section_vendor_uses">
        <name>Supported Use-Cases</name>
        <t>There are two different supported use-cases for vendor-specific
custom extensions: local and portable. Local use means the custom data
is only expected to be usable on the same machine, and the same
application, which encoded it into the file. This limitation is due to
the lack of a common registry for the local use number codes (the
block or option type code numbers with the Most Significant Bit set).
Since two different vendors may choose the same number, one vendor's
application reading the other vendor's file would result in decoding
failure. Therefore, vendors SHOULD instead use the portable method, as
described next.</t>
        <t>The portable use-case supports vendor-specific custom extensions in
pcapng files which can be shared across systems, organizations, etc.
To avoid number space collisions, an IANA-registered Private
Enterprise Number (PEN) is encoded into the Custom Block or Custom
Option, using the PEN that belongs to the vendor defining the
extension. Anyone can register a new PEN with IANA, for free, by
filling out the online request form at <eref target="http://pen.iana.org/pen/PenApplication.page">http://pen.iana.org/pen/PenApplication.page</eref>.</t>
      </section>
      <section anchor="section_vendor_copy">
        <name>Controlling Copy Behavior</name>
        <t>Both Custom Blocks and Custom Options support two different type codes
to distinguish their "copy" behavior: a type code for when the block or
option can be safely copied into a new pcapng file by a pcapng
manipulating application, and a type code for when it should not be
copied. A common reason for not copying a Custom Block or Custom Option
is because it depends on other blocks or options in some way that would
invalidate the custom data if the other blocks/options were removed or
re-ordered. For example, if a Custom Block's data includes an
Interface ID number in its Custom Data portion, then it cannot be
safely copied by a pcapng application that merges pcapng files,
because the merging application might re-order or remove one or more
of the Interface Description Blocks, and thereby change the Interface
IDs that the Custom Block depends upon. The same issue arises if a
Custom Block or Custom Option depends on the presence of, or specific
ordering of, other standard-based or custom-defined blocks or
options.</t>
        <t>Note that the copy semantics is not related to privacy - there is
no guarantee that a pcapng anonymizer will remove a Custom Block or
Custom Option, even if the appropriate type code is used requesting it
not be copied; and the original pcapng file can be shared anyway. If the
Custom Data portion of the Custom Block or Custom Option contains
sensitive information, then it should be encrypted in some
fashion.</t>
      </section>
      <section anchor="section_vendor_strings">
        <name>Strings vs. Octets</name>
        <t>For the Custom Options, there are two Custom Data formats
supported: a UTF-8 string and a binary data payload. The rationale for
this separation is that a pcapng display application which does not
understand the specific PEN's Custom Option can still display the data
as a string if it's a string type code, rather than as hex-ascii of
the octets.</t>
      </section>
      <section anchor="section_vendor_endian">
        <name>Endianness Issues</name>
        <t>Implementers writing Custom Blocks or binary data Custom Options should
be aware that a pcapng file can be re-written by machines using a
different endianness than the original file, which means all known
fields of the pcapng file will change endianness in the new file.  Since
the Custom Data payload of the Custom Block or the binary data Custom
Option might be an arbitrary sequence of unknown octets to such
machines, they cannot convert multi-octet values inside the Custom Data,
or in the Options  section of a Custom Block,into the appropriate
endianness.</t>
        <t>For example, a little-endian machine can create a new pcapng file and
add some binary data Custom Options to some non-Custom Block(s) in the
file.  This file can then be sent to a big-endian host, which will
convert the Option Type, Option Length, and PEN fields of the options to
big-endian format if it re-writes the file.  However, if the software
reading the file does not understand the contents of all of the Custom
Options, it will leave the Custom Data payload of the options alone (as
little-endian format).  If this file then gets sent to a little-endian
machine, then, when that little-endian machine reads the file, it will,
if the software reading the file understands the contents of all the
Custom Options, it will detect that the file format is big-endian, and
swap the endianness while it parses the file - but that will cause the
Custom Data payload to be incorrect since it was already in
little-endian format.</t>
        <t>In addition, a little-endian machine can create a pcapng file and write
some binary data Custom Blocks, containing options, to the file.  The
file can then be sent to a big-endian host, which, if the software
reading the file does not understand the contents of the Custom Blocks,
will leave the Custom Data and Options alone (as little-endian format).
If this file then gets sent to a little-endian machine, then, when that
little-endian machine reads the file, it will, if the software reading
the file understands the contents of all the Custom Blocks, it will
detect that the file format is big-endian, and swap the endianness while
it parses the file - but that will cause the Custom Data payload, the
Option Type and Option Length values in the Options, and the PEN in any
Custom Options to be incorrect since they were already in little-endian
format.</t>
        <t>Therefore, the vendor should either encode the Custom Data of their
Custom Blocks and Custom Options, the Option Type and Option Length
fields of options in Custom Blocks, and the PEN field of Custom Options
in Custom Blocks in a consistent manner, such as always in big-endian or
always in little-endian format, regardless of the host platform's
endianness, or should encode some flag in the Custom Data payload to
indicate in which endianness the rest of the payload is written.</t>
        <t>The PEN field of a Custom Block, or of a Custom Option not contained in
a Custom Block, MUST be converted by code that reads pcapng files, so
this is not an issue for that field, except for Custom Options in Custom
Blocks.  This is also not an issue for the Custom Data payload of UTF-8
string Custom Options.</t>
      </section>
    </section>
    <section anchor="recommended-file-name-extension-pcapng">
      <name>Recommended File Name Extension: .pcapng</name>
      <t>The recommended file name extension for the "PCAP Next Generation
Capture File Format" specified in this document is ".pcapng".</t>
      <t>On Windows and macOS, files are distinguished by an extension to their
filename. Such an extension is technically not actually required, as
applications should be able to automatically detect the pcapng file
format through the "magic bytes" at the beginning of the file, as some
other UN*X desktop environments do. However, using name extensions makes
it easier to work with files (e.g. visually distinguish file formats) so
it is recommended - though not required - to use .pcapng as the name
extension for files following this specification.</t>
      <t>Please note: To avoid confusion (such as the current usage of
.cap for a plethora of different capture file formats) file
name extensions other than .pcapng should be avoided.</t>
    </section>
    <section anchor="conclusions">
      <name>Conclusions</name>
      <t>The file format proposed in this document should be very versatile
and satisfy a wide range of applications. In the simplest case, it can
contain a raw capture of the network data, made of a series of Simple
Packet Blocks. In the most complex case, it can be used as a repository
for heterogeneous information. In every case, the file remains easy to
parse and an application can always skip the data it is not interested
in; at the same time, different applications can share the file, and
each of them can benefit of the information produced by the others. Two
or more files can be concatenated obtaining another valid file.</t>
    </section>
    <section anchor="implementations">
      <name>Implementations</name>
      <t>Some known implementations that read or write the pcapng file format
are listed on the <eref target="https://github.com/IETF-OPSAWG-WG/pcapng/wiki/Implementations">pcapng GitHub wiki</eref>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD.</t>
      <t>[Open issue: decide whether the block types, option types, NRB Record
types, etc. should be IANA registries. And if so, what the IANA policy
for each should be (see RFC 5226)]</t>
      <section anchor="section_block_code_registry">
        <name>Standardized Block Type Codes</name>
        <t>Every Block is uniquely identified by a 32-bit integer value, stored
in the Block Header.</t>
        <t>As pointed out in <xref target="section_block"/>, Block Type
codes whose Most Significant Bit (bit 31) is set to 1 are reserved for
local use by the application.</t>
        <t>All the remaining Block Type codes (0x00000000 to 0x7FFFFFFF) are
standardized by this document. Requests for new Block Type codes,
Option Type codes, and Secrets Type codes should be made by creating
a pull request to update this document at <eref target="https://github.com/IETF-OPSAWG-WG/pcapng">github.com/IETF-OPSAWG-WG/pcapng</eref>.
The pull request should add a description of the new block, option,
or secret type to <xref target="section_block_definition"/>. The pull request
description should contain a clear request for a new type code
assignment.</t>
        <t>The following is a list of the Standardized Block Type Codes:</t>
        <table anchor="blockcodes">
          <name>Standardized Block Type Codes</name>
          <thead>
            <tr>
              <th align="left">Block Type Code</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00000000</td>
              <td align="left">Reserved ???</td>
            </tr>
            <tr>
              <td align="left">0x00000001</td>
              <td align="left">
                <xref target="section_idb">Interface Description Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x00000002</td>
              <td align="left">
                <xref target="appendix_pb">Packet Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x00000003</td>
              <td align="left">
                <xref target="section_spb">Simple Packet Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x00000004</td>
              <td align="left">
                <xref target="section_nrb">Name Resolution Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x00000005</td>
              <td align="left">
                <xref target="section_isb">Interface Statistics Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x00000006</td>
              <td align="left">
                <xref target="section_epb">Enhanced Packet Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x00000007</td>
              <td align="left">IRIG Timestamp Block (requested by Gianluca Varenni &lt;gianluca.varenni@cacetech.com&gt;, CACE Technologies LLC); code also used for <eref target="https://github.com/google/linux-sensor/blob/master/hone-pcapng.txt">Socket Aggregation Event Block</eref></td>
            </tr>
            <tr>
              <td align="left">0x00000008</td>
              <td align="left">
                <eref target="https://en.wikipedia.org/wiki/ARINC_429">ARINC 429</eref> in AFDX Encapsulation Information Block (requested by Gianluca Varenni &lt;gianluca.varenni@cacetech.com&gt;, CACE Technologies LLC)</td>
            </tr>
            <tr>
              <td align="left">0x00000009</td>
              <td align="left">[systemd Journal Export Block]<xref target="I-D.richardson-opsawg-pcapng-extras"/></td>
            </tr>
            <tr>
              <td align="left">0x0000000A</td>
              <td align="left">
                <xref target="section_dsb">Decryption Secrets Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x00000101</td>
              <td align="left">
                <eref target="https://github.com/HoneProject">Hone Project</eref> <eref target="https://github.com/HoneProject/Linux-Sensor/wiki/Augmented-PCAP-Next-Generation-Dump-File-Format">Machine Info Block</eref> (see also <eref target="https://github.com/google/linux-sensor/blob/master/hone-pcapng.txt">Google version</eref>)</td>
            </tr>
            <tr>
              <td align="left">0x00000102</td>
              <td align="left">
                <eref target="https://github.com/HoneProject">Hone Project</eref> <eref target="https://github.com/HoneProject/Linux-Sensor/wiki/Augmented-PCAP-Next-Generation-Dump-File-Format">Connection Event Block</eref> (see also <eref target="https://github.com/google/linux-sensor/blob/master/hone-pcapng.txt">Google version</eref>)</td>
            </tr>
            <tr>
              <td align="left">0x00000201</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Machine Info Block</td>
            </tr>
            <tr>
              <td align="left">0x00000202</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 1</td>
            </tr>
            <tr>
              <td align="left">0x00000203</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> FD List Block</td>
            </tr>
            <tr>
              <td align="left">0x00000204</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Event Block</td>
            </tr>
            <tr>
              <td align="left">0x00000205</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Interface List Block</td>
            </tr>
            <tr>
              <td align="left">0x00000206</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> User List Block</td>
            </tr>
            <tr>
              <td align="left">0x00000207</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 2</td>
            </tr>
            <tr>
              <td align="left">0x00000208</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Event Block with flags</td>
            </tr>
            <tr>
              <td align="left">0x00000209</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 3</td>
            </tr>
            <tr>
              <td align="left">0x00000210</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 4</td>
            </tr>
            <tr>
              <td align="left">0x00000211</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 5</td>
            </tr>
            <tr>
              <td align="left">0x00000212</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 6</td>
            </tr>
            <tr>
              <td align="left">0x00000213</td>
              <td align="left">
                <eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 7</td>
            </tr>
            <tr>
              <td align="left">0x00000BAD</td>
              <td align="left">
                <xref target="section_custom_block">Custom Block that rewriters can copy into new files</xref></td>
            </tr>
            <tr>
              <td align="left">0x40000BAD</td>
              <td align="left">
                <xref target="section_custom_block">Custom Block that rewriters should not copy into new files</xref></td>
            </tr>
            <tr>
              <td align="left">0x0A0D0D0A</td>
              <td align="left">
                <xref target="section_shb">Section Header Block</xref></td>
            </tr>
            <tr>
              <td align="left">0x0A0D0A00-0x0A0D0AFF</td>
              <td align="left">Reserved. Used to detect trace files corrupted because of file transfers using the HTTP protocol in text mode.</td>
            </tr>
            <tr>
              <td align="left">0x000A0D0A-0xFF0A0D0A</td>
              <td align="left">Reserved. Used to detect trace files corrupted because of file transfers using the HTTP protocol in text mode.</td>
            </tr>
            <tr>
              <td align="left">0x000A0D0D-0xFF0A0D0D</td>
              <td align="left">Reserved. Used to detect trace files corrupted because of file transfers using the HTTP protocol in text mode.</td>
            </tr>
            <tr>
              <td align="left">0x0D0D0A00-0x0D0D0AFF</td>
              <td align="left">Reserved. Used to detect trace files corrupted because of file transfers using the FTP protocol in text mode.</td>
            </tr>
            <tr>
              <td align="left">0x80000000-0xFFFFFFFF</td>
              <td align="left">Reserved for local use.</td>
            </tr>
          </tbody>
        </table>
        <t>[Open issue: reserve 0x40000000-0x7FFFFFFF for do-not-copy-bit
range of base types?]</t>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>Loris Degioanni and Gianluca Varenni were coauthoring this document
before it was submitted to the IETF.</t>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors wish to thank
Anders Broman,
Ulf Lamping,
Richard Sharpe
and many others for their invaluable comments.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.richardson-opsawg-pcaplinktype">
          <front>
            <title>PCAP and PCAPNG LINKTYPE Registry</title>
            <author fullname="Guy Harris" initials="G." surname="Harris">
         </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works Inc</organization>
            </author>
            <date day="6" month="November" year="2022"/>
            <abstract>
              <t>   This document creates a registry for the PCAP and PCAPNG LINKTYPE
   values.  The PCAP and PCAPNG formats are used to save network
   captures from programs such as tcpdump and wireshark, when using
   libraries such as libpcap.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-richardson-opsawg-pcaplinktype-01"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.richardson-opsawg-pcapng-extras">
          <front>
            <title>Additional block types for PCAP Next Generation (pcapng) Capture File Format</title>
            <author fullname="Michael Tüxen" initials="M." surname="Tüxen">
              <organization>Muenster University of Applied Sciences</organization>
            </author>
            <author fullname="Fulvio Risso" initials="F." surname="Risso">
              <organization>Politecnico di Torino</organization>
            </author>
            <author fullname="Jasper Bongertz" initials="J." surname="Bongertz">
              <organization>Airbus Defence and Space CyberSecurity</organization>
            </author>
            <author fullname="Gerald Combs" initials="G." surname="Combs">
              <organization>Wireshark Foundation</organization>
            </author>
            <author fullname="Guy Harris" initials="G." surname="Harris">
         </author>
            <author fullname="Eelco Chaudron" initials="E." surname="Chaudron">
              <organization>Red Hat</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="29" month="July" year="2022"/>
            <abstract>
              <t>   This document contains a number of extensions to the PCAPng file
   format which are outside of the IETF networking mandate.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the OPSAWG Working Group
   mailing list (opsawg@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/opsawg/.

   Source for this draft and an issue tracker can be found at
   https://github.com/pcapng/pcapng.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-richardson-opsawg-pcapng-extras-01"/>
        </reference>
      </references>
    </references>
    <?line 2449?>

<section anchor="appendix_pb">
      <name>Packet Block (obsolete!)</name>
      <t>The Packet Block is obsolete, and MUST NOT be used in new files. Use
the Enhanced Packet Block or Simple Packet Block instead. This section
is for historical reference only.</t>
      <t>A Packet Block was a container for storing packets coming from the
network.</t>
      <figure anchor="formatpb">
        <name>Packet Block Format</name>
        <artwork align="center"><![CDATA[
                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                    Block Type = 0x00000002                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |         Interface ID          |          Drops Count          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                        Timestamp (High)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                        Timestamp (Low)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 |                    Captured Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 |                    Original Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 /                                                               /
   /                          Packet Data                          /
   /              variable length, padded to 32 bits               /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>The Packet Block has the following fields:</t>
      <ul spacing="normal">
        <li>Block Type: The block type of the Packet Block is 2.</li>
        <li>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</li>
        <li>Interface ID: specifies the interface this packet comes from;
the correct interface will be the one whose Interface Description
Block (within the current Section of the file) is identified by the
same number (see <xref target="section_idb"/>) of this field. The
interface ID MUST be valid, which means that an matching interface
description block MUST exist.</li>
        <li>Drops Count: a local drop counter. It specifies the number of
packets lost (by the interface and the operating system) between
this packet and the preceding one. The value xFFFF (in hexadecimal)
is reserved for those systems in which this information is not
available.</li>
        <li>Timestamp (High) and Timestamp (Low): timestamp of the packet.
The format of the timestamp is the same as was already defined
for the Enhanced Packet Block (<xref target="section_epb"/>).</li>
        <li>Captured Packet Length: number of octets captured from the
packet (i.e. the length of the Packet Data field). It will be the
minimum value among the Original Packet Length and the
snapshot length for the interface (SnapLen, defined in <xref target="format_idb"/>). The value of this field does
not include the padding octets added at the end of the Packet
Data field to align the Packet Data field to a 32-bit
boundary.</li>
        <li>Original Packet Length: actual length of the packet when it was
transmitted on the network. It can be different from Captured Packet
Length if the packet has been truncated by the capture process.</li>
        <li>Packet Data: the data coming from the network, including
link-layer headers. The actual length of this field is
Captured Packet Length plus the padding to a 32-bit
boundary. The format of the link-layer headers depends on
the LinkType field specified in the Interface Description
Block (see <xref target="section_idb"/>) and it is specified
in the entry for that format in <xref target="I-D.richardson-opsawg-pcaplinktype"/>.</li>
        <li>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</li>
      </ul>
      <t>In addition to the options defined in <xref target="section_opt"/>,
the following options were valid within this block:</t>
      <table anchor="optionspb">
        <name>Packet Block Options</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Type</th>
            <th align="left">Length</th>
            <th align="left">Multiple allowed?</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">pack_flags</td>
            <td align="left">2</td>
            <td align="left">4</td>
            <td align="left">no</td>
          </tr>
          <tr>
            <td align="left">pack_hash</td>
            <td align="left">3</td>
            <td align="left">variable</td>
            <td align="left">yes</td>
          </tr>
        </tbody>
      </table>
      <dl indent="8" newline="true">
        <dt>pack_flags:</dt>
        <dd>
          <t>The pack_flags
option is the same as the epb_flags of the enhanced packet
block.</t>
        </dd>
      </dl>
      <t>Example: '0'.</t>
      <dl indent="8" newline="true">
        <dt>pack_hash:</dt>
        <dd>
          <t>The pack_hash
option is the same as the epb_hash of the enhanced packet block.</t>
        </dd>
      </dl>
      <t>Examples: '02 EC 1D 87 97', '03 45 6E C2 17 7C 10 1E 3C 2E 99 6E
C2 9A 3D 50 8E'.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
