<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.25 (Ruby 2.7.5) -->


<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY I-D.mhkk-dmm-srv6mup-architecture SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.mhkk-dmm-srv6mup-architecture.xml">
<!ENTITY RFC7024 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7024.xml">
<!ENTITY I-D.zzhang-pals-pw-for-ip-udp-payload SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.zzhang-pals-pw-for-ip-udp-payload.xml">
<!ENTITY I-D.ietf-dmm-srv6-mobile-uplane SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-dmm-srv6-mobile-uplane.xml">
<!ENTITY I-D.zzhang-dmm-5g-distributed-upf SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.zzhang-dmm-5g-distributed-upf.xml">
<!ENTITY RFC4363 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4363.xml">
<!ENTITY I-D.ietf-bess-srv6-services SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-bess-srv6-services.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-zpm-dmm-mup-bgp-signaling-00" category="std" consensus="true">
  <front>
    <title abbrev="BGP Signaling for MUP">BGP Signaling for Mobile User Plane</title>

    <author initials="Z." surname="Zhang" fullname="Zhaohui Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>
    <author initials="K." surname="Patel" fullname="Keyur Patel">
      <organization>Arrcus</organization>
      <address>
        <email>keyur@arrcus.com</email>
      </address>
    </author>
    <author initials="S." surname="Matsushima" fullname="Satoru Matsushima">
      <organization>Softbank</organization>
      <address>
        <email>satoru.matsushima@g.softbank.co.jp</email>
      </address>
    </author>

    <date year="2022" month="March" day="07"/>

    <area>Routing</area>
    <workgroup>dmm</workgroup>
    <keyword>upf bgp signaling</keyword>

    <abstract>


<t>This document specifies BGP signaling for router-based 5G User Plane
using Mobile User Plane SAFI and some of its route types
as specified in [draft-mpmz-idr-mup-safi].</t>



    </abstract>



  </front>

  <middle>


<section anchor="background" title="Background">

<t>5G <xref target="_3GPP-23.501"/> User Plane uses N4 signaling between Session Management Function (SMF)
and User Plane Function (UPF), and N2 signaling between Access &amp; Mobility
Management Function (AMF) and Access Nodes (AN). A traditional UPF device
is typically centrally deployed and
uses GTP tunnels between itself and ANs for data traffic to/from User
Equipment (UEs). The GTP tunnels are set up by the N4 and N2 signaling,
and the forwarding model on a UPF is quite different from that on a typical
router.</t>

<t>UPFs can also be deployed in distributed fashion and still provide persistent
IP address for UEs if needed, as described in
<xref target="I-D.zzhang-dmm-5g-distributed-upf"/>.</t>

<t>Some operators may desire to deploy UPFs that are implemented more like
a router with BGP instead of N4 signaling. GTP tunneling can still be used
or it can be partially replaced by SRv6/MPLS tunneling. It does not require
any change to the 3GPP architecture, signaling and deployment model, but a
controller is used to convert N4 signaling to BGP, as described in
<xref target="I-D.mhkk-dmm-srv6mup-architecture"/> and [I-D.mpmz-dmm-mup-safi].</t>

<t>The above two drafts are both SRv6 specific. However, BGP signaling
from the controller based on N4 signaling can be done without being
SRv6 or even SR specific at all.
This document specifies corresponding BGP signaling and procedures for
both central and distributed deployment models with integration with
wireline VPN services as described in <xref target="I-D.zzhang-dmm-5g-distributed-upf"/>,
<xref target="I-D.mhkk-dmm-srv6mup-architecture"/>, and [I-D.mpmz-dmm-mup-safi].</t>

<section anchor="terminologies" title="Terminologies">


<t>Terminologies of 5G, or those used in [I-D.mpmz-dmm-mup-safi]
and <xref target="I-D.mhkk-dmm-srv6mup-architecture"/> are omitted here for now.
It is expected that audience of this document are familiar with them
or can refer to the relevant documents.</t>

</section>
</section>
<section anchor="analysis-of-srv6-specific-aspects-of-i-dmpmz-dmm-mup-safi" title="Analysis of SRv6 specific aspects of [I-D.mpmz-dmm-mup-safi]">

<t>The goal of this document is to specify encoding and procedures that work
for both MPLS, SR-MPLS as well as SRv6. Therefore, we first look at the
SRv6 specific aspects of [I-D.mpmz-dmm-mup-safi].</t>

<section anchor="bgp-discovery-direct-route" title="BGP Discovery Direct Route">

<t>Per [I-D.mpmz-dmm-mup-safi]:</t>

<figure><artwork><![CDATA[
 "The Discovery Direct route is generated by the MUP PE when a routing
 instance accommodates a Direct type MUP Segment, e.g., N6 interface or
 routes on DN side in 3GPP 5G specific case.  It generates the
 Discovery Direct Route per each routing instance for the MUP Segment."
]]></artwork></figure>

<t>When a MUP GW receives a BGP Type 2 Session Transform (ST2) Route,
which advertises the association of PDU Session TEID (on the UPF side)
and a DN VPN, a corresponding Direct Route is matched to set up forwarding
state on the GW so that it can decapsulate incoming GTP packets from gNB/AN
and then send to the advertising MUP PE of the Direct Route using the
Prefix SID in the Direct Route. The Prefix SID has an End.DT2/4/6 or
End.DX2/4/6 behavior.</t>

<t>In the non-SR case (and SR-MPLS or SRv6 as well), this route can be
replaced by the “VPN-IP default route” in <xref target="RFC7024"/>. The VRF table
label in the route is used to send traffic by the GW to the MUP PE
after GTP decapsulation.</t>

</section>
<section anchor="bgp-discovery-interwork-route" title="BGP Discovery Interwork Route">

<t>Per [I-D.mpmz-dmm-mup-safi]:</t>

<figure><artwork><![CDATA[
 "The Discovery Interwork route is generated by the MUP GW when a
 routing instance accommodates an Interwork type MUP Segment, e.g., N3
 interfaces or routes on RAN side in 3GPP 5G specific case.  It
 generates route per each N3RAN IP prefix and stores the route in the
 routing instance of N3RAN.  The IP prefix MAY include a gNodeB
 address which is connecting to the MUP GW."
]]></artwork></figure>

<t>Basically, it is a route for a gNB/AN address in the N3RAN. These routes
are put into N3RAN RIB. When a MUP PE
receives a BGP Type 1 Session Transform (ST1) route, the Endpoint
Address in the ST1 NLRI is resolved in the N3RAN RIB, and the Prefix
SRv6 SID associated with the Interwork Route, which has the End.GTP4/6.E
behavior on the GW, is used send DownLink (DL) traffic from the MUP PE
towards the gNB/AN via the GW.</t>

<t>In the non-SR case (and SR-MPLS or SRv6 as well), this route can simply be
replaced with a regular host route for the gNB/AN. In case of MPLS or
SR-MPLS, an “IP/UDP Payload PseudoWire”
<xref target="I-D.zzhang-pals-pw-for-ip-udp-payload"/> label for GTP is encoded in an
Extended Community so that the MUP PE can use it to send DL traffic
with GTP encapsulation but w/o IP/UDP header to the GW, who will
add the IP/UDP header and send the resulting GTP packet to the gNB/AN.</t>

<t>The PW label is encoded in an EC because only the DL traffic should use
the PW label and other traffic towards the gNB/AN should not.</t>

<t>In case of SRv6, the same Prefix SID that would be attached to the
Interwork Segment route can be attached to the regular gNB/AN host route
that replaces the Interwork Segment route.</t>

</section>
</section>
<section anchor="optional-type-3-session-transform-st3-route" title="Optional Type 3 Session Transform (ST3) Route">

<t>In [I-D.mpmz-dmm-mup-safi], the ST1 route only has the TEID and endpoint
address for the gNB/AN side for DL traffic. For UpLink (UL) traffic,
the ST2 route has the TEID prefix and endpoint address for the UPF side,
so that the GW can determine which DN the traffic belongs to.</t>

<t>It is quite possible that the TEID assigned by the SMF are per-session
and do not fall into prefix ranges nicely. Unless the MUP controller
intelligently aggregate individual per-session ST2 routes, a MUP GW
that also acts as a MUP PE will receive individual per-session ST1
and ST2 routes. For that reason, an optional ST3 route is introduced
to combine ST1 and ST2 routes.</t>

</section>
<section anchor="specifications" title="Specifications">

<section anchor="encoding" title="BGP Encodings">

<t>A Type 3 Session Transform (ST3) route, and a GTP PW Label Extended
Community are specified in this section.</t>

<section anchor="gtp-pw-label-extended-community" title="GTP PW Label Extended Community">

<t>The GTP PW Label Extended Community is a BGP MUP Extended Community
of sub-type “GTP PW Label” (value to be assigned by IANA).</t>

<t>The encoding is as following:</t>

<figure><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type=MUP EC   | Sub-Type=TBD  |  Reserved=0                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Reserved=0   |          GTP PW Label                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="type-3-session-transform-st3-route" title="Type 3 Session Transform (ST3) route">

<t>A new Route Type for BGP-MUP NLRI is added:</t>

<figure><artwork><![CDATA[
       + 5 - Type 3 Session Transform (ST3) route;
]]></artwork></figure>

<t>It is similar to the ST1 route:</t>

<figure><artwork><![CDATA[
     +-----------------------------------+
     |           RD  (8 octets)          |
     +-----------------------------------+
     |      Prefix Length (1 octet)      |
     +-----------------------------------+
     |         Prefix (variable)         |
     +-----------------------------------+
     | Architecture specific (variable)  |
     +-----------------------------------+
]]></artwork></figure>

<t>For 3gpp-5g, the Architecture Specific part of the NLRI
encodes the &lt;UPF Address, UPF TEID, AN Address, AN TEID, QFI&gt;
parameters of the session that the route is for:</t>

<figure><artwork><![CDATA[
     +-----------------------------------+
     |          QFI (1 octet)            |
     +-----------------------------------+
     |       AN TEID (4 octets)          |
     +-----------------------------------+
     |     AN Address Length (1 octet)   |
     +-----------------------------------+
     |     AN  Address (variable)        |
     +-----------------------------------+
     |      UPF TEID (4 octets)          |
     +-----------------------------------+
     |     UPF Address Length (1 octet)  |
     +-----------------------------------+
     |     UPF Address (variable)        |
     +-----------------------------------+
]]></artwork></figure>

<t>The route is a combination of ST1 and ST2 routes, in that:</t>

<t><list style="symbols">
  <t>The QFI, AN TEID, and AN Address information correspond to the fields
in the 3gpp-5g ST1 Route Type specific BGP-MUP NLRI:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
   +-----------------------------------+
   |          TEID (4 octets)          |
   +-----------------------------------+
   |          QFI (1 octet)            |
   +-----------------------------------+
   | Endpoint Address Length (1 octet) |
   +-----------------------------------+
   |    Endpoint Address (variable)    |
   +-----------------------------------+
]]></artwork></figure>
  </t>
  <t>The UPF Address info corresponds to the Endpoint fields in ST2 route:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
   +-----------------------------------+
   |           RD  (8 octets)          |
   +-----------------------------------+
   |      Endpoint Length (1 octet)    | &lt;---
   +-----------------------------------+
   |      Endpoint Address (variable)  | &lt;---
   +-----------------------------------+
   | Architecture specific Endpoint    |
   |         Identifier (variable)     |
   +-----------------------------------+
]]></artwork></figure>
  </t>
  <t>The UPF TEID field corresponds to the TEID in  the 3gpp-5g ST2 Route Type
specific BGP-MUP NLRI:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
   +-----------------------------------+
   |          TEID (0-4 octets)        |
   +-----------------------------------+
]]></artwork></figure>
  </t>
</list></t>

</section>
</section>
<section anchor="procedures" title="Procedures">

<t>The procedures are inline with those in [I-D.mpmz-dmm-mup-safi] and
<xref target="I-D.mhkk-dmm-srv6mup-architecture"/>.</t>

<t>Details will be added a future revision.</t>


</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>To be provided.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>Requests to be made for the BGP encodings in <xref target="encoding"/>.
Details will be added in a future revision.</t>


</section>


  </middle>

  <back>

    <references title='Normative References'>

&I-D.mhkk-dmm-srv6mup-architecture;
&RFC7024;
&I-D.zzhang-pals-pw-for-ip-udp-payload;
&I-D.ietf-dmm-srv6-mobile-uplane;


    </references>

    <references title='Informative References'>

<reference anchor="_3GPP-23.501" >
  <front>
    <title>System architecture for the 5G System (5GS), V17.3.0</title>
    <author >
      <organization></organization>
    </author>
    <date year="2021" month="December"/>
  </front>
</reference>
&I-D.zzhang-dmm-5g-distributed-upf;
&RFC4363;
&I-D.ietf-bess-srv6-services;


    </references>



  </back>
</rfc>

