Skip to main content

Dynamic Capability for BGP-4
draft-ietf-idr-dynamic-cap-19

Document Type Active Internet-Draft (idr WG)
Authors Enke Chen , Srihari R. Sangli
Last updated 2026-03-13 (Latest revision 2026-02-15)
Replaces draft-chen-bgp-dynamic-cap
RFC stream Internet Engineering Task Force (IETF)
Intended RFC status (None)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state WG Document
Document shepherd (None)
IESG IESG state I-D Exists
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD Stewart Bryant
Send notices to (None)
draft-ietf-idr-dynamic-cap-19
Internet Engineering Task Force                                  E. Chen
Internet-Draft                                        Palo Alto Networks
Intended status: Standards Track                               S. Sangli
Expires: 20 August 2026                                              HPE
                                                        16 February 2026

                      Dynamic Capability for BGP-4
                     draft-ietf-idr-dynamic-cap-19

Abstract

   This document defines a new BGP capability termed "Dynamic
   Capability", which would allow the dynamic update of capabilities
   over an established BGP session.  This capability would facilitate
   non-disruptive capability changes by BGP speakers.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 20 August 2026.

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Chen & Sangli            Expires 20 August 2026                 [Page 1]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
   2.  Enabling a Capability on a peering session  . . . . . . . . .   3
     2.1.  Dynamic revision of a Capability via BGP Dynamic
           Capability  . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  BGP Dynamic Capability Message  . . . . . . . . . . . . . . .   5
   4.  Procedures for handling BGP Dynamic Capability Revisions  . .   6
     4.1.  Procedures for the Initiator  . . . . . . . . . . . . . .   7
     4.2.  Procedures for the Receiver . . . . . . . . . . . . . . .   8
   5.  Revising capabilities via Dynamic Capability  . . . . . . . .   9
   6.  Limitations of the BGP Dynamic Capability . . . . . . . . . .  10
   7.  Error Handling  . . . . . . . . . . . . . . . . . . . . . . .  10
   8.  Backward compatibility with existing deployment . . . . . . .  11
     8.1.  New Initiator and Old Receiver. . . . . . . . . . . . . .  12
     8.2.  Old Initiator and New Receiver. . . . . . . . . . . . . .  12
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  12
   10. Security Considerations . . . . . . . . . . . . . . . . . . .  12
   11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .  12
   12. Appendix  . . . . . . . . . . . . . . . . . . . . . . . . . .  13
     12.1.  Appendix 1: Changes from Version 16  . . . . . . . . . .  13
     12.2.  Appendix 2: Summary of Major Revisions . . . . . . . . .  13
     12.3.  Appendix 3: Operational states for Capability
            Revision . . . . . . . . . . . . . . . . . . . . . . . .  14
       12.3.1.  Appendix 3.1: Initiator Capability Revision  . . . .  15
       12.3.2.  Appendix 3.2: Receiver Capability Revision . . . . .  16
     12.4.  Deployment use cases . . . . . . . . . . . . . . . . . .  17
       12.4.1.  Adding a capability dynamically  . . . . . . . . . .  17
       12.4.2.  Deleting a capability dynamically  . . . . . . . . .  17
       12.4.3.  Network upgrade without Non-Stop-Routing . . . . . .  17
       12.4.4.  Network upgrade with Non-Stop-Routing  . . . . . . .  18
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  18
     13.1.  Normative References . . . . . . . . . . . . . . . . . .  18
     13.2.  Informative References . . . . . . . . . . . . . . . . .  18
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  19

1.  Introduction

   Currently, the BGP capabilities [RFC5492] are only advertised in the
   BGP OPEN message [RFC4271] during the session initialization.  In
   order to enable or disable a capability (such as the Address Family
   support [RFC4760]), an established session would need to be reset,
   which may disrupt other services running over the session.  Also, an
   advertised capability cannot be updated on-demand over an established
   session.  One example of such a requirement is for adjusting the
   "Restart Time" in the Graceful Restart Capability [RFC4724]) when
   performing certain planned maintenance in a network.

Chen & Sangli            Expires 20 August 2026                 [Page 2]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   Most capabilities define just one instance of the capability (also
   known as single-instance capabilities).  Certain other capabilities
   have multiple instances of capability (also known as multi-instance
   capabilities).  Route Refresh capability [RFC2918], is an example for
   single-instance capability and the Multiprotocol extensions for BGP-4
   capability [RFC2858] is a multi-instance capability as it can list
   one or more individual address-family, sub-address-family
   capabilities.

   The IANA BGP protocol registry lists the capabilities that a BGP
   speaker can advertise during session establishment phase.  It would
   benefit network operations if each of these capabilities can be
   revised dynamically without resetting the session.

   This document defines a new BGP capability termed "Dynamic
   Capability", which would allow the dynamic update of capabilities
   over an established BGP session.  This capability would facilitate
   non-disruptive capability changes by BGP speakers.

1.1.  Requirements Language

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

2.  Enabling a Capability on a peering session

   [RFC5492] specifies Capabilities advertisement for BGP as an optional
   parameter in OPEN message.  By announcing the capability via OPEN
   message a BGP speaker conveys that it is capable of receiving and
   properly handling messages related to that capability.  A BGP speaker
   may publish one or more capabilities during the session
   establishment.  This document extends the usage of capability.

   By definition, the BGP capability refers to the advertising router's
   behavior.  In order to support a capability and exchange messages for
   that capability on a peering session, the capabilities have to be
   advertised by the peering BGP speakers.  Certain capabilities require
   both BGP speakers to advertise them, while for certain other
   capabilities, advertisement from only one BGP speaker is sufficient.
   The list of capabilities advertised by two peers may be non-
   congruent.

   The type of capability advertised by a BGP speaker will determine its
   behavior during the peering session.  For example, Route Refresh
   Capability can be advertised by only one BGP speaker and by doing so,

Chen & Sangli            Expires 20 August 2026                 [Page 3]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   it interprets and handles incoming Route-Refresh messages.  A BGP
   speaker that supports the Multiprotocol Extensions for BGP-4
   capability, may use it after determining that the peer also supports
   this capability. if an operator wishes to enable new functionality
   during the lifetime of a BGP session, and if that requires a BGP
   speaker to revise one or more capabilities, it can do so by resetting
   the session and advertise the capabilities during OPEN as per
   [RFC5492]

2.1.  Dynamic revision of a Capability via BGP Dynamic Capability

   This document proposes a new BGP capability called Dynamic
   Capability, defined as per BGP capability [RFC5492].  The Capability
   Code for this capability is specified in the "IANA Considerations"
   section of this document.  The Capability Value field consists of a
   list of capability codes (one-octet for each) that specify the
   capabilities that MAY be revised dynamically by the remote BGP
   speaker during the lifetime of a session.  The list of capabilities
   in the value field of Dynamic Capability TLV s hereby referred as
   DCAP list.

   By advertising the Dynamic Capability to a peer in the OPEN, a BGP
   speaker conveys to the peer that the speaker is capable of receiving
   and properly handling the DYNAMIC CAPABILITY message (as defined in
   the next Section) from the peer after the BGP session has been
   established.  A BGP speaker may announce Dynamic Capability in the
   OPEN message and during the lifetime of the session, and it may
   revise one or more capabilities or capability-instances.  The BGP
   speaker that revises its capability by sending the Dynamic Capability
   message is hereby referred to as Initiator.  The remote BGP speaker
   that responds to the Dynamic Capability message is hereby referred to
   as Receiver.

   Via the Dynamic Capability message, a BGP speaker (Initiator) will
   revise its capabilities.  The receiving BGP speaker (Receiver) will
   make a note of the Initiator's capability revisions and sends
   messages to the Initiator pertaining to that capability.  While many
   capabilities enable information exchange via existing BGP messages,
   some require a change in the format of the message.  For example, the
   add-path capability [RFC7911] or 4-octet AS capability [RFC6793]
   change the structure of BGP update messages.

   This document limits the scope of the dynamic revision of
   capabilities and following capability revisions are allowed.

   *  Only Capabilities that do not change the format of the existing
      messages.

Chen & Sangli            Expires 20 August 2026                 [Page 4]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   *  Only individual capability-instance capabilities under multi-
      instance capabilities

   This document describes procedures for a 2-way handshake for
   capability revision.  Given the underlying TCP's reliable transport,
   the 2-way handshake procedure is sufficient to create consistent
   state on both Initiator and Receiver as they implement the capability
   revision.  The Initiator will initiate the handshaking process with a
   capability revision Init message.  The Receiver will acknowledge the
   capability revision by sending a Ack message.  The receipt of the ack
   message completes the 2-way handshaking procedure and the two
   speakers can then put the revised capability into effect.  The
   capabilities that do not result in change in the format of any
   existing message structure can be revised dynamically via 2-way
   handshake.  The capabilities that change the format of existing
   message structure can be revised during OPEN message or dynamically
   via [I-D.chen-idr-enhanced-dynamic-cap] which proposes additional
   protocol procedures.

3.  BGP Dynamic Capability Message

   The DYNAMIC CAPABILITY (hereby referred to as DCAP) Message is a new
   BGP message type, and its code point is to be assigned by IANA.  In
   addition to the fixed-size BGP header [RFC4271], the DCAP message
   contains the following fields for revising a capability:

                     +------------------------------+
                     | Init/Ack (1 bit)             |
                     +------------------------------+
                     | Ack Request (1 bit)          |
                     +------------------------------+
                     | Reserved (5 bits)            |
                     +------------------------------+
                     | Action (1 bit)               |
                     +------------------------------+
                     | Sequence Number (4 octets)   |
                     +------------------------------+
                     | Capability Code (1 octet)    |
                     +------------------------------+
                     | Capability Length (2 octets) |
                     +------------------------------+
                     | Capability Value (variable)  |
                     +------------------------------+

                                 Table 1

   The Init/Ack bit indicates whether a capability revision is being
   initiated (when set to 0), or being acknowledged (when set to 1).

Chen & Sangli            Expires 20 August 2026                 [Page 5]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   The Ack Request bit indicates whether an acknowledgment is requested
   (when set to 1), or not (when set to 0) for a capability revision
   being initiated.

   The Reserved bits should be set to zero by the sender and ignored by
   the receiver.

   The Action bit is 0 for advertising a capability, and 1 for removing
   a capability.

   The Sequence Number field MAY be used by a BGP speaker to co-relate
   the responses to the capability revision that the speaker initiated
   previously for debugging purposes.

   Conceptually the triple <Capability Code, Capability Length,
   Capability Value> is the same as the one defined in [RFC5492], and it
   specifies a capability for which the "Action" shall be applied.  The
   Capability Length field, though, is larger than the one specified in
   [RFC5492].

   If multiple capability instances (as described in [RFC5492]) are
   defined for the capability code (also known as multi-instance
   capability), then each capability instance MUST be revised
   individually, one capability instance at a time.  The triple
   <Capability Code, Capability Length, Capability Value> in the
   CAPABILITY message MUST contain only one instance of the capability.

   For single-instance capability the "Action" specified applies to that
   capability identified by the capability code.  Furthermore, if the
   "Action" is to remove a capability, then the Capability Length field
   SHOULD be set to zero by the sender and the Capability Value field
   MUST be ignored by the receiver even when the Capability Length field
   has a non-zero value.

4.  Procedures for handling BGP Dynamic Capability Revisions

   A BGP speaker that is willing to receive the DCAP message for a
   capability from its peer SHOULD use the BGP Capabilities
   Advertisement [RFC5492] to advertise the Dynamic Capability
   containing the capability code.  A DCAP message MAY be received only
   in the Established state.  Receiving a DCAP message in any other
   state is a Finite State Machine Error as defined in [RFC4271].  A BGP
   speaker SHOULD reset the HoldTimer upon receiving a DCAP message from
   its peer.

   The Initiator will need a demarcation from the Receiver acting as a
   confirmation so it can act on the capability revision.  Similarly,
   the Receiver will need a demarcation to act on the revised

Chen & Sangli            Expires 20 August 2026                 [Page 6]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   capability.  The demarcation indicator is a message sent by the
   remote BGP speaker.  The section below specifies the demarcation
   indicator for the Initiator and Receiver, and their procedures.

4.1.  Procedures for the Initiator

   The Initiator MUST only proceed with following steps if the Receiver
   has advertised Dynamic Capability indicating that it is capable of
   handling DCAP message.  For the capability 'c' that the Initiator is
   going to revise, it MUST also verify if the Receiver has listed
   capability 'c' in the DCAP list.  If the Receiver is not capable of
   Dynamic Capability or if 'c' is not in the DCAP list, the Initiator
   should log and discard the capability revision.

   When the Initiator sends a DCAP message to its peer to initiate a
   capability revision, the Init/Ack bit for the capability revision in
   the message MUST be set to 0 indicating that the capability revision
   has been initiated.  The Ack Request bit MUST be set to 1 indicating
   that capability MUST be acknowledged.  The assignment of the Sequence
   Number is a local matter, and may be used to correlate the responses
   from the Receiver.  This can be helpful during troubleshooting any
   problems in capability revision.  The capability that is being
   revised will be encoded as per IANA BGP Protocol registry capability
   codes.  While a capability revision is in progress, the Initiator
   MUST NOT initiate another revision of the same capability (or the
   same capability instance for a multi-instance capability).

   After sending the DCAP message revising a capability and before
   processing the acknowledgement message from the Receiver, the
   Initiator MUST operate as if the capability revision has not been
   initiated.  During this phase, it must continue its usual operation
   of sending, receiving and processing BGP messages from the Receiver
   BGP speaker as specified below.

   *  If the Initiator intends to add a new capability, it must not
      enable the capability or send messages based on the new capability
      revision.  As there is no prior state, it MUST discard any
      received messages pertaining to that capability.

   *  If the Initiator intends to remove an existing capability, it must
      not disable the capability but continue to send and process the
      received messages pertaining to that capability.

Chen & Sangli            Expires 20 August 2026                 [Page 7]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   After receiving the DCAP message carrying capability acknowledgement
   with Init/Ack bit set to 1 from the Receiver, the Initiator MUST
   validate the DCAP message verifying the Capability code that was
   revised.  This is the demarcation indicator for the Initiator.  With
   this, the Initiator's capability revision finite state machine is
   complete and it can then function in accordance with the new
   capability revision as follows:

   *  If the Initiator added the capability, it can now process any new
      messages received, based on the revised capability.

   *  If the capability was withdrawn by the Initiator, it may reset the
      internal state.  Since the prior state is cleared, it may begin to
      discard the new messages that may be received from the Receiver
      pertaining to the removed capability.

   To put an upper bound on the amount of time for capability revision,
   an implementation MUST support a (configurable) timer
   CapabilityRevisionTimer that imposes this upper bound.  The Initiator
   starts the CapabilityRevisionTimer when it starts the capability
   revision by sending the Init message.  The timer is stopped with
   Initiator receives the Ack message from the Receiver.  When
   CapabilityRevisionTimer times out and the capability revision is
   still in progress, the dynamic capability revision MUST be discarded.
   This document recommends logging this error condition for
   troubleshooting purpose and no further attempts for dynamic
   capability revision should be made without administrator
   intervention.  This document recommends 10 minute timeout value or a
   similar large value to avoid premature discard of capability
   revision.

4.2.  Procedures for the Receiver

   The Receiver should expect more than one capability tuple in the DCAP
   message and should process each capability revision independently.
   In the received DCAP message, if the Init/Ack bit is set to 1, it
   SHOULD silently discard the capability revision.  For troubleshooting
   purposes, the unexpected acknowledgement may be logged.

   If the Init/Ack bit is set to 0, the Receiver MUST first validate the
   capability code.  If the capability code is not listed in the Dynamic
   Capability (DCAP list) advertised by the Receiver itself, and the
   Receiver MUST send a NOTIFICATION message back to the Initiator as
   specified in the Error Handling section.  For a valid capability
   code, the Receiver MUST treat it as an indication of demarcation for
   that capability revision.

Chen & Sangli            Expires 20 August 2026                 [Page 8]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   If the Ack Request bit is set to 1, the Receiver MUST send a DCAP
   message to acknowledge the receipt of the capability revision.  The
   Init/Ack MUST be set to 1, indicating the acknowledgement, and all
   the other fields in the DCAP message MUST be kept unchanged.

   The Receiver SHALL update the capability previously received from the
   Initiator based on the Action bit in the message, and then function
   in accordance with the revised capability for the peer.  The Receiver
   SHALL ignore such a capability revision that either results in no
   change to an existing capability, or removes a capability that was
   not advertised previously.  The procedures specified in the "Error
   Handling" section SHOULD be followed when an error is detected in
   processing the CAPABILITY message.

5.  Revising capabilities via Dynamic Capability

   There is a distinction between a BGP speaker allowing a revision of
   one or more capabilities and a BGP speaker revising one or more
   capabilities.  The former allows a remote BGP speaker to revise its
   capabilities and the local BGP speaker supports that revision.  The
   latter is about the local router operationalizing a capability, and
   putting it into effect.

   A BGP speaker may choose to advertise one of more capabilities.  If
   it has advertised Dynamic Capability (via OPEN or dynamically) it can
   accept Dynamic Capability message from remote BGP speaker, The value
   of Dynamic Capability TLV is DCAP list.  By having a capability in
   the DCAP list, the local BGP speaker is indicating that it has the
   support and ability to handle the revision (add or delete) of that
   capability.  The remote BGP speaker makes a note of the list of
   capabilities in the DCAP list and performs the revision during the
   lifetime of the peering session.

   It is quite possible to list Dynamic Capability itself in DCAP list.
   This means that local BGP speaker can handle the revision of Dynamic
   Capability itself, thereby allowing add/delete capabilities from DCAP
   list.  This document recommends that BGP speakers list the Dynamic
   Capability Code in Dynamic Capability.  This will allow a BGP speaker
   to revise the list capability instances during the lifetime of the
   peering session by sending a DCAP message with Dynamic Capability
   revising DCAP list.

Chen & Sangli            Expires 20 August 2026                 [Page 9]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

6.  Limitations of the BGP Dynamic Capability

   If the capability results in change of the format of the messages, it
   is important to have tighter co-ordination.  For example, the
   procedures specified in this document does not provide demarcation
   enough for the Receiver to know when the Initiator will advertise the
   messages based on the revised capability.  Hence, the capabilities
   that have bi-directional capability dependency requiring 3-way
   handshake will not function accurately.  With this limitation,
   following capabilities can be revised using the procedures mentioned
   in this document.

   *  Multiprotocol Extensions for BGP-4

   *  Route Refresh Capability for BGP-4

   *  BGP Role

   *  Graceful Restart

   *  Enhanced Route Refresh

   *  Long-Lived Graceful Restart

   *  Routing Policy Distribution

   *  FQDN

   The remaining capabilities may only be advertised via OPEN message
   during session establishment.

7.  Error Handling

   This document defines a new NOTIFICATION error code:

      Error Code: TBD

      Symbolic Name: CAPABILITY Message Error

   The following error subcodes are defined:

              Subcode              Description
                1           Unknown Sequence Number (deprecated)
                2           Invalid Capability Length
                3           Malformed Capability Value
                4           Unsupported Capability Code

Chen & Sangli            Expires 20 August 2026                [Page 10]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   If a BGP speaker detects an error while processing a CAPABILITY
   message, it MUST send a NOTIFICATION message with Error Code
   CAPABILITY Message Error.  If any of the defined error subcode is
   applicable, the Data field of the NOTIFICATION message MUST contain
   the tuple for the capability revision that causes the speaker to send
   the message.  On the receipt of such a NOTIFICATION message, the BGP
   speaker should log for troubleshooting purposes.  The ongoing
   capability revision MUST be discarded by both Initiator and Receiver.
   No new capability revisions can be initiated until administrator
   intervention.

   This document revises the usage of Sequence Number.  The DCAP message
   fields are sufficient to correlate the message between the Initiator
   and the Receiver, hence the Sequence Number usage is limited to
   diagnostic purposes.  The BGP speaker MUST not validate the Sequence
   Number received and MUST not send NOTIFICATION message with Unknown
   Sequence Number.  If a NOTIFICATION message with Error code Unknown
   Sequence Number is received, it MUST be logged for troubleshooting
   purposes before silently discarding it.

   If the Capability Length field in the CAPABILITY message is incorrect
   for a Capability Code, then the error subcode is set to Invalid
   Capability Length.

   If the Capability Value field in the CAPABILITY message is malformed
   (the definition of "malformed" depends on the Capability Code), then
   the error subcode is set to Malformed Capability Value.

   If the Capability Code in the CAPABILITY message is not any of the
   capability codes advertised in the Dynamic Capability by the speaker,
   then the error subcode is set to Unsupported Capability Code.

8.  Backward compatibility with existing deployment

   The new protocol procedures can work with existing implementations of
   Initiator and Receiver.  The following section describes the
   different scenarios.

   If a BGP speaker implements the new procedures specified in this
   document, its referred to as "New".  If a BGP speaker implements the
   BGP Dynamic Capability procedures as specified in draft version 16 or
   prior, and does not implement the new procedures specified in this
   document, it is referred to as "Old".  In this section, if a BGP
   speaker sends DCAP message with Init/Ack bit set to 1, the BGP
   speaker is referred as sending ack.  Similarly, if a BGP speaker
   sends DCAP message with Ack Request bit set to 1, the BGP speaker is
   referred to requesting ack.

Chen & Sangli            Expires 20 August 2026                [Page 11]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

8.1.  New Initiator and Old Receiver.

   A New Initiator revises its capability and sends DCAP message to the
   Receiver.  The New Initiator always requests for an ack, and since
   the Old Receiver honors the ack request, it sends the ack in DCAP
   message.  This will complete the capability FSM on both Initiator and
   Receiver.

8.2.  Old Initiator and New Receiver.

   An Old Initiator revises its capability and sends the DCAP message to
   NEW Receiver.  The Old Initiator may request for an ack.  The New
   Receiver honors it and sends the ack in DCAP message.  In case the
   Old Initiator does not request for Ack, the New Receiver also honors
   the same and not send ack DCAP message.  This will also complete the
   capability FSM on both Initiator and Receiver.  However, the Old
   Initiator will continue to have same ambiguity as before.  This
   ambiguity will not exist if the Initiator implements the procedures
   mentioned in this document.

9.  IANA Considerations

   This document introduces a new CAPABILITY message type for BGP.  IANA
   is requested to allocate the message type.

   This document proposes NOTIFICATION message to handle errors during
   capability revision.  IANA is requested to allocate NOTIFICATION
   error code for handling such errors.

   This document proposes Dynamic Capability that BGP speaker announces
   in the OPEN message.  IANA has assigned code point 67 for Dynamic
   Capability.

10.  Security Considerations

   The extension proposed in this document does not change the
   underlying security or confidentiality issues inherent in the
   existing BGP [RFC4271].

11.  Acknowledgments

   The authors would like to thank Yakov Rekhter, Ravi Chandra, Dino
   Farinacci, Pedro Marques, Chandrashekhar Appanna, Derek Yeung, Bruno
   Rijsman, John Scudder, Jeffrey Haas, Heidi Ou, Tony Przygienda,
   Krishnaswamy Ananthamurthy for their review and comments.

Chen & Sangli            Expires 20 August 2026                [Page 12]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

12.  Appendix

   This section provides additional information useful for reviewers,
   and operators.

12.1.  Appendix 1: Changes from Version 16

   The following list highlights the updates in the current version of
   the document and compares with [I.D. draft-ietf-idr-dynamic-cap]
   version 16 or prior.

               Current version                    Version-16 or prior
   +------------------------------------+-----------------------------------+
   | Supports only certain capabilities | Supports all capabilities for     |
   | for dynamic capability revision.   | dynamic capability revision.      |
   +------------------------------------+-----------------------------------+
   | Only one capability tuple can be   | More than one capability tuple    |
   | revised in the DCAP message.       | can be revised in a DCAP message. |
   +------------------------------------+-----------------------------------+
   | Initiator always sets Ack Request  | Initiator may or may not set Ack  |
   | to 1, asking for acknowledgement   | Request to 1, making ack optional |
   +------------------------------------+-----------------------------------+
   | Sequence number is used for        | Sequence number is used for       |
   | for troubleshooting purposes only. | correlation and NOTIFICATION      |
   | NOTIFICATION message not sent.     | message may be sent.              |
   +------------------------------------+-----------------------------------+
   | Clarification on when capability   |                                   |
   | revision must be put into effect   |                                   |
   +------------------------------------+-----------------------------------+
   | Clarification and procedures for   |                                   |
   | sending NOTIFICATION messages      |                                   |
   +------------------------------------+-----------------------------------+
   | Clarification and procedures for   |                                   |
   | handling NOTIFICATION messages     |                                   |
   +------------------------------------+-----------------------------------+
   | Removed references to Dynamic      | References to NOTIFICATION error  |
   | Dynamic Message code, NOTIFICATION | code 7 and BGP Dynamic Capability |
   | error code, requesting IANA to     | message code 6. IANA BGP protocol |
   | assign new code values.            | registry did not reflect the usage|
   +------------------------------------+-----------------------------------+

12.2.  Appendix 2: Summary of Major Revisions

   In version 03, The Capability Length field is changed from zero octet
   to one octet, and the Capability Value field is specified for listing
   the capability codes (one-octet for each) for which the dynamic
   revision is supported by a BGP speaker.

Chen & Sangli            Expires 20 August 2026                [Page 13]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   In version 05, the CAPABILITY message was changed and several new
   fields were added, including Init/Ack, Ack Request, Reserved, and
   Sequence Number.  In addition, the old capability code (66) was
   deprecated, and a new capability code (67) was allocated.

   In version 06, the Capability Length field in the CAPABILITY message
   was increased from one octet to two octets.

   In version 16, several clarifications were made about multi-instance
   capabilities.  Also the Implementation Considerations section was
   added.

   In version 17, further clarifications are made about multi-instance
   capabilities.  The Error Code is changed from 7 to TBD due to a
   conflict.

12.3.  Appendix 3: Operational states for Capability Revision

   A BGP speaker MUST maintain states about whether a capability has
   been advertised, or received during the lifetime of the BGP session.
   For a multi-instance capability, the states of the capability and its
   revision MUST be instance specific.

   The following symbols are designated for that purpose:

Chen & Sangli            Expires 20 August 2026                [Page 14]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

      "L:" refers to the local speaker and "R:" refers to the remote speaker

      L:Cap.True              - Capability advertised
      R:Cap.True              - Capability received

      L:Cap.False             - Capability not advertised
      R:Cap.False             - Capability not received

      L:Dyn.Oper.None/Add/Del - Following Capability revision may be triggered
                                at Idle state
                                Operator adds a capability OR
                                Operator deletes a capability

      L.Send.None             - Router does not send DCAP message
      R.Send.None             - Router does not send DCAP message

      L.Recv.None             - Router does not receive DCAP messages
      R.Recv.None             - Router does not receive DCAP messages

      L.Send.Init             - Router sends DCAP message with Init/Ack=0
      R.Recv.Init             - Router receives DCAP message with Init/Ack=0

      L.Recv.Ack              - Router receives DCAP message with Init/Ack=1
      R.Send.Ack              - Router sends DCAP message with Init/Ack=1

   During the dynamic revision of a capability, there are separate
   states, "Sending State", and "Receiving State" driven by the Dynamic
   Capability revision.

12.3.1.  Appendix 3.1: Initiator Capability Revision

   States for Initiator as it revises its capability.

Chen & Sangli            Expires 20 August 2026                [Page 15]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

         L.Dyn.Oper.None/Add/Del
         L:Send.None
         L:Recv.None
         L:Send.Init
         L:Recv.Ack

      State transitions:

         L:Cap.True/False
         L:Dyn.Oper.None/Add/Del
         L:Send.None    ---> L:Send.Init ------+
         L:Recv.None                           |
                  |                            |
                  ^                            v
                  |                            |
                  |------<--- Timeout ----<----+
                  |                            |
                  ^                            v
                  |                            |
                  +----<---- L:Recv.Ack --<----+

12.3.2.  Appendix 3.2: Receiver Capability Revision

   States for Receiver as it receives the capability revision.

         R:Dyn.Oper.None/Add/Del
         R:Recv.None
         R:Send.None
         R:Recv.Init
         R:Send.Ack

      State transitions:

            R:Cap.True/False
            R:Dyn.Oper.None/Add/Del
            R:Send.None      ---> R:Recv.Init ---+
            R:Recv.None                          |
                  |                              |
                  ^                              v
                  |                              |
                  +----<---- R:Send.Ack ---------+

Chen & Sangli            Expires 20 August 2026                [Page 16]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

12.4.  Deployment use cases

   The Initiator and Receiver may advertise one or more capabilities via
   OPEN.  They must also advertise Dynamic Capability via OPEN.  With
   this, the BGP speakers can enable revision of any capability
   dynamically as described in the following sections.

12.4.1.  Adding a capability dynamically

   During session establishment, the Receiver advertises Cap-1, Cap-2
   and DynCap in OPEN message.  The DynCap list contains Cap-1 and Cap-2
   indicating that Receiver is capable of handling dynamic revision of
   capabilities Cap-1 and Cap-2 dynamically.  The Initiator during
   session establishment advertises Cap-1 and DynCap in OPEN message.
   After session is established, sometime during the lifetime of the
   peering session, the Operator enables a functionality on the
   Initiator that requires Cap-2.  Since Receiver allows dynamic
   revision of Cap-2, the Initiator sends DCAP message with Action "add"
   for Cap-2.  The Receiver acknowledges addition of Cap-2 and after
   receiving the ack, the Initiator puts additions of Cap-2 into effect.

12.4.2.  Deleting a capability dynamically

   During session establishment, the Initiator advertises Cap-1, Cap-2
   and DynCap in OPEN message.  Similarly, the Receiver advertises Cap-
   1, Cap-2 and DynCap in OPEN message.  The DynCap list contains Cap-1
   indicating that Receiver is capable of handling dynamic revision of
   Cap-1 only.  During the lifetime of the peering session, the operator
   removes a functionality due to which Initiator sends DCAP message
   with Action "delete" for Cap-1.  The Receiver acknowledges deletion
   of Cap-1 and after receiving the ack, the Inititor puts deletion of
   Cap-1 into effect.

12.4.3.  Network upgrade without Non-Stop-Routing

   The Initiator is upgraded and during session establishment, it
   advertises Cap-1 and DynCap in OPEN message.  The Receiver is not
   upgraded and during the session establishment, it advertises Cap-1
   and DynCap in OPEN message.  The DynCap lists Cap-1 indicating that
   Receiver is capable of habdling dynamic revision of Cap-1 only.  As
   part of the upgrade, the Initiator supports new functionality and new
   capability Cap-2.  The Operator wishes to enable new functionality
   during the lifetime of the peering session and as a result the
   Initiator wants to "add" Cap-2.  It cannot send DCAP message with
   Action "add" for Cap-2 because the Receiver does not have support to
   handle Cap-2.  The Initiator can add Cap-2 only when Receiver allows
   the dynamic revision of Cap-2.

Chen & Sangli            Expires 20 August 2026                [Page 17]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

12.4.4.  Network upgrade with Non-Stop-Routing

   The Initiator has advertised Cap-1 and DynCap capabilities in the
   OPEN message.  The Receiver has advertised Cap-1 and DynCap
   capabilities in the OPEN message.  The DynCap lists contains Cap-1
   and DynCap capabilities indicating that Receiver is capable of
   handling dynamic revision of Cap-1 and DynCap list.  The Initiator is
   upgraded without resetting the BGP session and the Initiator now has
   additional capability Cap-2 that it wants to revise.  The Initiator
   will revise DynCap capability with action "add" and the DynCap list
   will contain Cap-1, Cap-2 and DynCap capabilities.  The receiver
   acknowledges that revision of DynCap capability.  When the Receiver
   is updated without resetting the session, it may revise the DynCap
   capability adding Cap-1, Cap-2 and DynCap capabilities.  With this,
   the Receiver is indicating that it is capable of handling Cap-2
   capability revision.  The Initiator may send DCAP message with Action
   "add" for Cap-2.  The Receiver may follow the similar process
   independently, thus allowing asynchronous network upgrade without
   resetting the BGP session.

13.  References

13.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC4271]  Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A
              Border Gateway Protocol 4 (BGP-4)", RFC 4271,
              DOI 10.17487/RFC4271, January 2006,
              <https://www.rfc-editor.org/info/rfc4271>.

   [RFC4760]  Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
              "Multiprotocol Extensions for BGP-4", RFC 4760,
              DOI 10.17487/RFC4760, January 2007,
              <https://www.rfc-editor.org/info/rfc4760>.

   [RFC5492]  Scudder, J. and R. Chandra, "Capabilities Advertisement
              with BGP-4", RFC 5492, DOI 10.17487/RFC5492, February
              2009, <https://www.rfc-editor.org/info/rfc5492>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

13.2.  Informative References

Chen & Sangli            Expires 20 August 2026                [Page 18]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   [RFC4724]  Sangli, S., Chen, E., Fernando, R., Scudder, J., and Y.
              Rekhter, "Graceful Restart Mechanism for BGP", RFC 4724,
              DOI 10.17487/RFC4724, January 2007,
              <https://www.rfc-editor.org/info/rfc4724>.

   [RFC7911]  Walton, D., Retana, A., Chen, E., and J. Scudder,
              "Advertisement of Multiple Paths in BGP", RFC 7911,
              DOI 10.17487/RFC7911, July 2016,
              <https://www.rfc-editor.org/info/rfc7911>.

   [RFC2858]  Bates, T., Rekhter, Y., Chandra, R., and D. Katz,
              "Multiprotocol Extensions for BGP-4", RFC 2858,
              DOI 10.17487/RFC2858, June 2000,
              <https://www.rfc-editor.org/info/rfc2858>.

   [RFC8654]  Bush, R., Patel, K., and D. Ward, "Extended Message
              Support for BGP", RFC 8654, DOI 10.17487/RFC8654, October
              2019, <https://www.rfc-editor.org/info/rfc8654>.

   [RFC6793]  Vohra, Q. and E. Chen, "BGP Support for Four-Octet
              Autonomous System (AS) Number Space", RFC 6793,
              DOI 10.17487/RFC6793, December 2012,
              <https://www.rfc-editor.org/info/rfc6793>.

   [RFC2918]  Chen, E., "Route Refresh Capability for BGP-4", RFC 2918,
              DOI 10.17487/RFC2918, September 2000,
              <https://www.rfc-editor.org/info/rfc2918>.

   [I-D.chen-idr-enhanced-dynamic-cap]
              Chen, E. and S. R. Sangli, "Enhanced Dynamic Capability
              for BGP", Work in Progress, Internet-Draft, draft-chen-
              idr-enhanced-dynamic-cap-01, 3 October 2025,
              <https://datatracker.ietf.org/doc/html/draft-chen-idr-
              enhanced-dynamic-cap-01>.

Authors' Addresses

   Enke Chen
   Palo Alto Networks
   3000 Tannery Way
   Santa Clara, CA 95054
   USA
   Email: enchen@paloaltonetworks.com

Chen & Sangli            Expires 20 August 2026                [Page 19]
Internet-Draft      draft-ietf-idr-dynamic-cap-19.txt      February 2026

   Srihari Sangli
   HPE
   Mahadevapura Main Road
   Bangalore, KA 560048
   India
   Email: srihari.sangli@hpe.com

Chen & Sangli            Expires 20 August 2026                [Page 20]