<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8986 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml">
<!ENTITY RFC8200 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC2516 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2516.xml">
<!ENTITY RFC5072 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5072.xml">
<!ENTITY I-D.ietf-spring-srv6-security SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-spring-srv6-security.xml">
]>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" docName="draft-song-spring-pppoe-srv6-00" consensus="true" submissionType="IETF" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="SRv6 for PPPoE"> SRv6 for PPPoE Transport
    </title>
    <seriesInfo name="Internet-Draft" value="draft-song-spring-pppoe-srv6-00"/>
    <author fullname="Cancan Huang" initials="C." surname="Huang">
      <organization>China Telecom</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city/>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <phone/>
        <email>huangcanc@chinatelecom.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    <author fullname="Xueyan Song" initials="X." surname="Song">
      <organization>ZTE Corp.</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city/>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <email>song.xueyan2@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    <date month="May" day="13" year="2025"/>
    <area>Routing</area>
    <workgroup>SPRING Working Group</workgroup>
    <keyword>Request for Comments</keyword>
    <keyword>RFC</keyword>
    <keyword>Internet Draft</keyword>
    <keyword>I-D</keyword>
    <abstract>
       <t>  This document presents a method of utilizing IPv6 underlay tunnels to transfer the PPPoE session information in broadband networks. 
	   By taking advantage of the programmability of SRv6 SIDs, it not only enables trusted authentication and secure access for broadband users
	   but also meets the needs of operators to provide differentiated services to broadband users and flexibly deploy services.</t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t> PPPoE, see <xref target="RFC2516"/> as a traditional protocol for broadband user authentication and access, was widely used in the DSL
	  era. With the development of the Internet and the digital transformation of industries, operators are required to offer refined, differentiated, 
	  and deterministic broadband services to users. These services demand that the broadband network can allocate necessary network resources based on 
	  service requirements, and support refined operation capabilities such as service-based billing. This may involve functional requirements like 
	  network slicing and dynamic QoS, which are difficult to support with traditional PPPoE. </t>

      <t> This document proposes a method of transmitting PPPoE session information through IPv6 underlay tunnel technology. By leveraging the PPPoE
	  session management capabilities and the programmability of SRv6 <xref target="RFC8986"/>, it not only provides broadband users with trusted 
	  authentication and secure access but also meets the	operators' needs for ensuring differentiated services and flexibly deploying specific services. </t>

    </section>
	    <section>
      <name>Conventions</name>
      <section>
        <name>Requirements Language</name>
        <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>
        <name>Terminology</name>
    <t> Refer to <xref target="RFC2516"/>, <xref target="RFC8986"/> for the key terms used in this document.</t>
      </section>
    </section>

    <section>
      <name>Use Case</name>  
	     <figure anchor="Figure_1">
          <name>PPPoE over SRv6 in SD-WAN Network</name>
           <artwork name="" type="" align="left" alt=""><![CDATA[
                        +----------------+
                        |   Controller   |
                        +----------------+            ____
                       /                 \           /    \
                      /                   \         /      \
+-------+    +--------+  +--------+  +--------+    /   Core \
| User  +----+ PPPoE  +--+ Access +--+ PPPoE  +---+ Network  |
|System |    | Client |  | Gateway|  | Server |    \_      _/
+-------+    +--------+  +--------+  +--------+      \____/
                |                                       |
                |  Low Latency: IPv6 SA=SIDA, DA=SID1   |
                |  High Bandwidth: IPv6 SA=SIDB, DA=SID2|
                |  Best Effort: IPv6 SA=SIDC, DA=SID3   |
                |-------------------------------------->|
                |  Low Latency: IPv6 SA=SID1, DA=SIDA   |
                |  High Bandwidth: IPv6 SA=SID2, DA=SIDB|
                |  Best Effort: IPv6 SA=SID3, DA=SIDC   |
                |<--------------------------------------|
]]></artwork>
        </figure>
        <t> The PPPoE client initiates dial-up connections to the PPPoE server using different IPv6 Source Addresses(SA) and Destination Addresses(DA) 
		based on specific service requirements (e.g., low latency, high bandwidth, isolated VPN, etc.). These IPv6 SA and DA are 128-bit Segment Identifier(SID) 
		addresses with programmabilty. Each SID represents distinct processing behaviors, such as directing traffic to a low-latency channel, high-bandwidth 
		channel, or dedicated VPN channel. As shown in the figure, the management and control system configures and distributes IPv6 SA and DA to both the 
		PPPoE client and server. For example:</t>
        <t> The SID A assigned to the PPPoE client and SID 1 assigned to the PPPoE server indicate traffic routing through a low-latency channel,</t>
		<t> While SID B at the PPPoE client and SID 2 at the PPPoE server indicate traffic routing through a high-bandwidth channel. </t>
		<t> Here, the management and control system, for example, an SDN controller or orchestration systems can manage devices and distribute parameters 
		to the PPPoE client and server via protocols such as NETCONF or BBF TR-069.</t>
    </section>
	
	<section>
	<name> PPPoE over SRv6 Tunnel</name>
	<t> After the PPPoE client and the PPPoE server obtain the SRv6 tunnel address, they construct a tunnel to achieve communication from the PPPoE
        client to the server. After a successful dial-up, the PPPoE client obtains the service address used for PPPoE communication through the allocation 
        by the PPPoE server and enters the data transmission stage. Among them, the session management process of PPPoE over SRv6, including PPPoE negotiation,
        PPP negotiation and other processes, shall comply with the PPPoE communication specified in <xref target="RFC2516"/> and <xref target="RFC5072"/>. 
        It's noted that this specification does not change the PPP and PPPoE negotiation processes, and only realizes the carrying of PPPoE session information 
        through the IPv6 header. The acquisition of Prefix Delegation (PD) addresses by both the PPPoE client and the PPPoE server can be statically configured 
        or dynamically obtained, such as through the DHCPv6 method.</t>
        <t> Static configuration: The suffix part of the IPv6 address is statically configured, and the 128-bit address generated by the PD prefix address 
		plus the suffix address is used as the outer-layer IPv6 tunnel address.</t>
		<t> Dynamic configuration: The PPPoE client establishes a connection with the management and control system. After passing the authentication, the 
		management and control system issues the suffix information to the PPPoE client. The PPPoE client uses the 128-bit address generated by the PD prefix 
		address plus the suffix address as the outer-layer IPv6 tunnel address.</t>
		<t> The client assembles the complete outer-layer IPv6 address, which is used for the outer-layer encapsulation of establishing the SRv6 tunnel. The 
		source address is the PPPoE client address, which has mapping of MAC address of PPPoE client to SRv6 SID  , and the destination address is the PPPoE 
		server address.</t>
		<t> After receiving the dial-up request initiated by the PPPoE client, the PPPoE server can map the service addresses of the client with the server 
		to the public network or the enterprise intranet through NAT or routing policies.</t>
    </section>		
	 <section>
        <name>Encapsulation for PPPoE over SRv6</name>
        <figure anchor="Figure_2">
          <name>Encapsulation for PPPoE over SRv6</name>
          <artwork align="center"><![CDATA[          
+---------------------------+
|          Payload          |
+---------------------------+--\ 
|        Service IP         |   |
+---------------------------+   |
|       PPP Protocol Type   |   | 
+---------------------------+   |<- Inner IPv4/v6 Header
|        PPPoE Session      |   |    
+---------------------------+   | 
|    Ether Type = 0x8864    |   | 
+---------------------------+--/      
|     IPv6 header, nh=143   |   \  
+---------------------------+   | 
|     Ether Type=0x86dd     |   |
+---------------------------+   |<- Outer IPv6 Header
|         Phsical Layer     |   |
+---------------------------+   |
|          Physical         |   |
+---------------------------+--/                    
]]></artwork>
        </figure>
     <t> This document introduces a method for PPPoE information carried in IPv6 tunnel. The IPv6 header format is defined in <xref target="RFC8200"/>. 
	 The PPPoE information is carried in Ethernet format which is not changed in this document. So the next header for the IPv6 packet is set as 143. The 
	 PPPoE packet format follows <xref target="RFC2516"/>. Specifically, in the outer-layer IPv6 header, VLAN configuration on demand is supported, which
	 is used for the service identification. If the VLAN is configured, the VLAN will terminate at the next SRv6 node. The VLAN allocation on demand is 
	 also supported for the inner-layer IPv6/IPv4. If the VLAN is configured, the VLAN will terminate at the PPPoE server. The source address and destination 
	 address of the IPv6 packet are encapsulated as SRv6 SID format, which is introduced in the section 5. </t>
      </section>

      <section>
        <name>SID Format</name>
        <t> The SRv6 SID is consisted of LOC:FUNCT:ARG, where a locator (LOC) is encoded in the L most significant bits of the SID, followed by F bits of 
		function (FUNCT) and A bits of arguments (ARG). The SID format is defined in <xref target="RFC8986"/>. </t>
 

        <t> The PPPoE client and PPPoE server deploy SRv6 tunnel across the broadband networks. The PPPoE client and server are required to enable for 
		SRv6 and advertise SRv6 SIDs. The SRv6 SID is in the Destination Address field of an IPv6 header of a packet in this document. Specifically: </t>   
		
        <t> The locator is the Prefix Delegation assigned by the IPv6 access gateway.</t> 
        <t> The function defines the processing behavior executed at an SRv6 Segment Endpoint node.  </t> 
        <t> The arguments are optional parameters, used for the identifier of service type, such as VLAN ID used in this document. </t> 
		<t> This document introduces new SRv6 Function types to support PPPoE operations, which require an extension based on <xref target="RFC8986"/>. 
		Specifically, the PPPoE server should support the following Functions: </t>  
		<t> End.DXPPPoE SID (Decapsulation and IPv4 Cross - connect):</t> 
        <t> The behaviors associated with this SID is endpoint behavior with decapsulation and IPv4 cross-connect. The processing actions involve stripping 
		the IPv6 tunnel	header,	the PPPoE header, and the PPP header, and then forwarding the decapsulated IPv4/IPv6  packet to a specific next-hop through
		the Layer 3 interface associated with this SID.</t>   		
        <t> End.DX3PPPoE SID (Decapsulation and PPPoE L3VPN table lookup):</t>   
        <t> The behaviors associated with this SID is endpoint behavior with decapsulation and PPPoE L3VPN table lookup. The processing actions involve 
		removing the IPv6 tunnel header, the PPPoE header, and the PPP header, and then performing a VPN lookup and forwarding based on the inner-layer PPPoE 
		session information in the packet. This SID is mainly used in L3VPN scenarios.</t>  
        <t> End.DT46PPPoE SID  (Decapsulation and Specific IP Table Lookup):</t> 
        <t> The behaviors associated with this SID is endpoint behavior with decapsulation and specific IP table lookup. The processing actions involve stripping
		the IPv6 tunnel header, the PPPoE header, and the PPP header, and then forwarding the decapsulated IPv4/IPv6 packet according to the routing table.</t> 
        <t> The PPPoE client SHOULD support the following Function:</t> 		
        <t> End.DT46PPPoE SID  (Decapsulation and Specific IP Table Lookup):</t>   
        <t> It supports the forwarding action of decapsulating the packet. The decapsulation actions involve removing the IPv6 tunnel header, the PPPoE header, 
		and the PPP header, and then forwarding the decapsulated IPv4/IPv6 packet according to the routing table.</t> 
        <t> During the address encapsulation process, the PPPoE client will encapsulate the SID field with the corresponding function identifier as the destination 
		IPv6 address based on application requirements. Once the PPPoE server receives this packet, it will conduct packet decapsulation. Then, it will parse the 
		packet and perform forwarding operations in accordance with the defined decapsulation actions. When encapsulating packets, the PPPoE server will use the 
		End.DPPPoET46 SID field as the destination IPv6 address. Upon receipt of the packet, the PPPoE client will decapsulate it and carry out corresponding 
		forwarding and other operations.</t> 
       </section>

	<section>
      <name>IANA Considerations</name>
      <t> IANA is requested to allocate values for the new SRv6 SID introduced in this document.</t>
    </section>
	
    <section>
      <name>Security Considerations</name>
      <t>The header information of SRv6, such as the Segment List and SID fields in the SRH, is transmitted in plain text, which may be eavesdropped on or 
	  tampered with. If the PPPoE payload content is not encrypted, user authentication information such as CHAP passwords and PPPoE Session IDs may be 
	  intercepted. It is necessary to authenticate SRv6 tunnel nodes and strongly bind them with PPPoE authentication to prevent unauthenticated SRv6 tunnel 
	  nodes from handling PPPoE traffic, which could lead to unauthorized access or man - in - the - middle attacks. </t>
	  <t>In terms of data protection, it is recommended to enable IPsec to encrypt SRv6 traffic and protect the SRH and payload content.</t>
	  <t>The security considerations of SRv6 <xref target="I-D.ietf-spring-srv6-security"/> and the security considerations of PPPoE introduced in <xref target="RFC2516"/> 
	  apply to this document.</t>
    </section>


    <section>
      <name>Acknowledgements</name>
      <t> The authors would like to acknowledge Zhenlin Tan for his helpful comments. </t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
    &RFC2119; 
    &RFC8174; 
    &RFC8986;
    &RFC8200;	
    </references>
    <references title="Informative References">
    &RFC2516;
    &RFC5072;
	&I-D.ietf-spring-srv6-security;

    </references>
  </back>
</rfc>