<?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.7.34 (Ruby 3.4.8) -->
<?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-05" category="info" tocInclude="true" sortRefs="false" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="pcapng">PCAP Now Generic (pcapng) Capture File Format</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-pcapng-05"/>
    <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="2026" month="March" day="17"/>
    <abstract>
      <?line 86?>

<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 93?>

<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>
            <t>Block Type (32 bits): a unique unsigned integer 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"/>.</t>
          </li>
          <li>
            <t>Block Total Length (32 bits): an unsigned integer 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.</t>
          </li>
          <li>
            <t>Block Body: content of the block.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, in octets. This
field is duplicated to permit backward file navigation.</t>
          </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>
            <t><xref target="section_shb">Section Header Block</xref>: it defines the most important characteristics of the
capture file.</t>
          </li>
        </ul>
        <t>(2) Optional: The following blocks MAY appear in a file:</t>
        <ul spacing="normal">
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><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.</t>
          </li>
          <li>
            <t><xref target="section_custom_block">Custom Block</xref>: it
contains vendor-specific data in a portable fashion.</t>
          </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>
            <t><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>.</t>
          </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>
            <t>Alternative Packet Blocks</t>
          </li>
          <li>
            <t>Compression Block</t>
          </li>
          <li>
            <t>Encryption Block</t>
          </li>
          <li>
            <t>Fixed Length Block</t>
          </li>
          <li>
            <t>Directory Block</t>
          </li>
          <li>
            <t>Traffic Statistics and Monitoring Blocks</t>
          </li>
          <li>
            <t>Event/Security Blocks</t>
          </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>
            <t>Option Type (16 bits): an unsigned integer 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"/>).</t>
          </li>
          <li>
            <t>Option Length (16 bits): an unsigned integer that contains
the actual length of the following 'Option Value' field
without the padding octets.</t>
          </li>
          <li>
            <t>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.</t>
          </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 19373 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>
              <t>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.</t>
            </li>
            <li>
              <t>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.</t>
            </li>
            <li>
              <t>Custom Data: the custom data, padded to a 32-bit boundary.</t>
            </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.
Implementations MAY discard a string that are invalid UTF-8 or MAY repair the string by
replacing invalid octet sequences with valid sequences.
For example such using the sequence for a Unicode REPLACEMENT CHARACTER.
Implementations that write string fields MUST write only valid UTF-8 strings.</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>
                <t>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.</t>
              </li>
              <li>
                <t>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.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>Major Version (16 bits): an unsigned integer, giving the
number of the current major version of the format. The
value for the current version of the format is 1
(big-endian 0x00 0x01 or little-endian 0x01 0x00).</t>
          </li>
          <li>
            <t>Minor Version (16 bits): an unsigned integer, giving the
number of the current minor version of the format. The
value for the current version of the format is 0.</t>
          </li>
          <li>
            <t>Section Length (64 bits): a signed integer 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.</t>
          </li>
          <li>
            <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
          </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
32-bit unsigned integer (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>
            <t>Block Type: The block type of the Interface Description Block
is 1.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </li>
          <li>
            <t>LinkType (16 bits): an unsigned integer that indicates the link layer
type of this interface; it is a value as defined in the PCAP-related
LinkType List registry, as defined in <xref target="I-D.ietf-opsawg-pcaplinktype"/>.</t>
          </li>
          <li>
            <t>Reserved (16 bits): not used - MUST be filled with 0 by
pcapng file writers, and MUST be ignored by pcapng file
readers.</t>
          </li>
          <li>
            <t>SnapLen (32 bits): an unsigned integer that indicates 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.</t>
          </li>
          <li>
            <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
          </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>
            <tr>
              <td align="left">if_iana_tzname</td>
              <td align="left">18</td>
              <td align="left">variable</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 integer that indicates 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.  This option has
never been specified in greater detail, and, unless it were to
identify something such as an <eref target="https://www.iana.org/time-zones">IANA time zone database</eref>
timezone, would be insufficient for converting between UTC and local
time.  Therefore, it SHOULD NOT be used; instead, the if_iana_tzname
option SHOULD be used if time zone information is to be specified.</t>
          </dd>
        </dl>
        <t>Example: none</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 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 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 not present, an offset of 0 is assumed
(i.e., timestamps in blocks are absolute timestamps).
</t>
            <t>This offset is not intended to be used as an offset between local
time and UTC; for this purpose, the if_iana_tzname option SHOULD be
used to specify a timezone.</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_txspeed option is a 64-bit unsigned integer
that indicates 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 integer
that indicates 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>
        <dl indent="8" newline="true">
          <dt>if_iana_tzname:</dt>
          <dd>
            <t>The if_iana_tzname
option is a UTF-8 string that indicates the <eref target="https://www.iana.org/time-zones">IANA time zone database</eref>
timezone name for the IANA database timezone in which the interface
is located. The string is not zero-terminated.</t>
          </dd>
        </dl>
        <t>Examples: "Africa/Nairobi", "Asia/Kolkata", "America/Sao_Paulo",
"Europe/Berlin".</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>
            <t>it stores the Interface Identifier as a 32-bit unsigned integer.
This is a requirement when a capture stores packets coming from a
large number of interfaces;</t>
          </li>
          <li>
            <t>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.</t>
          </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 |                       (Upper 32 bits)                         |
   + - - - - - - - - - - - -  Timestamp  - - - - - - - - - - - - - +
16 |                       (Lower 32 bits)                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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>
            <t>Block Type: The block type of the Enhanced Packet Block is 6.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </li>
          <li>
            <t>Interface ID (32 bits): an unsigned integer 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.</t>
          </li>
          <li>
            <t>Timestamp (64 bits): two 32-bit unsigned integers, representing a single
64-bit unsigned integer, with the first value being the upper 32 bits
of that integer and the second value being the lower 32 bits of that
integer.  The 64-bit unsigned integer is a count of units of time.  </t>
            <t>
The length of a unit of time is specified by the 'if_tsresol' option
(see <xref target="format_idb"/>) of the Interface Description Block specified by
the Interface ID.  </t>
            <t>
The 'if_tsoffset' option value, converted from seconds to units of
time, plus the timestamp value, represents the number of units of
time that have elapsed since 1970-01-01 00:00:00 UTC.  </t>
            <t>
Note that, unlike timestamps in the pcap 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.</t>
          </li>
          <li>
            <t>Captured Packet Length (32 bits): an unsigned integer 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.</t>
          </li>
          <li>
            <t>Original Packet Length (32 bits): an unsigned integer that indicates the
number of octets of packet data that would have been provided had the
packet not been truncated to the snapshot length for the interface or
to a length limit imposed by the capture mechanism.  If no truncation
was done, it will be the same as the Captured Packet Length, but it
will 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>
            <t>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.ietf-opsawg-pcaplinktype"/>.</t>
          </li>
          <li>
            <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
          </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
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 contains link-layer information about
the packet.</t>
          <t>The word is encoded as a 32-bit unsigned 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</td>
                <td align="left">Checksum not ready, as a consequence of checksum offloading, e.g. a transmitted packet on an interface doing checksum offloading, so that the host networking stack doesn't compute and fill in the checksum before handing the packet either to the network adapter or the wraparound code path in the packet capture mechanism.</td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">Checksum valid, the checksum has already been checked on the receive path before it was handed to the packet capture mechanism, so there's no need for the packet analyzer to check it.</td>
              </tr>
              <tr>
                <td align="left">11</td>
                <td align="left">TCP segmentation offloaded, this is either a received packet corresponding to several received link-layer packets, with reassembly having been done before the packet was handed to the packet capture mechanism, or a transmitted packet that will correspond to several link-layer packets after being fragmented, but that was wrapped around to the packet capture mechanism before the fragmentation occurred.</td>
              </tr>
              <tr>
                <td align="left">12-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 bits 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>
            <t>Block Type: The block type of the Simple Packet Block is 3.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </li>
          <li>
            <t>Original Packet Length (32 bits): an unsigned integer
that indicates 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.</t>
          </li>
          <li>
            <t>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.ietf-opsawg-pcaplinktype"/>.</t>
          </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>As a Simple Packet Block does not contain an Interface ID field, in a
Section that has more than one interface, only packets received or
transmitted on the interface described by the first Interface
Description Block can be contained in a Simple Packet Block; packets
received or transmitted on any other interface MUST be contained in an
Enhanced Packet Block.</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>
            <t>Block Type: The block type of the Name Resolution Block is 4.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </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 five 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 |                       (Upper 32 bits)                         |
   + - - - - - - - - - - - -  Timestamp  - - - - - - - - - - - - - +
16 |                       (Lower 32 bits)                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The fields have the following meaning:</t>
        <ul spacing="normal">
          <li>
            <t>Block Type: The block type of the Interface Statistics Block is
5.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </li>
          <li>
            <t>Interface ID (32 bits): an unsigned integer that specifies the
interface to which these statistics refer; 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.</t>
          </li>
          <li>
            <t>Timestamp (64 bits): the time at which the statistics values were
taken; two 32-bit unsigned integers, in the same format as defined
for timestamps in the Enhanced Packet Block (<xref target="section_epb"/>),
using the 'if_tsresol' and 'if_tsoffset' values from the Interface
Description Block specified by the Interface ID.</t>
          </li>
          <li>
            <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
          </li>
        </ul>
        <t>All the statistics 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 that traffic capture started on this
interface, consisting of two 32-bit unsigned integers, in the same
format as defined for timestamps in the Enhanced Packet Block
(<xref target="section_epb"/>), using the 'if_tsresol' and 'if_tsoffset' values
from the Interface Description Block specified by the Interface ID.</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 that traffic capture ended on this
interface, consisting of two 32-bit unsigned integers, in the same
format as defined for timestamps in the Enhanced Packet Block
(<xref target="section_epb"/>), using the 'if_tsresol' and 'if_tsoffset' values
from the Interface Description Block specified by the Interface ID.</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
that were received from the physical interface, starting at 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
that were dropped by the interface due to lack of resources,
starting at 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 that were accepted by the 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
that were 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 that were 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>
            <t>Block Type: The block type of the Decryption Secrets Block is
10.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </li>
          <li>
            <t>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"/>.</t>
          </li>
          <li>
            <t>Secrets Length (32 bits): an unsigned integer that indicates
the size of the following Secrets field, without any padding
octets.</t>
          </li>
          <li>
            <t>Secrets Data: binary data containing secrets, padded to a 32-bit
boundary.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
        </ul>
        <t>The following is a list of Secrets Types.</t>
        <dl indent="8" newline="true">
          <dt>0x5353484b:</dt>
          <dd>
            <t>SSH Key Log.
Every line consists of a cookie, key type, and key separated by one space.
The cookie is the hex-encoded (client or server) 16 octets cookie
(32 characters) found in the SSH_MSG_KEXINIT sent during
<eref target="https://datatracker.ietf.org/doc/html/rfc4253#section-7.1">algorithm negotiation</eref>
by the endpoint whose private random is disclosed.
The key type is either SHARED_SECRET or PRIVATE_KEY.
The key is hex-encoded and either the shared secret ('K' in
<eref target="https://datatracker.ietf.org/doc/html/rfc4253#section-8">RFC 4253</eref>) or the
private random number (referred to as 'x' for the client and 'y'
for the server in RFC 4253) used to generate the shared secret during DH
key exchange; its length depends on the algorithm.
Every line MUST be terminated with either a carriage return and linefeed
('\r\n') or a linefeed ('\n').
Tools MUST be able to handle both line endings.</t>
          </dd>
        </dl>
        <dl indent="8" newline="true">
          <dt>0x544c534b:</dt>
          <dd>
            <t>TLS Key Log.
This format is described in <xref target="I-D.ietf-tls-keylogfile"/>.
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>0x55414b4c:</dt>
          <dd>
            <t><eref target="https://opcfoundation.org/about/opc-technologies/opc-ua">OPC UA</eref> Key Log.
Every line consists of a key/value pair separated by a colon and one space ('<tt>: </tt>').
Every line must be terminated by a linefeed ('<tt>\n</tt>').
The key name is composed of four parts separated by underscores ('<tt>_</tt>').
</t>
            <ul spacing="normal">
              <li>
                <t>Keyset Name: Either 'server' or 'client'.      </t>
                <t>
The Client keys are used to secure Messages sent by the Client. The
  Server keys are used to secure Messages sent by the Server.</t>
              </li>
              <li>
                <t>Key Material Type:      </t>
                <ul spacing="normal">
                  <li>
                    <t>'iv': initialization vector</t>
                  </li>
                  <li>
                    <t>'key': AES key</t>
                  </li>
                  <li>
                    <t>'siglen': signature length in octets. This depends on the used
security policy.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Secure Channel ID: Encoded as decimal value.</t>
              </li>
              <li>
                <t>Token ID: Encoded as decimal value.</t>
              </li>
            </ul>
            <t>The value contains the key data encoded as hexadecimal string with upper
case letters.  To create a valid keyset, four entries for one combination of
secure channel ID and token ID are required. These entries include 'iv' and
'key' for both 'server' and 'client'.</t>
            <t>Currently, AES-128-CBC and AES-256-CBC are supported encryption algorithms:</t>
            <ul spacing="normal">
              <li>
                <t>AES-128-CBC:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>IV Length: 16 octets</t>
                  </li>
                  <li>
                    <t>Key Length: 16 octets</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>AES-256-CBC:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>IV Length: 16 octets</t>
                  </li>
                  <li>
                    <t>Key Length: 32 octets</t>
                  </li>
                </ul>
              </li>
            </ul>
            <t>More details on OPC UA Security can be found in the <eref target="https://opcfoundation.org/developer-tools/documents/view/163">OPC UA Specification Part 6 - Mappings</eref>,
 the security policies are defined in <eref target="https://opcfoundation.org/developer-tools/documents/view/164">OPC UA Specification Part 7 - Profiles</eref>,
 or can be found online on the <eref target="https://opcfoundation.org/profilereporting">Profile Reporting website</eref>.</t>
          </dd>
          <dt>0x57474b4c:</dt>
          <dd>
            <t>WireGuard Key Log.
Every line consists of the key type, equals sign ('='), and the
base64-encoded 32-octet 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                            |
   |                            NWK 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>
        <dl indent="8" newline="true">
          <dt>0x45535053:</dt>
          <dd>
            <t>ESP Security Association keys.
This is in CSV format <xref target="RFC4180"/>, with each record containing fields that
describe an ESP security association. Each line has the following columns:
"Protocol","Src IP","Dest IP","SPI","Encryption","Encryption Key",
"Authentication","Authentication Key","SN","ESN High Bits".
All columns must be filled in the order specified here with a value and the header line is ignored if present.
If a column contains an unknown value, the line should be skipped.
If the line contains more columns than what is expected by the reader, the extra ones should be ignored.
If the line contains fewer columns than what is expected by the reader, it should either apply a default
value (if possible) or the line should be skipped.
</t>
            <ul spacing="normal">
              <li>
                <t>Protocol: Protocol used. Can be either "IPv4", "IPv6" or "Any".</t>
              </li>
              <li>
                <t>Src IP: Source IP address. String containing the address, wildcard (*) character is supported.</t>
              </li>
              <li>
                <t>Dest IP: Destination IP address. String containing the address, wildcard (*) character is supported.</t>
              </li>
              <li>
                <t>SPI: Security Parameter Index. String of a 32 bits integer in hexadecimal format (starting with 0x).</t>
              </li>
              <li>
                <t>Encryption: Encryption algorithm. Can be "NULL", "TripleDES-CBC [RFC2451]", "AES-CBC [RFC3602]",
"AES-CTR [RFC3686]", "DES-CBC [RFC2405]", "CAST5-CBC [RFC2144]", "BLOWFISH-CBC [RFC2451]", "TWOFISH-CBC",
"AES-GCM [RFC4106]", "AES-GCM with 8 octet ICV [RFC4106]", "AES-GCM with 12 octet ICV [RFC4106]",
"AES-GCM with 16 octet ICV [RFC4106]", "AES-GCM with IIV and 16 octet ICV [RFC4106 &amp; RFC8750]",
"ChaCha20 with Poly1305 [RFC7634]" or "ChaCha20 with Poly1305 and IIV [RFC7634 &amp; RFC8750]".
New algorithms might be added in the future. The algorithm names are
exactly as quoted.</t>
              </li>
              <li>
                <t>Encryption Key: Encryption key. String containing the key in heaxadecimal format (starting with 0x).</t>
              </li>
              <li>
                <t>Authentication: Authentication algorithm. Can be "NULL", "HMAC-SHA-1-96 [RFC2404]",
"HMAC-SHA-256-96 [draft-ietf-ipsec-ciph-sha-256-00]", "HMAC-SHA-256-128 [RFC4868]",
"HMAC-SHA-384-192 [RFC4868]", "HMAC-SHA-512-256 [RFC4868]", "HMAC-MD5-96 [RFC2403]",
"MAC-RIPEMD-160-96 [RFC2857]", "ANY 64 bit authentication [no checking]",
"ANY 96 bit authentication [no checking]", "ANY 128 bit authentication [no checking]",
"ANY 192 bit authentication [no checking]" or "ANY 256 bit authentication [no checking]".
New algorithms might be added in the future. The algorith names are
exactly as quote.</t>
              </li>
              <li>
                <t>Authentication Key:  Authentication key. String containing the key in heaxadecimal format (starting with 0x).</t>
              </li>
              <li>
                <t>SN: Sequence number length. Can be "32-bit" or "64-bit".</t>
              </li>
              <li>
                <t>ESN High Bits: Extended Sequence Number upper 32 bits. String of a 32 bits integer in hexadecimal
format (starting with 0x).</t>
              </li>
            </ul>
          </dd>
        </dl>
      </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>
            <t>Block Type: The block type of the Custom Block is 0x00000BAD or
0x40000BAD, as described previously.</t>
          </li>
          <li>
            <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>Custom Data: the custom data, padded to a 32-bit boundary.</t>
          </li>
          <li>
            <t>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"/>.</t>
          </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 Now Generic
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 Block Type and Byte-Order Magic fields in the Section
Header Block at the beginning of the file, as some desktop environments
other than those of Windows and macOS 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 unsigned integer, 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; XX, in an
item in the list means that the item refers to all possible values in
which the "XX" is from 00 to FF:</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">0x0A0D0AXX</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">0xXX0A0D0A</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">0xXX0A0D0D</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">0x0D0D0AXX</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 anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-opsawg-pcaplinktype">
          <front>
            <title>Link-Layer Types for PCAP-related Capture File Formats</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="2" month="March" year="2026"/>
            <abstract>
              <t>   This document describes a set of Packet CAPture (PCAP)-related
   LinkType values and creates an IANA registry for those values.  These
   values are used by the PCAP and PCAP-Now-Generic specifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-pcaplinktype-17"/>
        </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>
        <reference anchor="RFC4180">
          <front>
            <title>Common Format and MIME Type for Comma-Separated Values (CSV) Files</title>
            <author fullname="Y. Shafranovich" initials="Y." surname="Shafranovich"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This RFC documents the format used for Comma-Separated Values (CSV) files and registers the associated MIME type "text/csv". This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4180"/>
          <seriesInfo name="DOI" value="10.17487/RFC4180"/>
        </reference>
      </references>
      <references anchor="sec-informative-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>
        <reference anchor="I-D.ietf-tls-keylogfile">
          <front>
            <title>The SSLKEYLOGFILE Format for TLS</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="9" month="June" year="2025"/>
            <abstract>
              <t>   A format that supports logging information about the secrets used in
   a TLS connection is described.  Recording secrets to a file in
   SSLKEYLOGFILE format allows diagnostic and logging tools that use
   this file to decrypt messages exchanged by TLS endpoints.  This
   format is intended for use in systems where TLS only protects test
   data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-keylogfile-05"/>
        </reference>
      </references>
    </references>
    <?line 2601?>

<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 |                       (Upper 32 bits)                         |
   + - - - - - - - - - - - -  Timestamp  - - - - - - - - - - - - - +
16 |                       (Lower 32 bits)                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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>
          <t>Block Type: The block type of the Packet Block is 2.</t>
        </li>
        <li>
          <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>Timestamp (64 bits): two 32-bit unsigned integers, in the same format
as defined for timestamps in the Enhanced Packet Block (<xref target="section_epb"/>),
using the 'if_tsresol' and 'if_tsoffset' values from the Interface
Description Block specified by the Interface ID.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>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.ietf-opsawg-pcaplinktype"/>.</t>
        </li>
        <li>
          <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
        </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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
RItpZzweCxunPkYBIY008Wz708lpZB9+FjmN+M9PJaeNK1EeHtawYJHXTgiT
mq+y7ObUjDzZNcwfdZ4AeV2nXCUiZouGJHpj0/solVZuUNnRkmztCIIaSS89
guyiaYSrQrcalba1QyyBOxtcWgpU+LLbMd3x4gRZ5/1zFw977eEMZQdm/GJ3
DDrbNZGuaLhT3BEm5tuhqRqwIyyNJIU7LG0Rc4CNTRJB/q9UIBT1Gmn1RElC
hA+mEsSm+KcxkWolR1uF9kIeJwFV4HMUubliTjfS6zjlpABlsZTM5bzc/apf
IPBZW2KdK1Xfe/9Y1vLy/J0t7fqr2QzDVSWkFRvlJfy9tfA1IGeBfsLwdLuh
kReueqtFaFn0qj9dFwgaLOIukaC4AV4qmMjq9m0vqrhj+swgDhT/1vlHtFX3
ibT8sLdrTgBV6EBiWYcZ2rqwbuwMRMVpXAy4yjk7vjRFOPKOCAR0f3JdzK1r
z2JX8muulq/kx7rT4u+99B9gFZgv8McTc3qyiWuG8bPT706PTK/b2Vy0VkWv
cM8t0t11z711R4Ff+z32W3KV3WfRqMzBZLLfdzuPH3ce4SJ/evt6ijJ/Wc6S
fSYrsepzxCxUJG3JNFIrvaY3yKWr4mQRdyMvN/x1YbbMb/7CHtPL0gD/4lfS
wgSey2s5cdZgMfmonzXFbUV+fk4xPbHHo1eAwTqva70fyk1ZRprlFgVrKpDt
uXxteCk3fWjYeG2RdTjpPDLAot+dS8u2Rkm8bbkk2K51W9PDZa313MRE1EHb
kDjaO9gcH3rVEG0enCyiFGMuSMMz83ISPaHdNKiSQZRZa1U1XZ8wQ1vSiLLZ
skv5E3G0J1299C02BN+cYq0OpO10RRxKGxIcOdnauXI5ly/rOU3iQ7B+8V1l
hzmdgn5XGPV+T6jWiM0LyBpwq0CNGiv4cEGahpIk8rpF+YN8tmcBwM7FxEte
+Gs0ZhWkLmJMi50Z3lZUv0xsCXsS/bLmHNkuPCUvwrFLl/+YwrKbUiNbGzRM
EE1xP2jCBLtxFSXd0Uymt9Rao7xQMZZrngeH+gQwSCwPEVskETB1jFb5UR23
t/Rgl0TfsaTstq1FnzWgDo9XiNdF7HtReCVcKHNV1FAZDuv7Ab1LWXi3YRY+
vVH3Bwd4GBv1xdYSwLRkzgnSxtALKZqVSb0f2pmsoY9MLDWSmukGD634xduc
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
8KMEPxocwf4JHOzC4Yhv6BcwTabMuMIBAA==

-->

</rfc>
