<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-idr-node-target-ext-comm-04"
     ipr="trust200902">
  <front>
    <title abbrev="BGP Node Target Extended Community">BGP Extended Community
    for Identifying the Target Nodes</title>

    <author fullname="Jie Dong" initials="J." surname="Dong">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>jie.dong@huawei.com</email>
      </address>
    </author>

    <author fullname="Shunwan Zhuang" initials="S." surname="Zhuang">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>zhuangshunwan@huawei.com</email>
      </address>
    </author>

    <author fullname="Gunter Van de Velde" initials="G."
            surname="Van de Velde">
      <organization>Nokia</organization>

      <address>
        <postal>
          <street/>

          <city>Antwerp</city>

          <region/>

          <code/>

          <country>BE</country>
        </postal>

        <email>gunter.van_de_velde@nokia.com</email>
      </address>
    </author>

    <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
      <organization>Nvidia</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <email>jefftant.ietf@gmail.com</email>
      </address>
    </author>

    <date day="2" month="November" year="2026"/>

    <abstract>
      <t>BGP has been used to distribute different types of routing and policy
      information. In some cases, the information distributed may be only
      intended for one or a particular group of BGP nodes in the network.
      Currently BGP does not have a generic mechanism to designate the target
      nodes of the routing information. This document defines a new type of
      BGP Extended Community called "Node Target" for this purpose.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>BGP <xref target="RFC4271"/> has been used to distribute different
      types of routing and policy information. In some cases, the information
      distributed may be only intended for one or a group of receiving BGP
      nodes in the network. One typical use case is the distribution of BGP
      Flow Spec <xref target="RFC8955"/> <xref target="RFC8956"/> rules only
      to a particular group of BGP nodes. Such a targeted distribution
      mechanism is considered useful as it can save resource on nodes which do
      not need that information.</t>

      <t>Currently BGP does not have a generic mechanism to designate the set
      of nodes to which the information is to be distributed. Route Target
      (RT) as defined in <xref target="RFC4364"/> was designed for the
      matching of VPN routes into the target VPN Routing and Forwarding tables
      (VRFs) on the PE nodes. <xref target="RFC9830"/> introduces the
      mechanism of steering the SR Policy information to the target head end
      node based on RT, it is only applicable to the SR Policy Address Family.
      Although it is possible to reuse RT to control the distribution of
      non-VPN information to one or a group of receiving nodes, such mechanism
      is not applicable when the information to be distributed is VPN-specific
      and is advertised with another set of RTs for the VRF matching, as the
      matching of any of the VPN RT in the BGP route would result in that
      route being imported to a local VRF, regardless of whether the receiving
      node is the target node or not. Thus a general mechanism which is
      independent from the control of importing VPN routes to VRFs is
      needed.</t>

      <t>Another possible approach is to configure, on each router, a
      community and the corresponding policies to match the community to
      determine whether to accept the received routes or not. Such mechanism
      relies on manual configuration thus is considered error-prone. It is
      preferable by some operators that an automatic approach can be provided,
      which would make the operation much easier.</t>

      <t>This document defines a new type of BGP Extended Community called
      "Node Target". It can be used by a receiving BGP node to determine
      whether it is the target of the BGP information.</t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in BCP
        14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>
    </section>

    <section title="Node Target Extended Communities">
      <t>This section defines a new BGP Extended Community <xref
      target="RFC4360"/> called "Node Target Extended Community". It can be a
      transitive extended community with the high-order octet of the type set
      to 0x01, or a non-transitive extended community with the high-order
      octet type set to 0x41. The sub-type of the Node Target Extended
      Community is 0x09.</t>

      <t>The format of Node Target Extended Community is shown in Figure
      1.</t>

      <t><figure>
          <artwork align="center"
                   name="Figure 1. IPv4 Node Target extended community"><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  0x01 or 0x41 |      0x09     |    Target BGP Identifier      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Target BGP Identifier (cont.) |           Reserved            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 1. Node Target extended community
]]></artwork>
        </figure>Where:</t>

      <t>Target BGP Identifier (4 octets): The BGP Identifier of a target
      node. It is a 4-octet, unsigned, non-zero integer as defined in <xref
      target="RFC6286"/>.</t>

      <t>Reserved field (2 octets): Reserved for future use, MUST be set to
      zero on transmission and ignored on receipt.</t>

      <t>One or more Node Target extended communities MAY be carried in an
      Update message to designate a group of target BGP nodes.</t>
    </section>

    <section title="Procedures">
      <t>In this section, the mechanism for intra-domain scenario is
      described, the mechanism for inter-domain scenario is for further study.
      The domain here refers to an administrative domain, which may consists
      of one or multiple ASes managed by a single operator.</t>

      <t>When a network controller or BGP speaker plans to advertise BGP
      routing or policy information only to one or a group of BGP nodes in the
      network, it MUST put the BGP Identifier of each target node into a list
      of Node Target extended communities, and attach the Node Target extended
      communities to the BGP Update to be advertised. Duplicated BGP
      identifiers MUST NOT be carried in the Node Target extended communities
      of a BGP Update.</t>

      <t>When a BGP speaker receives a BGP Update which contains one or more
      Node Target extended communities, it MUST check the BGP Identifiers
      carried in the Node Target extended communities of the Update. An
      invalid BGP Identifier (e.g. 0.0.0.0) received in Node Target Extended
      Communities MUST be ignored on receipt and SHOULD be logged. If multiple
      Node Target extended communities in an Update carry the same BGP
      Identifier, the receiver SHOULD treat them as a single occurrence of
      that target. Duplicate occurrences have no additional meaning and SHOULD
      be silently ignored.</t>

      <t>If any of the Target BGP Identifiers in the Node Target extended
      communities matches the local BGP Identifier, this node is one of the
      target nodes of the Update, information in the Update is eligible for
      installation on this node. If none of the Target BGP Identifiers in the
      Node Target extended communities matches with the local BGP Identifier,
      this node is not among the target nodes of the Update, information in
      the UPDATE MAY still be accepted by the BGP speaker (e.g. stored in
      Adj-RIB-In), but it MUST NOT be installed locally in the RIB/FIB/ACL
      etc. of this node, and MUST NOT be advertised further to other nodes.
      Routing information that is not targeted to this node SHOULD still be
      observable for diagnostic purposes, this can be done by an indication
      that the route does not pass the Node Target check , together with the
      Node Target extended communities received. A counter of routes not
      passing the node-target check SHOULD also be kept. The specific storage
      location is implementation-dependent.</t>

      <t>FlowSpec is a motivating use case for this mechanism. When a FlowSpec
      NLRI carries Node Target extended communities, the Node Target check
      SHOULD be applied before the validation procedure defined in <xref
      target="RFC8955"/>.</t>

      <t>The mechanism of using Node Target extended community to control the
      BGP route distribution only to particular BGP nodes is out of the scope
      and will be specified in a separate document.</t>
    </section>

    <section title="Operational Considerations">
      <t>An operator who is responsible for the administration of one or
      multiple ASes need to ensure each BGP speaker in the network is assigned
      with a unique BGP Identifier. The Node Target extended communities may
      be originated by a network controller or a BGP speaker, In order to
      construct the list of node targets, an inventory of the BGP Identifiers
      of the target nodes in the domain MUST be maintained. The mechanism used
      to obtain and update such inventory is out of the scope of this
      document. Operators are expected to derive it from their existing
      inventory, orchestration, or configuration management systems..</t>

      <t>Each node target consumes an 8-octet extended community, and targets
      are enumerated individually. A large group of node target extended
      communities therefore adds substantially to the size of the Update.
      Operators SHOULD keep the target groups to a practical size, and SHOULD
      consider whether a small set of target nodes can meet the deployment
      need. Implementations MAY impose a local limit on the number of Node
      Target extended communities per Update.</t>

      <t>The Node Target extended community can be deployed incrementally. BGP
      speakers that do not understand it ignore it and process the Update
      according to normal BGP procedures. This ensures target nodes obtain the
      information they need, but may also result in unnecessary state on
      legacy nodes. If the information is FlowSpec, legacy speakers may
      install unnecessary FlowSpec rules, potentially affecting traffic that
      matches those rules. This may be mitigated by setting appropriate
      routing policies on the legacy BGP nodes. Operators should be aware of
      this requirement during the migration.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>Per the early allocation process, IANA has assigned the sub-type
      value 0x09 for "Node Target Extended Community" from the "Transitive
      IPv4-Address-Specific Extended Community Sub-Types" registry of the "BGP
      Extended Communities" registry.</t>

      <t>Per the early allocation process, IANA has assigned the sub-type
      value 0x09 for "Node Target Extended Community" from the "Non-Transitive
      IPv4-Address-Specific Extended Community Sub-Types" registry of the "BGP
      Extended Communities" registry.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The mechanism defined in this document can limit the scope of the
      receiving nodes of BGP Updates, which make it possible for an attacker
      to do fine-grained targeting of malicious BGP Updates only to a
      restricted set of routers. This may make it more difficult for a network
      administrator to discover an attack. This may be mitigated by filtering
      the Node Target extended communities at the administrative network
      boundaries. A misconfigured or injected Node Target extended community
      could suppress route installation across an entire administrative domain
      without generating any protocol error. Operators should treat target
      lists as security-sensitive configuration.</t>
    </section>

    <section title="Contributors">
      <t><figure>
          <artwork><![CDATA[Haibo Wang
Email: rainsword.wang@huawei.com]]></artwork>
        </figure></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Zhenbin Li, Ercin Torun, Jeff Haas,
      Robert Raszuk and John Scudder for the review and discussion of this
      document.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include='reference.RFC.4271'?>

      <?rfc include='reference.RFC.4360'?>

      <?rfc include='reference.RFC.6286'?>

      <?rfc include='reference.RFC.8174'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.4364'?>

      <?rfc include='reference.RFC.8955'?>

      <?rfc include='reference.RFC.8956'?>

      <?rfc include='reference.RFC.9830'?>
    </references>
  </back>
</rfc>
