Skip to main content

MPLS Network Action (MNA) Sub-Stack Specification including In-Stack Network Actions and Data
draft-ietf-mpls-mna-hdr-21

Yes

Jim Guichard

No Objection

Andy Newton
(Orie Steele)
(Paul Wouters)

Abstain


Note: This ballot was opened for revision 18 and is now closed.

Jim Guichard
Yes
Andy Newton
No Objection
Deb Cooley
No Objection
Comment (2026-02-04 for -19) Sent
Thanks to Derrell Piper for their secdir review, and thanks to Brian Trammell for highlighting part of the draft.

I am balloting no objection, but I encourage the authors to think about providing useful guidance/warnings in Section 12.

General:  I will note that RFC 9789' Sec Consid section quotes from RFC 5920 which says 'The MPLS forwarding plane has no built-in security mechanisms.'  This appears to be a long standing situation.      

Section 12:  This section should outline the risks of using these features/protocol/ideas with mitigations, when they exist.  I don't know a lot about this technology, but I'd be happy to review proposed changes.

Section 12, Bullet 2:  Please remove the last sentence.  Aspirational at best, and unlikely to be true going forward.

Section 12, Bullet 3:  Where are the instructions to implementers and operators documented?

Section 12, second to last bullet:  Perhaps the guidance should be that sensitive data MUST NOT be transmitted using these mechanisms?

Minor comments: 
Section 1.2:  Normative Definitions?  Are there Informative Definitions?  I suggest dropping the 'Normative'.
Éric Vyncke
(was Discuss) No Objection
Comment (2026-02-26) Sent
Thanks for the discussions and the work done by the authors and chairs to address my previous blocking DISCUSS ballot: 
https://mailarchive.ietf.org/arch/msg/mpls/U303kD5kcFD0DOwboBWIHOpxtPQ/

-éric
Gorry Fairhurst
No Objection
Comment (2026-02-01 for -18) Sent
Please see the transport TSV-ART review, and I share the concern there about the words: "The IETF needs to ensure that only secure network actions are defined," in particular, this is not guidance that I would know how to follow.

I think this needs more description/specification, but I assume that Security ADs can advise on this and the best approach.

Gorry
Gunter Van de Velde
No Objection
Comment (2026-01-30 for -18) Sent
# Gunter Van de Velde, RTG AD, comments for draft-ietf-mpls-mna-hdr-18

# The line numbers used are rendered from IETF idnits tool: https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-ietf-mpls-mna-hdr-18.txt

# Many thanks to Acee Lindem and Matt Bocci for the RTG DIR review, and to the authors to resolve the issues and observations made by the directorate review.

# The document introduces changes to the data plane, and while Section 12 discusses an implementation, I was left a bit uncertain about the operational impact when this technology is deployed in a live network. In particular, I’d like to feel more confident that it won’t cause unintended side effects, either network-wide or for devices using this technology. (I initially considered raising a blocking DISCUSS here, but given the long and intensive discussions this document has already gone through, I decided not to do so)

# The idnits report finds two downrefs. The Shepherd writeup suggests that the shepherd worked with the authors to address these downrefs. I did not see directly how this was addressed? Not sure i missed seeing the update?

# COMMENTS
# ========

139	2.1.  Requirements Language
140
141	   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
142	   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
143	   document are to be interpreted as described in [RFC2119] [RFC8174]
144	   when, and only when, they appear in all capitals, as shown here.

GV> is there a reason why BCP 14 is not mentioned in the usual Requirement Language template?

Kind Regards,
Gunter Van de Velde
Routing AD
Mahesh Jethanandani
No Objection
Comment (2026-02-03 for -19) Sent
Section 9.2, paragraph 3

   The encapsulating node MUST NOT add a NAS to the label stack if the
   egress node does not support MNA.

How does the encapsulating node learn whether the egress node does or does not support MNA? If this work is being defined somewhere else, e.g., draft-ietf-mpls-mna-signaling, should it not be mentioned?

Section 13, paragraph 0
> 13.  Operational Considerations

Thanks to Joe for his OPSDIR review, for calling this out, and to the authors for adding this section.

Section 13.3, paragraph 7
>    However, as the existing behavior is not specified for transit LSRs,
>    upon encountering any unrecognized bSPLs or eSPLs below the top of
>    the label stack, some existing implementations may have chosen to
>    implement non-standardized actions, such as discarding packets.  Any
>    uses of a new bSPL or eSPL would cause issues with such existing
>    implementations using the non-standardized actions upon encountering
>    unrecognized bSPLs or eSPLs below the top of the label stack.  Since
>    this is a generic problem, any clarifications for the treatment of
>    unrecognized bSPL or eSPL are outside the scope of this document.

Thanks for providing this section. It is very useful.

There is one other case that I believe should be called out here, which I call the "Silently Skipping" caveat. If the network operator expects an action, e.g., "Account for this packet in Slice X", to happen at every hop, but a legacy node is in the path, that node will skip this action without a warning. While this does not crash the dataplane, it allows for "Silent Skipping" unless the operator uses strict TE (like SR-TE).

This document uses the RFC2119 keywords "OPTIONAL", "MUST", "SHALL NOT",
"SHOULD NOT", "MAY", "SHOULD", "REQUIRED", "RECOMMENDED", "MUST NOT", and
"SHALL", but does not contain the recommended RFC8174 boilerplate. (It contains
some text with a similar beginning.)

The IANA review of this document seems to not have concluded yet.

-------------------------------------------------------------------------------
NIT
-------------------------------------------------------------------------------

All comments below are about very minor potential issues that you may choose to
address in some way - or ignore - as you see fit. Some were flagged by
automated tools (via https://github.com/larseggert/ietf-reviewtool), so there
will likely be some false positives. There is no need to let me know what you
did with these suggestions.

Section 5.3, paragraph 5
> ugh IANA registry (Section 14.4). In future, additional special opcodes can b
>                                   ^^^^^^^^^
The phrase "In future" is British English. Did you mean: "In the future"? Moreover,
this term will not stand the test of time.

Section 5.4, paragraph 4
> e current opcode range beyond 127 in future. If this opcode is not supported
>                                   ^^^^^^^^^
The phrase "in future" is British English. Did you mean: "in the future"?
Same here.

Section 7, paragraph 9
> gment Routing (SR-MPLS), as well as the, RLD, the path computation system ne
>                                     ^^^^
Articles like "the" are rarely followed by punctuation. A word may be missing
after "the", or the punctuation mark may not be necessary.

Section 13.3, paragraph 4
> (string), and "Reference" (string). Bit Position refers to the position rela
>                                     ^^^
It seems that an article is missing.

Section 13.3, paragraph 5
> s and any subsequent Format D LSEs. Bit Position 0 is the most significant b
>                                     ^^^
It seems that an article is missing.

Section 13.3, paragraph 5
> in an LSE Format B or C Data field. Bit Position 20 is the most significant 
>                                     ^^^
It seems that an article is missing.
Mohamed Boucadair
(was Discuss) No Objection
Comment (2026-02-04 for -19) Sent
Hi Jags, all, 

Thank you for the discussion and taking care of the review. 

The new version [1] addresses all points raised in my previous ballot [2]. 

# Comment on -19

I suggest to update Section 2.3 to mention "encapsulating node" as well.

Cheers,
Med

[1] https://author-tools.ietf.org/iddiff?url1=draft-ietf-mpls-mna-hdr-18&url2=draft-ietf-mpls-mna-hdr-19&difftype=--html

[2] https://mailarchive.ietf.org/arch/msg/mpls/tReEOJeGolLO8MM-u-mTWTyH9Js/
Roman Danyliw
No Objection
Comment (2026-02-02 for -18) Not sent
Thank you to Meral Shirazipour for the GENART review.
Ketan Talaulikar
Abstain
Comment (2026-02-10 for -20) Sent for earlier
Thank you to the authors and the WG for their work on this document.

This document introduces a significant change to the decades-old MPLS architecture; by incorporating concepts similar to IPv6 extension headers (HBH, DOH, RH) while allowing for arbitrary insertion/removal (push/pop) and "selective hop" processing that exists in MPLS. It also attempts to address backward compatibility through label entry encoding, identifying mutable/immutable bits for load-balancing purposes, and using multiple copies of options to account for Readable Label Depth (RLD) limitations. The challenges associated with such options are well-known; even within a router-centric MPLS environment, this adds considerable complexity to an architecture that is loved for being as simple and fast.

I recognize the significant effort, both technical and in consensus-building, that has gone into this work. Out of respect for the WG consensus, I am balloting ABSTAIN despite my questions, doubts, and concerns regarding the approach and choices made.

Please find my detailed review comments below. I hope they are helpful, should the authors and the WG wish, to improve the document.

The comments are inline in the idnits output of v18 of the document. Please look for the tag <EoRv18> at the end to ensure you have received the full review.


23	   the MPLS packet or perform user-defined operations.  This document
24	   addresses the requirements for In-stack network actions and In-stack
25	   data found in RFC 9613.

<minor> Suggest to remove the last sentence of the abstract. I am suggesting
some editorial changes so that RFC9613 can become an informative reference.


127	   The solution specified in this document addresses the requirements
128	   for In-stack network action and In-stack data (ISD) found in
129	   [RFC9613].

<minor> Suggest:
The requirements for In-stack network action and In-stack data (ISD) are
described in [RFC9613].

139	2.1.  Requirements Language

141	   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
142	   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
143	   document are to be interpreted as described in [RFC2119] [RFC8174]
144	   when, and only when, they appear in all capitals, as shown here.

<minor> Please fix the BCP14 template

157	      +--------------+-----------------------------+---------------+
158	      | BOS          | Bottom Of Stack             | [RFC3032]     |

<minor> The BOS acronym is not defined in RFC3032 but that field is defined
there.

170	      +--------------+-----------------------------+---------------+
171	      | LSE          | Label Stack Entry           | [RFC3032]     |

<minor> Same as previous comment - LSE acronym is not defined in RFC3032.

270	   *  IHS (2 bits): The scope of all the network actions in this sub-
271	      stack.  See Section 5.3.

<minor> I see the term "sub-stack" used without the "MNA" or "NA" prefix in a 
few places in the document. I would suggest using the NAS acronym instead of
"sub-stack" in such places or prefix MNA before the "sub-stack" for clarity.
There is frequent use of the term "MNA sub-stack" and I wonder why all of them
could not be replaced by "NAS" for consistency?

323	   NOTE: A Format A and a Format B LSE MUST be present when a Format C
324	   LSE is carried in the NAS.

<minor> Please remove "NOTE:" since that is generally used in an informative
manner but this is normative text. Same applies in a few other places in the
document.

328	   LSE Format D is used to encode additional data that did not fit in
329	   the LSE with the preceding opcode.

<major> The preceding opcode here imply LSE Format B or LSE Format C with its
opcode, but it could as well be another LSE Format D that does not carry an
opcode? Can this be clarified? Perhaps ... that did not fit in the previous
LSE Formats B, C, or D?

355	5.  The MNA Sub-Stack

357	   The MNA Sub-Stack begins with a Format A LSE (Section 4.1).  The

<major> Perhaps .. MUST begin with ... ?

358	   label value of the LSE contains the MNA bSPL (value TBA) to indicate
359	   the presence of the MNA Sub-Stack.

<minor> There is some very good text explaining the design of Format A that is
in the section 11. Perhaps consider moving it in here and then provide a pointer
to section 11 for the reader to understand how it helps backwards compatibility?

361	   The TC and TTL values of the Format A LSE retain their semantics as
362	   defined in [RFC3032] and [RFC5462].  The TTL and TC values in the
363	   Format A LSE are copied from the forwarding label at the top of the

<major> copied by who? Can you clarify that this is to be done by the node
pushing that NAS? Please also clarify what is meant by "top of the label stack".
If the node pushing a NAS were to also push another forwarding LSE on top of
the NAS, is the TTL/TC copied from that LSE or the LSE that was at the top of
the stack when the packet arrived at that node? Also, please consider moving
this discussion of TTL/TC into the appropriate sub-section(s) of section 9?

364	   label stack.  The penultimate node on the path copies the TTL and TC

<major> You mean the "penultimate node" doing PHP? Or perhaps a node doing pop
in general? Also, consider moving into section 9?

365	   values from the preceding LSE to the next LSE on the label stack,
366	   overwriting the TTL and TC values of the next LSE, as specified in
367	   Section 3.5 of [RFC3443] and Section 2.6.3 of [RFC3270] in the
368	   Uniform Mode LSPs.  If the node performing this copy is not aware of
369	   MNA, this could overwrite the values in the first LSE of the MNA sub-
370	   stack.

<major> The first LSE if the NAS is not clear. I am assuming it is a Format A
LSE? And if so, I fail to see the issue. In other words, I am not understanding
the intent of this text. 

380	   A NAS MAY contain more Format C (Section 4.3) and Format D
381	   (Section 4.4) LSEs, up to the length encoded in the NASL value.  All
382	   Format D LSEs MUST follow a Format C or B LSE and be included in that
383	   LSE's NAL value.

<major> What would be good here is some text describing the thought process behind
these 3 types (B, C & D) of formats and how they can be used in combination of each
other. Then put a reference to the examples so the reader can validate understanding
based on those illustrations. One aspect that is not clear is that the AD for an
opcode can span across more than one Format D.

398	   The label value (most significant 20 bits) in one or more consecutive
399	   LSEs is commonly used for load balancing data flows in an ECMP
400	   environment.  Modifying the first 20 bits in an LSE might alter a
401	   packet's path and result in out-of-order delivery of packets
402	   belonging to a given flow.  To maintain the stability of deployed
403	   services in ECMP environments that rely on label value information
404	   for load-balancing, care must be taken when encoding network action
405	   data in the given LSE.  If the network action data may differ among
406	   packets in the same flow or change during forwarding across the MPLS
407	   network, it MUST NOT be placed in the most significant 20 bits of a
408	   Format B LSE (Section 4.2), a Format C LSE (Section 4.3), or a Format
409	   D LSE (Section 4.4).  Thus, the available bits for data that can
410	   change by a transit node or differ among packets of the same flow in
411	   Format A and Format B LSEs are 0, Format C LSE is 7 (bits 20-22 and
412	   25-28) and Format D LSE is 11 (bits 20-22 and 24-31).

<major> This aspect is not just for the AD but also for the construction of
the NAS (along with its opcodes). If all the packets of the flow are not subject
to the same NAS imposition and encoding, then we have a similar problem. I am
thinking of some OAM operation where the network action is not to be performed
on all packets but some (a sample) of them. Another possibly more important
aspect is why not just use the post-stack solution/option in the case of
mutable information or where things are changing within a flow? Isn't that 
simpler as opposed to this complicated working with bits?

464	   The egress node is included in the HBH scope.  This implies that the
465	   penultimate node MUST NOT remove a HBH NAS.  The egress node MAY
466	   receive a NAS at the top of the label stack as discussed in
467	   Section 10.

<major> s/MAY/may - also I don't see the connect to section 10. Then again, why
just the egress node, even an intermediate node could receive a NAS at the top
of the label stack.

469	   An I2E scope NAS, if present, MUST be encoded after any HBH or
470	   Select-scope NASes.  This makes it easier for the transit nodes to
471	   process a NAS with HBH or Select scope.

<major> Is the packet dropped if this "MUST" is violated?


496	   When a packet with an unknown Network Action is dropped, the node
497	   SHOULD maintain a local counter for this event, and MAY send a rate-
498	   limited notification to the operator.

<major> What is an "unknown Network Action" - is it an unknown opcode, the 
reserved IHS value, anything else? Can this be specified?

510	6.  Special Opcodes

512	   Below are the special opcodes defined to build a basic In-stack MNA
513	   solution and has been assigned through IANA registry (Section 15.4).
514	   In future, additional special opcodes can be defined and their code-
515	   points assigned from the "Network Action Opcodes" IANA registry
516	   (Section 15.4).

<major> I don't see the registry differentiating between "special" and "usual"
opcodes. Can we say "Initial" opcodes? But then I don't know what "special"
opcodes in the future indicate ...

518	6.1.  bSPL Protection

520	   Opcode: 0
521	   Purpose: Legacy implementations may scan the label stack looking for
522	   bSPL values.  As long as the opcode field is non-zero, an LSE cannot
523	   be misinterpreted as containing a bSPL.  Opcode 0 is therefore
524	   reserved and is not used.

<minor> Can we put "Reserved (not to be used)" in the IANA registry entry too?

534	   LSE Formats: B, C, D

536	   Data: The data field carries Network Action Indicators, which should
537	   be evaluated from the most significant bit to the least significant
538	   bit.  If this opcode is used with LSE Format B only, then up to 13
539	   flags may be carried.  If this opcode is used with LSE Format C only,
540	   then up to 20 flags may be carried.  Format D LSEs can be used with
541	   format C LSEs to encode more than 20 flags.  Flags are assigned from
542	   the "Network Action Flags Without Ancillary Data" registry
543	   (Section 15.3).  If flags need to be evaluated in a different order,
544	   multiple LSEs using this opcode may be used to specify the requested
545	   order.  The Flag-Based Network Action Indicators MUST follow the
546	   procedure for data specified in Section 5.2.

<major> As I understand, the bit position depends on the sequence of the
LSE entries with opcode 1. It is not clear that all LSEs in the NAS with opcode
1 need to be contiguous - one of the examples shows when multiple LSEs with
opcode 1 can be present in the same NAS - please clarify in this normative text.
If the LSE Format B is used for another opcode and it is followed by LSE Format 
C with opcode 1, then the bit 0 would be the MSB of that Format C LSE entry's AD.
Can we have B with opcode 1, D, and then C with opcode 1? I see too many 
permutations and combinations that can become very complex unless there is a 
very simple and prescriptive method for encoding of this opcode?


550	6.3.  No-Operation Opcode

552	   Opcode: 2

554	   Purpose: This opcode is reserved to indicate that this opcode does
555	   not perform any Network Action and MUST be skipped.

<major> Then why have it in the first place? What is the real purpose behind 
this? E.g., in IPv6 options headers we have PAD options which are no-op but 
they serve a purpose of alignment. Is it because it is mandatory to have an 
LSE Format B after A and then what if the action needed actually needs LSE 
Format C but we need to put a Format B with no-op opcode to follow the rules? 
This may not be super obvious to a reader, if this was the motivation.
Suggest to explain why/when it is used and then perhaps put a reference to
one of the examples where this is used.

561	6.4.  Extension Opcode

563	   Opcode: 127
564	   Purpose: This opcode is reserved to extend the current opcode range
565	   beyond 127 in future.  If this opcode is not supported, then the
566	   packet with the opcode 127 MUST be dropped regardless of the setting
567	   of the U bit.  Use of this opcode is outside the scope of this
568	   document.

<major> How can one support this opcode when it is unspecified? Why not make 
this "Reserved (for future use)" and indicate that packets with this set are 
to be dropped?

570	7.  NAS placement in the Label Stack

572	   The node adding a NAS to the label stack places a copy of the NAS
573	   where the relevant nodes can read it.  Each downstream node along the
574	   path has a Readable Label Depth (RLD).  If the NAS is to be processed
575	   by a downstream MNA-capable node, then the entire NAS MUST be placed
576	   so that it is within RLD by the time the packet reaches the
577	   downstream MNA-capable node.

579	   If the label stack is deep, several copies of the NAS may need to be
580	   encoded in the label stack.

<major> Consider that the action is to set certain information in the HBH header 
as it traverses the LSP. How is this information conveyed from the top most NAS to
its copies further below? Or, can such actions be only placed in a single copy
in the label stack?

587	   A NAS MUST NOT appear at the top of the stack after popping the
588	   forwarding label on an MNA-incapable node on the path.

<major> The above is not clear - who is popping the label here? Is it the
node before the MNA-incapable node - in this case there is an issue? Or, is it
the MNA-incapable node - in which case there is no issue unless the node
after it is also MNA-incapable and it cannot do anything about it.


598	   forwarding label and before the next forwarding label.  It could be
599	   inserted before or after a HBH NAS.  Note that the case of a NAS with
600	   Select scope with MPLS label swap operation (for example, with RSVP
601	   Traffic Engineering LSPs) is for future study.

<major> Swap is a basic MPLS label operation. I am concerned by how the
processing of a NAS is unspecified in that case. Perhaps Select scope doesn't
make sense and is not processed during a swap? 

606	   Transit, non-penultimate nodes that pop a forwarding label and expose
607	   a copy of a NAS MUST remove it.

<major> The use of the term transit and non-penultimate node is not very clear
here. Consider a SR-MPLS label stack. There is the headend and the endpoint.
However, there are nodes in the middle that perform swap or pop (including for
PHP) - here I am assuming only prefix and adj SIDs for simplicity. So, is
this statement only about the case where multiple copies of a NAS are present
in the label stack? Because the next paragraph seems to contradict. Also, how
does the node know if the multiple NASes in the label stack are copies or
distinct NASes without performing an expensive compare operation?

617	   The node that receives the NAS at the top of the label stack MUST
618	   process and remove it.

<major> Is it required for each node to understand the MNA capability of all
of it neighbors such that it can ensure that it doesn't forward packets to a
non-MNA capable neighbor with the NAS exposed as the topmost label?


620	7.1.  Actions when Pushing Labels

622	   An MNA-capable node may need to push additional labels as well as
623	   push new network actions onto a received packet.

625	   While pushing additional labels on to the label stack of the received
626	   packet, the MNA-capable node MUST verify that the entire top-most NAS
627	   with HBH scope is still within the RLD of the downstream MNA-capable
628	   nodes.  If required, the MNA-capable node MAY create a copy of the

<major> The HBH NAS was in the incoming packet. The node is pushing its own
label stack (say SR BSID) and the entity computing that label stack is doing
what it needs to do based on the RLD of nodes along the path. However, in the
forwarding path, there is no clue whether incoming packets will have HBH NAS
- it seems incredibly complex to expect the node to figure out the RLD capabilities
along the packet path in the fast path. How is that MUST supposed to work?

629	   top-most NAS with HBH scope and insert it within the RLD of the
630	   downstream MNA-capable nodes on the label stack.

<major> What about the MTU implications of doing such copy and insert operations?


639	   The new network actions added MUST NOT conflict with the network
640	   actions in the received NAS with HBH scope.  The mechanism to resolve
641	   such conflicts depend on the network actions and can be based on
642	   local policy.  The MNA-capable node that pushes entries MUST
643	   understand any network actions which it is pushing which may result
644	   in a conflict, and MUST resolve any conflicts between new and
645	   received network actions.  In the usual case of a conflict of
646	   duplicating a network action, the definition of a network action MUST
647	   give guidance on confict resolution.

<major> Are all of these MUSTs even possible to confirm to given that no actions
are currently defined, no conflicts are currently defined and, therefore, no
way to resolve conflicts are defined. All of this seems very aspirational and so
perhaps consider removing all the normative text and rephrase it as a guidance?

669	   *  In the case of MPLS Segment Routing (SR-MPLS), as well as the,
670	      RLD, the path computation system needs to know the MSD [RFC8664]
671	      that can be imposed at the ingress node of a given SR path.  This

<minor> Perhaps:
In the case of MPLS Segment Routing (SR-MPLS), the path computation system needs 
to know the MSD [RFC8664] that can be imposed at the ingress node of a given SR 
path, as well as the, RLD of the nodes along the path.

672	      ensures that the label stack depth of a computed path does not
673	      exceed the maximum number of labels (i.e., MSD) the node is
674	      capable of imposing and the maximum number of labels that can be
675	      read by the MNA-processing nodes in the path.  The MSD MUST
676	      include the MNA Sub-Stacks that will be added.

<major> Perhaps:
The MSD and RLD calculations MUST factor in both the forwarding LSEs and the NAS.

678	9.  Processing the Network Action Sub-Stack

680	   This section defines the specific responsibilities for nodes along an
681	   LSP [RFC3031].

683	9.1.  Encapsulating Node Responsibilities

<major> What is the definition of "Encapsulating Node"? I assume this is the node
that is receiving non-MPLS traffic which it encapsulates in a MPLS label stack?
If so, please clarify.

692	   If there is an existing label stack, the encapsulating node MUST NOT
693	   modify the first 20 bits of any LSE in the label stack when the ECMP
694	   technique in the network is using the hashing of the labels on the
695	   label stack.

<major> How would the encapsulating node know about that? Is that something
to be figured out along the path of a specific LSP or something network-wide?

697	   If the encapsulating node is also a transit node, then it MUST also
698	   follow the rules set out in Section 9.2.

<major> If my assumption of the definition of an "encapsulating node" is correct,
then I am not able to follow how the above sentence can be true.

700	9.2.  Transit Node Responsibilities

702	   The transit node is the node that processes a NAS in the Label stack
703	   but does not push any new NAS.

<major> So, this is in fact a "MNA Transit Node" and not a "MPLS Transit Node"? 
Please crosscheck such terms and see if they need a qualifier to distinguish from
"regular/classic" MPLS.

705	   The transit node MUST follow the procedure for data specified in
706	   Section 5.2.

<major> There is are no procedures for data processing by MNA Transit nodes in
section 5.2. Am I missing something?

724	9.4.  Egress Node Responsibilities

726	   The egress node MUST remove any NAS it receives.

<major> Is it an egress node or the decapsulating node? The later would match
with the encapsulating node. Also, it needs to process the NAS and a little
differently than the MNA transit node since it also needs to deal with the I2E
IHS ones?

728	10.  Network Action Indicator Opcode Definition

730	   The following information MUST be defined for a new Network Action
731	   Indicator opcode request in the document that specifies the Network
732	   Action.

<minor> This is the first time that the term "NAI opcode" is used. Perhaps you
want to introduce it in section 5.1 which is about opcodes?

737	   *  Format: The definition of the new Network Action MUST specify the
738	      LSE Formats.  The opcode can define Network Action in Format B or
739	      C or both Format B and C.  Both Format B and C LSEs MAY optionally
740	      carry Format D LSEs.

<major> I am not sure that I understand the "MAY" here. For a given opcode, it is
ok to have variable length such that it might fit into simply Format B or C in
some cases, but then on need basis the size of data can be increased by arbitrary
number of Ds added to it - am I correct? The question is, is it implicit that 
all opcodes can get extended by D or does the opcode need to specify if it can 
be extended by D (and how many Ds) in its specification? 

742	   *  Scope: The definition of the new Network Action MUST specify at
743	      least one scope (I2E, HBH, Select) for the Network Action, and MAY
744	      specify more than one scope.

<major> How about whether the given opcode can be present more than one time
in the same NAS or more than one time across different NAS with the same IHS?

746	   *  Ancillary Data: The definition of the new Network Action MUST
747	      specify the quantity, syntax, and semantics of any associated
748	      Ancillary Data.  The Ancillary Data MAY be variable length, but
749	      the length MUST be computable based on the data present in the
750	      NAS.

<major> which data present in the NAS? perhaps you mean the NAL ?

765	11.  Backward Compatibility

767	   This section discusses interactions between MNA-capable and MNA-
768	   incapable nodes.

770	   An MNA-encapsulating node MUST ensure that the MPLS Network Action
771	   Sub-Stack indicator is not at the top of the MPLS label stack when
772	   the packet arrives at an MNA-incapable node.  If such a packet did

<major> How is this MUST going to be honored when the document does not specify
the means of doing so?

859	   *  The semantics of a network action are unbounded and may be
860	      insecure.  A network action could be defined that made arbitrary
861	      changes to the memory of the forwarding router, which could then
862	      be used by the encapsulating node to compromise every MNA-capable
863	      router in the network.  The IETF needs to ensure that only secure
864	      network actions are defined.

<major> How is the IETF going to be able to do that when both the flags and the
opcodes have allocations for private and experimental use where allocation does
not require IETF review? This contradicts the next bullet.

872	   *  The MPLS domain border nodes MUST ensure that the MPLS packets
873	      with MNA from any domain with a different administrative control
874	      can be filtered to prevent entering the provider MPLS domain.  The
875	      filtering capability MAY be enabled on a per network action basis
876	      and it can be based on a local policy.  The filtering capability
877	      MUST be implemented on those nodes before deploying MNA in the
878	      provider MPLS domain.  The RLD on the filtering node MUST be
879	      higher than the RLD on all other nodes in the provider MPLS
880	      domain.

<major> The use of "MAY" in what kind of filtering is required and how to do that
coupled with use of "MUST" do filtering is strange. Why not define very specifically
and in detailed terms what type of filtering MUST be implemented?

948	   Bit Position refers to the position relative to the most significant
949	   bit in LSE Format B or C Data fields and any subsequent Format D
950	   LSEs.  Bit Position 0 is the most significant bit in an LSE Format B
951	   or C Data field.  Bit Position 20 is the most significant bit in the
952	   first LSE Format D Data field.  There are 20 bits available in LSE
953	   Format C and 30 bits available in LSE Format D.  There are at most 14
954	   Format D LSEs per opcode (due to NASL limit of 15 and Format D
955	   requires Format C LSE), so there are at most 20 + 14 * 30 = 440 bit
956	   positions.  The Bit Position is an integer with value 0-439.

<major> The above paragraph is normative text and does not belong in the IANA
section. Please move it into section 6.2. The IANA is only going to deal with
the assignments of bits per their policy.



1018	16.  Examples

<minor> Please move examples into an Appendix section.


1067	        Figure 6: Network Action Flags without AD using LSE Format D

1069	   In this example, the NAS contains a Format B LSE with No-Operation
1070	   Opcode value 2.  The next LSE uses Format C, but the Network Action
1071	   Flag is not in a bit position contained within the Format C LSE, so a
1072	   single Format D LSE has been added to the NAS to carry the flag.

<major> This example is confusing. Can you indicate which specific bit position
is required to be set? That will explain why the no-op opcode is used with
the LSE B format and why the flags didn't start from that LSE B itself followed
by a LSE C or D but not both. 


1154	          Figure 9: Network Action With Additional Ancillary Data

1156	   In this example, opcode 9 requires more than one LSE's worth of
1157	   Ancillary Data, so a Format D LSE is added.

<major> Sure, but why is LSE B used with no-op opcode? The answer needs to
be that there was need for a specific size of AD that gets encoded more
efficiently by the scheme shown.

1257	   [RFC9613]  Bocci, M., Ed., Bryant, S., and J. Drake, "Requirements
1258	              for Solutions that Support MPLS Network Actions (MNAs)",
1259	              RFC 9613, DOI 10.17487/RFC9613, August 2024,
1260	              <https://www.rfc-editor.org/info/rfc9613>.

<major> I am wondering why this isn't an informative reference. 

<EoRv18>
Erik Kline Former IESG member
No Objection
No Objection (2026-01-25 for -18) Sent
# Internet AD comments for draft-ietf-mpls-mna-hdr-18
CC @ekline

* comment syntax:
  - https://github.com/mnot/ietf-comments/blob/main/format.md

* "Handling Ballot Positions":
  - https://ietf.org/about/groups/iesg/statements/handling-ballot-positions/

## Nits

### S7

* Reference to the "node capability" says "Section 7" but probably means
  "Section 8"?
Orie Steele Former IESG member
No Objection
No Objection (for -18) Not sent

                            
Paul Wouters Former IESG member
No Objection
No Objection (for -18) Not sent