<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bonica-macneil-singh-ipv6-firewall-metadata-00" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="IPv6 Firewall Metadata">Verifiable Firewall and Security-Enforcement Metadata in IPv6</title>
    <seriesInfo name="Internet-Draft" value="draft-bonica-macneil-singh-ipv6-firewall-metadata-00"/>
    <author initials="R." surname="Bonica" fullname="Ron Bonica">
      <organization>Hewlett Packard Enterprise</organization>
      <address>
        <email>ronald.bonica@hpe.com</email>
      </address>
    </author>
    <author initials="E." surname="MacNeil" fullname="Erin MacNeil">
      <organization>Hewlett Packard Enterprise</organization>
      <address>
        <email>erin.macneil@hpe.com</email>
      </address>
    </author>
    <author initials="P." surname="Singh" fullname="Prashant Singh">
      <organization>Hewlett Packard Enterprise</organization>
      <address>
        <email>prashant.singh@hpe.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Internet</area>
    <workgroup>IPv6 Maintenance Working Group</workgroup>
    <keyword>IPv6</keyword>
    <keyword>firewall</keyword>
    <keyword>metadata</keyword>
    <keyword>integrity</keyword>
    <keyword>ICV</keyword>
    <keyword>IOAM</keyword>
    <abstract>
      <?line 50?>

<t>This document defines a way to carry a verifiable record of security enforcement
inside IPv6 packets.  Each firewall (or other security enforcement point) that
handles a packet writes a small, authenticated note saying which rule it
matched and what action it took.  The notes are protected by a chained
Integrity Check Value (ICV), reusing the construction defined for In-situ OAM
(IOAM) data integrity.
A checker can then prove two separate things: that the notes are authentic (not
forged or changed on the way), and that the recorded actions match the intended
policy.  Because the two checks are independent, a firewall that honestly
diverges from policy -- for example because of a stale rule or an implementation
bug -- still produces an authentic note, and the divergence is reported rather
than hidden.  Operators thus gain precise per-hop evidence that every enforcement
point was traversed and applied the intended policy, so an EP that was skipped or
did not enforce is revealed.</t>
    </abstract>
  </front>
  <middle>
    <?line 67?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Operators want proof of how a packet was treated as it crossed a chain of
firewalls and other security enforcement points (EPs).  They want to answer
simple questions:</t>
      <ul spacing="normal">
        <li>
          <t>Did every EP apply the policy it was supposed to?</t>
        </li>
        <li>
          <t>Was every EP on the intended path actually traversed, or was one skipped or
bypassed?</t>
        </li>
        <li>
          <t>Did any EP accept, drop, or rate-limit the packet against policy?</t>
        </li>
        <li>
          <t>Was a recorded decision really made by the EP that claims it, or was it
forged or changed by someone on the path?</t>
        </li>
      </ul>
      <t>This document lets each EP add a small note to the packet.  The note says which
rule matched and what action the EP took.  Each EP also folds its note into a
running Integrity Check Value (ICV) using its own secret key.  The ICV is the
same chained construction used for IOAM data integrity
<xref target="I-D.ietf-ippm-ioam-data-integrity"/>; this document does not invent new
cryptography.</t>
      <t>The design separates two checks that are easy to mix up:</t>
      <ol spacing="normal" type="1"><li>
          <t>Is the note authentic? (Integrity.) The checker recomputes the ICV chain; if
it matches, the notes were written by the claimed EPs and were not changed on
the path.</t>
        </li>
        <li>
          <t>Does the action match policy? (Conformance.) The checker compares each
authentic note to the policy that was expected.</t>
        </li>
      </ol>
      <t>The two checks are independent: a note can be authentic yet still diverge from
policy.  An EP may honestly apply the wrong action -- a stale rule, a rollout
still in flight, or the same policy behaving differently across vendors, software
versions, or hardware -- and because the note stays authentic, that silent
divergence is reported instead of hidden.</t>
      <t>Current practice can steer a packet through a set of firewalls, and
proof-of-transit schemes can show it traversed them, but neither proves what each
firewall actually enforced -- the rule that matched and the action taken.  This
mechanism supplies that per-hop enforcement evidence, and from it a firewall that
was skipped or did not enforce is detected.</t>
      <t>This mechanism is intended for use within a single limited domain (<xref target="RFC8799"/>).</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<dl>
        <dt>Enforcement Point (EP):</dt>
        <dd>
          <t>A firewall or other on-path device that evaluates policy against a packet and
records the result.</t>
        </dd>
        <dt>Policy ID:</dt>
        <dd>
          <t>An identifier for the policy (or access list) every EP uses.</t>
        </dd>
        <dt>Policy Version:</dt>
        <dd>
          <t>The generation of that policy.  It changes each time the rule set is edited.</t>
        </dd>
        <dt>Filter ID:</dt>
        <dd>
          <t>An identifier for the exact rule (also called a rule ID) that matched, within
a given Policy ID and Policy Version. A policy is a set of rules, each with a
match and an action; the Filter ID names the one that fired.</t>
        </dd>
        <dt>ICV:</dt>
        <dd>
          <t>Integrity Check Value, computed with the chained AES-GMAC construction of
<xref target="I-D.ietf-ippm-ioam-data-integrity"/>.</t>
        </dd>
        <dt>Validator:</dt>
        <dd>
          <t>Any entity that checks the notes.  It may be an EP on the path or the final
decapsulating node.</t>
        </dd>
      </dl>
    </section>
    <section anchor="how-it-works">
      <name>How It Works</name>
      <t>A packet carries a small block of firewall metadata.  As the packet crosses each
EP, that EP writes one record (its note) and updates the ICV with its own key.
At the end, a validator checks the ICV and compares each record to policy.</t>
      <artwork><![CDATA[
   packet carrying the firewall-metadata option
       |           |           |                |
       v           v           v                v
   +-------+   +-------+   +-------+        +-----------+
   | EP 1  |   | EP 2  |   | EP 3  |  ...   |  Decap /  |
   | (fw)  |   | (fw)  |   | (fw)  |        | validator |
   +-------+   +-------+   +-------+        +-----------+
   write rec   write rec   write rec       check ICV
   + update    + update    + update        + compare to
     ICV         ICV         ICV             policy
]]></artwork>
      <t>Each EP needs only its own key to write its record.  Only a validator needs the
keys of the EPs whose records it checks.  The diagram shows validation at the
end for simplicity, but validation is a role, not a fixed place: a validator can
be any EP that holds the upstream keys (early, in-path checking) or just the
final node (one check at the end).</t>
    </section>
    <section anchor="what-the-identifiers-mean">
      <name>What the Identifiers Mean</name>
      <t>Policy ID, Policy Version, and Filter ID are compact identifiers that stand for
things that already exist in a firewall or access-list configuration.  A
controller assigns the identifiers and keeps the human-readable mapping.  The EP
stamps them; a validator maps them back to named rules.  Only the identifiers
travel in the packet; rule text and match fields never do.</t>
      <t>Firewall rules may be expressed in any syntax; what matters is that they are
semantically identical at every EP, so a given Filter ID maps to the same rule
everywhere on the path.</t>
      <t>An authenticated {Filter ID, Action} pair then proves which rule an EP matched
and what action it took, relative to the named Policy ID and Policy Version.</t>
    </section>
    <section anchor="encoding">
      <name>Encoding</name>
      <t>The metadata is carried in an IPv6 Destination Options header, reusing the
IPv6 option carriage defined for IOAM in <xref target="RFC9486"/>. We would like
intermediate nodes to have a chance to examine this information, so one would
typically place it in a Hop-by-Hop Options header. That is avoided here because
of the security implications of Hop-by-Hop extension headers. Instead it is
placed in a Destination Option. Strictly, a Destination Option should be
examined only by the destination node, but the intermediate nodes that care
about this information are firewalls, which routinely break that rule and snoop
deep into the packet. The metadata is therefore placed in a Destination Option
on the assumption that it will be snooped.</t>
      <t>The three models differ in which nodes are destinations that process the option:</t>
      <artwork><![CDATA[
  (a) SRv6 steering -- every EP is a segment endpoint (destination):

        ingress ==> EP1 ==> EP2 ==> EP3 ==> decap / validator
                    |       |       |          |
                    writes  writes  writes     checks ICV + policy
                    Rec1    Rec2    Rec3

  (b) Encapsulation -- only tunnel ends are destinations:

        ingress ========= tunnel ========> egress (EP + validator)
        adds outer IPv6                          one EP's record
        + option

  (c) Transparent inspection -- firewalls inspect/rewrite in path,
      not as the IPv6 destination (limited domain only; outside
      RFC 8200's destination-only processing):

        ... --> [fw EP1] --> [fw EP2] --> [fw EP3] --> ...
                 rewrite      rewrite      rewrite
]]></artwork>
    </section>
    <section anchor="packet-format">
      <name>Packet Format</name>
      <t>The header and record layouts follow IOAM conventions (<xref target="RFC9197"/>) -- fixed
format fields, 4-octet-friendly alignment, and a namespace identifier -- so the
format is familiar to IOAM implementers; the same field semantics have an
IOAM-native encoding in the companion <xref target="I-D.singh-macneil-ioam-firewall-metadata"/>.
All multi-byte fields are in network
byte order (big-endian).  The values in the figures match the reference run in
<xref target="examples"/>.</t>
      <t>The option, in order, is an IPv6 Destination Options header followed by these
fields:</t>
      <artwork><![CDATA[
+----------------------+----------------------------------------+
| IPv6 Destination     | Next Header, Hdr Ext Len,              |
| Options header       | Option Type (TBD), Opt Data Len        |
+----------------------+----------------------------------------+
| Initial Header       | 8 octets  (see {{inithdr}})             |
+----------------------+----------------------------------------+
| Integrity Header     | 32 octets (MethodID, NonceLen, Rsvd,   |
|                      |            Nonce(12), ICV(16))         |
+----------------------+----------------------------------------+
| Per-Node Records     | N x 8 octets (see {{record}})          |
+----------------------+----------------------------------------+
| PadN                 | align option to a multiple of 8 octets |
+----------------------+----------------------------------------+
]]></artwork>
      <section anchor="inithdr">
        <name>Initial Header</name>
        <t>The Initial Header is 8 octets:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Namespace ID         |          Policy ID            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Policy Version|   Capacity    | Flags|NextIdx |   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <dl>
          <dt>Namespace ID (16 bits):</dt>
          <dd>
            <t>Identifies the security-metadata namespace, mirroring the IOAM Namespace-ID
(<xref target="RFC9197"/>, Section 4.3). A namespace is a context that fixes how the
metadata is interpreted: it disambiguates otherwise non-unique Node IDs and
Policy IDs across overlapping domains, and it selects the record format. It is
also the extensibility mechanism: instead of adding optional fields to one
format, an operator can define a new namespace whose fixed record format
carries additional fields (for example a timestamp), and every EP and
validator keys its parsing off the Namespace ID. For the same reason there is
no separate format-version field. Placed first, as in IOAM. Set by the
ingress; immutable and covered by the ICV. The default value 0 means no
specific namespace.</t>
          </dd>
          <dt>Policy ID (16 bits):</dt>
          <dd>
            <t>Names the policy every EP uses. One value per path, set by the ingress; this
document assumes all EPs on the path evaluate the same policy (see
<xref target="one-policy"/>). Immutable; covered by the ICV.</t>
          </dd>
          <dt>Policy Version (8 bits):</dt>
          <dd>
            <t>Generation (epoch) of that policy, bumped by the control plane on every edit,
set once by the ingress. It binds the trace to a specific rule-set generation
and <bcp14>MUST</bcp14> be a domain-wide, monotonically increasing value per policy. This is
the ingress's single reference generation; if an EP ran a different generation
during a rollout (version skew), the per-record PV flag marks it, so the
mismatch is treated as expected skew rather than a true divergence
(see <xref target="one-policy"/>). Carrying each EP's actual generation is a namespace
extension. Immutable; covered by the ICV.</t>
          </dd>
          <dt>Capacity (8 bits):</dt>
          <dd>
            <t>The number of record slots the ingress pre-allocated for this option, counted
in records (the Namespace ID fixes the record size, 8 octets by default). Set
once by the ingress, sized so the option fits the domain PMTU (<xref target="RFC8200"/>).
Immutable; covered by the ICV. Capacity lets a validator tell a legitimately
full buffer (records present equal to Capacity) from a bypassed or stripped
record (fewer records present than Capacity) using only authenticated data.
Whether Capacity merits its own octet is left open for working-group review:
completeness is already enforced by the authenticated Node IDs against the
expected path (<xref target="checking"/>), so if that authenticated capacity and overflow
signal is judged not worth the space, this octet (byte 5) can be reclaimed as
Reserved.</t>
          </dd>
          <dt>Flags (3 bits):</dt>
          <dd>
            <t>Mutable control bits, excluded from the ICV so EPs may update them. One bit is
the Overflow (O) indicator: an EP with no free slot sets O to mark the metadata
incomplete. This indicator <bcp14>MUST</bcp14> be in the header, not in a per-node record,
because an EP that cannot write a record also cannot set a bit inside it. O is
only a hint; incomplete metadata is detected regardless by the completeness
check (<xref target="checking"/>). The remaining bits are reserved (<bcp14>MUST</bcp14> be zero).</t>
          </dd>
          <dt>NextIndex (5 bits):</dt>
          <dd>
            <t>The index of the next free record slot, equal to the count of records already
written. An EP writes its record at NextIndex and increments it; when NextIndex
equals Capacity there is no free slot and the EP sets O instead of writing. A
write-path cursor only: mutable and excluded from the ICV, so a validator
relies on the authenticated records and Capacity, never on this field.</t>
          </dd>
          <dt>Reserved (8 bits):</dt>
          <dd>
            <t>Set to zero on send, ignored on receipt. Excluded from the ICV. (In the
extensible record variant of <xref target="record-ext"/>, this octet instead carries the
Optional Data Present bitmap, which is then covered by the ICV.)</t>
          </dd>
        </dl>
      </section>
      <section anchor="record">
        <name>Per-Node Record</name>
        <t>Each EP appends one 8-octet record:</t>
        <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Node ID            |         Filter ID (20)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|(cont) |Action |State|Severity |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  bytes 0-1 : Node ID      (16 bits)
  bytes 2-4 : Filter ID    (20 bits) || Action (4 bits)
  byte  5   : Policer Data -- State (3 bits) || Severity (5 bits)
  bytes 6-7 : Flags        (16 bits)
]]></artwork>
        <dl>
          <dt>Node ID (16 bits):</dt>
          <dd>
            <t>Identifies the EP that wrote the record. Selects the per-node key.</t>
          </dd>
          <dt>Filter ID (20 bits):</dt>
          <dd>
            <t>The firewall rule that matched, scoped to Policy ID and Policy Version. It is
the compact handle the controller assigns to that rule and maps back; it need
not equal the ACL sequence-id or priority, and its meaning is scoped to one
policy within a single domain -- the same value in another domain is unrelated.</t>
          </dd>
          <dt>Action (4 bits):</dt>
          <dd>
            <t>The action applied: 0 = ACCEPT, 1 = DROP, 2 = POLICE. Other values reserved.</t>
          </dd>
          <dt>Policer State (3 bits):</dt>
          <dd>
            <t>Policer state when Action = POLICE. This document uses 0 = GREEN (in profile, or
conformant -- within the configured committed rate and burst) and 2 = RED (out
of profile, or non-conformant -- exceeding them), the green/red marking of
<xref target="RFC2697"/>; value 1 (YELLOW) and the rest are reserved. The value is the
policer's state as it handled the packet: RED when the measured rate was over
the configured rate, GREEN when within it. It is stamped on a packet the policer
forwards (allows), so the rate condition travels onward with the packet. A RED
record therefore marks an allowed, forwarded packet that the policer handled
while over its configured rate -- not a dropped one (see <xref target="examples"/>, Case 5).
If the policer instead drops the excess traffic, those packets take the DROP
action and carry no metadata downstream -- so they never appear as RED records.</t>
          </dd>
          <dt>Severity (5 bits):</dt>
          <dd>
            <t>A carry-forward count of out-of-profile hops: a GREEN hop adds 0, a RED hop
adds 1. The count travels with the packet, so no EP needs per-flow state, and
the final value is how many hops policed this packet out of profile. Because it
accumulates across hops and arrives authenticated, an egress or collector can
use it as a distributed rate-limit / DDoS signal -- shedding or correlating
packets that were policed at many hops, catching distributed overload that no
single hop saw enough of to act on alone (see <xref target="inline"/>). A future version <bcp14>MAY</bcp14>
add Policer values and per-color weights so Severity becomes a weighted
intensity instead of a plain count.</t>
          </dd>
          <dt>Flags (16 bits):</dt>
          <dd>
            <t>Per-node status, covered by the ICV (so each bit is an authenticated per-node
statement). Two bits signal that the EP's policy context differs from the
Initial Header:
</t>
            <ul spacing="normal">
              <li>
                <t>Bit 0 -- PV (Policy Version Differs): the EP evaluated a different Policy
Version than the header (version skew, typically a transient rollout).</t>
              </li>
              <li>
                <t>Bit 1 -- PI (Policy ID Differs): the EP evaluated a different Policy ID
than the header (policy layering, typically intentional and structural).</t>
              </li>
            </ul>
            <t>When either is set, a validator treats an Action or Filter mismatch at that EP
as an expected context difference to review (see <xref target="one-policy"/>), not a true
execution divergence, so legitimate skew or layering does not raise a false
alarm. Keeping them separate lets a validator handle them differently (for
example, auto-suppress PV skew under a convergence timer while always expecting
PI layering). These bits say only that the context differs, not which Policy
ID or Version the EP used; the actual values are a namespace extension.
Remaining bits reserved (<bcp14>MUST</bcp14> be zero).</t>
          </dd>
        </dl>
        <t>Security-critical status (anything a validator acts on) <bcp14>MUST</bcp14> be an immutable
per-node field so that it is covered by the ICV. Mutable header fields (Flags,
NextIndex, Reserved) are not authenticated and <bcp14>MUST NOT</bcp14> carry security decisions.</t>
      </section>
      <section anchor="record-ext">
        <name>Record Extensibility: Fixed vs. Optional Data Present</name>
        <t>This document specifies the fixed 8-octet record above as the primary format,
and records an extensible variant as a co-equal alternative. The choice is left
open for working-group discussion.</t>
        <dl>
          <dt>Fixed (primary):</dt>
          <dd>
            <t>Every record is exactly 8 octets with fixed field offsets. It is the simplest
to implement (fixed offsets suit hardware), adds no per-packet length
computation, needs no extra covered field, and still supports format evolution
because a different Namespace ID can select a different fixed record format --
the IOAM approach. Its limitation is that an optional field (for example a
timestamp or session identifier) cannot be added to the same namespace in
place; it requires a new namespace/format.</t>
          </dd>
          <dt>Optional Data Present (alternative):</dt>
          <dd>
            <t>The Reserved octet of the Initial Header instead carries an 8-bit Optional Data
Present bitmap, set once by the ingress. Each set bit signals an optional field
appended to every record (for example a 64-bit timestamp or session
identifier), making the record self-describing on one namespace. Because the
bitmap defines the record layout it is security-relevant, so it is immutable
and covered by the ICV. Its costs are variable record length (every EP and
validator computes record size from the bitmap), an added covered field, an
extra IANA bit registry, and more implementation complexity.</t>
          </dd>
        </dl>
        <t>For an initial specification the fixed format is <bcp14>RECOMMENDED</bcp14>; the Optional Data
Present variant is preferable only where optional per-record fields are expected
frequently on a single namespace.</t>
      </section>
      <section anchor="wire">
        <name>Complete Option on the Wire</name>
        <t>The figure below assembles every field into one concrete option. The bytes are
the real values from Case 2 of <xref target="examples"/> (three EPs, all in sync): a
64-octet option carrying the 8-octet Initial Header, the 32-octet Integrity
Header, and three 8-octet records. All values are big-endian; offsets are in
hexadecimal.</t>
        <artwork><![CDATA[
Outer framing -- the option sits in an IPv6 Dest Options header:

 +--------------+--------------+--------------+----------------+
 | Next Header  | Hdr Ext Len  | Opt Type=TBD | Opt Data Len   |
 +--------------+--------------+--------------+----------------+
 |         Option Data (64 octets, detailed below)   | PadN     |
 +---------------------------------------------------+----------+

Option Data -- 64 octets (Case 2: 3 EPs, every EP ACCEPT / 0x1001):

 off  octets                     field
 ---  -----------------------    -----------------------------------
 Initial Header (8):
 00   00 00                      Namespace ID   = 0x0000   (covered)
 02   00 a1                      Policy ID      = 0x00a1   (covered)
 04   01                         Policy Version = 1        (covered)
 05   03                         Capacity       = 3        (covered)
 06   03                         Flags=0, NextIndex=3      (mutable)
 07   00                         Reserved       = 0        (mutable)

 Integrity Header (32):
 08   00                         Method ID      = 0
 09   0c                         Nonce Length   = 12
 0a   00 00                      Reserved
 0c   01 00 00 01 00 00 00 00    Nonce: KeyID=01 Encap=000001
 14   00 00 00 02                       Counter=...0000002
 18   45 cb cc fc 11 8d e8 cd    ICV (16) = carried ICV_3
 20   57 37 44 44 d4 cc 09 bc      45cbccfc118de8cd57374444d4cc09bc

 Per-Node Records (3 x 8):
 28   00 01 01 00 10 00 00 00    EP1: id=0001 flt=0x1001 ACPT GRN s0
 30   00 02 01 00 10 00 00 00    EP2: id=0002 flt=0x1001 ACPT GRN s0
 38   00 03 01 00 10 00 00 00    EP3: id=0003 flt=0x1001 ACPT GRN s0
]]></artwork>
        <t>Each record packs Node ID (2 octets), then Filter ID (20 bits) and Action (4
bits) as three octets <tt>01 00 10</tt> = (0x01001 &lt;&lt; 4) | 0x0, then Policer Data
(<tt>00</tt> = GREEN, Severity 0), then the 16-bit record Flags (<tt>00 00</tt>). The masked
Initial Header (mutable octets 06, 07 zeroed; octet 05 Capacity covered) is folded in only by the first
EP, in ICV_1; each later EP folds its record over the previous ICV, so the value
carried at offset 0x18 is the last link, ICV_3. The construction is defined next.</t>
        <t>The ICV reuses the chained AES-GMAC construction of
<xref target="I-D.ietf-ippm-ioam-data-integrity"/> (Method ID 0). Each EP i has a unique key
Key_i. Let MASK(H) be the Initial Header with its mutable bits cleared
(<xref target="mask"/>), Record_i the record written by EP i, and Nonce the 12-octet nonce
(KeyID(1) || EncapNodeID(3) || Counter(8)). For a path of N EPs:</t>
        <artwork><![CDATA[
  ICV_1 = GMAC(Key_1, Nonce, MASK(H) || Record_1)        (first EP)
  ICV_i = GMAC(Key_i, Nonce, ICV_{i-1} || Record_i)      for i = 2..N
]]></artwork>
        <t>The first EP computes ICV_1 over the masked header and its own record. Each later
EP i folds its record over the ICV it received (ICV_{i-1}) and overwrites the
field, so only the latest value, ICV_N, is carried -- that is the "carried ICV".
The Integrity Header carries Method ID (1), Nonce Length (1), Reserved (2), the
Nonce (12), and ICV_N (16). A validator holds the per-node keys, replays the
chain over the masked header and the carried records to recompute ICV_N, and
compares it to the carried value. These are the encapsulating-, transit-, and
validator-node procedures of <xref target="I-D.ietf-ippm-ioam-data-integrity"/> (Sections 5.3,
5.4, and 5.6; that document indexes the first node as 0).</t>
        <t>The chain, drawn as each EP folding its record into the single ICV field:</t>
        <artwork><![CDATA[
   MASK(H)+Rec1        ICV1+Rec2        ICV2+Rec3
        |                  |                |
        v                  v                v
   GMAC(Key1) --ICV1--> GMAC(Key2) --ICV2--> GMAC(Key3) --> ICV3
                                                           (carried)

   Only ICV3 travels on the wire. A validator holding Key1..KeyN
   replays ICV1 -> ICV2 -> ICV3 over the carried records and checks
   it equals ICV3.
]]></artwork>
      </section>
    </section>
    <section anchor="mask">
      <name>ICV Coverage Mask</name>
      <t>Only immutable fields are covered. Fields that legitimately change en route are
masked out (ANDed to zero) before the ICV is computed, exactly as in Section 5.2
of <xref target="I-D.ietf-ippm-ioam-data-integrity"/>.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Initial Header field</th>
            <th align="center">Covered by ICV</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Namespace ID</td>
            <td align="center">yes</td>
          </tr>
          <tr>
            <td align="left">Policy ID</td>
            <td align="center">yes</td>
          </tr>
          <tr>
            <td align="left">Policy Version</td>
            <td align="center">yes</td>
          </tr>
          <tr>
            <td align="left">Capacity</td>
            <td align="center">yes</td>
          </tr>
          <tr>
            <td align="left">Flags</td>
            <td align="center">no</td>
          </tr>
          <tr>
            <td align="left">NextIndex</td>
            <td align="center">no</td>
          </tr>
          <tr>
            <td align="left">Reserved</td>
            <td align="center">no</td>
          </tr>
        </tbody>
      </table>
      <t>All per-node record fields are covered by the ICV.</t>
      <t>The AND-mask applied to the 8-octet Initial Header (fixed variant) is:</t>
      <artwork><![CDATA[
  FF FF  FF FF  FF  FF  00  00
  ^^^^^  ^^^^^  ^^  ^^  ^^  ^^
  |      |      |   |   |   Reserved           -> 00   (excluded)
  |      |      |   |   Flags || NextIndex  -> 00   (excluded)
  |      |      |   Capacity                -> FF   (covered)
  |      |      Policy Version             -> FF   (covered)
  |      Policy ID                         -> FFFF (covered)
  Namespace ID                            -> FFFF (covered)
]]></artwork>
      <t>(In the Optional Data Present variant of <xref target="record-ext"/>, the final octet is
covered: the mask becomes FF FF FF FF FF FF 00 FF.)</t>
      <t>Mask check. ICV_1 over the masked header plus the first record does not change
when only mutable bits change, and does change when a covered bit changes:</t>
      <artwork><![CDATA[
  base                ICV_1 = a48fd4ba...
  flip mutable bits   ICV_1 = a48fd4ba...  (SAME -> excluded)
  flip Policy ID      ICV_1 = a2e4c797...  (DIFFERS -> covered)
]]></artwork>
    </section>
    <section anchor="checking">
      <name>Checking the Metadata</name>
      <t>A validator does the following checks.</t>
      <artwork><![CDATA[
   carried records + carried ICV
             |
             v
   Step 1  recompute the chain, compare to the carried ICV
             |
        FAIL | PASS (authentic)
       +-----+-----------------------+
       v                             v
   tampered:                 Step 2  compare each record's
   admin response                    Action/Filter to the
                                     expected policy
                                     |
                                MATCH | MISMATCH
                               +------+-------------------+
                               v                          v
                          conformant              divergent: if PV/PI
                          (done)                  set, an expected
                                                  context difference
                                                  to review; else
                                                  admin response
]]></artwork>
      <t>Step 1 -- Integrity. Recompute the ICV chain over MASK(H) and the carried
records, then compare the final recomputed ICV to the carried ICV. If they are
equal, the records are authentic and unchanged; otherwise the metadata was
tampered with. This is the Validator procedure of
<xref target="I-D.ietf-ippm-ioam-data-integrity"/> (Section 5.6).</t>
      <t>Step 2 -- Conformance. For each real record, compare the Action and Filter ID to
the policy expected for the carried Policy ID and Policy Version. Any mismatch
flags honest divergence at that EP.</t>
      <t>Step 3 -- Completeness. Confirm that a record is present for every EP the
validator expected on the path. Because a chain built over a subset of EPs is
itself a valid chain, Step 1 cannot by itself reveal an EP that never stamped a
record. The validator compares the authenticated Node IDs against the expected
path, and their count against the immutable Capacity: a count equal to Capacity
is a legitimately full buffer, whereas a count below Capacity with an expected EP
absent is a bypassed or stripped record. Capacity is covered by the ICV while the
mutable NextIndex and the Overflow hint are not, so this uses only authenticated
data. A missing record is a positive detection: that EP was bypassed or failed to
enforce -- a
security event in its own right (for example, traffic that skipped a firewall),
not merely a gap. Removal of the entire option is outside this check and is left
to the encapsulating protocol (see Security Considerations).</t>
      <t>A record may pass Step 1 (authentic) and fail Step 2 (divergent).</t>
      <section anchor="one-policy">
        <name>One Policy and Generation per Path</name>
        <t>The Initial Header carries a single Policy ID and Policy Version, so this
specification assumes every EP on the path evaluates the same policy and
generation. Conformance (Step 2) compares each record's Action and Filter ID to
that one policy.</t>
        <t>Two situations break that assumption. EPs may legitimately apply different
policies (policy layering -- for example a perimeter firewall policy at the
domain edge and an internal segmentation policy deeper in, or a tenant policy at
one hop and a corporate policy at another), and during a rollout EPs may briefly
run different generations of the same policy (version skew). A single header
value cannot express either case.</t>
        <t>Each record therefore carries two authenticated hint flags (<xref target="record"/>): PV
(Policy Version Differs) and PI (Policy ID Differs). An EP sets PV when it ran a
different generation than the header (rollout skew) and PI when it ran a
different policy (layering). They let a validator treat that EP's Action or
Filter mismatch as an expected context difference to review, rather than a true
divergence, so an operator is not alarmed by legitimate skew or layering; keeping
them separate allows different handling (for example, auto-suppressing PV skew
under a convergence timer). The flags say only that the context differs, not
which Policy ID or generation the EP used; carrying those actual values costs
scarce record bits and is therefore a namespace extension (a record format,
selected by Namespace ID, that adds per-EP Policy ID and Policy Version). The
header Policy Version remains the ingress's reference generation.</t>
      </section>
      <section anchor="validation-is-a-role">
        <name>Validation Is a Role</name>
        <t>Validation is a role, not a fixed node. Any EP that holds the keys of the
upstream EPs 0..i can recompute the ICV prefix and check the records written so
far. The choice is a key-distribution policy:</t>
        <ul spacing="normal">
          <li>
            <t>End-only validation: only the decap holds all keys. Simplest distribution; a
single validation at the end that still runs all three checks -- integrity
(the chain), conformance (per-record action and filter), and completeness
(expected Node IDs).</t>
          </li>
          <li>
            <t>Distributed validation: capable EPs hold the upstream keys they need and check
inline. Earlier detection, at the cost of a wider key footprint.</t>
          </li>
        </ul>
        <t>An EP can play both roles in a single pass: it writes its own record and, if it
holds the upstream keys, validates the records before it (an inline-validating
EP). This is the node that inline Severity reactions (<xref target="inline"/>) and Case 4 rely
on.</t>
        <t>Whatever the key distribution, the decapsulating or egress node <bcp14>MUST</bcp14> validate the
metadata of packets that reach it; inline validation at earlier EPs is optional.
A packet dropped before egress is validated from the dropping EP's export
instead.</t>
      </section>
      <section anchor="response-to-a-detected-problem">
        <name>Response to a Detected Problem</name>
        <t>The protocol produces a trustworthy verdict; the response is set by the operator
and is local to the detecting entity. Typical actions, which <bcp14>MAY</bcp14> be combined:</t>
        <ul spacing="normal">
          <li>
            <t>log or raise an alarm;</t>
          </li>
          <li>
            <t>report the event to the management plane;</t>
          </li>
          <li>
            <t>collect additional diagnostics (for example the EP's firewall state or policer
counters) and attach them to the report;</t>
          </li>
          <li>
            <t>mirror or redirect the packet and its metadata to a collector for deeper
analysis;</t>
          </li>
          <li>
            <t>drop the packet, if so configured.</t>
          </li>
        </ul>
        <t>This applies equally to an integrity failure and a conformance mismatch: the
mechanism produces the verdict, and which action follows is administratively
configured. There is no on-wire "verdict" field.</t>
        <t>An EP always enforces its own policy independently; validating the metadata is an
additional capability, never a substitute for an EP's own inspection, and an EP's
own decision <bcp14>MUST NOT</bcp14> be delayed pending validation. When an EP that expects
metadata cannot verify it (missing, stripped, or failing the integrity check),
local policy selects the behaviour:</t>
        <ul spacing="normal">
          <li>
            <t>Verify-or-Drop (strict): unverifiable or missing expected metadata is treated
as absent, raising an alarm and, optionally, dropping the packet. Suited to
high-assurance zones.</t>
          </li>
          <li>
            <t>Permissive: the EP logs the event, enforces its own policy, and forwards.
Suited to migration, key rotation, or mixed domains.</t>
          </li>
          <li>
            <t>Non-participant: an EP never provisioned with the relevant keys simply forwards
the packet with the metadata intact.</t>
          </li>
        </ul>
        <t>When the response is DROP (or an EP's own policy drops the packet), the packet
does not continue, so the in-band note cannot be delivered downstream. The
dropping EP finalizes the partial chain and <bcp14>MAY</bcp14> export it out-of-band,
rate-limited, so the evidence is preserved for a key-holding collector to
validate; the dropping EP
need not -- and, as a non-validator, may be unable to -- validate the upstream
records itself. Responses that let the packet continue (ACCEPT, POLICE) keep the
note in-band to the decap.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Worked Examples</name>
      <t>These examples come from a runnable reference. Policy ID is 0x00a1, Policy
Version is 1, and the expected decision at every EP is ACCEPT / Filter ID
0x1001. ICVs are 16 octets; the "..." form shows the first bytes.</t>
      <section anchor="case-1-tampering-is-caught">
        <name>Case 1: Tampering Is Caught</name>
        <t>The packet holds a single ICV field -- the "carried ICV". The chain keeps only
the latest value: EP1 computes it first, and each later EP folds its own record
in and overwrites it, so the carried ICV is the value written by the last EP
(EP3). Three EPs each ACCEPT with Filter ID 0x1001.</t>
        <artwork><![CDATA[
  BUILD -- Rec_i = EP i's record, each folded into one ICV field:
  EP1: ICV_1 = GMAC(K1, Nonce, MASK(header) || Rec_1) -> b23daca9...
  EP2: ICV_2 = GMAC(K2, Nonce, ICV_1 || Rec_2) -> 04eb105e...
  EP3: ICV_3 = GMAC(K3, Nonce, ICV_2 || Rec_3) -> a01d8d8f...
]]></artwork>
        <t>An attacker flips EP2's recorded action ACCEPT -&gt; DROP but cannot update the
carried ICV, because it lacks EP2's key.</t>
        <artwork><![CDATA[
  CHECK (validator replays the chain over the carried records):
  ICV_1 = GMAC(K1, Nonce, MASK(header) || Rec_1) -> b23daca9...
  ICV_2 = GMAC(K2, Nonce, ICV_1 || Rec_2*) -> 31e121c7... (altered)
  ICV_3 = GMAC(K3, Nonce, ICV_2 || Rec_3) -> c3355628...
  recomp ICV_3 = c3355628 != carried = a01d8d8f -> TAMPERING CAUGHT
]]></artwork>
        <t>Integrity detects that the chain was altered, but a single carried ICV does not
by itself say where. Two things localize it: Step 2 conformance independently
flags EP2's record (DROP != expected ACCEPT); and a validator that knows the
expected records can replay a clean chain and compare step by step, where the
first mismatch is EP2. An ICV failure is the validator's verdict, not a value
any node writes -- there is no per-record "ICV failed" bit -- and the action on
failure (alarm, drop, collect, export) is administratively configured (see
Response to a Detected Problem).</t>
      </section>
      <section anchor="case-2-everything-in-sync">
        <name>Case 2: Everything in Sync</name>
        <t>Every EP applies the expected ACCEPT / 0x1001.  Each EP stamps one record and
folds it into the ICV; here every record is {Node ID, Filter 0x1001, Action
ACCEPT, Policer GREEN, Severity 0}.</t>
        <artwork><![CDATA[
  Initial Header: Namespace=0000 PolicyID=00a1 PolicyVer=1
  record EP1: ID=0001 Filter=0x1001 Action=ACCEPT Policer=GREEN Sev=0
  record EP2: ID=0002 Filter=0x1001 Action=ACCEPT Policer=GREEN Sev=0
  record EP3: ID=0003 Filter=0x1001 Action=ACCEPT Policer=GREEN Sev=0
  carried ICV = 45cbccfc...
  Step 1 Integrity   -> PASS (authentic, untampered)
  Step 2 Conformance -> MATCH (every EP applied ACCEPT/0x1001)
]]></artwork>
      </section>
      <section anchor="case-3-action-mismatch-drop-ends-the-path">
        <name>Case 3: Action Mismatch -&gt; DROP Ends the Path</name>
        <t>EP 2 honestly records DROP with the expected Filter ID 0x1001 -- a pure action
mismatch. A DROP stops the packet, so there is no EP 3 and the in-band chain
never reaches the egress.</t>
        <artwork><![CDATA[
  build:  EP1 {Filter 0x1001, ACCEPT} -> EP2 {Filter 0x1001, DROP}
          carried ICV (2 records) = dbbc39ae...
  EP2 drops per its own policy and MAY export the 2-record chain
  out-of-band (rate-limited) to a collector that holds the keys; EP2
  itself need not validate it.
  Collector:
    Step 1 Integrity   -> PASS (authentic)
    Step 2 Conformance -> MISMATCH at EP2: Action DROP vs exp ACCEPT
      (Filter 0x1001 matches; only the action diverges)
]]></artwork>
        <t>A plain dropping EP cannot run Step 1 -- it lacks the upstream keys -- so it
forwards the evidence to a key-holding collector. An inline-validating EP could
run both checks itself before exporting.</t>
      </section>
      <section anchor="case-4-filter-mismatch-caught-inline">
        <name>Case 4: Filter Mismatch -&gt; Caught Inline</name>
        <t>EP 2 takes the right action (ACCEPT) but matched a different rule, Filter ID
0x1005. The action is ACCEPT, so the packet continues. EP 3 acts as an inline
validator.</t>
        <artwork><![CDATA[
  build:  EP1 {Filter 0x1001, ACCEPT} -> EP2 {Filter 0x1005, ACCEPT}
          -> EP3 {Filter 0x1001, ACCEPT}    carried ICV = a018ba1e...
  EP3 inline validator (holds keys for EP1, EP2):
     recompute after EP1 = 7ac31d52...
     recompute after EP2 = 5daf39da...  (so-far matches -> PASS)
     conformance -> MISMATCH at EP2: Filter 0x1005 vs expected 0x1001
       (Action ACCEPT matches; only the rule that fired diverges)
     configured response = export to collector; keep forwarding
  Decap re-validates the full 3-record chain independently.
]]></artwork>
        <t>The outcome (ACCEPT) matched policy, but a different rule fired. This signature
-- right action, wrong rule -- is exactly what an allow/deny result alone would
hide. It typically indicates one of: a stale or drifted rule set on that EP,
Policy Version skew during a rollout, or an implementation bug that matched the
wrong rule. The PV/PI record flags (<xref target="record"/>) let an EP distinguish an
expected context difference (version skew or policy layering) from a true bug:
when neither flag is set, a Filter mismatch is an unexpected divergence to
investigate. Reporting it exposes drift or a bug that would otherwise go
unnoticed.</t>
      </section>
      <section anchor="case-5-policer-color-and-severity">
        <name>Case 5: Policer Color and Severity</name>
        <t>Action is POLICE; the Policer State is GREEN (within the configured rate) or RED
(exceeding it -- "out of profile"). Severity counts the RED hops along the path;
a GREEN hop does not add to it.</t>
        <artwork><![CDATA[
  EP1 RED   (+1)  carried severity 1   ICV = f52d43f8...
  EP2 GREEN (+0)  carried severity 1   ICV = f9bd54a3...
  EP3 RED   (+1)  carried severity 2   ICV = 9e19a585... (carried)
  Step 1 Integrity -> PASS
  path severity (final carried value) = 2  (two out-of-profile hops)
]]></artwork>
        <t>An egress <bcp14>MAY</bcp14> use the Severity count or a RED marking to treat the packet more
strictly (see <xref target="inline"/>).</t>
      </section>
      <section anchor="scaling-to-more-eps">
        <name>Scaling to More EPs</name>
        <t>Path length changes only the record array, never the ICV: the ICV is always 16
octets, and each EP adds one 8-octet record, so the option grows linearly. For
five EPs (all ACCEPT/0x1001) the size is:</t>
        <artwork><![CDATA[
  option content =  8  (Initial Header)
                 + 32  (Integrity Header: 16-octet ICV + 16 octets of
                        Method ID, Nonce Length, Reserved, and Nonce)
                 + 5 x 8  (per-node records)
                 = 80 octets

  full Dest-Opt header = 80 + 4 (framing) + 4 (PadN) = 88 octets
  carried ICV (EP5) = efea617e...
]]></artwork>
      </section>
    </section>
    <section anchor="inline">
      <name>Inline Use and Threshold-Triggered Export</name>
      <t>Inline, an EP or the egress <bcp14>MAY</bcp14> use the Policer color (RED) or the Severity count
to treat a packet more strictly -- deprioritizing it or policing it tighter when
giving out resources. A node that acts on carried Policer State or Severity <bcp14>MUST</bcp14>
first validate the upstream chain (that is, act as a validator for those
records); otherwise it is relying on unauthenticated data an on-path attacker
could have altered. Carried severity is thus trustworthy only at a validating
node, which in the common case is the egress.</t>
      <t>When Severity crosses a configured threshold, the packet's metadata <bcp14>MAY</bcp14> be
exported to a collector. Because each record is authenticated and ordered, the
collector reads the exact path and the RED-marking EPs directly from the packet,
instead of reconstructing the path from independent per-device records. By
correlating Filter IDs across exported packets, the collector can see where
related flows entered on other EPs and build an attack graph.</t>
      <t>Flows do not merge in band: two flows are two packets, each carrying its own
chain. A convergence point <bcp14>MAY</bcp14> independently mark RED when the aggregate of
several separately-policed flows exceeds its own limit. In the reference run, two
flows both cross EP3 (RED):</t>
      <artwork><![CDATA[
  Flow A: EP1(RED) -> EP3(RED)   carried ICV = b76d76c1...
  Flow B: EP2(RED) -> EP3(RED)   carried ICV = 0f4058f2...
]]></artwork>
      <t>The correlation itself is conventional collector and telemetry work (for example
<xref target="RFC8955"/> and <xref target="RFC8811"/>); what is new is the authenticated, deterministic,
per-hop enforcement evidence it consumes -- something flow-record correlation and
probabilistic packet marking cannot provide. Thresholds <bcp14>SHOULD</bcp14> account for path
length, since Severity is bounded by the number of hops.</t>
    </section>
    <section anchor="option-sizing">
      <name>Option Sizing</name>
      <t>The option content is Initial Header (8) + Integrity Header (32) + N records
(8 each). The full Destination Options header adds a 2-octet option header plus
2-octet option type/length and PadN to a multiple of 8 octets.</t>
      <table>
        <thead>
          <tr>
            <th align="center">Records (N)</th>
            <th align="center">Option content</th>
            <th align="center">Full Dest-Opt header</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="center">3</td>
            <td align="center">64 octets</td>
            <td align="center">72 octets</td>
          </tr>
          <tr>
            <td align="center">5</td>
            <td align="center">80 octets</td>
            <td align="center">88 octets</td>
          </tr>
          <tr>
            <td align="center">8</td>
            <td align="center">104 octets</td>
            <td align="center">112 octets</td>
          </tr>
        </tbody>
      </table>
      <t>The per-hop record is deliberately compact (8 octets) to keep the option small
and bounded by path length, targeting the common firewall and DDoS use cases
while limiting growth of the packet. Because a Destination Options header is not
carried in IPv6 fragments and the option is added by the ingress (which knows the
PMTU, <xref target="RFC8200"/>), the ingress <bcp14>MUST</bcp14> size the option -- choosing the number of
pre-allocated records, carried as Capacity (<xref target="inithdr"/>) -- so that the resulting
packet stays within the PMTU of the domain and does not cause fragmentation. If
an EP still has no free slot (NextIndex equals Capacity), it sets the Overflow (O)
indicator in the Initial Header Flags (<xref target="inithdr"/>) to mark the metadata
incomplete.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The ICV provides origin authentication and integrity for the per-node records
and the immutable header fields, inheriting the properties and key-management
assumptions of <xref target="I-D.ietf-ippm-ioam-data-integrity"/>. Points specific to this
document:</t>
      <ul spacing="normal">
        <li>
          <t>Mutable header bits (Flags, NextIndex, Reserved) are not authenticated. An on-path
attacker can flip them undetected. No security decision may depend on them;
security-critical status <bcp14>MUST</bcp14> be in immutable per-node fields.</t>
        </li>
        <li>
          <t>The ICV authenticates the records present, not their completeness, so a
validator <bcp14>MUST</bcp14> verify that every expected EP is represented (the completeness
check of <xref target="checking"/>); a skipped or stripped record is thereby detected even
though a chain over a subset is itself valid. Deleting a record while leaving
the ICV is caught as a Step 1 mismatch, but removing the entire option (records
and ICV together) is not detectable here and is left to the encapsulating
protocol, as in <xref target="I-D.ietf-ippm-ioam-data-integrity"/>.</t>
        </li>
        <li>
          <t>Distributed (inline) validation requires EPs to hold upstream keys, widening
key exposure. Because the construction is symmetric, any key holder (including
the validator) can in principle forge records, so this mechanism proves
enforcement within a trust domain, not to an external third party.</t>
        </li>
        <li>
          <t>Replay across packets is bounded by the nonce counter; reuse of a
(Key, Nonce) pair <bcp14>MUST</bcp14> be avoided, per
<xref target="I-D.ietf-ippm-ioam-data-integrity"/>.</t>
        </li>
      </ul>
      <t>This mechanism is intended for a single limited domain <xref target="RFC8799"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests an IPv6 Destination Option Type for firewall metadata
(value TBD), with the act bits set so that unknown receivers skip the option and
the change-en-route bit set. It also requests registries for Action values and
Policer State values, and (for the Optional Data Present variant of
<xref target="record-ext"/>) a registry for Optional Data Present bits. Namespace IDs <bcp14>MAY</bcp14>
reuse the IOAM Namespace-ID registry of <xref target="RFC9197"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9197">
          <front>
            <title>Data Fields for In Situ Operations, Administration, and Maintenance (IOAM)</title>
            <author fullname="F. Brockners" initials="F." role="editor" surname="Brockners"/>
            <author fullname="S. Bhandari" initials="S." role="editor" surname="Bhandari"/>
            <author fullname="T. Mizrahi" initials="T." role="editor" surname="Mizrahi"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>In situ Operations, Administration, and Maintenance (IOAM) collects operational and telemetry information in the packet while the packet traverses a path between two points in the network. This document discusses the data fields and associated data types for IOAM. IOAM-Data-Fields can be encapsulated into a variety of protocols, such as Network Service Header (NSH), Segment Routing, Generic Network Virtualization Encapsulation (Geneve), or IPv6. IOAM can be used to complement OAM mechanisms based on, e.g., ICMP or other types of probe packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9197"/>
          <seriesInfo name="DOI" value="10.17487/RFC9197"/>
        </reference>
        <reference anchor="RFC9486">
          <front>
            <title>IPv6 Options for In Situ Operations, Administration, and Maintenance (IOAM)</title>
            <author fullname="S. Bhandari" initials="S." role="editor" surname="Bhandari"/>
            <author fullname="F. Brockners" initials="F." role="editor" surname="Brockners"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>In situ Operations, Administration, and Maintenance (IOAM) records operational and telemetry information in the packet while the packet traverses a path between two points in the network. This document outlines how IOAM Data-Fields are encapsulated in IPv6.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9486"/>
          <seriesInfo name="DOI" value="10.17487/RFC9486"/>
        </reference>
        <reference anchor="RFC8799">
          <front>
            <title>Limited Domains and Internet Protocols</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="B. Liu" initials="B." surname="Liu"/>
            <date month="July" year="2020"/>
            <abstract>
              <t>There is a noticeable trend towards network behaviors and semantics that are specific to a particular set of requirements applied within a limited region of the Internet. Policies, default parameters, the options supported, the style of network management, and security requirements may vary between such limited regions. This document reviews examples of such limited domains (also known as controlled environments), notes emerging solutions, and includes a related taxonomy. It then briefly discusses the standardization of protocols for limited domains. Finally, it shows the need for a precise definition of "limited domain membership" and for mechanisms to allow nodes to join a domain securely and to find other members, including boundary nodes.</t>
              <t>This document is the product of the research of the authors. It has been produced through discussions and consultation within the IETF but is not the product of IETF consensus.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8799"/>
          <seriesInfo name="DOI" value="10.17487/RFC8799"/>
        </reference>
        <reference anchor="RFC2697">
          <front>
            <title>A Single Rate Three Color Marker</title>
            <author fullname="J. Heinanen" initials="J." surname="Heinanen"/>
            <author fullname="R. Guerin" initials="R." surname="Guerin"/>
            <date month="September" year="1999"/>
            <abstract>
              <t>This document defines a Single Rate Three Color Marker (srTCM), which can be used as component in a Diffserv traffic conditioner. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2697"/>
          <seriesInfo name="DOI" value="10.17487/RFC2697"/>
        </reference>
        <reference anchor="RFC8955">
          <front>
            <title>Dissemination of Flow Specification Rules</title>
            <author fullname="C. Loibl" initials="C." surname="Loibl"/>
            <author fullname="S. Hares" initials="S." surname="Hares"/>
            <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <author fullname="M. Bacher" initials="M." surname="Bacher"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>This document defines a Border Gateway Protocol Network Layer Reachability Information (BGP NLRI) encoding format that can be used to distribute (intra-domain and inter-domain) traffic Flow Specifications for IPv4 unicast and IPv4 BGP/MPLS VPN services. This allows the routing system to propagate information regarding more specific components of the traffic aggregate defined by an IP destination prefix.</t>
              <t>It also specifies BGP Extended Community encoding formats, which can be used to propagate Traffic Filtering Actions along with the Flow Specification NLRI. Those Traffic Filtering Actions encode actions a routing system can take if the packet matches the Flow Specification.</t>
              <t>This document obsoletes both RFC 5575 and RFC 7674.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8955"/>
          <seriesInfo name="DOI" value="10.17487/RFC8955"/>
        </reference>
        <reference anchor="RFC8811">
          <front>
            <title>DDoS Open Threat Signaling (DOTS) Architecture</title>
            <author fullname="A. Mortensen" initials="A." role="editor" surname="Mortensen"/>
            <author fullname="T. Reddy.K" initials="T." role="editor" surname="Reddy.K"/>
            <author fullname="F. Andreasen" initials="F." surname="Andreasen"/>
            <author fullname="N. Teague" initials="N." surname="Teague"/>
            <author fullname="R. Compton" initials="R." surname="Compton"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>This document describes an architecture for establishing and maintaining Distributed Denial-of-Service (DDoS) Open Threat Signaling (DOTS) within and between domains. The document does not specify protocols or protocol extensions, instead focusing on defining architectural relationships, components, and concepts used in a DOTS deployment.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8811"/>
          <seriesInfo name="DOI" value="10.17487/RFC8811"/>
        </reference>
        <reference anchor="I-D.ietf-ippm-ioam-data-integrity">
          <front>
            <title>Integrity Protection of In Situ Operations, Administration, and Maintenance (IOAM) Data Fields</title>
            <author fullname="Frank Brockners" initials="F." surname="Brockners">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari">
              <organization>Databricks</organization>
            </author>
            <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
              <organization>Huawei</organization>
            </author>
            <author fullname="Justin Iurman" initials="J." surname="Iurman">
              <organization>University of Liege</organization>
            </author>
            <date day="18" month="July" year="2026"/>
            <abstract>
              <t>   In Situ Operations, Administration, and Maintenance (IOAM) records
   operational (including telemetry) information in packets while they
   traverse a path in the network.  RFC 9197 specifies data fields for
   IOAM (a.k.a IOAM-Data-Fields) and associated data types.  This
   document specifies integrity protection of IOAM-Data-Fields for
   Intra-IOAM-Domain use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-ioam-data-integrity-20"/>
        </reference>
        <reference anchor="I-D.singh-macneil-ioam-firewall-metadata">
          <front>
            <title>IOAM Data Fields for Firewall and Security Metadata</title>
            <author fullname="PRASHANT SINGH" initials="S." surname="Prashant">
              <organization>Hewlett Packard Enterprise</organization>
            </author>
            <author fullname="Erin MacNeil" initials="E." surname="MacNeil">
              <organization>Hewlett Packard Enterprise</organization>
            </author>
            <date day="1" month="July" year="2026"/>
            <abstract>
              <t>   This document defines a new IOAM Namespace and associated Data Fields
   for carrying firewall and security-related metadata within the In-
   situ Operations, Administration, and Maintenance (IOAM) framework
   (RFC 9197).  The mechanism allows each security Enforcement Point on
   a path to attach a verifiable attestation of the action it took on a
   packet.  This lets downstream Enforcement Points and other nodes
   confirm that security policy was actually executed on the data path
   -- detecting policy bypasses and detecting divergence between
   Enforcement Points that are expected to agree -- while each
   Enforcement Point continues to apply its own policy independently
   rather than delegating enforcement.  This validation of execution
   complements the management plane's validation of intent.  The
   metadata also enables real-time signaling of policer states for DDoS
   mitigation.  To ensure the authenticity and integrity of this
   information, this document leverages the integrity protection
   mechanisms defined in the IOAM data integrity specification (draft-
   ietf-ippm-ioam-data-integrity).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-singh-macneil-ioam-firewall-metadata-00"/>
        </reference>
      </references>
    </references>
    <?line 952?>

<section numbered="false" anchor="relationship-to-ioam">
      <name>Relationship to IOAM</name>
      <t>The integrity construction is taken directly, by reference, from IOAM data
integrity <xref target="I-D.ietf-ippm-ioam-data-integrity"/>: the chained AES-GMAC ICV,
Method ID 0, the 12-octet nonce (Key ID, Encapsulating Node ID, counter), the
AND-mask of immutable fields, and all key and nonce management (per-node keys,
Key ID rotation, the counter limit, and avoidance of key-nonce reuse) are those
of that document and are not restated or redefined here. The IPv6 carriage
follows the model of <xref target="RFC9486"/> and the IOAM data fields of <xref target="RFC9197"/>; the
Namespace ID mirrors the IOAM Namespace-ID. This document defines no new
cryptography.</t>
      <t>This document is the native-IPv6 carriage of the same security-enforcement
metadata defined for IOAM in <xref target="I-D.singh-macneil-ioam-firewall-metadata"/>. The
two share field semantics (Policy ID, Policy Version, Filter ID, Action, Policer
State, Severity) and differ only in encoding: the companion document carries the
metadata as IOAM-Data-Fields within an Integrity-Protected Trace Option-Type,
while this document carries a compact, fixed-layout equivalent in a native IPv6
Destination Option for deployments that do not run IOAM. On-wire field widths are
compacted here to limit packet growth (see Option Sizing); the semantics are
intended to stay aligned with the companion document.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank the authors and contributors of the IOAM data integrity work,
on which the ICV here is based.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91923YbybHle31FjvTQgAWgCZCUKNKyhy1SLS63JI6k7l5e
Z52xC0CBqCOgCq4qkKIlnW+Zb5kvm9hxycwCQEpu99PAahOXyltkZNwjst/v
J03eLLJj9+CXrMpneTpeZO5FXmU36WLh0mLq3mWTdZU3t/3zYlZWk2yZFY17
lTXpNG1Slxfu4vL68YMkHY+r7Jr6wcfQgz34IJmWkyJd0kjTKp01/XFZ5JO0
v0wnRZYv+nVeXM37+er6cX+mbftLbdvf20voLzUd7Y0e94fD/t4omdAXV2V1
e+yyj6skX1XHrqnWdTPa23tKP6dVlh67i6LJqiJrkpuy+nBVlevVMU/XvUpz
+qlIi0nmfqXfaHT3I35P6vV4mdd1XhbN7YqGvDh//yL5kN1SD9PjxLk+d8Bv
bKL8wSbLH9D5FYAmDZ7/In/fnL5K6oaA+rd0URbU+W1WJ6v82P1HU056ri6r
pspmNb27XeLNfybpupmXFY9L/znquD52bwfuB4YefyVAfVsW8ZdldZUW+T/T
htZx7F5mN4usadxlOvmQVlN3DrCsqrzO+OFsmeaLY1eVRbqYDmRj/ud8lQ0m
5bI98vmAIDd5TRsWDX1eERLEX/+WwQn5ioEiw+6xLwfuHZAkGvmySut5SugY
fvgtY6+0mwEjoR+9KKsl9XOdAfxvXzwfDYdP9e3R8MmBvSWEO05ynI3W00+H
T5/Y24Ojx/b0k6fWx+ixf+Do6eGhvT0aDvH2on82yLNmRkditeznZbrs81Hw
mGUPycGxY8QPbh2g4yTp9/suHddNlU6aJHk/z2tHB3LNh3mazfIiq13qbtJb
15RuklbVLX28DiShyiZ0AFw5c7XSA5cFekDrr/NpJmdrRcDOmnrg3Hk6mftT
4jpl5cpmnlU7u3CrktbWdc08bRLajemCZySduRt6nD/XS+qq53AuqFEOKjB1
Rdlkrk5vcYpv5jkNWq1pznmT0JZM5vQECNkN9exo+YQZ9BOts/xAc3w/z7g9
dV5lhAr0doI+xwDAZE50IpsmFwZ193yeTT64X9LFOnMdOtjdHoFmjU2gmWdu
UhYE47UMInCdOlojUSIicc3agQR0QAi6Tumn9jxITmk46pzgM0kL9FZgOteZ
a25KAtkqrWix9D2NRccBcOIhw+Q9UFyHvkxo2CsanQanZRT8lrvFLtO0ARLf
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
l9AkRLc2MdRC11C/bjpI/h9Et5dcbbQAAA==

-->

</rfc>
