<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc inline="yes"?>
<?rfc sortrefs="no"?>
<?rfc strict="yes"?>

<rfc ipr="trust200902" docName="draft-tuexen-opsawg-pcapng-04" category="info">

  <front>
    <title abbrev="pcapng">PCAP Next Generation (pcapng) Capture File Format</title>

    <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></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="2021" month="October" day="04"/>

    
    
    

    <abstract>


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


  </front>

  <middle>


<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.</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 title="Basic block structure." anchor="formatblock"><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>

<t><list style="symbols">
  <t>Block Type (32 bits): a unique unsigned value that
identifies the block. Values whose Most Significant Bit
(MSB) is equal to 1 are reserved for local use. They can be
used to make extensions to the file format to save private
data to the file. The list of currently defined types can
be found in <xref target="section_block_code_registry"/>.</t>
  <t>Block Total Length (32 bits): an unsigned value giving
the total size of this block, in octets. For instance, the
length of a block that does not have a body is 12 octets: 4
octets for the Block Type, 4 octets for the initial Block
Total Length and 4 octets for the trailing Block Total
Length. This value MUST be a multiple of 4.</t>
  <t>Block Body: content of the block.</t>
  <t>Block Total Length: total size of this block, in octets. This
field is duplicated to permit backward file navigation.</t>
</list></t>

<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>The following MANDATORY block MUST appear at least once in each file:</t>

<t><list style="symbols">
  <t><xref target="section_shb">Section Header Block</xref>: it defines the most important characteristics of the
capture file.</t>
</list></t>

<t>The following OPTIONAL blocks MAY appear in a file:</t>

<t><list style="symbols">
  <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>
  <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>
  <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>
  <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>
  <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>
  <t><xref target="section_custom_block">Custom Block</xref>: it
contains vendor-specific data in a portable fashion.</t>
</list></t>

<t>The following OBSOLETE block SHOULD NOT appear in newly written
files (but is documented in the Appendix for reference):</t>

<t><list style="symbols">
  <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>
</list></t>

<t>The following EXPERIMENTAL blocks are considered interesting but
the authors believe that they deserve more in-depth discussion before
being defined:</t>

<t><list style="symbols">
  <t>Alternative Packet Blocks</t>
  <t>Compression Block</t>
  <t>Encryption Block</t>
  <t>Fixed Length Block</t>
  <t>Directory Block</t>
  <t>Traffic Statistics and Monitoring Blocks</t>
  <t>Event/Security Blocks</t>
</list></t>

<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 title="Logical Block Hierarchy of a pcapng File" anchor="block-hierarchy"><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 title="File structure example: Typical layout with a single Section Header Block" anchor="fssample-SHB"><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 title="File structure example: three Section Header Blocks in a single file" anchor="fssample-SHB3"><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 title="File structure example: a pcapng file similar to a classical libpcap file" anchor="fssample-minimum"><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 title="File structure example: complex pcapng file" anchor="fssample-full"><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>

<t><list style="symbols">
  <t>Option Type (16 bits): an unsigned value that contains
the code that specifies the type of the current TLV record.
Option types whose Most Significant Bit is equal to one are
reserved for local use; therefore, there is no guarantee
that the code used is unique among all capture files
(generated by other applications), and is most certainly not
portable.  For cross-platform globally unique
vendor-specific extensions, the Custom Option MUST be used
instead, as defined in <xref target="section_custom_option"/>).</t>
  <t>Option Length (16 bits): an unsigned value that contains
the actual length of the following 'Option Value' field
without the padding octets.</t>
  <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>
</list></t>

<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 a 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 title="Options Format" anchor="formatopt"><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 Code              |         Option Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                       Option Value                            /
/              variable length, padded to 32 bits               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                                                               /
/                 . . . other options . . .                     /
/                                                               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Option Code == opt_endofopt |   Option Length == 0          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The following codes can always be present in any optional field:</t>

<texttable title="Common Options" anchor="optionsall">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Multiple allowed?</ttcol>
      <c>opt_endofopt</c>
      <c>0</c>
      <c>0</c>
      <c>no</c>
      <c>opt_comment</c>
      <c>1</c>
      <c>variable</c>
      <c>yes</c>
      <c>opt_custom</c>
      <c>2988/2989/19372/19373</c>
      <c>variable, minimum 4</c>
      <c>yes</c>
</texttable>

<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 title="Custom Options Format" anchor="formatcustomopt"><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 Code        |         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>

<t><list style="symbols">
  <t>Custom Option Code: The code number for the Custom Option, which
can be one of the following decimal numbers:  <vspace blankLines='1'/>
    <dl indent="8" newline="true">
      <dt>
2988:      </dt>
      <dd>
        <t>This option 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>
  <vspace blankLines='1'/>
    <dl indent="8" newline="true">
      <dt>
2989:      </dt>
      <dd>
        <t>This option code
identifies a Custom Option containing binary octets in the
Custom Data portion. This Custom Option can be safely copied
to a new file if the pcapng file is manipulated by an
application; otherwise 19372 should be used instead. See <xref target="section_vendor_copy"/> for details.</t>
      </dd>
    </dl>
  <vspace blankLines='1'/>
    <dl indent="8" newline="true">
      <dt>
19372:      </dt>
      <dd>
        <t>This option 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>
  <vspace blankLines='1'/>
    <dl indent="8" newline="true">
      <dt>
19373:      </dt>
      <dd>
        <t>This option 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>
  </t>
  <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>
  <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>
  <t>Custom Data: the custom data, padded to a 32 bit boundary.</t>
</list></t>

</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>
</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 title="Section Header Block Format" anchor="format_shb"><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>

<t><list style="symbols">
  <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:  <list style="numbers">
      <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>
      <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>
    </list></t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <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>
  <t>Major Version (16 bits): an unsigned value, giving the
number of the current major version of the format. The
value for the current version of the format is 1.</t>
  <t>Minor Version (16 bits): an unsigned value, giving the
number of the current minor version of the format. The
value for the current version of the format is 0.</t>
  <t>Section Length (64 bits): a signed value specifying the
length in octets of the following section, excluding the
Section Header Block itself.  This field can be used to skip
the section, for faster navigation inside large files. If
the Section Length is -1 (0xFFFFFFFFFFFFFFFF), this means
that the size of the section is not specified, and the only
way to skip the section is to parse the blocks that it
contains. Please note that if this field is valid (i.e.
not negative), its value is always a multiple of 4, as all
the blocks are aligned to and padded to 32-bit (4 octet)
boundaries. Also, special care should be taken in accessing
this field: since the alignment of all the blocks in the
file is 32-bits, this field is not guaranteed to be aligned
to a 64-bit boundary.  This could be a problem on 64-bit
processors.</t>
  <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
</list></t>

<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 incomparible
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 posssible 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 opption 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>

<texttable title="Section Header Block Options" anchor="options_shb">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Multiple allowed?</ttcol>
      <c>shb_hardware</c>
      <c>2</c>
      <c>variable</c>
      <c>no</c>
      <c>shb_os</c>
      <c>3</c>
      <c>variable</c>
      <c>no</c>
      <c>shb_userappl</c>
      <c>4</c>
      <c>variable</c>
      <c>no</c>
</texttable>

<dl indent="8" newline="true">
  <dt>
shb_hardware:  </dt>
  <dd>
    <t>The
shb_hardware option is a UTF-8 string containing the description
of the hardware used to create this section. The string is
not zero-terminated.</t>
  </dd>
</dl>

<t>Examples: "x86 Personal Computer", "Sun Sparc Workstation".</t>

<dl indent="8" newline="true">
  <dt>
shb_os:  </dt>
  <dd>
    <t>The shb_os option
is a UTF-8 string containing the name of the operating system used
to create this section. The string is not zero-terminated.</t>
  </dd>
</dl>

<t>Examples: "Windows XP SP2", "openSUSE 10.2".</t>

<dl indent="8" newline="true">
  <dt>
shb_userappl:  </dt>
  <dd>
    <t>The
shb_userappl option is a UTF-8 string containing the name of the
application used to create this section. The string is not
zero-terminated.</t>
  </dd>
</dl>

<t>Examples: "dumpcap V0.99.7".</t>

<t>[Open issue: does a program which re-writes a capture file change
the original hardware/os/application info?]</t>

</section>
<section anchor="section_idb"><name>Interface Description Block</name>

<t>An Interface Description Block (IDB) is the container for
information describing an interface on which packet data is
captured.</t>

<t>Tools that write / read the capture file associate an incrementing
unsigned 32-bit number (starting from '0') to each Interface
Definition Block, called the Interface ID for the interface in
question. This number is unique within each Section and
identifies the interface to which the IDB refers; it is only
unique inside the current section, so, two Sections can have
different interfaces identified by the same Interface ID values.
This unique identifier is referenced by other blocks, such as
Enhanced Packet Blocks and Interface Statistic Blocks, to
indicate the interface to which the block refers (such the
interface that was used to capture the packet that an Enhanced
Packet Block contains or to which the statistics in an Interface
Statistic Block refer).</t>

<t>There must be an Interface Description Block for each
interface to which another block 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>An Interface Description Block is valid only inside the section
to which it belongs. The structure of a Interface Description Block is
shown in <xref target="format_idb"/>.</t>

<figure title="Interface Description Block Format" anchor="format_idb"><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>

<t><list style="symbols">
  <t>Block Type: The block type of the Interface Description Block
is 1.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <t>LinkType (16 bits): an unsigned value that defines the
link layer type of this interface.  The list of Standardized
Link Layer Type codes is available in <xref target="LINKTYPES"/>.</t>
  <t>Reserved (16 bits): not used - MUST be filled with 0 by
pcapng file writers, and MUST be ignored by pcapng file
readers.</t>
  <t>SnapLen (32 bits): an unsigned value indicating the
maximum number of octets captured from each packet.  The
portion of each packet that exceeds this value will not be
stored in the file. A value of zero indicates no limit.</t>
  <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
</list></t>

<t>In addition to the options defined in <xref target="section_opt"/>,
the following options are valid within this block:</t>

<texttable title="Interface Description Block Options" anchor="optionsifb">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Multiple allowed?</ttcol>
      <c>if_name</c>
      <c>2</c>
      <c>variable</c>
      <c>no</c>
      <c>if_description</c>
      <c>3</c>
      <c>variable</c>
      <c>no</c>
      <c>if_IPv4addr</c>
      <c>4</c>
      <c>8</c>
      <c>yes</c>
      <c>if_IPv6addr</c>
      <c>5</c>
      <c>17</c>
      <c>yes</c>
      <c>if_MACaddr</c>
      <c>6</c>
      <c>6</c>
      <c>no</c>
      <c>if_EUIaddr</c>
      <c>7</c>
      <c>8</c>
      <c>no</c>
      <c>if_speed</c>
      <c>8</c>
      <c>8</c>
      <c>no</c>
      <c>if_tsresol</c>
      <c>9</c>
      <c>1</c>
      <c>no</c>
      <c>if_tzone</c>
      <c>10</c>
      <c>4</c>
      <c>no</c>
      <c>if_filter</c>
      <c>11</c>
      <c>variable, minimum 1</c>
      <c>no</c>
      <c>if_os</c>
      <c>12</c>
      <c>variable</c>
      <c>no</c>
      <c>if_fcslen</c>
      <c>13</c>
      <c>1</c>
      <c>no</c>
      <c>if_tsoffset</c>
      <c>14</c>
      <c>8</c>
      <c>no</c>
      <c>if_hardware</c>
      <c>15</c>
      <c>variable</c>
      <c>no</c>
      <c>if_txspeed</c>
      <c>16</c>
      <c>8</c>
      <c>no</c>
      <c>if_rxspeed</c>
      <c>17</c>
      <c>8</c>
      <c>no</c>
</texttable>

<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 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 address (64 bits), if
available.</t>
  </dd>
</dl>

<t>Example: '02 34 56 FF FE 78 9A BC'.</t>

<dl indent="8" newline="true">
  <dt>
if_speed:  </dt>
  <dd>
    <t>The if_speed
option is a 64-bit unsigned value indicating the interface
speed, in bits per second.</t>
  </dd>
</dl>

<t>Example: the 64-bit decimal number 100000000 for 100Mbps.</t>

<dl indent="8" newline="true">
  <dt>
if_tsresol:  </dt>
  <dd>
    <t>The if_tsresol
option identifies the resolution of timestamps. If the Most
Significant Bit is equal to zero, the remaining bits indicates the
resolution of the timestamp as a negative power of 10 (e.g. 6
means microsecond resolution, timestamps are the number of
microseconds since 1970-01-01 00:00:00 UTC). If the Most
Significant Bit is equal to one, the remaining bits indicates
the resolution as negative power of 2 (e.g. 10 means 1/1024
of second). If this option is not present, a resolution of
10^-6 is assumed (i.e. timestamps have the same resolution of
the standard 'libpcap' timestamps).</t>
  </dd>
</dl>

<t>Example: '6'.</t>

<dl indent="8" newline="true">
  <dt>
if_tzone:  </dt>
  <dd>
    <t>The if_tzone
option identifies the time zone for GMT support (TODO: specify
better).</t>
  </dd>
</dl>

<t>Example: TODO: give a good example.</t>

<dl indent="8" newline="true">
  <dt>
if_filter:  </dt>
  <dd>
    <t>The if_filter
option identifies the filter (e.g. "capture only TCP traffic")
used to capture traffic. The first octet of the Option Data keeps a
code of the filter used (e.g. if this is a libpcap string, or BPF
bytecode, and more). More details about this format will be
presented in Appendix XXX (TODO). (TODO: better use different
options for different fields? e.g. if_filter_pcap, if_filter_bpf,
...)</t>
  </dd>
</dl>

<t>Example: '00'"tcp port 23 and host 192.0.2.5".</t>

<dl indent="8" newline="true">
  <dt>
if_os:  </dt>
  <dd>
    <t>The if_os option is
a UTF-8 string containing the name of the operating system of the
machine in which this interface is installed. This can be
different from the same information that can be contained by the
Section Header Block (<xref target="section_shb"/>) because the
capture can have been done on a remote machine. The string is
not zero-terminated.</t>
  </dd>
</dl>

<t>Examples: "Windows XP SP2", "openSUSE 10.2".</t>

<dl indent="8" newline="true">
  <dt>
if_fcslen:  </dt>
  <dd>
    <t>The if_fcslen
option is an 8-bit unsigned integer value that specifies the
length of the Frame Check Sequence (in bits) for this interface.
For link layers whose FCS length can change during time, the
Enhanced Packet Block epb_flags Option can be used in each
Enhanced Packet Block (see <xref target="section_epb_flags"/>).</t>
  </dd>
</dl>

<t>Example: '4'.</t>

<dl indent="8" newline="true">
  <dt>
if_tsoffset:  </dt>
  <dd>
    <t>The
if_tsoffset option is a 64-bit signed integer value that
specifies an offset (in seconds) that must be added to the
timestamp of each packet to obtain the absolute timestamp of
a packet. If the option is missing, the timestamps stored
in the packet MUST be considered absolute timestamps.  The
time zone of the offset can be specified with the option
if_tzone. TODO: won't a if_tsoffset_low for fractional
second offsets be useful for highly synchronized capture
systems?</t>
  </dd>
</dl>

<t>Example: '1234'.</t>

<dl indent="8" newline="true">
  <dt>
if_hardware:  </dt>
  <dd>
    <t>The
if_hardware option is a UTF-8 string containing the description
of the interface hardware. The string is not zero-terminated.</t>
  </dd>
</dl>

<t>Examples: "Broadcom NetXtreme", "Intel(R) PRO/1000 MT
Network Connection", "NETGEAR WNA1000Mv2 N150 Wireless USB
Micro Adapter".</t>

<dl indent="8" newline="true">
  <dt>
if_txspeed:  </dt>
  <dd>
    <t>The
if_txrxspeeds option is a 64-bit unsigned value
indicating the interface transmit speed in bits per
second.</t>
  </dd>
</dl>

<t>Example: the 64-bit decimal number 1024000 for
1024Kbps.</t>

<dl indent="8" newline="true">
  <dt>
if_rxspeed:  </dt>
  <dd>
    <t>The
if_rxspeed option is a 64-bit unsigned value
indicating the interface receive speed, in bits per
second.</t>
  </dd>
</dl>

<t>Example: the 64-bit decimal number 8192000 for
8192Kbps.</t>

<t>If the interface transmit speed and receive speed are the
same, the if_speed option MUST be used and the if_txspeed and
if_rxspeed options MUST NOT be used.  If the transmit speed is
unknown, the if_speed and if_txspeed options MUST NOT be used;
if the receive speed is unknown, the if_speed and if_rxspeed
options MUST NOT be used.</t>

</section>
<section anchor="section_epb"><name>Enhanced Packet Block</name>

<t>An Enhanced Packet Block (EPB) is the standard container for
storing the packets coming from the network. The Enhanced Packet Block
is optional because packets can be stored either by means of this
block or the Simple Packet Block, which can be used to speed up
capture file generation; or a file may have no packets in it. The
format of an Enhanced Packet Block is shown in <xref target="format_epb"/>.</t>

<t>The Enhanced Packet Block is an improvement over the original, now
obsolete, <xref target="appendix_pb">Packet Block</xref>:</t>

<t><list style="symbols">
  <t>it stores the Interface Identifier as a 32-bit integer value.
This is a requirement when a capture stores packets coming from a
large number of interfaces;</t>
  <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>
</list></t>

<figure title="Enhanced Packet Block Format" anchor="format_epb"><artwork align="center"><![CDATA[
                        1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                    Block Type = 0x00000006                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                         Interface ID                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                        Timestamp (High)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                        Timestamp (Low)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 |                    Captured Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 |                    Original Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 /                                                               /
   /                          Packet Data                          /
   /              variable length, padded to 32 bits               /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The Enhanced Packet Block has the following fields:</t>

<t><list style="symbols">
  <t>Block Type: The block type of the Enhanced Packet Block is 6.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <t>Interface ID (32 bits): an unsigned value that specifies the
interface on which this packet was received or transmitted;
the correct interface will be the one whose Interface
Description Block (within the current Section of the file) is
identified by the same number (see <xref target="section_idb"/>)
of this field. The interface ID MUST be valid, which means that an
matching interface description block MUST exist.</t>
  <t>Timestamp (High) and Timestamp (Low): upper 32 bits and
lower 32 bits of a 64-bit timestamp. The timestamp is a
single 64-bit unsigned integer that represents the number of
units of time that have elapsed since 1970-01-01 00:00:00 UTC.
The length of a unit of time is specified by the 'if_tsresol'
option (see <xref target="format_idb"/>) of the Interface
Description Block referenced by this packet. Note that,
unlike timestamps in the libpcap file format, timestamps in
Enhanced Packet Blocks are not saved as two 32-bit values
that represent the seconds and microseconds that have
elapsed since 1970-01-01 00:00:00 UTC. Timestamps in Enhanced
Packet Blocks are saved as two 32-bit words that represent
the upper and lower 32 bits of a single 64-bit quantity.</t>
  <t>Captured Packet Length (32 bits): an unsigned value that
indicates the number of octets captured from the packet
(i.e. the length of the Packet Data field). It will be the
minimum value among the Original Packet Length and the
snapshot length for the interface (SnapLen, defined in <xref target="format_idb"/>). The value of this field does
not include the padding octets added at the end of the Packet
Data field to align the Packet Data field to a 32-bit
boundary.</t>
  <t>Original Packet Length (32 bits): an unsigned value that
indicates the actual length of the packet when it was
transmitted on the network.  It can be different from
the Captured Packet Length if the packet has been truncated
by the capture process.</t>
  <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="LINKTYPES"/>.</t>
  <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
</list></t>

<t>In addition to the options defined in <xref target="section_opt"/>,
the following options are valid within this block:</t>

<texttable title="Enhanced Packet Block Options" anchor="options_epb">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Multiple allowed?</ttcol>
      <c>epb_flags</c>
      <c>2</c>
      <c>4</c>
      <c>no</c>
      <c>epb_hash</c>
      <c>3</c>
      <c>variable, minimum hash type-dependent</c>
      <c>yes</c>
      <c>epb_dropcount</c>
      <c>4</c>
      <c>8</c>
      <c>no</c>
      <c>epb_packetid</c>
      <c>5</c>
      <c>8</c>
      <c>no</c>
      <c>epb_queue</c>
      <c>6</c>
      <c>4</c>
      <c>no</c>
      <c>epb_verdict</c>
      <c>7</c>
      <c>variable, minimum verdict type-dependent</c>
      <c>yes</c>
</texttable>

<dl indent="8" newline="true">
  <dt>
epb_flags:  </dt>
  <dd>
    <t>The epb_flags
option is a 32-bit flags word containing link-layer information. A
complete specification of the allowed flags can be found in <xref target="section_epb_flags"/>.</t>
  </dd>
</dl>

<t>Example: '0'.</t>

<dl indent="8" newline="true">
  <dt>
epb_hash:  </dt>
  <dd>
    <t>The epb_hash
option contains a hash of the packet. The first octet specifies the
hashing algorithm, while the following octets contain the actual
hash, whose size depends on the hashing algorithm, and hence from
the value in the first octet. The hashing algorithm can be: 2s
complement (algorithm octet = 0, size = XXX), XOR (algorithm octet =
1, size=XXX), CRC32 (algorithm octet = 2, size = 4), MD-5
(algorithm octet = 3, size = 16), SHA-1 (algorithm octet = 4,
size = 20), Toeplitz (algorithm octet = 5, size = 4). The hash covers
only the packet, not the header added by the capture driver: this
gives the possibility to calculate it inside the network card. The
hash allows easier comparison/merging of different capture files,
and reliable data transfer between the data acquisition system and
the capture library.</t>
  </dd>
</dl>

<t>Examples: '02 EC 1D 87 97', '03 45 6E C2 17 7C 10 1E 3C 2E 99 6E C2 9A 3D
50 8E'.</t>

<dl indent="8" newline="true">
  <dt>
epb_dropcount:  </dt>
  <dd>
    <t>The
epb_dropcount option is a 64-bit unsigned integer value
specifying the number of packets lost (by the interface and
the operating system) between this packet and the preceding
one for the same interface or, for the first packet for an
interface, between this packet and the start of the capture
process.</t>
  </dd>
</dl>

<t>Example: '0'.</t>

<dl indent="8" newline="true">
  <dt>
epb_packetid:  </dt>
  <dd>
    <t>The
epb_packetid option is a 64-bit unsigned integer that uniquely
identifies the packet. If the same packet is seen by multiple
interfaces and there is a way for the capture application to
correlate them, the same epb_packetid value must be used. An
example could be a router that captures packets on all its
interfaces in both directions. When a packet hits interface A
on ingress, an EPB entry gets created, TTL gets decremented,
and right before it egresses on interface B another EPB entry
gets created in the trace file. In this case, two packets are
in the capture file, which are not identical but the
epb_packetid can be used to correlate them.</t>
  </dd>
</dl>

<t>Example: '0'.</t>

<dl indent="8" newline="true">
  <dt>
epb_queue:  </dt>
  <dd>
    <t>The epb_queue
option is a 32-bit unsigned integer that identifies on which queue
of the interface the specific packet was received.</t>
  </dd>
</dl>

<t>Example: '0'.</t>

<dl indent="8" newline="true">
  <dt>
epb_verdict:  </dt>
  <dd>
    <t>The epb_verdict
option stores a verdict of the packet. The verdict indicates what
would be done with the packet after processing it. For example, a
firewall could drop the packet. This verdict can be set by various
components, i.e. Hardware, Linux's eBPF TC or XDP framework, etc.
etc. The first octet specifies the verdict type, while the
following octets contain the actual verdict data, whose size
depends on the verdict type, and hence from the value in the first
octet. The verdict type can be: Hardware (type octet = 0, size =
variable), Linux_eBPF_TC (type octet = 1, size = 8 (64-bit unsigned
integer), value = TC_ACT_* as defined in the Linux <eref target="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/pkt_cls.h">pck_cls.h</eref> include), Linux_eBPF_XDP (type octet = 2, size = 8 (64-bit unsigned
integer), value = xdp_action as defined in the Linux <eref target="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/bpf.h">pbf.h</eref> include).</t>
  </dd>
</dl>

<t>Example: '02 00 00 00 00 00 00 00 02' for Linux_eBPF_XDP with
verdict XDP_PASS.</t>

<section anchor="section_epb_flags"><name>Enhanced Packet Block Flags Word</name>

<t>The Enhanced Packet Block Flags Word is a 32-bit value that
contains link-layer information about the packet.</t>

<t>The word is encoded as an unsigned 32-bit integer, using the
endianness of the Section Header Block scope it is in. In the
following table, the bits are numbered with 0 being the
least-significant bit and 31 being the most-significant bit of
the 32-bit unsigned integer. The meaning of the bits is the
following:</t>

<texttable title="">
      <ttcol align='left'>Bit Number</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>0-1</c>
      <c>Inbound / Outbound packet (00 = information not available, 01 = inbound, 10 = outbound)</c>
      <c>2-4</c>
      <c>Reception type (000 = not specified, 001 = unicast, 010 = multicast, 011 = broadcast, 100 = promiscuous).</c>
      <c>5-8</c>
      <c>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.</c>
      <c>9-15</c>
      <c>Reserved (MUST be set to zero).</c>
      <c>16-31</c>
      <c>link-layer-dependent errors (Bit 31 = symbol error, Bit 30 = preamble error, Bit 29 = Start Frame Delimiter error, Bit 28 = unaligned frame error, Bit 27 = wrong Inter Frame Gap error, Bit 26 = packet too short error, Bit 25 = packet too long error, Bit 24 = CRC error, other?? are 16 bit enough?).</c>
</texttable>

<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 title="Simple Packet Block Format" anchor="format_spb"><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>

<t><list style="symbols">
  <t>Block Type: The block type of the Simple Packet Block is 3.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <t>Original Packet Length (32 bits): an unsigned value
indicating the actual length of the packet when it was
transmitted on the network. It can be different from length
of the Packet Data field's length if the packet has been
truncated by the capture process, in which case the SnapLen
value in <xref target="section_idb"/> will be less than this
Original Packet Length value, and the SnapLen value MUST be
used to determine the size of the Packet Data field
length.</t>
  <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="LINKTYPES"/>.</t>
</list></t>

<t>The Simple Packet Block does not contain the timestamp because this
is often one of the most costly operations on PCs. Additionally, there
are applications that do not require it; e.g. an Intrusion Detection
System is interested in packets, not in their timestamp.</t>

<t>A Simple Packet Block cannot be present in a Section that has more
than one interface because of the impossibility to refer to the
correct one (it does not contain any Interface ID field).</t>

<t>The Simple Packet Block is very efficient in term of disk space: a
snapshot whose length is 100 octets requires only 16 octets of overhead,
which corresponds to an efficiency of more than 86%.</t>

</section>
<section anchor="section_nrb"><name>Name Resolution Block</name>

<t>The Name Resolution Block (NRB) is used to support the correlation
of numeric addresses (present in the captured packets) and their
corresponding canonical names and it is optional. Having the literal
names saved in the file prevents the need for performing name
resolution at a later time, when the association between names and
addresses may be different from the one in use at capture time.
Moreover, the NRB avoids the need for issuing a lot of DNS requests
every time the trace capture is opened, and also provides name
resolution when reading the capture with a machine not connected to
the network.</t>

<t>A Name Resolution Block is often placed at the beginning of the
file, but no assumptions can be taken about its position. Multiple
NRBs can exist in a pcapng file, either due to memory constraints or
because additional name resolutions were performed by file processing
tools, like network analyzers.</t>

<t>A Name Resolution Block need not contain any Records, except the
nrb_record_end Record which MUST be the last Record. The addresses and
names in NRB Records MAY be repeated multiple times; i.e., the same IP
address may resolve to multiple names, the same name may resolve to
the multiple IP addresses, and even the same address-to-name pair may
appear multiple times, in the same NRB or across NRBs.</t>

<t>The format of the Name Resolution Block is shown in <xref target="format_nrb"/>.</t>

<figure title="Name Resolution Block Format" anchor="format_nrb"><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>

<t><list style="symbols">
  <t>Block Type: The block type of the Name Resolution Block is 4.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
</list></t>

<t>This is followed by zero or more Name Resolution Records (in the
TLV format), each of which contains an association between a network
address and a name. An nrb_record_end MUST be added after the last
Record, and MUST exist even if there are no other Records in the NRB.
There are currently three possible types of records:</t>

<texttable title="Name Resolution Block Records" anchor="nrrecords">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <c>nrb_record_end</c>
      <c>0x0000</c>
      <c>0</c>
      <c>nrb_record_ipv4</c>
      <c>0x0001</c>
      <c>variable</c>
      <c>nrb_record_ipv6</c>
      <c>0x0002</c>
      <c>variable</c>
</texttable>

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

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

<texttable title="Name Resolution Block Options" anchor="options_nrb">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Multiple allowed?</ttcol>
      <c>ns_dnsname</c>
      <c>2</c>
      <c>variable</c>
      <c>no</c>
      <c>ns_dnsIP4addr</c>
      <c>3</c>
      <c>4</c>
      <c>no</c>
      <c>ns_dnsIP6addr</c>
      <c>4</c>
      <c>16</c>
      <c>no</c>
</texttable>

<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 title="Interface Statistics Block Format" anchor="format_isb"><artwork align="center"><![CDATA[
                        1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                   Block Type = 0x00000005                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                         Interface ID                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                        Timestamp (High)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                        Timestamp (Low)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The fields have the following meaning:</t>

<t><list style="symbols">
  <t>Block Type: The block type of the Interface Statistics Block is
5.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <t>Interface ID: specifies the interface these statistics refers
to; the correct interface will be the one whose Interface
Description Block (within the current Section of the file) is
identified by same number (see <xref target="section_idb"/>) of
this field.</t>
  <t>Timestamp: time this statistics refers to. The format of the
timestamp is the same already defined in the Enhanced Packet Block
(<xref target="section_epb"/>); the length of a unit of time is
specified by the 'if_tsresol' option (see <xref target="format_idb"/>) of the Interface Description Block
referenced by this packet.</t>
  <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
</list></t>

<t>All the statistic fields are defined as options in order to deal
with systems that do not have a complete set of statistics. Therefore,
In addition to the options defined in <xref target="section_opt"/>,
the following options are valid within this block:</t>

<texttable title="Interface Statistics Block Options" anchor="options_isb">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Multiple allowed?</ttcol>
      <c>isb_starttime</c>
      <c>2</c>
      <c>8</c>
      <c>no</c>
      <c>isb_endtime</c>
      <c>3</c>
      <c>8</c>
      <c>no</c>
      <c>isb_ifrecv</c>
      <c>4</c>
      <c>8</c>
      <c>no</c>
      <c>isb_ifdrop</c>
      <c>5</c>
      <c>8</c>
      <c>no</c>
      <c>isb_filteraccept</c>
      <c>6</c>
      <c>8</c>
      <c>no</c>
      <c>isb_osdrop</c>
      <c>7</c>
      <c>8</c>
      <c>no</c>
      <c>isb_usrdeliv</c>
      <c>8</c>
      <c>8</c>
      <c>no</c>
</texttable>

<dl indent="8" newline="true">
  <dt>
isb_starttime:  </dt>
  <dd>
    <t>The
isb_starttime option specifies the time the capture started; time
will be stored in two blocks of four octets each. The format of the
timestamp is the same as the one defined in the Enhanced Packet
Block (<xref target="section_epb"/>); the length of a unit
of time is specified by the 'if_tsresol' option (see <xref target="format_idb"/>) of the Interface Description Block
referenced by this packet.</t>
  </dd>
</dl>

<t>Example: '96 c3 04 00 73 89 6a 65', in Little Endian, decodes
to 2012-06-29 06:17:00.834163 UTC.</t>

<dl indent="8" newline="true">
  <dt>
isb_endtime:  </dt>
  <dd>
    <t>The isb_endtime
option specifies the time the capture ended; time will be stored
in two blocks of four octets each. The format of the timestamp is
the same as the one defined in the Enhanced Packet Block (<xref target="section_epb"/>); the length of a unit of time is specified
by the 'if_tsresol' option (see <xref target="format_idb"/>) of
the Interface Description Block referenced by this packet.</t>
  </dd>
</dl>

<t>Example: '97 c3 04 00 aa 47 ca 64', in Little Endian, decodes
to 2012-06-29 07:28:25.298858 UTC.</t>

<dl indent="8" newline="true">
  <dt>
isb_ifrecv:  </dt>
  <dd>
    <t>The isb_ifrecv
option specifies the 64-bit unsigned integer number of packets
received from the physical interface starting from the beginning
of the capture.</t>
  </dd>
</dl>

<t>Example: the decimal number 100.</t>

<dl indent="8" newline="true">
  <dt>
isb_ifdrop:  </dt>
  <dd>
    <t>The isb_ifdrop
option specifies the 64-bit unsigned integer number of packets
dropped by the interface due to lack of resources starting from
the beginning of the capture.</t>
  </dd>
</dl>

<t>Example: '0'.</t>

<dl indent="8" newline="true">
  <dt>
isb_filteraccept:  </dt>
  <dd>
    <t>The
isb_filteraccept option specifies the 64-bit unsigned integer
number of packets accepted by filter starting from the beginning
of the capture.</t>
  </dd>
</dl>

<t>Example: the decimal number 100.</t>

<dl indent="8" newline="true">
  <dt>
isb_osdrop:  </dt>
  <dd>
    <t>The isb_osdrop
option specifies the 64-bit unsigned integer number of packets
dropped by the operating system starting from the beginning of the
capture.</t>
  </dd>
</dl>

<t>Example: '0'.</t>

<dl indent="8" newline="true">
  <dt>
isb_usrdeliv:  </dt>
  <dd>
    <t>The
isb_usrdeliv option specifies the 64-bit unsigned integer number
of packets delivered to the user starting from the beginning of
the capture. The value contained in this field can be different
from the value 'isb_filteraccept - isb_osdrop' because some
packets could still be in the OS buffers when the capture
ended.</t>
  </dd>
</dl>

<t>Example: '0'.</t>

<t>All the fields that refer to packet counters are 64-bit values,
represented with the octet order of the current section. Special care
must be taken in accessing these fields: since all the blocks are
aligned to a 32-bit boundary, such fields are not guaranteed to be
aligned on a 64-bit boundary.</t>

</section>
<section anchor="section_dsb"><name>Decryption Secrets Block</name>

<t>A Decryption Secrets Block (DSB) stores (session) secrets that
enable decryption of packets within the capture file. The format of
these secrets is defined by the Secrets Type.</t>

<t>Multiple DSBs can exist in a pcapng file, but they SHOULD be written
before packet blocks that require those secrets. Tools MAY limit
decryption to secrets that appear before packet blocks.</t>

<t>The structure of a
Decryption Secrets Block is shown in <xref target="format_dsb"/>.</t>

<figure title="Decryption Secrets Block Format" anchor="format_dsb"><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>

<t><list style="symbols">
  <t>Block Type: The block type of the Decryption Secrets Block is
10.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <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>
  <t>Secrets Length (32 bits): an unsigned integer that indicates
the size of the following Secrets field, without any padding
octets.</t>
  <t>Secrets Data: binary data containing secrets, padded to a 32 bit
boundary.</t>
  <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>
</list></t>

<t>The following is a list of Secrets Types.</t>

<dl indent="8" newline="true">
  <dt>
0x544c534b:  </dt>
  <dd>
    <t>TLS Key Log. This
format is described at <eref target="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format">NSS Key Log Format</eref>. Every line MUST be properly terminated with
either carriage return and linefeed ('\r\n') or linefeed ('\n').
Tools MUST be able to handle both line endings.</t>
  </dd>
</dl>

<dl indent="8" newline="true">
  <dt>
0x57474b4c:  </dt>
  <dd>
    <t>WireGuard Key Log.
Every line consists of the key type, equals sign ('='), and the
base64-encoded 32-byte key with optional spaces before and in between.
The key type is one of LOCAL_STATIC_PRIVATE_KEY,
REMOTE_STATIC_PUBLIC_KEY, LOCAL_EPHEMERAL_PRIVATE_KEY,
or PRESHARED|_KEY. This matches the output of <eref target="https://git.zx2c4.com/WireGuard/tree/contrib/examples/extract-handshakes/README">extract-handshakes.sh</eref>, which is part of the <eref target="https://www.wireguard.com/">WireGuard</eref> project.
A PRESHARED_KEY line is linked to a session matched by a previous
LOCAL_EPHEMERAL_PRIVATE_KEY line.
Every line MUST be properly terminated with
either carriage return and linefeed ('\r\n') or linefeed ('\n').
Tools MUST be able to handle both line endings.</t>
  </dd>
</dl>

<t>Warning: LOCAL_STATIC_PRIVATE_KEY and potentially PRESHARED_KEY
  are long-term secrets, users SHOULD only store non-production keys,
  or ensure proper protection of the pcapng file.</t>

<dl indent="8" newline="true">
  <dt>
0x5a4e574b:  </dt>
  <dd>
    <t>ZigBee NWK Key
and ZigBee PANID for that network. Network Key as described in
the <eref target="https://zigbeealliance.org/">ZigBee Specification</eref> 05-3473-21 (R21) section 4.2.2.
The NWK Key is a 16 octet binary AES-128 key used to secure NWK Level frames
within a single PAN. The NWK key is immediately followed by the
2 octet (16 bit) network PANID in little endian format. If and when
the NWK Key changes a new DSB will contain the new NWK Key.</t>
  </dd>
</dl>

<dl indent="8" newline="true">
  <dt>
0x5a415053:  </dt>
  <dd>
    <t>ZigBee APS Key.
Application Support Link Key as described in the <eref target="https://zigbeealliance.org/">ZigBee Specification</eref> 05-3473-21 (R21) section 4.4. Each 16 octet binary AES-128 key secures
frames exchanged between a pair of network nodes. The APS Key is
immediately followed by the 2 octet (16 bit) network PANID in
little endian format. The PANID is followed by the 2 octet (16 bit)
short addresses, in little endian format, of the nodes to which
the APS Key applies. The numerically lower short address shall come
first. There is a 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 title="ZigBee NWK Key Data Format" anchor="format_zigbee_nwk"><artwork align="center"><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------------------------------------------------------+
 0 |                   Block Type = 0x0000000A                     |
   +---------------------------------------------------------------+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                  Secrets Type = 0x5a4e574b                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                         Secrets Length                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                            AES-128                            |
   |                            NKW Key                            |
   |                          (16 octets)                          |
   |                           (128 bits)                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32 |          PAN ID               |           padding (0)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
36 /                                                               /
   /                       Options (variable)                      /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Block Total Length                      /
   +---------------------------------------------------------------+
]]></artwork></figure>

<figure title="ZigBee APS Key Data Format" anchor="format_zigbee_aps"><artwork align="center"><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +---------------------------------------------------------------+
 0 |                   Block Type = 0x0000000A                     |
   +---------------------------------------------------------------+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |                  Secrets Type = 0x5a415053                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                         Secrets Length                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                            AES-128                            |
   |                            APS Key                            |
   |                          (16 octets)                          |
   |                           (128 bits)                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32 |           PAN ID              |     Low Node Short Address    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
36 |    High Node Short Address    |         padding (0)           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
40 /                                                               /
   /                       Options (variable)                      /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                       Block Total Length                      /
   +---------------------------------------------------------------+
]]></artwork></figure>

</section>
<section anchor="section_custom_block"><name>Custom Block</name>

<t>A Custom Block (CB) is the container for storing custom data that
is not part of another block; for storing custom data as part of
another block, see <xref target="section_custom_option"/>. The Custom
Block is optional, can be repeated any number of times, and can appear
before or after any other block except the first Section Header Block
which must come first in the file. Different Custom Blocks, of
different type codes and/or different Private Enterprise Numbers, may
be used in the same pcapng file. The format of a Custom Block is shown
in <xref target="format_custom_block"/>.</t>

<figure title="Custom Block Format" anchor="format_custom_block"><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>

<t><list style="symbols">
  <t>Block Type: The block type of the Custom Block is 0x00000BAD or
0x40000BAD, as described previously.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <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>
  <t>Custom Data: the custom data, padded to a 32 bit boundary.</t>
  <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>
</list></t>

</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 codes
to distinguish their "copy" behavior: a code for when the block or
option can be safely copied into a new pcapng file by a pcapng
manipulating application, and a 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 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 Code, 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-endina 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 Code 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 Code and Option Length
fields of options in Custom Blocks, and the PEN field of Custom Options
in Custom Blocks in a consistent manner, such as always in big-endian or
always in little-endian format, regardless of the host platform's
endianness, or should encode some flag in the Custom Data payload to
indicate in which endianness the rest of the payload is written.</t>

<t>The PEN field of a Custom Block, or of a Custom Option not contained in
a Custom Block, MUST be converted by code that reads pcapng files, so
this is not an issue for that field, except for Custom Options in Custom
Blocks.  This is also not an issue for the Custom Data payload of UTF-8
string Custom Options.</t>

</section>
</section>
<section anchor="recommended-file-name-extension-pcapng"><name>Recommended File Name Extension: .pcapng</name>

<t>The recommended file name extension for the "PCAP Next Generation
Capture File Format" specified in this document is ".pcapng".</t>

<t>On Windows and macOS, files are distinguished by an extension to their
filename. Such an extension is technically not actually required, as
applications should be able to automatically detect the pcapng file
format through the "magic bytes" at the beginning of the file, as some
other UN*X desktop environments do. However, using name extensions makes
it easier to work with files (e.g. visually distinguish file formats) so
it is recommended - though not required - to use .pcapng as the name
extension for files following this specification.</t>

<t>Please note: To avoid confusion (such as the current usage of
.cap for a plethora of different capture file formats) file
name extensions other than .pcapng should be avoided.</t>

</section>
<section anchor="conclusions"><name>Conclusions</name>

<t>The file format proposed in this document should be very versatile
and satisfy a wide range of applications. In the simplest case, it can
contain a raw capture of the network data, made of a series of Simple
Packet Blocks. In the most complex case, it can be used as a repository
for heterogeneous information. In every case, the file remains easy to
parse and an application can always skip the data it is not interested
in; at the same time, different applications can share the file, and
each of them can benefit of the information produced by the others. Two
or more files can be concatenated obtaining another valid file.</t>

</section>
<section anchor="implementations"><name>Implementations</name>

<t>Some known implementations that read or write the pcapng file format
are listed on the <eref target="https://github.com/pcapng/pcapng/wiki/Implementations">pcapng GitHub wiki</eref>.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>TBD.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>TBD.</t>

<t>[Open issue: decide whether the block types, option types, NRB Record
types, etc. should be IANA registries. And if so, what the IANA policy
for each should be (see RFC 5226)]</t>

<section anchor="section_block_code_registry"><name>Standardized Block Type Codes</name>

<t>Every Block is uniquely identified by a 32-bit integer value, stored
in the Block Header.</t>

<t>As pointed out in <xref target="section_block"/>, Block Type
codes whose Most Significant Bit (bit 31) is set to 1 are reserved for
local use by the application.</t>

<t>All the remaining Block Type codes (0x00000000 to 0x7FFFFFFF) are
standardized by this document. Requests for new Block Type codes,
Option Type codes, and Secrets Type codes should be made by creating
a pull request to update this document at <eref target="https://github.com/pcapng/pcapng">github.com/pcapng/pcapng</eref>.
The pull request should add a description of the new block, option,
or secret type to <xref target="section_block_definition"/>. The pull request
description should contain a clear request for a new type code
assignment.</t>

<t>The following is a list of the Standardized Block Type Codes:</t>

<texttable title="Standardized Block Type Codes" anchor="blockcodes">
      <ttcol align='left'>Block Type Code</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>0x00000000</c>
      <c>Reserved ???</c>
      <c>0x00000001</c>
      <c><xref target="section_idb">Interface Description Block</xref></c>
      <c>0x00000002</c>
      <c><xref target="appendix_pb">Packet Block</xref></c>
      <c>0x00000003</c>
      <c><xref target="section_spb">Simple Packet Block</xref></c>
      <c>0x00000004</c>
      <c><xref target="section_nrb">Name Resolution Block</xref></c>
      <c>0x00000005</c>
      <c><xref target="section_isb">Interface Statistics Block</xref></c>
      <c>0x00000006</c>
      <c><xref target="section_epb">Enhanced Packet Block</xref></c>
      <c>0x00000007</c>
      <c>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></c>
      <c>0x00000008</c>
      <c><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)</c>
      <c>0x00000009</c>
      <c>[systemd Journal Export Block]<xref target="I-D.richardson-opsawg-pcapng-extras"/></c>
      <c>0x0000000A</c>
      <c><xref target="section_dsb">Decryption Secrets Block</xref></c>
      <c>0x00000101</c>
      <c><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>)</c>
      <c>0x00000102</c>
      <c><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>)</c>
      <c>0x00000201</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Machine Info Block</c>
      <c>0x00000202</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 1</c>
      <c>0x00000203</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> FD List Block</c>
      <c>0x00000204</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Event Block</c>
      <c>0x00000205</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Interface List Block</c>
      <c>0x00000206</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> User List Block</c>
      <c>0x00000207</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 2</c>
      <c>0x00000208</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Event Block with flags</c>
      <c>0x00000209</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 3</c>
      <c>0x00000210</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 4</c>
      <c>0x00000211</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 5</c>
      <c>0x00000212</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 6</c>
      <c>0x00000213</c>
      <c><eref target="https://github.com/draios/sysdig">Sysdig</eref> Process Info Block, version 7</c>
      <c>0x00000BAD</c>
      <c><xref target="section_custom_block">Custom Block that rewriters can copy into new files</xref></c>
      <c>0x40000BAD</c>
      <c><xref target="section_custom_block">Custom Block that rewriters should not copy into new files</xref></c>
      <c>0x0A0D0D0A</c>
      <c><xref target="section_shb">Section Header Block</xref></c>
      <c>0x0A0D0A00-0x0A0D0AFF</c>
      <c>Reserved. Used to detect trace files corrupted because of file transfers using the HTTP protocol in text mode.</c>
      <c>0x000A0D0A-0xFF0A0D0A</c>
      <c>Reserved. Used to detect trace files corrupted because of file transfers using the HTTP protocol in text mode.</c>
      <c>0x000A0D0D-0xFF0A0D0D</c>
      <c>Reserved. Used to detect trace files corrupted because of file transfers using the HTTP protocol in text mode.</c>
      <c>0x0D0D0A00-0x0D0D0AFF</c>
      <c>Reserved. Used to detect trace files corrupted because of file transfers using the FTP protocol in text mode.</c>
      <c>0x80000000-0xFFFFFFFF</c>
      <c>Reserved for local use.</c>
</texttable>

<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 title='Normative References'>





<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>

    <references title='Informative References'>



<reference anchor='I-D.richardson-opsawg-pcapng-extras'> <front> <title>*** BROKEN REFERENCE ***</title> <author> <organization/> </author> <date/> </front> </reference>

<reference anchor="LINKTYPES" target="http://www.tcpdump.org/linktypes.html">
  <front>
    <title>the tcpdump.org link-layer header types registry</title>
    <author initials="." fullname="">
      <organization>The Tcpdump Group</organization>
    </author>
    <date />
  </front>
</reference>


    </references>


<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 title="Packet Block Format" anchor="formatpb"><artwork align="center"><![CDATA[
                        1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0 |                    Block Type = 0x00000002                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4 |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8 |         Interface ID          |          Drops Count          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
12 |                        Timestamp (High)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
16 |                        Timestamp (Low)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
20 |                    Captured Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 |                    Original Packet Length                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 /                                                               /
   /                          Packet Data                          /
   /              variable length, padded to 32 bits               /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   /                                                               /
   /                      Options (variable)                       /
   /                                                               /
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Block Total Length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The Packet Block has the following fields:</t>

<t><list style="symbols">
  <t>Block Type: The block type of the Packet Block is 2.</t>
  <t>Block Total Length: total size of this block, as described in <xref target="section_block"/>.</t>
  <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>
  <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>
  <t>Timestamp (High) and Timestamp (Low): timestamp of the packet.
The format of the timestamp is the same as was already defined
for the Enhanced Packet Block (<xref target="section_epb"/>).</t>
  <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>
  <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>
  <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="LINKTYPES"/>.</t>
  <t>Options: optionally, a list of options (formatted according to
the rules defined in <xref target="section_opt"/>) can be present.</t>
</list></t>

<t>In addition to the options defined in <xref target="section_opt"/>,
the following options were valid within this block:</t>

<texttable title="Packet Block Options" anchor="optionspb">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Multiple allowed?</ttcol>
      <c>pack_flags</c>
      <c>2</c>
      <c>4</c>
      <c>no</c>
      <c>pack_hash</c>
      <c>3</c>
      <c>variable</c>
      <c>yes</c>
</texttable>

<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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
qtMYyLOOld5Mk03aS5eIuUso0ySxjl7byKhVnv2BhJosLZstnKJz6BnH7yiR
0lxu9LC0AnHpzAQy9CLj1yP0XotG610PmISSAc9De0ZRFF6rvHCReRxhse/U
76SBU7aWsuiRf8Dv6qIRNRSquIUOK6oC16rPosNKB28ybt+svoL3fp7XRWos
aIbJKTEnpWixdr0UXfx2R94+xFxej8LXL/cP5O2O/N91fPTdsbx7JP26d+UE
OUp+Gr6pygLracCzx5I7zHv3C3opwNN1max7BfiElgp456cbc2nDwo5Isbex
EHKDXjlKEGgbW/NzKNkAhS+252bvqRU3Hi7qvnqny6eQhbCHwr0MwOZpE9PB
rW6LZTpFQR9Vpik2fZw2rZ9cpT2rPoxccVlUcXyq8iypLtdRZfbzIY3y88np
sze/7h9uHBztPHrYebxzuN7ZfnTwsLN/CL9tPlzffvp4Y3Pn6c7uhya9Wngs
nGatdlw+SZ8aguMmYNxRrfZD2nmWIjxeUCb7fbgPgGJkGRMgfIEOVOiYHZ0k
xCXUXj+jwoJHKCBngMUWgRZAS6mDhyn6KDI+nDLOcpvJoJLlVhIk+8EC0GIc
l28lhUKgv2DwcOlDKvKuDt6ikzg+1X61+C3b3d41N5eRumGWijDZF16ISmA5
vtmP4w/1PvNHDD2K/B4IBF6C3yLxk/zWF2uN67IQtzwCmwIKeyEPkkoMp3Hp
L5ejU43ViEhqZUFG7RBdu6CzJ+xwpbHCEmaqjsw2x/jUZjyshZuiJdpqBeLB
APAq8ALVvBTLcHhl4/EmUL5dIKwgKD98aP+/vrIQB3c8HOTjai+mOg7u3IyD
5AQK9/c7dYyeU2f6mAhEOkQs+Ly2VRYNGfaiIw7GCLAwMnNJ526LhVFT6W3y
bPOxcGcxFs4dukVbtWc219c39tb7F7t7uw/jrb313f7W3sbWxuO93Xgz2Vvf
erS+92hre3ttZ5sSYEjx7BbM+zJ5t4p4urK5btY3zDpwsrtm96GJt8z6rulv
4c268djsxmYzMetb5tG6ebRltrej7UVIIJyGR4fkSUCGQgnmud7G0NTuV2t7
l7nlNifUsUz+EkCsrPMyNnGu69tm/eGCWQrP481SntxmltDUzVKd++80y02z
tW0e7phnz8yzI/No1zzeN08PFsyV+AxvpvR3SNTVw3qpTOFQCbl87ITqLFCU
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

-->

</rfc>

