summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8772.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8772.txt')
-rw-r--r--doc/rfc/rfc8772.txt5813
1 files changed, 5813 insertions, 0 deletions
diff --git a/doc/rfc/rfc8772.txt b/doc/rfc/rfc8772.txt
new file mode 100644
index 0000000..60f686a
--- /dev/null
+++ b/doc/rfc/rfc8772.txt
@@ -0,0 +1,5813 @@
+
+
+
+
+Independent Submission S. Hu
+Request for Comments: 8772 China Mobile
+Category: Informational D. Eastlake 3rd
+ISSN: 2070-1721 Futurewei Technologies
+ F. Qin
+ China Mobile
+ T. Chua
+ Singapore Telecommunications
+ D. Huang
+ ZTE
+ May 2020
+
+
+The China Mobile, Huawei, and ZTE Broadband Network Gateway (BNG) Simple
+ Control and User Plane Separation Protocol (S-CUSP)
+
+Abstract
+
+ A Broadband Network Gateway (BNG) in a fixed wireline access network
+ is an Ethernet-centric IP edge router and the aggregation point for
+ subscriber traffic. Control and User Plane Separation (CUPS) for
+ such a BNG improves flexibility and scalability but requires various
+ communication between the User Plane (UP) and the Control Plane (CP).
+ China Mobile, Huawei Technologies, and ZTE have developed a simple
+ CUPS control channel protocol to support such communication: the
+ Simple Control and User Plane Separation Protocol (S-CUSP). S-CUSP
+ is defined in this document.
+
+ This document is not an IETF standard and does not have IETF
+ consensus. S-CUSP is presented here to make its specification
+ conveniently available to the Internet community to enable diagnosis
+ and interoperability.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ This is a contribution to the RFC Series, independently of any other
+ RFC stream. The RFC Editor has chosen to publish this document at
+ its discretion and makes no statement about its value for
+ implementation or deployment. Documents approved for publication by
+ the RFC Editor are not candidates for any level of Internet Standard;
+ see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8772.
+
+Copyright Notice
+
+ Copyright (c) 2020 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.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Terminology
+ 2.1. Implementation Requirement Keywords
+ 2.2. Terms
+ 3. BNG CUPS Overview
+ 3.1. BNG CUPS Motivation
+ 3.2. BNG CUPS Architecture Overview
+ 3.3. BNG CUPS Interfaces
+ 3.3.1. Service Interface (Si)
+ 3.3.2. Control Interface (Ci)
+ 3.3.3. Management Interface (Mi)
+ 3.4. BNG CUPS Procedure Overview
+ 4. S-CUSP Protocol Overview
+ 4.1. Control Channel Procedures
+ 4.1.1. S-CUSP Session Establishment
+ 4.1.2. Keepalive Timer and DeadTimer
+ 4.2. Node Procedures
+ 4.2.1. UP Resource Report
+ 4.2.2. Update BAS Function on Access Interface
+ 4.2.3. Update Network Routing
+ 4.2.4. CGN Public IP Address Allocation
+ 4.2.5. Data Synchronization between the CP and UP
+ 4.3. Subscriber Session Procedures
+ 4.3.1. Create Subscriber Session
+ 4.3.2. Update Subscriber Session
+ 4.3.3. Delete Subscriber Session
+ 4.3.4. Subscriber Session Events Report
+ 5. S-CUSP Call Flows
+ 5.1. IPoE
+ 5.1.1. DHCPv4 Access
+ 5.1.2. DHCPv6 Access
+ 5.1.3. IPv6 Stateless Address Autoconfiguration (SLAAC) Access
+ 5.1.4. DHCPv6 and SLAAC Access
+ 5.1.5. DHCP Dual-Stack Access
+ 5.1.6. L2 Static Subscriber Access
+ 5.2. PPPoE
+ 5.2.1. IPv4 PPPoE Access
+ 5.2.2. IPv6 PPPoE Access
+ 5.2.3. PPPoE Dual-Stack Access
+ 5.3. WLAN Access
+ 5.4. L2TP
+ 5.4.1. L2TP LAC Access
+ 5.4.2. L2TP LNS IPv4 Access
+ 5.4.3. L2TP LNS IPv6 Access
+ 5.5. CGN (Carrier Grade NAT)
+ 5.6. L3 Leased Line Access
+ 5.6.1. Web Authentication
+ 5.6.2. User Traffic Trigger
+ 5.7. Multicast Service Access
+ 6. S-CUSP Message Formats
+ 6.1. Common Message Header
+ 6.2. Control Messages
+ 6.2.1. Hello Message
+ 6.2.2. Keepalive Message
+ 6.2.3. Sync_Request Message
+ 6.2.4. Sync_Begin Message
+ 6.2.5. Sync_Data Message
+ 6.2.6. Sync_End Message
+ 6.2.7. Update_Request Message
+ 6.2.8. Update_Response Message
+ 6.3. Event Message
+ 6.4. Report Message
+ 6.5. CGN Messages
+ 6.5.1. Addr_Allocation_Req Message
+ 6.5.2. Addr_Allocation_Ack Message
+ 6.5.3. Addr_Renew_Req Message
+ 6.5.4. Addr_Renew_Ack Message
+ 6.5.5. Addr_Release_Req Message
+ 6.5.6. Addr_Release_Ack Message
+ 6.6. Vendor Message
+ 6.7. Error Message
+ 7. S-CUSP TLVs and Sub-TLVs
+ 7.1. Common TLV Header
+ 7.2. Basic Data Fields
+ 7.3. Sub-TLV Format and Sub-TLVs
+ 7.3.1. Name Sub-TLVs
+ 7.3.2. Ingress-CAR Sub-TLV
+ 7.3.3. Egress-CAR Sub-TLV
+ 7.3.4. If-Desc Sub-TLV
+ 7.3.5. IPv6 Address List Sub-TLV
+ 7.3.6. Vendor Sub-TLV
+ 7.4. Hello TLV
+ 7.5. Keepalive TLV
+ 7.6. Error Information TLV
+ 7.7. BAS Function TLV
+ 7.8. Routing TLVs
+ 7.8.1. IPv4 Routing TLV
+ 7.8.2. IPv6 Routing TLV
+ 7.9. Subscriber TLVs
+ 7.9.1. Basic Subscriber TLV
+ 7.9.2. PPP Subscriber TLV
+ 7.9.3. IPv4 Subscriber TLV
+ 7.9.4. IPv6 Subscriber TLV
+ 7.9.5. IPv4 Static Subscriber Detect TLV
+ 7.9.6. IPv6 Static Subscriber Detect TLV
+ 7.9.7. L2TP-LAC Subscriber TLV
+ 7.9.8. L2TP-LNS Subscriber TLV
+ 7.9.9. L2TP-LAC Tunnel TLV
+ 7.9.10. L2TP-LNS Tunnel TLV
+ 7.9.11. Update Response TLV
+ 7.9.12. Subscriber Policy TLV
+ 7.9.13. Subscriber CGN Port Range TLV
+ 7.10. Device Status TLVs
+ 7.10.1. Interface Status TLV
+ 7.10.2. Board Status TLV
+ 7.11. CGN TLVs
+ 7.11.1. Address Allocation Request TLV
+ 7.11.2. Address Allocation Response TLV
+ 7.11.3. Address Renewal Request TLV
+ 7.11.4. Address Renewal Response TLV
+ 7.11.5. Address Release Request TLV
+ 7.11.6. Address Release Response TLV
+ 7.12. Event TLVs
+ 7.12.1. Subscriber Traffic Statistics TLV
+ 7.12.2. Subscriber Detection Result TLV
+ 7.13. Vendor TLV
+ 8. Tables of S-CUSP Codepoints
+ 8.1. Message Types
+ 8.2. TLV Types
+ 8.3. TLV Operation Codes
+ 8.4. Sub-TLV Types
+ 8.5. Error Codes
+ 8.6. If-Type Values
+ 8.7. Access-Mode Values
+ 8.8. Access Method Bits
+ 8.9. Route-Type Values
+ 8.10. Access-Type Values
+ 9. IANA Considerations
+ 10. Security Considerations
+ 11. References
+ 11.1. Normative References
+ 11.2. Informative References
+ Acknowledgements
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ A Broadband Network Gateway (BNG) in a fixed wireline access network
+ is an Ethernet-centric IP edge router and the aggregation point for
+ subscriber traffic. To provide centralized session management,
+ flexible address allocation, high scalability for subscriber
+ management capacity, and cost-efficient redundancy, the CU-separated
+ (CP/UP-separated) BNG framework is described in a technical report
+ [TR-384] from the Broadband Forum (BBF). The CU-separated service
+ CP, which is responsible for user access authentication and setting
+ forwarding entries in UPs, can be virtualized and centralized. The
+ routing control and forwarding plane, i.e., the BNG UP (local), can
+ be distributed across the infrastructure. Other structures can also
+ be supported, such as the CP and UP being virtual or both being
+ physical.
+
+ Note: In this document, the terms "user" and "subscriber" are used
+ interchangeably.
+
+ This document specifies the Simple CU Separation Protocol (S-CUSP)
+ for communications over the BNG control channel between a BNG CP and
+ a set of UPs. S-CUSP is designed to be flexible and extensible so as
+ to allow for easy addition of messages and data items, should further
+ requirements be expressed in the future.
+
+ This document is not an IETF standard and does not have IETF
+ consensus. S-CUSP was designed by China Mobile, Huawei Technologies,
+ and ZTE. It is presented here to make the S-CUSP specification
+ conveniently available to the Internet community to enable diagnosis
+ and interoperability.
+
+ At the time of writing this document, the BBF is working to produce
+ [WT-459], which will describe an architecture and requirements for a
+ CP and UP separation of a disaggregated BNG. Future work may attempt
+ to show how the protocol described in this document addresses those
+ requirements and may modify this specification to handle unaddressed
+ requirements.
+
+2. Terminology
+
+ This section specifies implementation requirement keywords and terms
+ used in this document. S-CUSP messages are described in this
+ document using Routing Backus-Naur Form (RBNF) as defined in
+ [RFC5511].
+
+2.1. Implementation Requirement Keywords
+
+ 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.2. Terms
+
+ This section specifies terms used in this document.
+
+ AAA: Authentication Authorization Accounting.
+
+ ACK: Acknowledgement message.
+
+ BAS: Broadband Access Server, also known as a BBRAS, BNG, or
+ BRAS.
+
+ BNG: Broadband Network Gateway. A BNG (or Broadband Remote
+ Access Server (BRAS)) routes traffic to and from
+ broadband remote access devices such as digital
+ subscriber line access multiplexers (DSLAM) on an
+ Internet Service Provider's (ISP) network. BNG / BRAS
+ can also be referred to as a BAS or BBRAS.
+
+ BRAS: Broadband Remote Access Server, also known as a BAS,
+ BBRAS, or BNG.
+
+ CAR: Committed Access Rate.
+
+ CBS: Committed Burst Size.
+
+ CGN: Carrier Grade NAT.
+
+ Ci: Control Interface.
+
+ CIR: Committed Information Rate.
+
+ CoA: Change of Authorization.
+
+ CP: Control Plane. CP is a user control management
+ component that supports the management of the UP's
+ resources such as the user entry and forwarding policy.
+
+ CU: Control Plane / User Plane.
+
+ CUSP: Control and User Plane Separation Protocol.
+
+ DEI: Drop Eligibility Indicator as defined in [802.1Q]. A
+ bit in a VLAN tag after the priority and before the VLAN
+ ID. (This bit was formerly the CFI (Canonical Format
+ Indicator).)
+
+ DHCP: Dynamic Host Configuration Protocol [RFC2131].
+
+ dial-up: This refers to the initial connection messages when a
+ new subscriber appears. The name is left over from when
+ subscribers literally dialed up on a modem-equipped
+ phone line but herein is applied to other initial
+ connection techniques. Initial connection is frequently
+ indicated by the receipt of packets over PPPoE [RFC2516]
+ or IPoE.
+
+ EMS: Element Management System.
+
+ IPoE: IP over Ethernet.
+
+ L2TP: Layer 2 Tunneling Protocol [RFC2661].
+
+ LAC: L2TP Access Concentrator.
+
+ LNS: L2TP Network Server.
+
+ MAC: 48-bit Media Access Control address [RFC7042].
+
+ MANO: Management and Orchestration.
+
+ Mi: Management Interface.
+
+ MSS: Maximum Segment Size.
+
+ MRU: Maximum Receive Unit.
+
+ NAT: Network Address Translation [RFC3022].
+
+ ND: Neighbor Discovery.
+
+ NFV: Network Function Virtualization.
+
+ NFVI: NFV Infrastructure.
+
+ PBS: Peak Burst Size.
+
+ PD: Prefix Delegation.
+
+ PIR: Peak Information Rate.
+
+ PPP: Point-to-Point Protocol [RFC1661].
+
+ PPPoE: PPP over Ethernet [RFC2516].
+
+ RBNF: Routing Backus-Naur Form [RFC5511].
+
+ RG: Residential Gateway.
+
+ S-CUSP: Simple Control and User Plane Separation Protocol.
+
+ Subscriber: The remote user gaining network accesses via a BNG.
+
+ Si: Service Interface.
+
+ TLV: Type-Length-Value. See Sections 7.1 and 7.3.
+
+ UP: User Plane. UP is a network edge and user policy
+ implementation component. The traditional router's
+ control plane and forwarding plane are both preserved on
+ BNG devices in the form of a user plane.
+
+ URPF: Unicast Reverse Path Forwarding.
+
+ User: Equivalent to "customer" or "subscriber".
+
+ VRF: Virtual Routing and Forwarding.
+
+3. BNG CUPS Overview
+
+3.1. BNG CUPS Motivation
+
+ The rapid development of new services, such as 4K TV, Internet of
+ Things (IoT), etc., and increasing numbers of home broadband service
+ users present some new challenges for BNGs such as:
+
+ Low resource utilization: The traditional BNG acts as both a gateway
+ for user access authentication and accounting and also an IP
+ network's Layer 3 edge. The mutually affecting nature of the
+ tightly coupled control plane and forwarding plane makes it
+ difficult to achieve the maximum performance of either plane.
+
+ Complex management and maintenance: Due to the large numbers of
+ traditional BNGs, configuring each device in a network is very
+ tedious when deploying global service policies. As the network
+ expands and new services are introduced, this deployment mode will
+ cease to be feasible as it is unable to manage services
+ effectively and to rectify faults rapidly.
+
+ Slow service provisioning: The coupling of the CP and the forwarding
+ plane, in addition to being a distributed network control
+ mechanism, means that any new technology has to rely heavily on
+ the existing network devices.
+
+ The framework for a cloud-based BNG with CU separation to address
+ these challenges for fixed networks is described in [TR-384]. The
+ main idea of CU separation is to extract and centralize the user
+ management functions of multiple BNG devices, forming a unified and
+ centralized CP. The traditional router's CP and forwarding plane are
+ both preserved on BNG devices in the form of a UP.
+
+3.2. BNG CUPS Architecture Overview
+
+ The functions in a traditional BNG can be divided into two parts: (1)
+ the user access management function and (2) the routing function.
+ The user access management function can be deployed as a centralized
+ module or device, called the BNG Control Plane (BNG-CP). The routing
+ function, which includes routing control and the forwarding engine,
+ can be deployed in the form of the BNG User Plane (BNG-UP).
+
+ Figure 1 shows the architecture of a CU-separated BNG:
+
+ +------------------------------------------------------------------+
+ | Neighboring policy and resource management systems |
+ | |
+ | +-------------+ +-----------+ +---------+ +----------+ |
+ | | AAA Server | |DHCP Server| | EMS | | MANO | |
+ | +-------------+ +-----------+ +---------+ +----------+ |
+ +------------------------------------------------------------------+
+
+ +------------------------------------------------------------------+
+ | CU-separated BNG system |
+ | +--------------------------------------------------------------+ |
+ | | +----------+ +----------+ +------++------++-----------+ | |
+ | | | Address | |Subscriber| | AAA ||Access|| UP | | |
+ | | |management| |management| | || mgt ||management | | |
+ | | +----------+ +----------+ +------++------++-----------+ | |
+ | | CP | |
+ | +--------------------------------------------------------------+ |
+ | |
+ | |
+ | |
+ | +---------------------------+ +--------------------------+ |
+ | | +------------------+ | | +------------------+ | |
+ | | | Routing control | | | | Routing control | | |
+ | | +------------------+ | ... | +------------------+ | |
+ | | +------------------+ | | +------------------+ | |
+ | | |Forwarding engine | | | |Forwarding engine | | |
+ | | +------------------+ UP | | +------------------+ UP| |
+ | +---------------------------+ +--------------------------+ |
+ +------------------------------------------------------------------+
+
+ Figure 1: Architecture of a CU-Separated BNG
+
+ As shown in Figure 1, the BNG-CP could be virtualized and
+ centralized, which provides benefits such as centralized session
+ management, flexible address allocation, high scalability for
+ subscriber management capacity, cost-efficient redundancy, etc. The
+ functional components inside the BNG-CP can be implemented as Virtual
+ Network Functions (VNFs) and hosted in an NFVI.
+
+ The UP management module in the BNG-CP centrally manages the
+ distributed BNG-UPs (e.g., load balancing), as well as the setup,
+ deletion, and maintenance of channels between CPs and UPs. Other
+ modules in the BNG-CP, such as address management, AAA, etc., are
+ responsible for the connection with external subsystems in order to
+ fulfill those services. Note that the UP SHOULD support both
+ physical and virtual network functions. For example, network
+ functions related to BNG-UP L3 forwarding can be disaggregated and
+ distributed across the physical infrastructure, and the other CP
+ management functions in the CU-separated BNG can be moved into the
+ NFVI for virtualization [TR-384].
+
+ The details of the CU-separated BNG's function components are as
+ follows:
+
+ The CP is responsible for the following:
+
+ * Address management: Unified address pool management and CGN
+ subscriber address traceability management.
+
+ * AAA: This component performs Authentication, Authorization, and
+ Accounting, together with RADIUS/Diameter. The BNG communicates
+ with the AAA server to check whether the subscriber who sent an
+ access request has network access authority. Once the subscriber
+ goes online, this component (together with the Service Control
+ component) implements accounting, data capacity limitation, and
+ QoS enforcement policies.
+
+ * Subscriber management: User entry management and forwarding policy
+ management.
+
+ * Access management: Process user dial-up packets, such as PPPoE,
+ DHCP, L2TP, etc.
+
+ * UP management: Management of UP interface status and the setup,
+ deletion, and maintenance of channels between CP and UP.
+
+ The UP is responsible for the following:
+
+ * Routing control functions: Responsible for instantiating routing
+ forwarding plane (e.g., routing, multicast, MPLS, etc.).
+
+ * Routing and service forwarding plane functions: Responsibilities
+ include traffic forwarding, QoS, and traffic statistics
+ collection.
+
+ * Subscriber detection: Responsible for detecting whether a
+ subscriber is still online.
+
+3.3. BNG CUPS Interfaces
+
+ The three interfaces defined below support the communication between
+ the CP and UP. These are referred to as the Service Interface (Si),
+ Control Interface (Ci), and Management Interface (Mi) as shown in
+ Figure 2.
+
+ +-----------------------------------+
+ | |
+ | BNG-CP |
+ | |
+ +--+--------------+--------------+--+
+ | | |
+ 1. Service | 2. Control | 3. Management|
+ Interface | Interface | Interface |
+ (Si) | (Ci) | (Mi) |
+ | | |
+ | ___|___ |
+ | ___( )___ |
+ _|______( )______|_
+ ( )
+ ( Network/Internet )
+ (________ ________)
+ | (___ ___) |
+ | (_______) |
+ | | |
+ | | |
+ +--+--------------+--------------+--+
+ | |
+ | BNG-UP |
+ | |
+ +-----------------------------------+
+
+ Figure 2: Interfaces between the CP and UP of the BNG
+
+3.3.1. Service Interface (Si)
+
+ For a traditional BNG (without CU separation), the user dial-up
+ signals are terminated and processed by the CP of a BNG. When the CP
+ and UP of a BNG are separated, there needs to be a way to relay these
+ signals between the CP and the UP.
+
+ The Si is used to establish tunnels between the CP and UP. The
+ tunnels are responsible for relaying the PPPoE-, IPoE-, and L2TP-
+ related control packets that are received from a Residential Gateway
+ (RG) over those tunnels. An appropriate tunnel type is Virtual
+ eXtensible Local Area Network (VXLAN) [RFC7348].
+
+ The detailed definition of Si is out of scope for this document.
+
+3.3.2. Control Interface (Ci)
+
+ The CP uses the Ci to deliver subscriber session states, network
+ routing entries, etc., to the UP (see Section 6.2.7). The UP uses
+ this interface to report subscriber service statistics, subscriber
+ detection results, etc., to the CP (see Sections 6.3 and 6.4). A
+ carrying protocol for this interface is specified in this document.
+
+3.3.3. Management Interface (Mi)
+
+ The Network Configuration Protocol (NETCONF) [RFC6241] is the
+ protocol used on the Mi between a CP and UP. It is used to configure
+ the parameters of the Ci, Si, access interfaces, and QoS/ACL
+ Templates. It is expected that implementations will make use of
+ existing YANG models where possible but that new YANG models specific
+ to S-CUSP will need to be defined. The definitions of the parameters
+ that can be configured are out of scope for this document.
+
+3.4. BNG CUPS Procedure Overview
+
+ The following numbered sequences (Figure 3) give a high-level view of
+ the main BNG CUPS procedures.
+
+ RG UP CP AAA
+ | |Establish S-CUSP Channel| |
+ | 1|<---------------------->| |
+ | | | |
+ | | Report board interface | |
+ | | information | |
+ | 2|------to CP via Ci----->| |
+ | | | |
+ | | Update BAS function | |
+ | 3| request/response | |
+ | |<-----on UP via Ci----->| |
+ | | | |
+ | | Update network routing | |
+ | | request/response | |
+ | 4|<------- via Ci-------->| |
+ | Online Req | | |
+ 5.1|-------------->| | |
+ | | Relay the Online Req | |
+ | 5.2|-----to CP via Si------>| Authentication|
+ | | | Req/Rep |
+ | | 5.3|<------------->|
+ | | Send the Online Rep | |
+ | 5.4|<----to UP via Si-------| |
+ | | | |
+ | | Create subscriber | |
+ | | session on UP | |
+ | 5.5|<--------via Ci-------->| |
+ | Online Rep | | |
+ 5.6|<--------------| | |
+ | | | CoA Request |
+ | | 6.1|<--------------|
+ | | Update session on UP | |
+ | 6.2|<--------via Ci-------->| |
+ | | | CoA Response |
+ | Offline Req | 6.3|-------------->|
+ 7.1|-------------->| | |
+ | | Relay the Offline Req | |
+ | 7.2|------to CP via Si----->| |
+ | | | |
+ | | Send the Offline Rep | |
+ | 7.3|<-----to UP via Si------| |
+ | Offline Rep | | |
+ 7.4|<--------------| | |
+ | | Delete session on UP | |
+ | 7.5|<--------via Ci-------->| |
+ | | | |
+ | | Event report | |
+ | 8|---------via Ci-------->| |
+ | | | |
+ | | Data synchronization | |
+ | 9|<--------via Ci-------->| |
+ | | | |
+ | | CGN address allocation | |
+ | 10|<--------via Ci-------->| |
+ | | | |
+
+ Figure 3: BNG CUPS Procedures Overview
+
+ (1) S-CUSP session establishment: This is the first step of the BNG
+ CUPS procedures. Once the Ci parameters are configured on a
+ UP, it will start to set up S-CUSP sessions with the specified
+ CPs. The detailed definition of S-CUSP session establishment
+ can be found in Section 4.1.1.
+
+ (2) Board and interface report: Once the S-CUSP session is
+ established between the UP and a CP, the UP will report status
+ information on the boards and subscriber-facing interfaces of
+ this UP to the CP. A board can also be called a Line/Service
+ Process Unit (LPU/SPU) card. The subscriber-facing interfaces
+ refer to the interfaces that connect the access network nodes
+ (e.g., Optical Line Terminal (OLT), DSLAM, etc.). The CP can
+ use this information to enable the Broadband Access Server
+ (BAS) function (e.g., IPoE, PPPoE, etc.) on the specified
+ interfaces. See Sections 4.2.1 and 7.10 for more details on
+ resource reporting.
+
+ (3) BAS function enable: To enable the BAS function on the
+ specified interfaces of a UP.
+
+ (4) Subscriber network route advertisement: The CP will allocate
+ one or more IP address blocks to a UP. Each address block
+ contains a series of IP addresses. Those IP addresses will be
+ allocated to subscribers who are dialing up from the UP. To
+ enable other nodes in the network to learn how to reach the
+ subscribers, the CP needs to notify the UP to advertise to the
+ network the routes that can reach those IP addresses.
+
+ (5) 5.1-5.6 is a complete call flow of a subscriber dial-up (as
+ defined in Section 4.3.1) process. When a UP receives a dial-
+ up request, it will relay the request packet to a CP through
+ the Si. The CP will parse the request. If everything is OK,
+ it will send an authentication request to the AAA server to
+ authenticate the subscriber. Once the subscriber passes the
+ authentication, the AAA server will return a positive response
+ to the CP. Then the CP will send the dial-up response packet
+ to the UP, and the UP will forward the response packet to the
+ subscriber (RG). At the same time, the CP will create a
+ subscriber session on the UP, enabling the subscriber to access
+ the network. For different access types, the process may be a
+ bit different, but the high-level process is similar. For each
+ access type, the detailed process can be found in Section 5.
+
+ (6) 6.1-6.3 is the sequence when updating an existing subscriber
+ session. The AAA server initiates a Change of Authorization
+ (CoA) and sends the CoA to the CP. The CP will then update the
+ session according to the CoA. See Section 4.3.2 for more
+ detail on CP messages updating UP tables.
+
+ (7) 7.1-7.5 is the sequence for deleting an existing subscriber
+ session. When a UP receives an Offline Request, it will relay
+ the request to a CP through the Si. The CP will send back a
+ response to the UP through the Si. The UP will then forward
+ the Offline Response to the subscriber. Then the CP will
+ delete the session on the UP through the Ci.
+
+ (8) Event reports include the following two parts (more detail can
+ be found in Section 4.3.4). Both are reported using the Event
+ message:
+
+ 8.1. Subscriber Traffic Statistics Report
+
+ 8.2. Subscriber Detection Result Report
+
+ (9) Data synchronization: See Section 4.2.5 for more detail on CP
+ and UP synchronization.
+
+ (10) CGN address allocation: See Section 4.2.4 for more detail on
+ CGN address allocation.
+
+4. S-CUSP Protocol Overview
+
+4.1. Control Channel Procedures
+
+4.1.1. S-CUSP Session Establishment
+
+ A UP is associated with a CP and is controlled by that CP. In the
+ case of a hot-standby or cold-standby, a UP is associated with two
+ CPs: the master CP and standby CP. The association between a UP and
+ its CPs is implemented by dynamic configuration.
+
+ Once a UP knows its CPs, the UP starts to establish S-CUSP sessions
+ with those CPs, as shown in Figure 4.
+
+ UP CP
+ | TCP Session Establishment |
+ |<------------------------------->|
+ | |
+ | Hello (version, capability) |
+ |-------------------------------->|
+ | |
+ | Hello (version, capability) |
+ |<--------------------------------|
+ | |
+
+ Figure 4: S-CUSP Session Establishment
+
+ The S-CUSP session establishment consists of two successive steps:
+
+ (1) Establishment of a TCP connection (3-way handshake) [RFC793]
+ between the CP and the UP using a configured port from the
+ dynamic port range (49152-65535).
+
+ (2) Establishment of an S-CUSP session over the TCP connection.
+
+ Once the TCP connection is established, the CP and the UP initialize
+ the S-CUSP session, during which the version and Keepalive timers are
+ negotiated.
+
+ The version information (Hello TLV, see Section 7.4) is carried
+ within Hello messages (see Section 6.2.1). A CP can support multiple
+ versions, but a UP can only support one version; thus the version
+ negotiation is based on whether a version can be supported by both
+ the CP and the UP. If a CP or UP receives a Hello message that does
+ not indicate a version supported by both, it responds with a Hello
+ message containing an Error Information TLV to notify the peer of the
+ Version-Mismatch error, and the session establishment phase fails.
+
+ Keepalive negotiation is performed by carrying a Keepalive TLV in the
+ Hello message. The Keepalive TLV includes a Keepalive timer and
+ DeadTimer field. The CP and UP have to agree on the Keepalive Timer
+ and DeadTimer. Otherwise, a subsequent Hello message with an Error
+ Information TLV will be sent to its peer, and the session
+ establishment phase fails.
+
+ The S-CUSP session establishment phase fails if the CP or UP disagree
+ on the version and keepalive parameters or if one of the CP or UP
+ does not answer after the expiration of the Establishment timer.
+ When the S-CUSP session establishment fails, the TCP connection is
+ promptly closed. Successive retries are permitted, but an
+ implementation SHOULD make use of an exponential backoff session
+ establishment retry procedure.
+
+ The S-CUSP session timer values that need to be configured are
+ summarized in Table 1.
+
+ +---------------------+------------------+---------------+
+ | Timer Name | Range in Seconds | Default Value |
+ +=====================+==================+===============+
+ | Establishment Timer | 1-32767 | 45 |
+ +---------------------+------------------+---------------+
+ | Keepalive Timer | 0-255 | 30 |
+ +---------------------+------------------+---------------+
+ | DeadTimer | 1-32767 | 4 * Keepalive |
+ +---------------------+------------------+---------------+
+
+ Table 1: S-CUSP Session Timers
+
+4.1.2. Keepalive Timer and DeadTimer
+
+ Once an S-CUSP session has been established, a UP or CP may want to
+ know that its S-CUSP peer is still connected.
+
+ Each end of an S-CUSP session runs a Keepalive timer. It restarts
+ the timer every time it sends a message on the session. When the
+ timer expires, it sends a Keepalive message. Thus, a message is
+ transmitted at least as often as the value to which the Keepalive
+ timer is reset, unless, as explained below, that value is the special
+ value zero.
+
+ Each end of an S-CUSP session also runs a DeadTimer and restarts that
+ DeadTimer whenever a message is received on the session. If the
+ DeadTimer expires at an end of the session, that end declares the
+ session dead and the session will be closed, unless their DeadTimer
+ is set to the special value zero, in which case the session will not
+ time out.
+
+ The minimum value of the Keepalive timer is 1 second, and it is
+ specified in units of 1 second. The RECOMMENDED default value is 30
+ seconds. The recommended default for the DeadTimer is four times the
+ value of the Keepalive timer used by the remote peer. As above, the
+ timers may be disabled by setting them to zero.
+
+ The Keepalive timer and DeadTimer are negotiated through the
+ Keepalive TLV carried in the Hello message.
+
+4.2. Node Procedures
+
+4.2.1. UP Resource Report
+
+ Once an S-CUSP session has been established between a CP and a UP,
+ the UP reports the state information of the boards and access-facing
+ interfaces on the UP to the CP, as shown in Figure 5. Report
+ messages are unacknowledged and are assumed to be delivered because
+ the session runs over TCP.
+
+ The CP can use that information to activate/enable the BAS functions
+ (e.g., IPoE, PPPoE, etc.) on the specified interfaces.
+
+ In addition, the UP resource report may trigger a UP warm-standby
+ process. In the case of warm-standby, a failure on a UP may trigger
+ the CP to start a warm-standby process, by moving the online
+ subscriber sessions to a standby UP and then directing the affected
+ subscribers to access the Internet through the standby UP.
+
+ UP CP
+ | Report Board Status |
+ |------to CP via Ci----->|
+ | |
+ | Report Interface Status|
+ |------to CP via Ci----->|
+ | |
+
+ Figure 5: UP Board and Interface Report
+
+ Board status information is carried in the Board Status TLV
+ (Section 7.10.2), and interface status information is carried in the
+ Interface Status TLV (Section 7.10.1). Both Board Status and
+ Interface Status TLVs are carried in the Report message
+ (Section 6.4).
+
+4.2.2. Update BAS Function on Access Interface
+
+ Once the CP collects the interface status of a UP, it will
+ activate/deactivate/modify the BAS functions on specified interfaces
+ through the Update_Request and Update_Response message exchanges
+ (Section 6.2), carrying the BAS Function TLV (Section 7.7).
+
+ UP CP
+ | Update BAS Function |
+ | Request |
+ |<-----on UP via Ci-------|
+ | |
+ | Update BAS Function |
+ | Response |
+ |------on UP via Ci------>|
+ | |
+
+ Figure 6: Update BAS Function
+
+4.2.3. Update Network Routing
+
+ The CP will allocate one or more address blocks to a UP. Each
+ address block contains a series of IP addresses. Those IP addresses
+ will be assigned to subscribers who are dialing up to the UP. To
+ enable the other nodes in the network to learn how to reach the
+ subscribers, the CP needs to install the routes on the UP and notify
+ the UP to advertise the routes to the network.
+
+ UP CP
+ | Subscriber network route|
+ | update request |
+ |<------- via Ci----------|
+ | |
+ | Subscriber network route|
+ | update response |
+ |-------- via Ci--------->|
+ | |
+
+ Figure 7: Update Network Routing
+
+ The Update_Request and Update_Response message exchanges, carrying
+ the IPv4/IPv6 Routing TLVs (Section 7.8), update the subscriber's
+ network routing information.
+
+4.2.4. CGN Public IP Address Allocation
+
+ The following sequences (Figure 8) describe the procedures related to
+ CGN address management. Three independent procedures are defined:
+ one each for CGN address allocation request/response, CGN address
+ renewal request/response, and CGN address release request/response.
+
+ CGN address allocation/renew/release procedures are designed for the
+ case where the CGN function is running on the UP. The UP has to map
+ the subscriber private IP addresses to public IP addresses, and such
+ mapping is performed by the UP locally when a subscriber dials up.
+ That means the UP has to ask for public IPv4 address blocks for CGN
+ subscribers from the CP.
+
+ In addition, when a public IP address is allocated to a UP, there
+ will be a lease time (e.g., one day). Before the lease time expires,
+ the UP can ask for renewal of the IP address lease from the CP. It
+ is achieved by the exchange of the Addr_Renew_Req and Addr_Renew_Ack
+ messages.
+
+ If the public IP address will not be used anymore, the UP SHOULD
+ release the address by sending an Addr_Release_Req message to the CP.
+
+ If the CP wishes to withdraw addresses that it has previously leased
+ to a UP, it uses the same procedures as above. The Oper code (see
+ Section 7.1) in the IPv4/IPv6 Routing TLV (see Section 7.8)
+ determines whether the request is an update or withdraw.
+
+ The relevant messages are defined in Section 6.5.
+
+ UP CP
+ | CGN Address Allocation |
+ | Request |
+ 1.1|-------- via Ci--------->|
+ | CGN Address Allocation |
+ | Response |
+ 1.2|<------- via Ci----------|
+ | |
+ | CGN Address Renew |
+ | Request |
+ 2.1|-------- via Ci--------->|
+ | CGN Address Renew |
+ | Response |
+ 2.2|<------- via Ci----------|
+ | |
+ | CGN Address Release |
+ | Request |
+ 3.1|-------- via Ci--------->|
+ | CGN Address Release |
+ | Response |
+ 3.3|<------- via Ci----------|
+ | |
+
+ Figure 8: CGN Public IP Address Allocation
+
+4.2.5. Data Synchronization between the CP and UP
+
+ For a CU-separated BNG, the UP will continue to function using the
+ state that has been installed in it even if the CP fails or the
+ session between the UP and CP fails.
+
+ Under some circumstances, it is necessary to synchronize state
+ between the CP and UP, for example, if a CP fails and the UP is
+ switched to a different CP.
+
+ Synchronization includes two directions. One direction is from UP to
+ CP; in that case, the synchronization information is mainly about the
+ board/interface status of the UP. The other direction is from CP to
+ UP; in that case, the subscriber sessions, subscriber network routes,
+ L2TP tunnels, etc., will be synchronized to the UP.
+
+ The synchronization is triggered by a Sync_Request message, to which
+ the receiver will (1) reply with a Sync_Begin message to notify the
+ requester that synchronization will begin and (2) then start the
+ synchronization using the Sync_Data message. When synchronization
+ finishes, a Sync_End message will be sent.
+
+ Figure 9 shows the process of data synchronization between a UP and a
+ CP.
+
+ UP CP
+ | Synchronization Request |
+ |<------- via Ci----------|
+ | |
+ | Synchronization Begin |
+ |-------- via Ci--------->|
+ | |
+ | Board/Interface Report |
+ |-------- via Ci--------->|
+ | |
+ | Synchronization End |
+ |-------- via Ci--------->|
+ | |
+ 1) Synchronization from UP to CP
+
+ UP CP
+ | Synchronization Request |
+ |-------- via Ci--------->|
+ | |
+ | Synchronization Begin |
+ |<-------- via Ci---------|
+ | |
+ | Synchronizes |
+ |Subscriber Session States|
+ | Network Route Entries |
+ |<------- via Ci----------|
+ | |
+ | Synchronization End |
+ |<-------- via Ci---------|
+ | |
+ 2) Synchronization from CP to UP
+
+ Figure 9: Data Synchronization
+
+4.3. Subscriber Session Procedures
+
+ A subscriber session consists of a set of forwarding states,
+ policies, and security rules that are applied to the subscriber. It
+ is used for forwarding subscriber traffic in a UP. To initialize a
+ session on a UP, a collection of hardware resources (e.g., NP, TCAM,
+ etc.) has to be allocated to a session on a UP as part of its
+ initiation.
+
+ Procedures related to subscriber sessions include subscriber session
+ creation, update, deletion, and statistics reporting. The following
+ subsections give a high-level view of the procedures.
+
+4.3.1. Create Subscriber Session
+
+ The sequence below (Figure 10) describes the DHCP IPv4 dial-up
+ process. It is an example that shows how a subscriber session is
+ created. (An example for IPv6 appears in Section 5.1.2.)
+
+ RG UP CP AAA
+ | Online Request| | |
+ 1|-------------->| | |
+ | |Relay the Online Request| |
+ | 2|-----to CP via Si------>| Authentication|
+ | | | Req/Rep |
+ | | 3|<------------->|
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 4|<--------via Ci---------| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 5|---------via Ci-------->| |
+ | | | Accounting |
+ | | 6|<------------->|
+ | | Send Online Response | |
+ | 7|<----to UP via Si-------| |
+ | | | |
+ |Online Response| | |
+ 8|<--------------| | |
+ | | | |
+
+ Figure 10: Creating a Subscriber Session
+
+ The request starts from an Online Request message (step 1) from the
+ RG (for example, a DHCP Discovery packet). When the UP receives the
+ Online Request from the RG, it will tunnel the Online Request to the
+ CP through the Si (step 2). A tunneling technology implements the
+ Si.
+
+ When the CP receives the Online Request from the UP, it will send an
+ authentication request to the AAA server to authenticate and
+ authorize the subscriber (step 3). When a positive reply is received
+ from the AAA server, the CP starts to create a subscriber session for
+ the request. Relevant resources (e.g., IP address, bandwidth, etc.)
+ will be allocated to the subscriber. Policies and security rules
+ will be generated for the subscriber. Then the CP sends a request to
+ create a session to the UP through the Ci (step 4), and a response is
+ expected from the UP to confirm the creation (step 5).
+
+ Finally, the CP will notify the AAA server to start accounting (step
+ 6). At the same time, an Online Response message (for example, a
+ DHCP Ack packet) will be sent to the UP through the Si (step 7). The
+ UP will then forward the Online Response to the RG (step 8).
+
+ That completes the subscriber activation process.
+
+4.3.2. Update Subscriber Session
+
+ The following numbered sequence (Figure 11) shows the process of
+ updating the subscriber session.
+
+ UP CP AAA
+ | | CoA Request |
+ | 1|<--------------|
+ | Session Update Request | |
+ 2|<--------via Ci---------| |
+ | | |
+ | Session Update Response| |
+ 3|---------via Ci-------->| |
+ | | CoA Response |
+ | 4|-------------->|
+ | | |
+
+ Figure 11: Updating a Subscriber Session
+
+ When a subscriber session has been created on a UP, there may be
+ requirements to update the session with new parameters (e.g.,
+ bandwidth, QoS, policies, etc.).
+
+ This procedure is triggered by a Change of Authorization (CoA)
+ request message sent by the AAA server. The CP will update the
+ session on the UP according to the new parameters through the Ci.
+
+4.3.3. Delete Subscriber Session
+
+ The call flow below shows how S-CUSP deals with a subscriber Offline
+ Request.
+
+ RG UP CP
+ |Offline Request | |
+ 1|--------------->| |
+ | | Relay the Offline |
+ | | Request |
+ | 2|------to CP via Si----->|
+ | | |
+ | | Send the Offline |
+ | | Response |
+ | 3|<-----to UP via Si------|
+ |Offline Response| |
+ 4|<---------------| |
+ | | Session Delete |
+ | | Request |
+ | |<--------via Ci---------|
+ | | Session Delete |
+ | | Response |
+ | |---------via Ci-------->|
+ | | |
+
+ Figure 12: Deleting a Subscriber Session
+
+ Similar to the session creation process, when a UP receives an
+ Offline Request from an RG, it will tunnel the request to a CP
+ through the Si.
+
+ When the CP receives the Offline Request, it will withdraw/release
+ the resources (e.g., IP address, bandwidth) that have been allocated
+ to the subscriber. It then sends a reply to the UP through the Si,
+ and the UP will forward the reply to the RG. At the same time, it
+ will delete all the status of the session on the UP through the Ci.
+
+4.3.4. Subscriber Session Events Report
+
+ UP CP
+ | Statistic/Detect Report|
+ |---------via Ci-------->|
+ | |
+
+ Figure 13: Events Report
+
+ When a session is created on a UP, the UP will periodically report
+ statistics information and subscriber detection results of the
+ session to the CP.
+
+5. S-CUSP Call Flows
+
+ The subsections below give an overview of various "dial-up"
+ interactions over the Si followed by an overview of the setting of
+ information in the UP by the CP using S-CUSP over the Ci.
+
+ S-CUSP messages are described in this document using Routing Backus
+ Naur Form (RBNF) as defined in [RFC5511].
+
+5.1. IPoE
+
+5.1.1. DHCPv4 Access
+
+ The following sequence (Figure 14) shows detailed procedures for
+ DHCPv4 access.
+
+ RG UP CP AAA
+ | DHCP Discovery| | |
+ 1|-------------->| | |
+ | |Relay the DHCP Discovery| |
+ | 2|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 3|<------------->|
+ | | Send the DHCP Offer | |
+ | 4|<----to UP via Si-------| |
+ | DHCP Offer | | |
+ 5|<--------------| | |
+ | DHCP Request | | |
+ 6|-------------->| | |
+ | | Relay the DHCP Request | |
+ | 7|-----to CP via Si------>| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 8|<--------via Ci---------| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 9|---------via Ci-------->| |
+ | | | Accounting |
+ | | 10|<------------->|
+ | | Send DHCP ACK | |
+ | 11|<----to UP via Si-------| |
+ | | | |
+ | DHCP ACK | | |
+ 12|<--------------| | |
+ | | | |
+
+ Figure 14: DHCPv4 Access
+
+ S-CUSP implements steps 8 and 9.
+
+ After a subscriber is authenticated and authorized by the AAA server,
+ the CP creates a new subscriber session on the UP. This is achieved
+ by sending an Update_Request message to the UP.
+
+ The format of the Update_Request message is shown as follows using
+ RBNF:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ The UP will reply with an Update_Response message. The format of the
+ Update_Response message is as follows:
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+5.1.2. DHCPv6 Access
+
+ The following sequence (Figure 15) shows detailed procedures for
+ DHCPv6 access.
+
+ RG UP CP AAA
+ | Solicit | | |
+ 1|-------------->| | |
+ | | Relay the Solicit | |
+ | 2|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 3|<------------->|
+ | | Send the Advertise | |
+ | 4|<----to UP via Si-------| |
+ | Advertise | | |
+ 5|<--------------| | |
+ | | | |
+ | Request | | |
+ 6|-------------->| | |
+ | | Relay the Request | |
+ | 7|-----to CP via Si------>| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 8|<--------via Ci-------->| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 9|---------via Ci-------->| |
+ | | | Accounting |
+ | | 10|<------------->|
+ | | Send Reply | |
+ | 11|<----to UP via Si-------| |
+ | Reply | | |
+ 12|<--------------| | |
+ | | | |
+
+ Figure 15: DHCPv6 Access
+
+ Steps 1-7 are a standard DHCP IPv6 access process. The subscriber
+ creation is triggered by a DHCP IPv6 request message. When this
+ message is received, it means that the subscriber has passed the AAA
+ authentication and authorization. Then the CP will create a
+ subscriber session on the UP. This is achieved by sending an
+ Update_Request message to the UP (step 8).
+
+ The format of the Update_Request message is as follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ The UP will reply with an Update_Response message (step 9). The
+ format of the Update_Response message is as follows:
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.1.3. IPv6 Stateless Address Autoconfiguration (SLAAC) Access
+
+ The following flow (Figure 16) shows the IPv6 SLAAC access process.
+
+ RG UP CP AAA
+ | RS | | |
+ 1|-------------->| | |
+ | | Relay the Router | |
+ | | Solicit (RS) | |
+ | 2|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 3|<------------->|
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 4|<--------via Ci---------| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 5|---------via Ci-------->| |
+ | | | |
+ | | Send Router Advertise | |
+ | | (RA) | |
+ | 6|<----to UP via Si-------| |
+ | RA | | |
+ 7|<--------------| | |
+ | | | |
+ | NS | | |
+ 8|-------------->| | |
+ | | Relay the Neighbor | |
+ | | Solicit (NS) | |
+ | 9|-----to CP via Si------>| |
+ | | | Accounting |
+ | | 10|<------------->|
+ | | Send a Neighbor | |
+ | | Advertise (NA) | |
+ | 11|<----to UP via Si-------| |
+ | NA | | |
+ 12|<--------------| | |
+ | | | |
+
+ Figure 16: IPv6 SLAAC Access
+
+ It starts with a Router Solicit (RS) request from an RG that is
+ tunneled to the CP by the UP. After the AAA authentication and
+ authorization, the CP will create a subscriber session on the UP.
+
+ This is achieved by sending an Update_Request message to the UP (step
+ 4).
+
+ The format of the Update_Request message is as follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ The UP will reply with an Update_Response message (step 5). The
+ format of the Update_Response message is as follows:
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.1.4. DHCPv6 and SLAAC Access
+
+ The following call flow (Figure 17) shows the DHCP IPv6 and SLAAC
+ access process.
+
+ RG UP CP AAA
+ | RS | | |
+ 1|-------------->| | |
+ | | Relay the RS | |
+ | 2|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 3|<------------->|
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 4|<--------via Ci---------| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 5|---------via Ci-------->| |
+ | | | |
+ | | Send RA | |
+ | 6|<----to UP via Si-------| |
+ | RA | | |
+ 7|<--------------| | |
+ | | | |
+ |DHCPv6 Solicit | | |
+ 8|-------------->| | |
+ | | Relay DHCPv6 Solicit | |
+ | 9|-----to CP via Si------>| |
+ | | | |
+ | | Update Subscriber | |
+ | | Session Request | |
+ | 10|<--------via Ci---------| |
+ | | | |
+ | | Update Subscriber | |
+ | | Session Response | |
+ | 11|---------via Ci-------->| |
+ | | | Accounting |
+ | | 12|<------------->|
+ | | Send DHCPv6 Reply | |
+ | 13|<----to UP via Si-------| |
+ | | | |
+ | DHCPv6 Reply | | |
+ 14|<--------------| | |
+ | | | |
+
+ Figure 17: DHCPv6 and SLAAC Access
+
+ When a subscriber passes AAA authentication, the CP will create a
+ subscriber session on the UP. This is achieved by sending an
+ Update_Request message to the UP (step 4).
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ The UP will reply with an Update_Response message (step 5). The
+ format of the Update_Response is as follows:
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ After receiving a DHCPv6 Solicit, the CP will update the subscriber
+ session by sending an Update_Request message with new parameters to
+ the UP (step 10).
+
+ The format of the Update_Request message is as follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ The UP will reply with an Update_Response message (step 11). The
+ format of the Update_Response is as follows:
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.1.5. DHCP Dual-Stack Access
+
+ The following sequence (Figure 18) is a combination of DHCP IPv4 and
+ DHCP IPv6 access processes.
+
+ RG UP CP AAA
+ | DHCP Discovery| | |
+ 1|-------------->| | |
+ | |Relay the DHCP Discovery| |
+ | 2|-----to CP via Si------>| AAA |
+ | | | Req/Resp |
+ | | 3|<------------->|
+ | | Send the DHCP Offer | |
+ | 4|<----to UP via Si-------| |
+ | DHCP Offer | | |
+ 5|<--------------| | |
+ | DHCP Request | | |
+ 6|-------------->| | |
+ | | Relay the DHCP Request| |
+ | 7|-----to CP via Si------>| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 8|<--------via Ci-------->| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 9|---------via Ci-------->| |
+ | | | Accounting |
+ | | 10|<------------->|
+ | | Send DHCP ACK | |
+ | 11|<----to UP via Si-------| |
+ | DHCP ACK | | |
+ 12|<--------------| | |
+ | RS | | |
+ 13|-------------->| | |
+ | | Relay the RS | |
+ | 14|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 15|<------------->|
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 16|<--------via Ci---------| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 17|---------via Ci-------->| |
+ | | | |
+ | | Send the RA | |
+ | 18|<----to UP via Si-------| |
+ | RA | | |
+ 19|<--------------| | |
+ |DHCPv6 Solicit | | |
+ 20|-------------->| | |
+ | | Relay DHCPv6 Solicit | |
+ | 21|-----to CP via Si------>| |
+ | | | |
+ | | Update Subscriber | |
+ | | Session Request | |
+ | 22|<--------via Ci---------| |
+ | | Update Subscriber | |
+ | | Session Response | |
+ | 23|---------via Ci-------->| |
+ | | | Accounting |
+ | | 24|<------------->|
+ | | Send DHCPv6 Reply | |
+ | 25|<----to UP via Si-------| |
+ | DHCPv6 Reply | | |
+ 26|<--------------| | |
+ | | | |
+
+ Figure 18: DHCP Dual-Stack Access
+
+ The DHCP dual-stack access includes three sets of Update_Request/
+ Update_Response exchanges to create/update a DHCPv4/v6 subscriber
+ session.
+
+ (1) Create a DHCPv4 session (steps 8 and 9):
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ (2) Create a DHCPv6 session (steps 16 and 17):
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ (3) Update DHCPv6 session (steps 22 and 23):
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.1.6. L2 Static Subscriber Access
+
+ L2 static subscriber access processes are as follows:
+
+ RG UP CP AAA
+ | | Static Subscriber | |
+ | | Detection Req. | |
+ | 1|<-----to UP via Ci------| |
+ | | Static Subscriber | |
+ | | Detection Rep. | |
+ | 2|------to UP via Ci----->| |
+ | ARP/ND(REQ) | | |
+ 3.1|<--------------| | |
+ | ARP/ND(ACK) | | |
+ 3.2|-------------->| | |
+ | | Relay the ARP/ND | |
+ | 3.3|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 3.4|<------------->|
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 3.5|<--------via Ci---------| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 3.6|---------via Ci-------->| |
+ | ARP/ND(REQ) | | |
+ 4.1|-------------->| | |
+ | | Relay the ARP/ND | |
+ | 4.2|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 4.3|<------------->|
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 4.4|<--------via Ci---------| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 4.5|---------via Ci-------->| |
+ | ARP/ND(ACK) | | |
+ 4.6|<--------------| | |
+ | IP Traffic | | |
+ 5.1|-------------->| | |
+ | | Relay the IP Traffic | |
+ | 5.2|-----to CP via Si------>| AAA |
+ | | | Req/Rep |
+ | | 5.3|<------------->|
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 5.4|<--------via Ci-------->| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 5.5|---------via Ci-------->| |
+ | ARP/ND(REQ) | | |
+ 5.6|<--------------| | |
+ | ARP/ND(ACK) | | |
+ 5.7|-------------->| | |
+ | | | |
+
+ Figure 19: L2 Static Subscriber Access
+
+ For L2 static subscriber access, the process starts with a CP
+ installing a static subscriber detection list on a UP. The list
+ determines which subscribers will be detected. That is implemented
+ by exchanging Update_Request and Update_Response messages between CP
+ and UP. The formats of the messages are as follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <IPv4 Static Subscriber Detect TLVs>
+ <IPv6 Static Subscriber Detect TLVs>
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ For L2 static subscriber access, there are three ways to trigger the
+ access process:
+
+ (1) Triggered by UP (steps 3.1-3.6): This assumes that the UP knows
+ the IP address, the access interface, and the VLAN of the RG.
+ The UP will actively trigger the access flow by sending an ARP/
+ ND packet to the RG. If the RG is online, it will reply with an
+ ARP/ND to the UP. The UP will tunnel the ARP/ND to the CP
+ through the Si. The CP then triggers the authentication
+ process. If the authentication result is positive, the CP will
+ create a corresponding subscriber session on the UP.
+
+ (2) Triggered by RG ARP/ND (steps 4.1-4.6): Most of the process is
+ the same as option 1 (triggered by UP). The difference is that
+ the RG will actively send the ARP/ND to trigger the process.
+
+ (3) Triggered by RG IP traffic (steps 5.1-5.7): This is for the case
+ where the RG has the ARP/ND information, but the subscriber
+ session on the UP is lost (e.g., due to failure on the UP or the
+ UP restarting). That means the RG may keep sending IP packets
+ to the UP. The packets will trigger the UP to start a new
+ access process.
+
+ From a subscriber session point of view, the procedures and the
+ message formats for the three cases above are the same, as follows.
+
+ IPv4 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ IPv6 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.2. PPPoE
+
+5.2.1. IPv4 PPPoE Access
+
+ Figure 20 shows the IPv4 PPPoE access call flow.
+
+ RG UP CP AAA
+ | PPPoE Disc | PPPoE Disc | |
+ 1|<------------->|<---------via Si------->| |
+ | | | |
+ | PPP LCP | PPP LCP | |
+ 2|<------------->|<---------via Si------->| |
+ | | | AAA |
+ | PPP PAP/CHAP | PPP PAP/CHAP | Req/Rep |
+ 3|<------------->|<---------via Si------->|<------------->|
+ | | | |
+ | PPP IPCP | PPP IPCP | |
+ 4|<------------->|<---------via Si------->| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 5|<--------via Ci---------| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 6|---------via Ci-------->| |
+ | | | Accounting |
+ | | 7|<------------->|
+ | | | |
+
+ Figure 20: IPv4 PPPoE Access
+
+ In the above sequence, steps 1-4 are the standard PPPoE call flow.
+ The UP is responsible for redirecting the PPPoE control packets to
+ the CP or RG. The PPPoE control packets are transmitted between the
+ CP and UP through the Si.
+
+ After the PPPoE call flow, if the subscriber passed the AAA
+ authentication and authorization, the CP will create a corresponding
+ session on the UP through the Ci. The formats of the messages are as
+ follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+5.2.2. IPv6 PPPoE Access
+
+ Figure 21 describes the IPv6 PPPoE access call flow.
+
+ RG UP CP AAA
+ | PPPoE Disc | PPPoE Disc | |
+ 1|<------------->|<--------via Si-------->| |
+ | | | |
+ | PPP LCP | PPP LCP | |
+ 2|<------------->|<---------via Si------->| |
+ | | | AAA |
+ | PPP PAP/CHAP | PPP PAP/CHAP | Req/Rep |
+ 3|<------------->|<---------via Si------->|<------------->|
+ | | | |
+ | PPP IP6CP | PPP IP6CP | |
+ 4|<------------->|<---------via Si------->| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 5|<--------via Ci---------| |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | 6|---------via Ci-------->| |
+ | | | |
+ | ND Negotiation| ND Negotiation | |
+ 7|<------------->|<---------via Si------->| |
+ | | | |
+ | | Update Subscriber | |
+ | | Session Request | |
+ | 8|<--------via Ci---------| |
+ | | Update Subscriber | |
+ | | Session Response | |
+ | 9|---------via Ci-------->| |
+ | | | Accounting |
+ | | 10|<------------->|
+ | DHCPv6 | DHCPv6 | |
+ | Negotiation | Negotiation | |
+ 7'|<------------->|<---------via Si------->| |
+ | | | |
+ | | Update Subscriber | |
+ | | Session Request | |
+ | 8'|<---------via Ci--------| |
+ | | Update Subscriber | |
+ | | Session Response | |
+ | 9'|---------via Ci-------->| |
+ | | | Accounting |
+ | | 10'|<------------->|
+ | | | |
+
+ Figure 21: IPv6 PPPoE Access
+
+ From the above sequence, steps 1-4 are the standard PPPoE call flow.
+ The UP is responsible for redirecting the PPPoE control packets to
+ the CP or RG. The PPPoE control packets are transmitted between the
+ CP and UP through the Si.
+
+ After the PPPoE call flow, if the subscriber passed the AAA
+ authentication and authorization, the CP will create a corresponding
+ session on the UP through the Ci. The formats of the messages are as
+ follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ Then, the RG will initialize an ND/DHCPv6 negotiation process with
+ the CP (see steps 7 and 7'); after that, it will trigger an update
+ (steps 8-9 and 8'-9') to the subscriber session. The formats of the
+ update messages are as follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.2.3. PPPoE Dual-Stack Access
+
+ Figure 22 shows a combination of IPv4 and IPv6 PPPoE access call
+ flows.
+
+ RG UP CP AAA
+ |PPPoE Discovery| PPPoE Discovery | |
+ 1|<------------->|<---------via Si------->| |
+ | | | |
+ | PPP LCP | PPP LCP | |
+ 2|<------------->|<---------via Si------->| |
+ | | | AAA |
+ | PPP PAP/CHAP | PPP PAP/CHAP | Req/Rep |
+ 3|<------------->|<---------via Si------->|<------------->|
+ | | | |
+ | PPP IPCP | PPP IPCP | |
+ 4|<------------->|<---------via Si------->| |
+ | | | |
+ | | Create v4 Subscriber | |
+ | | Session Request | |
+ | 5|<--------via Ci---------| |
+ | | Create v4 Subscriber | |
+ | | Session Response | |
+ | 6|---------via Ci-------->| |
+ | | | Accounting |
+ | | 7|<------------->|
+ | PPP IP6CP | PPP IP6CP | |
+ 4'|<------------->|<---------via Si------->| |
+ | | | |
+ | | Create V6 Subscriber | |
+ | | Session Request | |
+ | 5'|<--------via Ci---------| |
+ | | Create v6 Subscriber | |
+ | | Session Response | |
+ | 6'|---------via Ci-------->| |
+ | | | |
+ | ND Negotiation| ND Negotiation | |
+ 8|<------------->|<---------via Si------->| |
+ | | | |
+ | | Update v6 Subscriber | |
+ | | Session Request | |
+ | 9|<---------via Ci--------| |
+ | | Update v6 Subscriber | |
+ | | Session Response | |
+ | 10|---------via Ci-------->| |
+ | | | Accounting |
+ | | 7'|<------------->|
+ | DHCPv6 | DHCPv6 | |
+ | Negotiation | Negotiation | |
+ 8'|<------------->|<---------via Si------->| |
+ | | | |
+ | | Update v6 Subscriber | |
+ | | Session Request | |
+ | 9'|<--------via Ci---------| |
+ | | Update v6 Subscriber | |
+ | | Session Response | |
+ | 10'|---------via Ci-------->| |
+ | | | Accounting |
+ | | 7"|<------------->|
+ | | | |
+
+ Figure 22: PPPoE Dual-Stack Access
+
+ PPPoE dual stack is a combination of IPv4 PPPoE and IPv6 PPPoE
+ access. The process is as above. The formats of the messages are as
+ follows:
+
+ (1) Create an IPv4 PPPoE subscriber session (steps 5-6):
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ (2) Create an IPv6 PPPoE subscriber session (steps 5'-6'):
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ (3) Update the IPv6 PPPoE subscriber session (steps 9-10 and 9'-
+ 10'):
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.3. WLAN Access
+
+ Figure 23 shows the WLAN access call flow.
+
+ RG UP CP AAA Web Server
+ | DHCP | | | |
+ | Discovery | | | |
+ 1|------------>| | | |
+ | | DHCP Discovery | | |
+ | 2|-----via Si---->| AAA | |
+ | | DHCP Offer |<-------->| |
+ | 3|<----via Si-----| | |
+ | DHCP Offer | | | |
+ 4|<------------| | | |
+ | DHCP Request| | | |
+ 5|------------>| | | |
+ | | DHCP Request | | |
+ | 6|-----via Si---->| | |
+ | | | | |
+ | | Create Session | | |
+ | | Request | | |
+ | 7|<----via Ci-----| | |
+ | | Create Session | | |
+ | | Response | | |
+ | 8|----via Ci----->| | |
+ | | | | |
+ | | DHCP ACK | | |
+ | 9|<----via Si-----| | |
+ | DHCP ACK | | | |
+ 10|<------------| | | |
+ | | | | |
+ | Subscriber | | | |
+ | HTTP Traffic| | | |
+ 11|------------>|--> | | |
+ | | | Web URL | | |
+ | Traffic | | Redirect | | |
+ | Redirection | | | | |
+ 12|<------------|<-+ | | |
+ | |
+ 13|-----------------Redirect to Web Server------------->|
+ | |
+ 14|<----------------Push HTTP Log-in Page---------------|
+ | |
+ 15|-----------------User Authentication---------------->|
+ | |
+ | | | Portal Interchange |
+ | | 16|<-------------------->|
+ | | | |
+ | | | AAA | |
+ | | | Req/Rep | |
+ | | 17|<-------->| |
+ | | | | |
+ | | Update Session | | |
+ | | Request | | |
+ | 18|<----via Ci-----| | |
+ | | Update Session | | |
+ | | Response | | |
+ | 19|-----via Ci---->| | |
+ | | | | |
+
+ Figure 23: WLAN Access
+
+ WLAN access starts with the DHCP dial-up process (steps 1-6). After
+ that, the CP will create a subscriber session on the UP (steps 7-8).
+ The formats of the session creation messages are as follows:
+
+ IPv4 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ IPv6 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ After step 10, the RG will be allocated an IP address, and its first
+ HTTP packet will be redirected to a web server for subscriber
+ authentication (steps 11-17). After the web authentication, if the
+ result is positive, the CP will update the subscriber session by
+ using the following message exchanges:
+
+ IPv4 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ IPv6 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.4. L2TP
+
+5.4.1. L2TP LAC Access
+
+ RG UP(LAC) CP(LAC) AAA LNS
+ | PPPoE | PPPoE | | |
+ | Discovery | Discovery | | |
+ 1|<---------->|<---via Si--->| | |
+ | | | | |
+ | PPP LCP | PPP LCP | | |
+ 2|<---------->|<---via Si--->| | |
+ | | | AAA | |
+ |PPP PAP/CHAP| PPP PAP/CHAP | Req/Rep| |
+ 3|<---------->|<---via Si--->|<------>| |
+ | | | | |
+ | PPP IPCP | PPP IPCP | | |
+ 4|<---------->|<---via Si--->| | |
+ | | | | |
+ | | L2TP Tunnel | | |
+ | | Negotiation | | |
+ | | SCCRQ/ | | |
+ | | SCCRP/ | | |
+ | | SCCCN | | |
+ | 5|<---via Si--->| | |
+ | | /\ |
+ | | || Forward |
+ | | \/ |
+ | |<-----------via Routing---------->|
+ | | |
+ | | L2TP Session | | |
+ | | Negotiation | | |
+ | | ICRQ/ | | |
+ | | ICRP/ | | |
+ | | ICCN | | |
+ | 6|<---via Si--->| | |
+ | | /\ |
+ | | || Forward |
+ | | \/ |
+ | |<-----------via Routing---------->|
+ | | |
+ | | Create | | |
+ | | Subscriber | | |
+ | | Session Req | | |
+ | 7|<---via Ci----| | |
+ | | Create | | |
+ | | Subscriber | | |
+ | | Session Rep | | |
+ | 8|----via Ci--->| | |
+ | | | | |
+ | |
+ | PAP/CHAP (Triggered by LNS) |
+ 9|<-----------------via Routing----------------->|
+ | |
+
+ Figure 24: L2TP LAC Access
+
+ Steps 1-4 are a standard PPPoE access process. After that, the LAC-
+ CP starts to negotiate an L2TP session and tunnel with the LNS.
+ After the negotiation, the CP will create an L2TP LAC subscriber
+ session on the UP through the following messages:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <L2TP-LAC Subscriber TLV>
+ <L2TP-LAC Tunnel TLV>
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.4.2. L2TP LNS IPv4 Access
+
+ RG LAC UP(LNS) AAA CP(LNS)
+ | PPPoE | | | |
+ | Discovery | | | |
+ 1|<---------->| | | |
+ | | | | |
+ | PPP LCP | | | |
+ 2|<---------->| | |
+ | | AAA | |
+ |PPP PAP/CHAP| Req/Rep | |
+ 3|<---------->|<--------------------->| |
+ | | |
+ | | L2TP Tunnel | L2TP Tunnel |
+ | | Negotiation | Negotiation |
+ | | SCCRQ/ | SCCRQ/ |
+ | | SCCRP/ | SCCRP/ |
+ | | SCCCN | SCCCN |
+ | 4|<------------>|<------via Si----->|
+ | | | |
+ | | L2TP Session | L2TP Session |
+ | | Negotiation | Negotiation |
+ | | ICRQ/ | ICRQ/ |
+ | | ICRP/ | ICRP/ |
+ | | ICCN | ICCN |
+ | 5|<------------>|<------via Si----->|
+ | | | |
+ | | | Create Subscriber |
+ | | | Session Request |
+ | | 6|<-----via Ci-------|
+ | | | Create Subscriber |
+ | | | Session Response |
+ | | 7|------via Ci------>|
+ | |
+ | PAP/CHAP (Triggered by LNS) |
+ 8|<--------------------------------------------->|
+ | |
+ | | | | AAA |
+ | | | | Req/Rep |
+ | | | 9|<-------->|
+ | | | |
+ | |
+ | PPP IPCP |
+ 10|<--------------------------------------------->|
+ | |
+ | | | Update Subscriber |
+ | | | Session Request |
+ | | 11|<-----via Ci-------|
+ | | | Update Subscriber |
+ | | | Session Response |
+ | | 12|------via Ci------>|
+ | | | |
+
+ Figure 25: L2TP LNS IPv4 Access
+
+ In this case, the BNG is running as an LNS and separated into LNS-CP
+ and LNS-UP. Steps 1-5 finish the normal L2TP dial-up process. When
+ the L2TP session and tunnel negotiations are finished, the LNS-CP
+ will create an L2TP LNS subscriber session on the LNS-UP. The format
+ of the messages is as follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <L2TP-LNS Subscriber TLV>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ <L2TP-LNS Tunnel TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ After that, the LNS-CP will trigger a AAA authentication. If the
+ authentication result is positive, a PPP IP Control Protocol (IPCP)
+ process will follow, and then the CP will update the session with the
+ following message exchanges:
+
+ <Update_Request Message> ::= <Common Header>
+ <L2TP-LNS Subscriber TLV>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ <L2TP-LNS Tunnel TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+5.4.3. L2TP LNS IPv6 Access
+
+ RG LAC UP(LNS) AAA CP(LNS)
+ | PPPoE | | | |
+ | Discovery | | | |
+ 1|<---------->| | | |
+ | | | | |
+ | PPP LCP | | | |
+ 2|<---------->| | |
+ | | AAA | |
+ |PPP PAP/CHAP| Req/Rep | |
+ 3|<---------->|<--------------------->| |
+ | | |
+ | | L2TP Tunnel | L2TP Tunnel |
+ | | Negotiation | Negotiation |
+ | | SCCRQ/ | SCCRQ/ |
+ | | SCCRP/ | SCCRP/ |
+ | | SCCCN | SCCCN |
+ | 4|<------------>|<------via Si----->|
+ | | | |
+ | | L2TP Session | L2TP Session |
+ | | Negotiation | Negotiation |
+ | | ICRQ/ | ICRQ/ |
+ | | ICRP/ | ICRP/ |
+ | | ICCN | ICCN |
+ | 5|<------------>|<------via Si----->|
+ | | | |
+ | | | Create Subscriber |
+ | | | Session Request |
+ | | 6|<-----via Ci-------|
+ | | | Create Subscriber |
+ | | | Session Response |
+ | | 7|------via Ci------>|
+ | |
+ | PAP/CHAP (Triggered by LNS) |
+ 8|<--------------------------------------------->|
+ | |
+ | | | | AAA |
+ | | | | Req/Rep |
+ | | | 9|<-------->|
+ | | | | |
+ | |
+ | PPP IP6CP |
+ 10|<--------------------------------------------->|
+ | |
+ | | | Update Subscriber |
+ | | | Session Request |
+ | | 11|<-----via Ci-------|
+ | | | Update Subscriber |
+ | | | Session Response |
+ | | 12|------via Ci------>|
+ | | |
+ | ND Negotiation | ND Negotiation |
+ 13|<------------------------->|<-----via Si------>|
+ | | |
+ | | | Update Subscriber |
+ | | | Session Request |
+ | | 14|<-----via Ci-------|
+ | | | Update Subscriber |
+ | | | Session Response |
+ | | 15|------via Ci------>|
+ | | | |
+
+ Figure 26: L2TP LNS IPv6 Access
+
+ Steps 1-12 are the same as L2TP LNS IPv4 access. Steps 1-5 finish
+ the normal L2TP dial-up process. When the L2TP session and tunnel
+ negotiations are finished, the LNS-CP will create an L2TP LNS
+ subscriber session on the LNS-UP. The format of the messages is as
+ follows:
+
+ <Update_Request Message> ::= <Common Header>
+ <L2TP-LNS Subscriber TLV>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ <L2TP-LNS Tunnel TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ After that, the LNS-CP will trigger a AAA authentication. If the
+ authentication result is positive, a PPP IP6CP process will follow,
+ and then the CP will update the session with the following message
+ exchanges:
+
+ <Update_Request Message> ::= <Common Header>
+ <L2TP-LNS Subscriber TLV>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ <L2TP-LNS Tunnel TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ Then, an ND negotiation will be triggered by the RG. After the ND
+ negotiation, the CP will update the session with the following
+ message exchanges:
+
+ <Update_Request Message> ::= <Common Header>
+ <L2TP-LAC Subscriber TLV>
+ <Basic Subscriber TLV>
+ <PPP Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ <L2TP-LNS Tunnel TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.5. CGN (Carrier Grade NAT)
+
+ RG UP CP AAA
+ | | Public Address Block | |
+ | | Allocation Request | |
+ | 1|<--------via Ci-------->| |
+ | | Public Address Block | |
+ | | Allocation Reply | |
+ | 2|---------via Ci-------->| |
+ | Subscriber | | |
+ | Access Request| Subscriber | |
+ 3|-------------->| Access Request | |
+ | 4|----------via Si------->| |
+ | | | AAA |
+ | | Subscriber | Req/Rep |
+ | Subscriber | Access Reply 5|<------------->|
+ | Access Reply 6|<---------via Si--------| |
+ 7|<--------------| | |
+ | | Create Subscriber | |
+ | | Session Request | |
+ | 8|<--------via Ci---------| |
+ | | | |
+ | | Create Subscriber | |
+ | | Session Response | |
+ | | (with NAT information) | |
+ | 9|---------via Ci-------->| |
+ | | | Accounting |
+ | | | with source |
+ | | | information |
+ | | 10|<------------->|
+ | | | Public IP + |
+ | | | Port Range |
+ | | | to Private IP|
+ | | | Mapping |
+ | | | |
+
+ Figure 27: CGN Access
+
+ The first steps allocate one or more CGN address blocks to the UP
+ (steps 1-2). This is achieved by the following message exchanges
+ between CP and UP:
+
+ <Addr_Allocation_Req Message> ::= <Common Header>
+ <Address Allocation Request TLV>
+
+ <Addr_Allocation_Ack Message> ::= <Common Header>
+ <Address Allocation Response TLV>
+
+ Steps 3-9 show the general dial-up process in the case of CGN mode.
+ The specific processes (e.g., IPoE, PPPoE, L2TP, etc.) are defined in
+ above sections.
+
+ If a subscriber is a CGN subscriber, once the subscriber session is
+ created/updated, the UP will report the NAT information to the CP.
+ This is achieved by carrying the Subscriber CGN Port Range TLV in the
+ Update_Response message.
+
+5.6. L3 Leased Line Access
+
+5.6.1. Web Authentication
+
+ RG UP CP AAA Web Server
+ | User traffic| | | |
+ 1|------------>| | | |
+ | | User traffic | | |
+ | 2|-----via Si---->| AAA | |
+ | | | Req/Rep | |
+ | | 3|<-------->| |
+ | | Create Session | | |
+ | | Request | | |
+ | 4|<----via Ci-----| | |
+ | | Create Session | | |
+ | | Response | | |
+ | 5|----via Ci----->| | |
+ | | | | |
+ | HTTP traffic| | | |
+ 6|------------>| | | |
+ | | | | |
+ | Redirect to | | | |
+ | Web URL | | | |
+ 7|<------------| | | |
+ | | | | |
+ | |
+ 8|-----------------Redirected to Web Server----------->|
+ | |
+ 9|<----------------Push HTTP Log-in Page---------------|
+ | |
+ 10|-----------------User Authentication---------------->|
+ | |
+ | | | Portal Interchange |
+ | | 11|<-------------------->|
+ | | | |
+ | | | AAA | |
+ | | | Req/Rep | |
+ | | 12|<-------->| |
+ | | | | |
+ | | Update Session | | |
+ | | Request | | |
+ | 13|<----via Ci-----| | |
+ | | Update Session | | |
+ | | Response | | |
+ | 14|----via Ci----->| | |
+ | | | | |
+
+ Figure 28: Web Authentication-Based L3 Leased Line Access
+
+ In this case, IP traffic from the RG will trigger the CP to
+ authenticate the RG by checking the source IP and the exchanges with
+ the AAA server. Once the RG has passed the authentication, the CP
+ will create a corresponding subscriber session on the UP through the
+ following message exchanges:
+
+ IPv4 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ IPv6 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+ Then, the HTTP traffic from the RG will be redirected to a web server
+ to finish the web authentication. Once the web authentication is
+ passed, the CP will trigger another AAA authentication. After the
+ AAA authentication, the CP will update the session with the following
+ message exchanges:
+
+ IPv4 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ IPv6 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.6.2. User Traffic Trigger
+
+ RG UP CP AAA
+ | | L3 access | |
+ | | control list | |
+ | 1|<----via Ci-----| |
+ | User | | |
+ | traffic | | |
+ 2|------------>| | |
+ | | User traffic | |
+ | 3|-----via Si---->| |
+ | | | AAA |
+ | | | Req/Rep |
+ | | 4|<-------->|
+ | | | |
+ | | Create Session | |
+ | | Request | |
+ | 5|<----via Ci-----| |
+ | | Create Session | |
+ | | Response | |
+ | 6|----via Ci----->| |
+ | | | |
+
+ Figure 29: User Traffic Triggered L3 Leased Line Access
+
+ In this case, the CP must install on the UP an access control list,
+ which is used by the UP to determine whether or not an RG is legal.
+ If the traffic is from a legal RG, it will be redirected to the CP
+ though the Si. The CP will trigger a AAA interchange with the AAA
+ server. After that, the CP will create a corresponding subscriber
+ session on the UP with the following message exchanges:
+
+ IPv4 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ IPv6 Case:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ [<Subscriber Policy TLV>]
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+5.7. Multicast Service Access
+
+ RG UP CP AAA
+ | User Access | User Access | AAA |
+ | Request | Request | Req/Rep |
+ 1|<----------->|<----via Si---->|<-------->|
+ | | | |
+ | | Create Session | |
+ | | Request | |
+ | 2|<----via Ci---->| |
+ | | | |
+ | | Create Session | |
+ | | Response | |
+ | 3|----via Ci----->| |
+ | | | |
+ | Multicast | | |
+ | negotiation | | |
+ 4|<----------->| | |
+ | | | |
+
+ Figure 30: Multicast Access
+
+ Multicast access starts with a user access request from the RG. The
+ request will be redirected to the CP by the Si. A follow-up AAA
+ interchange between the CP and the AAA server will be triggered.
+ After the authentication, the CP will create a multicast subscriber
+ session on the UP through the following messages:
+
+ IPv4 Case, there will be a Multicast-ProfileV4 sub-TLV present in the
+ Subscriber Policy TLV:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv4 Subscriber TLV>
+ <IPv4 Routing TLV>
+ <Subscriber Policy TLV>
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+ [<Subscriber CGN Port Range TLV>]
+
+ IPv6 Case, there will be a Multicast-ProfileV6 sub-TLV present in the
+ Subscriber Policy TLV:
+
+ <Update_Request Message> ::= <Common Header>
+ <Basic Subscriber TLV>
+ <IPv6 Subscriber TLV>
+ <IPv6 Routing TLV>
+ <Subscriber Policy TLV>
+
+ <Update_Response Message> ::= <Common Header>
+ <Update Response TLV>
+
+6. S-CUSP Message Formats
+
+ An S-CUSP message consists of a common header followed by a variable-
+ length body consisting entirely of TLVs. Receiving an S-CUSP message
+ with an unknown message type or missing mandatory TLV MUST trigger an
+ Error message (see Section 6.7) or a Response message with an Error
+ Information TLV (see Section 7.6).
+
+ Conversely, if a TLV is optional, the TLV may or may not be present.
+ Optional TLVs are indicated in the message formats shown in this
+ document by being enclosed in square brackets.
+
+ This section specifies the format of the common S-CUSP message header
+ and lists the defined messages.
+
+ Network byte order is used for all multi-byte fields.
+
+6.1. Common Message Header
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ver | Resv | Message-Type | Message-Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Reserved | Transaction-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 31: S-CUSP Message Common Header
+
+ Ver (4 bits): The major version of the protocol. This document
+ specifies version 1. Different major versions of the protocol may
+ have significantly different message structures and formats except
+ that the Ver field will always be in the same place at the
+ beginning of each message. A successful S-CUSP session depends on
+ the CP and the UP both using the same major version of the
+ protocol.
+
+ Resv (4 bits): Reserved. MUST be sent as zero and ignored on
+ receipt.
+
+ Message-Type (8 bits): The set of message types specified in this
+ document is listed in Section 8.1.
+
+ Message-Length (16 bits): Total length of the S-CUSP message
+ including the common header, expressed in number of bytes as an
+ unsigned integer.
+
+ Transaction-ID (16 bits): This field is used to identify requests.
+ It is echoed back in any corresponding ACK/Response/Error message.
+ It is RECOMMENDED that a monotonically increasing value be used in
+ successive messages and that the value wraps back to zero after
+ 0xFFFF. The content of this field is an opaque value that the
+ receiver MUST NOT use for any purpose except to echo back in a
+ corresponding response and, optionally, for logging.
+
+6.2. Control Messages
+
+ This document defines the following control messages:
+
+ +------+-----------------+------------------------------------+
+ | Type | Name | Notes and TLVs that can be carried |
+ +======+=================+====================================+
+ | 1 | Hello | Hello TLV, Keepalive TLV |
+ +------+-----------------+------------------------------------+
+ | 2 | Keepalive | A common header with the Keepalive |
+ | | | message type |
+ +------+-----------------+------------------------------------+
+ | 3 | Sync_Request | Synchronization request |
+ +------+-----------------+------------------------------------+
+ | 4 | Sync_Begin | Synchronization starts |
+ +------+-----------------+------------------------------------+
+ | 5 | Sync_Data | Synchronization data: TLVs |
+ | | | specified in Section 7 |
+ +------+-----------------+------------------------------------+
+ | 6 | Sync_End | End synchronization |
+ +------+-----------------+------------------------------------+
+ | 7 | Update_Request | TLVs specified in Sections 7.6-7.9 |
+ +------+-----------------+------------------------------------+
+ | 8 | Update_Response | TLVs specified in Sections 7.6-7.9 |
+ +------+-----------------+------------------------------------+
+
+ Table 2: Control Messages
+
+6.2.1. Hello Message
+
+ The Hello message is used for S-CUSP session establishment and
+ version negotiation. The details of S-CUSP session establishment and
+ version negotiation can be found in Section 4.1.1.
+
+ The format of the Hello message is as follows:
+
+ <Hello Message> ::= <Common Header>
+ <Hello TLV>
+ <Keepalive TLV>
+ [<Error Information TLV>]
+
+ The return code and negotiation result will be carried in the Error
+ Information TLV. They are listed as follows:
+
+ 0: Success. Version negotiation success.
+
+ 1: Failure. Malformed message received.
+
+ 2: TLV-Unknown. One or more of the TLVs was not understood.
+
+ 1001: Version-Mismatch. The version negotiation fails. The S-CUSP
+ session establishment phase fails.
+
+ 1002: Keepalive Error. The keepalive negotiation fails. The S-CUSP
+ session establishment phase fails.
+
+ 1003: Timer Expires. The establishment timer expired. Session
+ establishment phase fails.
+
+6.2.2. Keepalive Message
+
+ Each end of an S-CUSP session periodically sends a Keepalive message.
+ It is used to detect whether the peer end is still alive. The
+ Keepalive procedures are defined in Section 4.1.2.
+
+ The format of the Keepalive message is as follows:
+
+ <Keepalive Message> ::= <Common Header>
+
+6.2.3. Sync_Request Message
+
+ The Sync_Request message is used to request synchronization from an
+ S-CUSP peer. Both CP and UP can request their peer to synchronize
+ data.
+
+ The format of the Sync_Request message is as follows:
+
+ <Sync_Request Message> ::= <Common Header>
+
+ A Sync_Request message may result in a Sync_Begin message from its
+ peer. The Sync_Begin message is defined in Section 6.2.4.
+
+6.2.4. Sync_Begin Message
+
+ The Sync_Begin message is a reply to a Sync_Request message. It is
+ used to notify the synchronization requester whether the
+ synchronization can be started.
+
+ The format of the Sync_Begin message is as follows:
+
+ <Sync_Begin Message> ::= <Common Header>
+ <Error Information TLV>
+
+ The return codes are carried in the Error Information TLV. The codes
+ are listed below:
+
+ 0: Success. Be ready to synchronize.
+
+ 1: Failure. Malformed message received.
+
+ 2: TLV-Unknown. One or more of the TLVs was not understood.
+
+ 2001: Synch-NoReady. The data to be synchronized is not ready.
+
+ 2002: Synch-Unsupport. The data synchronization is not supported.
+
+6.2.5. Sync_Data Message
+
+ The Sync_Data message is used to send data being synchronized between
+ the CP and UP. The Sync_Data message has the same function and
+ format as the Update_Request message. The difference is that there
+ is no ACK for a Sync_Data message. An error caused by the Sync_Data
+ message will result in a Sync_End message.
+
+ There are two scenarios:
+
+ * Synchronization from UP to CP: Synchronize the resource data to
+ CP.
+
+ <Sync_Data Message> ::= <Common Header>
+ [<Interface Status TLV>]
+ [<Board Status TLV>]
+
+ * Synchronization from CP to UP: Synchronize all subscriber sessions
+ to the UP. The Subscriber TLVs carried are those appearing in
+ Section 7.9. As for which TLVs should be carried, it depends on
+ the specific session data to be synchronized. The process is
+ equivalent to the creation of a particular session. Refer to
+ Section 5 to see more details.
+
+ <Sync_Data Message> ::= <Common Header>
+ [<IPv4 Routing TLV>]
+ [<IPv6 Routing TLV>]
+ [<Subscriber TLVs>]
+
+6.2.6. Sync_End Message
+
+ The Sync_End message is used to indicate the end of a synchronization
+ process. The format of a Sync_End message is as follows:
+
+ <Sync_End Message> ::= <Common Header>
+ <Error Information TLV>
+
+ The return/error codes are listed as follows:
+
+ 0: Success. Synchronization finished.
+
+ 1: Failure. Malformed message received.
+
+ 2: TLV-Unknown. One or more of the TLVs was not understood.
+
+6.2.7. Update_Request Message
+
+ The Update_Request message is a multipurpose message; it can be used
+ to create, update, and delete subscriber sessions on a UP.
+
+ For session operations, the specific operation is controlled by the
+ Oper field of the carried TLVs. As defined in Section 7.1, the Oper
+ field can be set to either Update or Delete when a TLV is carried in
+ an Update_Request message.
+
+ When the Oper field is set to Update, it means to create or update a
+ subscriber session. If the Oper field is set to Delete, it is a
+ request to delete a corresponding session.
+
+ The format of the Update_Request message is as follows:
+
+ <Update_Request Message> ::= <Common Header>
+ [<IPv4 Routing TLV>]
+ [<IPv6 Routing TLV>]
+ [<Subscriber TLVs>]
+
+ Where the Subscriber TLVs are those appearing in Section 7.9. Each
+ Update_Request message will result in an Update_Response message,
+ which is defined in Section 6.2.8.
+
+6.2.8. Update_Response Message
+
+ The Update_Response message is a response to an Update_Request
+ message. It is used to confirm the update request (or reject it in
+ the case of an error). The format of an Update_Response message is
+ as follows:
+
+ <Update_Response Message> ::= <Common Header>
+ [<Subscriber CGN Port Range TLV>]
+ <Error Information TLV>
+
+ The return/error codes are carried in the Error Information TLV.
+ They are listed as follows:
+
+ 0: Success.
+
+ 1: Failure. Malformed message received.
+
+ 2: TLV-Unknown. One or more of the TLVs was not understood.
+
+ 3001: Pool-Mismatch. The corresponding address pool cannot be
+ found.
+
+ 3002: Pool-Full. The address pool is fully allocated, and no
+ address segment is available.
+
+ 3003: Subnet-Mismatch. The address pool subnet cannot be found.
+
+ 3004: Subnet-Conflict. Subnets in the address pool have been
+ classified into other clients.
+
+ 4001: Update-Fail-No-Res. The forwarding table fails to be delivered
+ because the forwarding resources are insufficient.
+
+ 4002: QoS-Update-Success. The QoS policy takes effect.
+
+ 4003: QoS-Update-Sq-Fail. Failed to process the queue in the QoS
+ policy.
+
+ 4004: QoS-Update-CAR-Fail. Processing of the CAR in the QoS policy
+ fails.
+
+ 4005: Statistic-Fail-No-Res. Statistics processing failed due to
+ insufficient statistics resources.
+
+6.3. Event Message
+
+ The Event message is used to report subscriber session traffic
+ statistics and detection information. The format of the Event
+ message is as follows:
+
+ <Event Message> ::= <Common Header>
+ [<Subscriber Traffic Statistics Report TLV>]
+ [<Subscriber Detection Result Report TLV>]
+
+6.4. Report Message
+
+ The Report message is used to report board and interface status on a
+ UP. The format of the Report message is as follows:
+
+ <Report Message> ::= <Common Header>
+ [<Board Status TLVs>]
+ [<Interface Status TLVs>]
+
+6.5. CGN Messages
+
+ This document defines the following resource allocation messages:
+
+ +------+---------------------+-----------------------------+
+ | Type | Message Name | TLV that is carried |
+ +======+=====================+=============================+
+ | 200 | Addr_Allocation_Req | Address Allocation Request |
+ +------+---------------------+-----------------------------+
+ | 201 | Addr_Allocation_Ack | Address Allocation Response |
+ +------+---------------------+-----------------------------+
+ | 202 | Addr_Renew_Req | Address Renewal Request |
+ +------+---------------------+-----------------------------+
+ | 203 | Addr_Renew_Ack | Address Renewal Response |
+ +------+---------------------+-----------------------------+
+ | 204 | Addr_Release_Req | Address Release Request |
+ +------+---------------------+-----------------------------+
+ | 205 | Addr_Release_Ack | Address Release Response |
+ +------+---------------------+-----------------------------+
+
+ Table 3: Resource Allocation Messages
+
+6.5.1. Addr_Allocation_Req Message
+
+ The Addr_Allocation_Req message is used to request CGN address
+ allocation. The format of the Addr_Allocation_Req message is as
+ follows:
+
+ <Addr_Allocation_Req Message> ::= <Common Header>
+ <Address Allocation Request TLV>
+
+6.5.2. Addr_Allocation_Ack Message
+
+ The Addr_Allocation_Ack message is a response to an
+ Addr_Allocation_Req message. The format of the Addr_Allocation_Ack
+ message is as follows:
+
+ <Addr_Allocation_Ack Message> ::= <Common Header>
+ <Address Allocation Response TLV>
+
+6.5.3. Addr_Renew_Req Message
+
+ The Addr_Renew_Req message is used to request address renewal. The
+ format of the Addr_Renew_Req message is as follows:
+
+ <Addr_Renew_Req Message> ::= <Common Header>
+ <Address Renewal Request TLV>
+
+6.5.4. Addr_Renew_Ack Message
+
+ The Addr_Renew_Ack message is a response to an Addr_Renew_Req
+ message. The format of the Addr_Renew_Req message is as follows:
+
+ <Addr_Renew_Ack Message> ::= <Common Header>
+ <Address Renewal Response TLV>
+
+6.5.5. Addr_Release_Req Message
+
+ The Addr_Release_Req message is used to request address release. The
+ format of the Addr_Release_Req message is as follows:
+
+ <Addr_Release_Req Message> ::= <Common Header>
+ <Address Release Request TLV>
+
+6.5.6. Addr_Release_Ack Message
+
+ The Addr_Release_Ack message is a response to an Addr_Release_Req
+ message. The format of the Addr_Release_Ack message is as follows:
+
+ <Addr_Release_Ack Message> ::= <Common Header>
+ <Address Release Response TLV>
+
+6.6. Vendor Message
+
+ The Vendor message, in conjunction with the Vendor TLV and Vendor
+ sub-TLV, can be used by vendors to extend S-CUSP. The Message-Type
+ is 11. If the receiver does not recognize the message, an Error
+ message will be returned to the sender.
+
+ The format of the Vendor message is as follows:
+
+ <Vendor Message> ::= <Common Header>
+ <Vendor TLV>
+ [<any other TLVs as specified by the vendor>]
+
+6.7. Error Message
+
+ The Error message is defined to return some critical error
+ information to the sender. If a receiver does not support the type
+ of the received message, it MUST return an Error message to the
+ sender.
+
+ The format of the Error message is as below:
+
+ <Error Message> ::= <Common Header>
+ <Error Information TLV>
+
+7. S-CUSP TLVs and Sub-TLVs
+
+ This section specifies the following:
+
+ * The format of the TLVs that appear in S-CUSP messages,
+
+ * The format of the sub-TLVs that appear within the values of some
+ TLVs, and
+
+ * The format of some basic data fields that appear within TLVs or
+ sub-TLVs.
+
+ See Section 8 for a list of all defined TLVs and sub-TLVs.
+
+7.1. Common TLV Header
+
+ S-CUSP messages consist of the common header specified in Section 6.1
+ followed by TLVs formatted as specified in this section.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Oper | TLV-Type | TLV-Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Value ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 32: Common TLV Header
+
+ Oper (4 bits): For Message-Types that specify an operation on a data
+ set, the Oper field is interpreted as Update, Delete, or Reserved
+ as specified in Section 8.3. For all other Message-Types, the
+ Oper field MUST be sent as zero and ignored on receipt.
+
+ TLV-Type (12 bits): The type of a TLV. TLV-Type specifies the
+ interpretation and format of the Value field of the TLV. See
+ Section 8.2.
+
+ TLV-Length (2 bytes): The length of the Value portion of the TLV in
+ bytes as an unsigned integer.
+
+ Value (variable length): This is the portion of the TLV whose size
+ is given by TLV-Length. It consists of fields, frequently using
+ one of the basic data field types (see Section 7.2) and sub-TLVs
+ (see Section 7.3).
+
+7.2. Basic Data Fields
+
+ This section specifies the binary format of several standard basic
+ data fields that are used within other data structures in this
+ specification.
+
+ STRING: 0 to 255 octets. Will be encoded as a sub-TLV (see
+ Section 7.3) to provide the length. The use of this data type in
+ S-CUSP is to provide convenient labels for use by network
+ operators in configuring and debugging their networks and
+ interpreting S-CUSP messages. Subscribers will not normally see
+ these labels. They are normally interpreted as ASCII [RFC20].
+
+ MAC-Addr: 6 octets. Ethernet MAC address [RFC7042].
+
+ IPv4-Address: 8 octets. 4 octets of the IPv4 address value followed
+ by a 4-octet address mask in the format XXX.XXX.XXX.XXX.
+
+ IPv6-Address: 20 octets. 16 octets of the IPv6 address followed by a
+ 4-octet integer n in the range of 0 to 128, which gives the
+ address mask as the one's complement of 2**(128-n) - 1.
+
+ VLAN ID: 2 octets. As follows [802.1Q]:
+
+ 0 1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | PRI |D| VLAN-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ PRI: Priority. Default value 7.
+
+ D: Drop Eligibility Indicator (DEI). Default value 0.
+
+ VLAN-ID: Unsigned integer in the range 1-4094. (0 and 4095 are
+ not valid VLAN IDs [802.1Q].)
+
+7.3. Sub-TLV Format and Sub-TLVs
+
+ In some cases, the Value portion of a TLV, as specified in
+ Section 7.1, can contain one or more sub-TLVs formatted as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
+
+ Figure 33: Sub-TLV Header
+
+ Type (2 bytes): The type of a sub-TLV. The Type field specifies the
+ interpretation and format of the Value field of the TLV. Sub-TLV
+ type values have the same meaning regardless of the TLV type of
+ the TLV within which the sub-TLV occurs. See Section 8.4.
+
+ Length (2 bytes): The length of the Value portion of the sub-TLV in
+ bytes as an unsigned integer.
+
+ Value (variable length): This is the Value portion of the sub-TLV
+ whose size is given by Length.
+
+ The sub-TLVs currently specified are defined in the following
+ subsections.
+
+7.3.1. Name Sub-TLVs
+
+ This document defines the following name sub-TLVs that are used to
+ carry the name of the corresponding object. The length of each of
+ these sub-TLVs is variable from 1 to 255 octets. The value is of
+ type STRING padded with zero octets to a length in octets that is an
+ integer multiple of 4.
+
+ +------+---------------------+------------------------------------+
+ | Type | Sub-TLV Name | Meaning |
+ +======+=====================+====================================+
+ | 1 | VRF-Name | The name of a VRF |
+ +------+---------------------+------------------------------------+
+ | 2 | Ingress-QoS-Profile | The name of an ingress QoS profile |
+ +------+---------------------+------------------------------------+
+ | 3 | Egress-QoS-Profile | The name of an egress QoS profile |
+ +------+---------------------+------------------------------------+
+ | 4 | User-ACL-Policy | The name of an ACL policy |
+ +------+---------------------+------------------------------------+
+ | 5 | Multicast-ProfileV4 | The name of an IPv4 multicast |
+ | | | profile |
+ +------+---------------------+------------------------------------+
+ | 6 | Multicast-ProfileV6 | The name of an IPv6 multicast |
+ | | | profile |
+ +------+---------------------+------------------------------------+
+ | 9 | NAT-Instance | The name of a NAT instance |
+ +------+---------------------+------------------------------------+
+ | 10 | Pool-Name | The name of an address pool |
+ +------+---------------------+------------------------------------+
+
+ Table 4: Name Sub-TLVs
+
+7.3.2. Ingress-CAR Sub-TLV
+
+ The Ingress-CAR sub-TLV indicates the authorized upstream Committed
+ Access Rate (CAR) parameters. The sub-TLV type of the Ingress-CAR
+ sub-TLV is 7. The sub-TLV length is 16. The format is as shown in
+ Figure 34.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | CIR (Committed Information Rate) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | PIR (Peak Information Rate) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | CBS (Committed Burst Size) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | PBS (Peak Burst Size) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 34: Ingress-CAR Sub-TLV
+
+ Where:
+
+ CIR (4 bytes): Guaranteed rate in bits/second.
+
+ PIR (4 bytes): Burst rate in bits/second.
+
+ CBS (4 bytes): The token bucket in bytes.
+
+ PBS (4 bytes): Burst token bucket in bytes.
+
+ These fields are unsigned integers. More details about CIR, PIR,
+ CBS, and PBS can be found in [RFC2698].
+
+7.3.3. Egress-CAR Sub-TLV
+
+ The Egress-CAR sub-TLV indicates the authorized downstream Committed
+ Access Rate (CAR) parameters. The sub-TLV type of the Egress-CAR
+ sub-TLV is 8. Its sub-TLV length is 16 octets. The format of the
+ value part is as defined below.
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | CIR (Committed Information Rate) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | PIR (Peak Information Rate) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | CBS (Committed Burst Size) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | PBS (Peak Burst Size) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 35: Egress-CAR Sub-TLV
+
+ Where:
+
+ CIR (4 bytes): Guaranteed rate in bits/second.
+
+ PIR (4 bytes): Burst rate in bits/second.
+
+ CBS (4 bytes): The token bucket in bytes.
+
+ PBS (4 bytes): Burst token bucket in bytes.
+
+ These fields are unsigned integers. More details about CIR, PIR,
+ CBS, and PBS can be found in [RFC2698].
+
+7.3.4. If-Desc Sub-TLV
+
+ The If-Desc sub-TLV is defined to designate an interface. It is an
+ optional sub-TLV that may be carried in those TLVs that have an If-
+ Index or Out-If-Index field. The If-Desc sub-TLV is used as a
+ locally unique identifier within a BNG.
+
+ The sub-TLV type is 11. The sub-TLV length is 12 octets. The format
+ depends on the If-Type (Section 8.6). The format of the value part
+ is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | If-Type (1-5)| Chassis | Slot |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sub-Slot | Port Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sub-Port Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ If-Desc Sub-TLV (Physical Port)
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | If-Type (6-7) | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Logic-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sub-Port Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ If-Desc Sub-TLV (Virtual Port)
+
+ Figure 36: If-Desc Sub-TLV Formats
+
+ Where:
+
+ If-Type: 8 bits in length. The value of this field indicates the
+ type of an interface. The If-Type values defined in this
+ document are listed in Section 8.6.
+
+ Chassis (8 bits): Identifies the chassis that the interface
+ belongs to.
+
+ Slot (16 bits): Identifies the slot that the interface belongs
+ to.
+
+ Sub-Slot (16 bits): Identifies the sub-slot the interface belongs
+ to.
+
+ Port Number (16 bits): An identifier of a physical port/interface
+ (e.g., If-Type: 1-5). It is locally significant within the
+ slot/sub-slot.
+
+ Sub-Port Number (32 bits): An identifier of the sub-port.
+ Locally significant within its "parent" port (physical or
+ virtual).
+
+ Logic-ID (32 bits): An identifier of a virtual interface (e.g.,
+ If-Type: 6-7).
+
+7.3.5. IPv6 Address List Sub-TLV
+
+ The IPv6 Address List sub-TLV is used to convey one or more IPv6
+ addresses. It is carried in the IPv6 Subscriber TLV. The sub-TLV
+ type is 12. The sub-TLV length is variable.
+
+ The format of the value part of the IPv6 Address List sub-TLV is as
+ follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ IPv6 Address ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ IPv6 Address ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ ... ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ IPv6 Address ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 37: IPv6 Address List Sub-TLV
+
+ Where:
+
+ IPv6 Address (IPv6-Address): Each IP Address is of type IP-
+ Address and carries an IPv6 address and length.
+
+7.3.6. Vendor Sub-TLV
+
+ The Vendor sub-TLV is intended to be used inside the Value portion of
+ the Vendor TLV (Section 7.13). It provides a Sub-Type that
+ effectively extends the sub-TLV type in the sub-TLV header and
+ provides for versioning of Vendor sub-TLVs.
+
+ The value part of the Vendor sub-TLV is formatted as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Vendor-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sub-Type | Sub-Type-Version |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Value (other as specified by vendor) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 38: Vendor Sub-TLV
+
+ Where:
+
+ Sub-TLV type: 13.
+
+ Sub-TLV length: Variable.
+
+ Vendor-ID (4 bytes): Vendor ID as defined in RADIUS [RFC2865].
+
+ Sub-Type (2 bytes): Used by the vendor to distinguish multiple
+ different sub-TLVs.
+
+ Sub-Type-Version (2 bytes): Used by the vendor to distinguish
+ different versions of a vendor-defined sub-TLV Sub-Type.
+
+ Value: As specified by the vendor.
+
+ Since vendor code will be handling the sub-TLV after the Vendor-ID
+ field is recognized, the remainder of the sub-TLV can be organized
+ however the vendor wants. But it desirable for a vendor to be able
+ to define multiple different Vendor sub-TLVs and to keep track of
+ different versions of its vendor-defined sub-TLVs. Thus, it is
+ RECOMMENDED that the vendor assign a Sub-Type value for each of that
+ vendor's sub-TLVs that is different from other Sub-Type values that
+ vendor has used. Also, when modifying a vendor-defined sub-TLV in a
+ way potentially incompatible with a previous definition, the vendor
+ SHOULD increase the value it is using in the Sub-Type-Version field.
+
+7.4. Hello TLV
+
+ The Hello TLV is defined to be carried in the Hello message for
+ version and capabilities negotiation. It indicates the S-CUSP sub-
+ version and capabilities supported. The format of the value part of
+ the Hello TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | VerSupported |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Vendor-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Capabilities |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 39: Hello TLV
+
+ Where:
+
+ TLV type: 100.
+
+ TLV length: 12 octets.
+
+ VerSupported: 32 bits in length. It is a bit map of the Sub-
+ Versions of S-CUSP that the sender supports. This document
+ specifies Sub-Version zero of Major Version 1, that is, Version
+ 1.0. The VerSupported field MUST be nonzero. The VerSupported
+ bits are numbered from 0 as the most significant bit. Bit 0
+ indicates support of Sub-Version zero, bit 1 indicates support
+ of Sub-Version one, etc.
+
+ Vendor-ID: 4 bytes in length. Vendor ID, as defined in RADIUS
+ [RFC2865].
+
+ Capabilities: 32 bits in length. Flags that indicate the support
+ of particular capabilities by the sender of the Hello. No
+ capabilities are defined in this document, so implementations
+ of the version specified herein will set this field to zero.
+ The Capabilities field of the Hello TLV MUST be checked before
+ any other TLVs in the Hello because capabilities defined in the
+ future might extend existing TLVs or permit new TLVs.
+
+ After the exchange of Hello messages, the CP and UP each perform a
+ logical AND of the Sub-Version supported by the CP and the UP and
+ separately perform a logical AND of the Capabilities field for the CP
+ and the UP.
+
+ If the result of the AND of the Sub-Versions supported is zero, then
+ no session can be established, and the connection is torn down. If
+ the result of the AND of the Sub-Versions supported is nonzero, then
+ the session uses the highest Sub-Version supported by both the CP and
+ UP.
+
+ For example, if one side supports Sub-Versions 1, 3, 4, and 5
+ (VerSupported = 0x5C000000) and the other side supports 2, 3, and 4
+ (VerSupported = 0x38000000), then 3 and 4 are the Sub-Versions in
+ common, and 4 is the highest Sub-Version supported by both sides. So
+ Sub-Version 4 is used for the session that has been negotiated.
+
+ The result of the logical AND of the Capabilities bits will show what
+ additional capabilities both sides support. If this result is zero,
+ there are no such capabilities, so none can be used during the
+ session. If this result is nonzero, it shows the additional
+ capabilities that can be used during the session. The CP and the UP
+ MUST NOT use a capability unless both advertise support.
+
+7.5. Keepalive TLV
+
+ The Keepalive TLV is carried in the Hello message. It provides
+ timing information for this feature. The format of the value part of
+ the Keepalive TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Keepalive | DeadTimer | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 40: Keepalive TLV
+
+ Where:
+
+ TLV type: 102.
+
+ TLV length: 4 octets.
+
+ Keepalive (8 bits): Indicates the maximum interval (in seconds)
+ between two consecutive S-CUSP messages sent by the sender of
+ the message containing this TLV as an unsigned integer. The
+ minimum value for the Keepalive field is 1 second. When set to
+ 0, once the session is established, no further Keepalive
+ messages are sent to the remote peer. A RECOMMENDED value for
+ the Keepalive frequency is 30 seconds.
+
+ DeadTimer (8 bits in length): Specifies the amount of time as an
+ unsigned integer number of seconds, after the expiration of
+ which, the S-CUSP peer can declare the session with the sender
+ of the Hello message to be down if no S-CUSP message has been
+ received. The DeadTimer SHOULD be set to 0 and MUST be ignored
+ if the Keepalive is set to 0. A RECOMMENDED value for the
+ DeadTimer is 4 times the value of the Keepalive.
+
+ Reserved: The Reserved bits MUST be sent as zero and ignored on
+ receipt.
+
+7.6. Error Information TLV
+
+ The Error Information TLV is a common TLV that can be used in many
+ responses (e.g., Update_Response message) and ACK messages (e.g.,
+ Addr_Allocation_Ack message). It is used to convey the information
+ about an error in the received S-CUSP message. The format of the
+ value part of the Error Information TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Message-Type | Reserved | TLV-Type |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 41: Error Information TLV
+
+ Where:
+
+ TLV type: 101.
+
+ TLV length: 8 octets.
+
+ Message-Type (1 byte): This parameter is the message type of the
+ message containing an error.
+
+ Reserved (1 byte): MUST be sent as zero and ignored on receipt.
+
+ TLV-Type (2 bytes): Indicates which TLV caused the error.
+
+ Error Code: 4 bytes in length. Indicate the specific Error Code
+ (see Section 8.5).
+
+7.7. BAS Function TLV
+
+ The BAS Function TLV is used by a CP to control the access mode,
+ authentication methods, and other related functions of an interface
+ on a UP.
+
+ The format of the BAS Function TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | If-Index |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Access-Mode | Auth-Method4 | Auth-Method6 | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Flags |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sub-TLVs (optional) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 42: BAS Function TLV
+
+ Where:
+
+ TLV type: 1.
+
+ TLV length: Variable.
+
+ If-Index: 4 bytes in length, a unique identifier of an interface
+ of a BNG.
+
+ Access-Mode: 1 byte in length. It indicates the access mode of
+ the interface. The defined values are listed in Section 8.7.
+
+ Auth-Method4: 1 byte in length. It indicates the authentication
+ on this interface for the IPv4 scenario. This field is defined
+ as a bitmap. The bits defined in this document are listed in
+ Section 8.8. Other bits are reserved and MUST be sent as zero
+ and ignored on receipt.
+
+ Auth-Method6: 1 byte in length. It indicates the authentication
+ on this interface for the IPv6 scenario. This field is defined
+ as a bitmap. The bits defined in this document are listed in
+ Section 8.8. Other bits are reserved and MUST be sent as zero
+ and ignored on receipt.
+
+ Sub-TLVs: The IF-Desc sub-TLV can be carried.
+
+ If-Desc sub-TLV: Carries the interface information.
+
+ Flags: The Flags field is defined as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MBZ |Y|X|P|I|N|A|S|F|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 43: Interface Flags
+
+ Where:
+
+ F (IPv4 Trigger) bit: Indicates whether IPv4 packets can trigger
+ a subscriber to go online.
+
+ 1: Enabled.
+
+ 0: Disabled.
+
+ S (IPv6 Trigger) bit: Indicates whether IPv6 packets can trigger
+ a subscriber to go online.
+
+ 1: Enabled.
+
+ 0: Disabled.
+
+ A (ARP Trigger) bit: Indicates whether ARP packets can trigger a
+ subscriber to go online.
+
+ 1: Enabled.
+
+ 0: Disabled.
+
+ N (ND Trigger) bit: Indicates whether ND packets can trigger a
+ subscriber to go online.
+
+ 1: Enabled.
+
+ 0: Disabled.
+
+ I (IPoE-Flow-Check): Used for UP detection.
+
+ 1: Enable traffic detection.
+
+ 0: Disable traffic detection.
+
+ P (PPP-Flow-Check) bit: Used for UP detection.
+
+ 1: Enable traffic detection.
+
+ 0: Disable traffic detection.
+
+ X (ARP-Proxy) bit: Indicates whether ARP proxy is enabled on the
+ interface.
+
+ 1: The interface is enabled with ARP proxy and can process ARP
+ requests across different network ports and VLANs.
+
+ 0: The ARP proxy is not enabled on the interface and only the
+ ARP requests of the same network port and VLAN are
+ processed.
+
+ Y (ND-Proxy) bit: Indicates whether ND proxy is enabled on the
+ interface.
+
+ 1: The interface is enabled with ND proxy and can process ND
+ requests across different network ports and VLANs.
+
+ 0: The ND proxy is not enabled on the interface and only the
+ ND requests of the same network port and VLAN are processed.
+
+ MBZ: Reserved bits that MUST be sent as zero and ignored on
+ receipt.
+
+7.8. Routing TLVs
+
+ Typically, after an S-CUSP session is established between a UP and a
+ CP, the CP will allocate one or more blocks of IP addresses to the
+ UP. Those IP addresses will be allocated to subscribers who will
+ dial-up (as defined in Section 4.3.1) to the UP. To make sure that
+ other nodes within the network learn how to reach those IP addresses,
+ the CP needs to install one or more routes that can reach those IP
+ addresses on the UP and notify the UP to advertise the routes to the
+ network.
+
+ The Routing TLVs are used by a CP to notify a UP of the updates to
+ network routing information. They can be carried in the
+ Update_Request message and Sync_Data message.
+
+7.8.1. IPv4 Routing TLV
+
+ The IPv4 Routing TLV is used to carry information related to IPv4
+ network routing.
+
+ The format of the TLV value part is as below:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Dest-Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Next-Hop |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Out-If-Index |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Cost |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Tag |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Route-Type | Reserved |A|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Sub-TLVs (optional) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 44: IPv4 Routing TLV
+
+ Where:
+
+ TLV type: 7.
+
+ TLV length: Variable.
+
+ User-ID: 4 bytes in length. This field carries the user
+ identifier. It is filled with all Fs when a non-user route is
+ delivered to the UP.
+
+ Dest-Address (IPv4-Address type): Identifies the destination
+ address.
+
+ Next-Hop (IPv4-Address type): Identifies the next-hop address.
+
+ Out-If-Index (4 bytes): Indicates the interface index.
+
+ Cost (4 bytes): The cost value of the route.
+
+ Tag (4 bytes): The tag value of the route.
+
+ Route-Type (2 bytes): The value of this field indicates the route
+ type. The values defined in this document are listed in
+ Section 8.9.
+
+ Advertise-Flag: 1 bit shown as "A" in the figure above
+ (Figure 44). Indicates whether the UP should advertise the
+ route. The following flag values are defined:
+
+ 0: Not advertised.
+
+ 1: Advertised.
+
+ Sub-TLVs: The VRF-Name and/or If-Desc sub-TLVs can be carried.
+
+ VRF-Name sub-TLV: Indicates which VRF the route belongs to.
+
+ If-Desc sub-TLV: Carries the interface information.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.8.2. IPv6 Routing TLV
+
+ The IPv6 Routing TLV is used to carry IPv6 network routing
+ information.
+
+ The format of the value part of this TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ IPv6 Dest-Address ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ IPv6 Next-Hop ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Out-If-Index |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Cost |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Tag |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Route-Type | Reserved |A|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Sub-TLVs (optional) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 45: IPv6 Routing TLV
+
+ Where:
+
+ TLV type: 8.
+
+ TLV length: Variable.
+
+ User-ID: 4 bytes in length. This field carries the user
+ identifier. This field is filled with all Fs when a non-user
+ route is delivered to the UP.
+
+ IPv6 Dest-Address (IPv6-Address type): Identifies the destination
+ address.
+
+ IPv6 Next-Hop (IPv6-Address type): Identifies the next-hop
+ address.
+
+ Out-If-Index (4 bytes): Indicates the interface index.
+
+ Cost (4 bytes): This is the cost value of the route.
+
+ Tag (4 bytes): The tag value of the route.
+
+ Route-Type (2 bytes): The value of this field indicates the route
+ type. The values defined in this document are listed in
+ Section 8.9.
+
+ Advertise-Flag: 1 bit shown as "A" in the figure above
+ (Figure 45). Indicates whether the UP should advertise the
+ route. The following flags are defined:
+
+ 0: Not advertised.
+
+ 1: Advertised.
+
+ Sub-TLVs: The If-Desc and VRF-Name sub-TLVs can be carried.
+
+ VRF-Name sub-TLV: Indicates the VRF to which the subscriber
+ belongs.
+
+ If-Desc sub-TLV: Carries the interface information.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9. Subscriber TLVs
+
+ The Subscriber TLVs are defined for a CP to send the basic
+ information about a user to a UP.
+
+7.9.1. Basic Subscriber TLV
+
+ The Basic Subscriber TLV is used to carry the common information for
+ all kinds of access subscribers. It is carried in an Update_Request
+ message.
+
+ The format of the Basic Subscriber TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Session-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-MAC |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-MAC (cont.) | Oper-ID | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Access-Type |Sub-Access-Type| Account-Type | Address Family|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | C-VID | P-VID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Detect-Times | Detect-Interval |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | If-Index |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Sub-TLVs (optional) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 46: Basic Subscriber TLV
+
+ Where:
+
+ TLV type: 2.
+
+ TLV length: Variable.
+
+ User-ID (4 bytes): The identifier of a subscriber.
+
+ Session-ID (4 bytes): Session ID of a PPPoE subscriber. The
+ value zero identifies a non-PPPoE subscriber.
+
+ User-MAC (MAC-Addr type): The MAC address of a subscriber.
+
+ Oper-ID (1 byte): Indicates the ID of an operation performed by a
+ user. This field is carried in the response from the UP.
+
+ Reserved (1 byte): MUST be sent as zero and ignored on receipt.
+
+ Access-Type (1 byte): Indicates the type of subscriber access.
+ Values defined in this document are listed in Section 8.10.
+
+ Sub-Access-Type (1 byte): Indicates whether PPP termination or
+ PPP relay is used.
+
+ 0: Reserved.
+
+ 1: PPP Relay (for LAC).
+
+ 2: PPP termination (for LNS).
+
+ Account-Type (1 byte): Indicates whether traffic statistics are
+ collected independently.
+
+ 0: Collects statistics on IPv4 and IPv6 traffic of terminals
+ independently.
+
+ 1: Collects statistics on IPv4 and IPv6 traffic of terminals.
+
+ Address Family (1 byte): The type of IP address.
+
+ 1: IPv4.
+
+ 2: IPv6.
+
+ 3: Dual stack.
+
+ C-VID (VLAN-ID): Indicates the inner VLAN ID. The value 0
+ indicates that the VLAN ID is invalid. The default value of
+ PRI is 7, the value of DEI is 0, and the value of VID is
+ 1-4094. The PRI value can also be obtained by parsing terminal
+ packets.
+
+ P-VID (VLAN-ID): Indicates the outer VLAN ID. The value 0
+ indicates that the VLAN ID is invalid. The format is the same
+ as that for C-VID.
+
+ Detect-Times (2 bytes): Number of detection timeout times. The
+ value 0 indicates that no detection is performed.
+
+ Detect-Interval (2 bytes): Detection interval in seconds.
+
+ If-Index (4 bytes): Interface index.
+
+ Sub-TLVs: The VRF-Name sub-TLV and If-Desc sub-TLV can be
+ carried.
+
+ VRF-Name sub-TLV: Indicates the VRF to which the subscriber
+ belongs.
+
+ If-Desc sub-TLV: Carries the interface information.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9.2. PPP Subscriber TLV
+
+ The PPP Subscriber TLV is defined to carry PPP information of a user
+ from a CP to a UP. It will be carried in an Update_Request message
+ when PPPoE or L2TP access is used.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MSS-Value | Reserved |M|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MRU | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Magic-Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Peer-Magic-Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 47: PPP Subscriber TLV
+
+ Where:
+
+ TLV type: 3.
+
+ TLV length: 12 octets.
+
+ User-ID (4 bytes): The identifier of a subscriber.
+
+ MSS-Value (2 bytes): Indicates the MSS value (in bytes).
+
+ MSS-Enable (M) (1 bit): Indicates whether the MSS is enabled.
+
+ 0: Disabled.
+
+ 1: Enabled.
+
+ MRU (2 bytes): PPPoE local MRU (in bytes).
+
+ Magic-Number (4 bytes): Local magic number in PPP negotiation
+ packets.
+
+ Peer-Magic-Number (4 bytes): Remote peer magic number.
+
+ Reserved: The Reserved fields MUST be sent as zero and ignored on
+ receipt.
+
+7.9.3. IPv4 Subscriber TLV
+
+ The IPv4 Subscriber TLV is defined to carry IPv4-related information
+ for a BNG user. It will be carried in an Update_Request message when
+ IPv4 IPoE or PPPoE access is used.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-IPv4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Gateway-IPv4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MTU | Reserved |U|E|W|P|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ VRF-Name Sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 48: IPv4 Subscriber TLV
+
+ Where:
+
+ TLV type: 4.
+
+ TLV length: Variable.
+
+ User-ID (4 bytes): The identifier of a subscriber.
+
+ User-IPv4 (IPv4-Address): The IPv4 address of the subscriber.
+
+ Gateway-IPv4 (IPv4-Address): The gateway address of the
+ subscriber.
+
+ Portal-Force (P) (1 bit): Push advertisement.
+
+ 0: Off.
+
+ 1: On.
+
+ Web-Force (W) (1 bit): Push IPv4 Web.
+
+ 0: Off.
+
+ 1: On.
+
+ Echo-Enable (E) (1 bit): UP returns ARP Req or PPP Echo.
+
+ 0: Off.
+
+ 1: On.
+
+ IPv4-URPF (U) (1 bit): User Unicast Reverse Path Forwarding
+ (URPF) flag.
+
+ 0: Off.
+
+ 1: On.
+
+ MTU (2 bytes): MTU value. The default value is 1500.
+
+ VRF-Name Sub-TLV: Indicates the subscriber belongs to which VRF.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9.4. IPv6 Subscriber TLV
+
+ The IPv6 Subscriber TLV is defined to carry IPv6-related information
+ for a BNG user. It will be carried in an Update_Request message when
+ IPv6 IPoE or PPPoE access is used.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ User PD-Address (IPv6 Address List Sub-TLV) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Gateway ND-Address (IPv6 Address List Sub-TLV) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User Link-Local-Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | IPv6 Interface ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | IPv6 Interface ID (cont.) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MTU | Reserved |U|E|W|P|
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ VRF Name Sub-TLV (optional) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 49: IPv6 Subscriber TLV
+
+ Where:
+
+ TLV type: 5.
+
+ TLV length: Variable.
+
+ User-ID (4 bytes): The identifier of a subscriber.
+
+ User PD-Addresses (IPv6 Address List): Carries a list of Prefix
+ Delegation (PD) addresses of the subscriber.
+
+ User ND-Addresses (IPv6 Address List): Carries a list of Neighbor
+ Discovery (ND) addresses of the subscriber.
+
+ User Link-Local-Address (IPv6-Address): The link-local address of
+ the subscriber.
+
+ IPv6 Interface ID (8 bytes): The identifier of an IPv6 interface.
+
+ Portal-Force 1 bit (P): Push advertisement.
+
+ 0: Off.
+
+ 1: On.
+
+ Web-Force 1 bit (W): Push IPv6 Web.
+
+ 0: Off.
+
+ 1: On.
+
+ Echo-Enable 1 bit (E): The UP returns ARP Req or PPP Echo.
+
+ 0: Off.
+
+ 1: On.
+
+ IPv6-URPF 1 bit (U): User Reverse Path Forwarding (URPF) flag.
+
+ 0: Off.
+
+ 1: On.
+
+ MTU (2 bytes): The MTU value. The default value is 1500.
+
+ VRF-Name Sub-TLV: Indicates the VRF to which the subscriber
+ belongs.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9.5. IPv4 Static Subscriber Detect TLV
+
+ The IPv4 Static Subscriber Detect TLV is defined to carry
+ IPv4-related information for a static access subscriber. It will be
+ carried in an Update_Request message when IPv4 static access on a UP
+ needs to be enabled.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | If-Index |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | C-VID | P-VID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Gateway Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-MAC |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-MAC (cont.) | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Sub-TLVs (optional) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 50: IPv4 Static Subscriber TLV
+
+ Where:
+
+ TLV type: 9.
+
+ TLV length: Variable.
+
+ If-Index (4 bytes): The interface index of the interface from
+ which the subscriber will dial-up.
+
+ C-VID (VLAN-ID): Indicates the inner VLAN ID. The value 0
+ indicates that the VLAN ID is invalid. A valid value is
+ 1-4094.
+
+ P-VID (VLAN-ID): Indicates the outer VLAN ID. The value 0
+ indicates that the VLAN ID is invalid. The format is the same
+ as that of the C-VID. A valid value is 1-4094.
+
+ User Address (IPv4-Addr): The user's IPv4 address.
+
+ Gateway Address (IPv4-Addr): The gateway's IPv4 address.
+
+ User-MAC (MAC-Addr type): The MAC address of the subscriber.
+
+ Sub-TLVs: The VRF-Name and If-Desc sub-TLVs may be carried.
+
+ VRF-Name sub-TLV: Indicates the VRF to which the subscriber
+ belongs.
+
+ If-Desc sub-TLV: Carries the interface information.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9.6. IPv6 Static Subscriber Detect TLV
+
+ The IPv6 Static Subscriber Detect TLV is defined to carry
+ IPv6-related information for a static access subscriber. It will be
+ carried in an Update_Request message when needed to enable IPv6
+ static subscriber detection on a UP.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | If-Index |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | C-VID | P-VID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ User Address ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Gateway Address ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-MAC |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-MAC (cont.) | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Sub-TLVs (optional) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 51: IPv6 Static Subscriber Detect TLV
+
+ Where:
+
+ TLV type: 10.
+
+ TLV length: Variable.
+
+ If-Index (4 bytes): The interface index of the interface from
+ which the subscriber will dial-up.
+
+ C-VID (VLAN-ID): Indicates the inner VLAN ID. The value 0
+ indicates that the VLAN ID is invalid. A valid value is
+ 1-4094.
+
+ P-VID (VLAN-ID): Indicates the outer VLAN ID. The value 0
+ indicates that the VLAN ID is invalid. The format is the same
+ as that the of C-VID. A valid value is 1-4094.
+
+ User Address (IPv6-Address type): The subscriber's IPv6 address.
+
+ Gateway Address (IPv6-Address type): The gateway's IPv6 Address.
+
+ User-MAC (MAC-Addr type): The MAC address of the subscriber.
+
+ Sub-TLVs: VRF-Name and If-Desc sub-TLVs may be carried
+
+ VRF-Name sub-TLV: Indicates the VRF to which the subscriber
+ belongs.
+
+ If-Desc sub-TLV: Carries the interface information.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9.7. L2TP-LAC Subscriber TLV
+
+ The L2TP-LAC Subscriber TLV is defined to carry the related
+ information for an L2TP LAC access subscriber. It will be carried in
+ an Update_Request message when L2TP LAC access is used.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Local-Tunnel-ID | Local-Session-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Remote-Tunnel-ID | Remote-Session-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 52: L2TP-LAC Subscriber TLV
+
+ Where:
+
+ TLV type: 11.
+
+ TLV length: 12 octets.
+
+ User-ID (4 bytes): The identifier of a user/subscriber.
+
+ Local-Tunnel-ID (2 bytes): The local ID of the L2TP tunnel.
+
+ Local-Session-ID (2 bytes): The local session ID with the L2TP
+ tunnel.
+
+ Remote-Tunnel-ID (2 bytes): The identifier of the L2TP tunnel at
+ the remote endpoint.
+
+ Remote-Session-ID (2 bytes): The session ID of the L2TP tunnel at
+ the remote endpoint.
+
+7.9.8. L2TP-LNS Subscriber TLV
+
+ The L2TP-LNS Subscriber TLV is defined to carry the related
+ information for a L2TP LNS access subscriber. It will be carried in
+ an Update_Request message when L2TP LNS access is used.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Local-Tunnel-ID | Local-Session-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Remote-Tunnel-ID | Remote-Session-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 53: L2TP-LNS Subscriber TLV
+
+ Where:
+
+ TLV type: 12.
+
+ TLV length: 12 octets.
+
+ User-ID (4 bytes): The identifier of a user/subscriber.
+
+ Local-Tunnel-ID (2 bytes): The local ID of the L2TP tunnel.
+
+ Local-Session-ID (2 bytes): The local session ID with the L2TP
+ tunnel.
+
+ Remote-Tunnel-ID (2 bytes): The identifier of the L2TP tunnel at
+ the remote endpoint.
+
+ Remote-Session-ID (2 bytes): The session ID of the L2TP tunnel at
+ the remote endpoint.
+
+7.9.9. L2TP-LAC Tunnel TLV
+
+ The L2TP-LAC Tunnel TLV is defined to carry information related to
+ the L2TP LAC tunnel. It will be carried in the Update_Request
+ message when L2TP LAC access is used.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Local-Tunnel-ID | Remote-Tunnel-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Source-Port | Dest-Port |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Source-IP ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Dest-IP ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ VRF-Name Sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 54: L2TP-LAC Tunnel TLV
+
+ Where:
+
+ TLV type: 13.
+
+ TLV length: Variable.
+
+ Local-Tunnel-ID (2 bytes): The local ID of the L2TP tunnel.
+
+ Remote-Tunnel-ID (2 bytes): The remote ID of the L2TP tunnel.
+
+ Source-Port (2 bytes): The source UDP port number of an L2TP
+ subscriber.
+
+ Dest-Port (2 bytes): The destination UDP port number of an L2TP
+ subscriber.
+
+ Source-IP (IPv4/v6): The source IP address of the tunnel.
+
+ Dest-IP (IPv4/v6): The destination IP address of the tunnel.
+
+ VRF-Name Sub-TLV: The VRF name to which the L2TP subscriber
+ tunnel belongs.
+
+7.9.10. L2TP-LNS Tunnel TLV
+
+ The L2TP-LNS Tunnel TLV is defined to carry information related to
+ the L2TP LNS tunnel. It will be carried in the Update_Request
+ message when L2TP LNS access is used.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Local-Tunnel-ID | Remote-Tunnel-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Source-Port | Dest-Port |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Source-IP ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Dest-IP ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ VRF-Name Sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 55: L2TP-LNS Tunnel TLV
+
+ Where:
+
+ TLV type: 14.
+
+ TLV length: Variable.
+
+ Local-Tunnel-ID (2 bytes): The local ID of the L2TP tunnel.
+
+ Remote-Tunnel-ID (2 bytes): The remote ID of the L2TP tunnel.
+
+ Source-Port (2 bytes): The source UDP port number of an L2TP
+ subscriber.
+
+ Dest-Port (2 bytes): The destination UDP port number of an L2TP
+ subscriber.
+
+ Source-IP (IPv4/v6): The source IP address of the tunnel.
+
+ Dest-IP (IPv4/v6): The destination IP address of the tunnel.
+
+ VRF-Name Sub-TLV: The VRF name to which the L2TP subscriber
+ tunnel belongs.
+
+7.9.11. Update Response TLV
+
+ The Update Response TLV is used to return the operation result of an
+ update request. It is carried in the Update_Response message as a
+ response to the Update_Request message.
+
+ The format of the value part of the Update Response TLV is as
+ follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-Trans-ID | Oper-Code | Oper-Result | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error-Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 56: Update Response TLV
+
+ Where:
+
+ TLV type: 302.
+
+ TLV length: 12.
+
+ User-ID (4 bytes): A unique identifier of a user/subscriber.
+
+ User-Trans-ID (1 byte): In the case of dual-stack access or when
+ modifying a session, User-Trans-ID is used to identify a user
+ operation transaction. It is used by the CP to correlate a
+ response to a specific request.
+
+ Oper-Code (1 byte): Operation code.
+
+ 1: Update.
+
+ 2: Delete.
+
+ Oper-Result (1 byte): Operation Result.
+
+ 0: Success.
+
+ Others: Failure.
+
+ Error-Code (4 bytes): Operation failure cause code. For details,
+ see Section 8.5.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9.12. Subscriber Policy TLV
+
+ The Subscriber Policy TLV is used to carry the policies that will be
+ applied to a subscriber. It is carried in the Update_Request
+ message.
+
+ The format of the TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | I-Priority | E-Priority | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Sub-TLVs ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 57: Subscriber Policy TLV
+
+ Where:
+
+ TLV type: 6.
+
+ TLV length: Variable.
+
+ User-ID (4 bytes): The identifier of a user/subscriber.
+
+ Ingress-Priority (1 byte): Indicates the upstream priority. The
+ value range is 0~7.
+
+ Egress-Priority (1 byte): Indicates the downstream priority. The
+ value range is 0~7.
+
+ Sub-TLVs: The sub-TLVs that are present can occur in any order.
+
+ Ingress-CAR sub-TLV: Upstream CAR.
+
+ Egress-CAR sub-TLV: Downstream CAR.
+
+ Ingress-QoS-Profile sub-TLV: Indicates the name of the QoS-
+ Profile that is the profile in the upstream direction.
+
+ Egress-QoS-Profile sub-TLV: Indicates the name of the QoS-
+ Profile that is the profile in the downstream direction.
+
+ User-ACL-Policy sub-TLV: All ACL user policies, including
+ v4ACLIN, v4ACLOUT, v6ACLIN, v6ACLOUT, v4WEBACL, v6WEBACL,
+ v4SpecialACL, and v6SpecialACL.
+
+ Multicast-Profile4 sub-TLV: IPv4 multicast policy name.
+
+ Multicast-Profile6 sub-TLV: IPv6 multicast policy name.
+
+ NAT-Instance sub-TLV: Indicates the instance ID of a NAT user.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.9.13. Subscriber CGN Port Range TLV
+
+ The Subscriber CGN Port Range TLV is used to carry the NAT public
+ address and port range. It will be carried in the Update_Response
+ message when CGN is used.
+
+ The format of the value part of this TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | NAT-Port-Start | NAT-Port-End |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | NAT-Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 58: Subscriber CGN Port Range TLV
+
+ Where:
+
+ TLV type: 15.
+
+ TLV length: 12 octets.
+
+ User-ID (4 bytes): The identifier of a user/subscriber.
+
+ NAT-Port-Start (2 bytes): The start port number.
+
+ NAT-Port-End (2 bytes): The end port number.
+
+ NAT-Address (4 bytes): The NAT public network address.
+
+7.10. Device Status TLVs
+
+ The TLVs in this section are for reporting interface and board-level
+ information from the UP to the CP.
+
+7.10.1. Interface Status TLV
+
+ The Interface Status TLV is used to carry the status information of
+ an interface on a UP. It is carried in a Report message.
+
+ The format of the value part of this TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | If-Index |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MAC-Address (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MAC-Address (lower part) | Phy-State | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | MTU |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sub-TLVs (optional) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 59: Interface Status TLV
+
+ Where:
+
+ TLV type: 200.
+
+ TLV length: Variable.
+
+ If-Index (4 bytes): Indicates the interface index.
+
+ MAC-Address (MAC-Addr type): Interface MAC address.
+
+ Phy-State (1 byte): Physical status of the interface.
+
+ 0: Down.
+
+ 1: Up.
+
+ MTU (4 bytes): Interface MTU value.
+
+ Sub-TLVs: The If-Desc and VRF-Name sub-TLVs can be carried.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.10.2. Board Status TLV
+
+ The Board Status TLV is used to carry the status information of a
+ board on an UP. It is carried in a Report message.
+
+ The format of the value part of the Board Status TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Board-Type | Board-State | Reserved | Chassis |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Slot | Sub-Slot |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 60: Board Status TLV
+
+ Where:
+
+ TLV type: 201.
+
+ TLV length: 8 octets.
+
+ Chassis (1 byte): The chassis number of the board.
+
+ Slot (16 bits): The slot number of the board.
+
+ Sub-Slot (16 bits): The sub-slot number of the board.
+
+ Board-Type (1 byte): The type of board used.
+
+ 1: CGN Service Process Unit (SPU) board.
+
+ 2: Line Process Unit (LPU) board.
+
+ Board-State (1 byte): Indicates whether there are issues with the
+ board.
+
+ 0: Normal.
+
+ 1: Abnormal.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.11. CGN TLVs
+
+7.11.1. Address Allocation Request TLV
+
+ The Address Allocation Request TLV is used to request address
+ allocation from the CP. A Pool-Name sub-TLV is carried to indicate
+ from which address pool to allocate addresses. The Address
+ Allocation Request TLV is carried in the Addr_Allocation_Req message.
+
+ The format of the value part of this TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Pool-Name Sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 61: Address Allocation Request TLV
+
+ Where:
+
+ TLV type: 400.
+
+ TLV length: Variable.
+
+ Pool-Name sub-TLV: Indicates from which address pool to allocate
+ address.
+
+7.11.2. Address Allocation Response TLV
+
+ The Address Allocation Response TLV is used to return the address
+ allocation result; it is carried in the Addr_Allocation_Ack message.
+
+ The value part of the Address Allocation Response TLV is formatted as
+ follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Lease Time |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP (cont.) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error-Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Pool-Name Sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 62: Address Allocation Response TLV
+
+ Where:
+
+ TLV type: 401.
+
+ TLV length: Variable.
+
+ Lease Time (4 bytes): Duration of address lease in seconds.
+
+ Client-IP (IPv4-Address type): The allocated IPv4 address and
+ mask.
+
+ Error-Code (4 bytes): Indicates success or an error.
+
+ 0: Success.
+
+ 1: Failure.
+
+ 3001: Pool-Mismatch. The corresponding address pool cannot be
+ found.
+
+ 3002: Pool-Full. The address pool is fully allocated, and no
+ address segment is available.
+
+ Pool-Name sub-TLV: Indicates from which address pool the address
+ is allocated.
+
+7.11.3. Address Renewal Request TLV
+
+ The Address Renewal Request TLV is used to request address renewal
+ from the CP. It is carried in the Addr_Renew_Req message.
+
+ The format of this TLV value is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP (cont.) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Pool-Name Sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 63: Address Renewal Request TLV
+
+ Where:
+
+ TLV type: 402.
+
+ TLV length: Variable.
+
+ Client-IP (IPv4-Address type): The IPv4 address and mask to be
+ renewed.
+
+ Pool-Name sub-TLV: Indicates from which address pool to renew the
+ address.
+
+7.11.4. Address Renewal Response TLV
+
+ The Address Renewal Response TLV is used to return the address
+ renewal result. It is carried in the Addr_Renew_Ack message.
+
+ The format of this TLV value is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP (cont.) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error-Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Pool-Name Sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 64: Address Renewal Response TLV
+
+ Where:
+
+ TLV type: 403.
+
+ TLV length: Variable.
+
+ Client-IP (IPv4-Address type): The renewed IPv4 address and mask.
+
+ Error-Code (4 bytes): Indicates success or an error:
+
+ 0: Success.
+
+ 1: Failure.
+
+ 3001: Pool-Mismatch. The corresponding address pool cannot be
+ found.
+
+ 3002: Pool-Full. The address pool is fully allocated, and no
+ address segment is available.
+
+ 3003: Subnet-Mismatch. The address pool subnet cannot be
+ found.
+
+ 3004: Subnet-Conflict. Subnets in the address pool have been
+ assigned to other clients.
+
+ Pool-Name sub-TLV: Indicates from which address pool to renew the
+ address.
+
+7.11.5. Address Release Request TLV
+
+ The Address Release Request TLV is used to release an IPv4 address.
+ It is carried in the Addr_Release_Req message.
+
+ The value part of this TLV is formatted as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP (cont.) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Pool-Name sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 65: Address Release Request TLV
+
+ Where:
+
+ TLV type: 404.
+
+ TLV length: Variable.
+
+ Client-IP (IPv4-Address type): The IPv4 address and mask to be
+ released.
+
+ Pool-Name sub-TLV: Indicates from which address pool to release
+ the address.
+
+7.11.6. Address Release Response TLV
+
+ The Address Release Response TLV is used to return the address
+ release result. It is carried in the Addr_Release_Ack message.
+
+ The format of the value part of this TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Client-IP (cont.) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Error-Code |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Pool-Name sub-TLV ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 66: Address Release Response TLV
+
+ Where:
+
+ TLV type: 405.
+
+ TLV length: Variable.
+
+ Client-IP (IPv4-Address type): The released IPv4 address and
+ mask.
+
+ Error-Code (4 bytes): Indicates success or an error.
+
+ 0: Success. Address release success.
+
+ 1: Failure. Address release failed.
+
+ 3001: Pool-Mismatch. The corresponding address pool cannot be
+ found.
+
+ 3003: Subnet-Mismatch. The address cannot be found.
+
+ 3004: Subnet-Conflict. The address has been allocated to
+ another subscriber.
+
+ Pool-Name sub-TLV: Indicates from which address pool to release
+ the address.
+
+7.12. Event TLVs
+
+7.12.1. Subscriber Traffic Statistics TLV
+
+ The Subscriber Traffic Statistics TLV is used to return the traffic
+ statistics of a user/subscriber. The format of the value part of
+ this TLV is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Statistics-Type |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Packets (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Packets (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Bytes (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Bytes (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Loss Packets (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Loss Packets (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Loss Bytes (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Ingress Loss Bytes (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Packets (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Packets (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Bytes (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Bytes (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Loss Packets (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Loss Packets (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Loss Bytes (upper part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Egress Loss Bytes (lower part) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 67: Subscriber Traffic Statistics TLV
+
+ Where:
+
+ TLV type: 300.
+
+ TLV length: 72 octets.
+
+ User-ID (4 bytes): The subscriber identifier.
+
+ Statistics-Type (4 bytes): Traffic type. It can be one of the
+ following options:
+
+ 0: IPv4 traffic.
+
+ 1: IPv6 traffic.
+
+ 2: Dual-stack traffic.
+
+ Ingress Packets (8 bytes): The number of the packets in the
+ upstream direction.
+
+ Ingress Bytes (8 bytes): The bytes of the upstream traffic.
+
+ Ingress Loss Packets (8 bytes): The number of the lost packets in
+ the upstream direction.
+
+ Ingress Loss Bytes (8 bytes): The bytes of the lost upstream
+ packets.
+
+ Egress Packets (8 bytes): The number of the packets in the
+ downstream direction.
+
+ Egress Bytes (8 bytes): The bytes of the downstream traffic.
+
+ Egress Loss Packets (8 bytes): The number of the lost packets in
+ the downstream direction.
+
+ Egress Loss Bytes (8 bytes): The bytes of the lost downstream
+ packets.
+
+7.12.2. Subscriber Detection Result TLV
+
+ The Subscriber Detection Result TLV is used to return the detection
+ result of a subscriber. Subscriber detection is a function to detect
+ whether or not a subscriber is online. The result can be used by the
+ CP to determine how to deal with the subscriber session (e.g., delete
+ the session if detection failed).
+
+ The format of this TLV value part is as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | User-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Detect-Type | Detect-Result | Reserved |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 68: Subscriber Detection Result TLV
+
+ Where:
+
+ TLV type: 301.
+
+ TLV length: 8 octets.
+
+ User-ID (4 bytes): The subscriber identifier.
+
+ Detect-Type (1 byte): Type of traffic detected.
+
+ 0: IPv4 detection.
+
+ 1: IPv6 detection.
+
+ 2: PPP detection.
+
+ Detect-Result (1 byte): Indicates whether the detection was
+ successful.
+
+ 0: Indicates that the detection is successful.
+
+ 1: Detection failure. The UP needs to report only when the
+ detection fails.
+
+ Reserved: The Reserved field MUST be sent as zero and ignored on
+ receipt.
+
+7.13. Vendor TLV
+
+ The Vendor TLV occurs as the first TLV in the Vendor message
+ (Section 6.6). It provides a Sub-Type that effectively extends the
+ message type in the message header, provides for versioning of vendor
+ TLVs, and can accommodate sub-TLVs.
+
+ The value part of the Vendor TLV is formatted as follows:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Vendor-ID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Sub-Type | Sub-Type-Version |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Sub-TLVs (optional) ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 69: Vendor TLV
+
+ Where:
+
+ TLV type: 1024.
+
+ TLV length: Variable.
+
+ Vendor-ID (4 bytes): Vendor ID as defined in RADIUS [RFC2865].
+
+ Sub-Type (2 bytes): Used by the vendor to distinguish multiple
+ different vendor messages.
+
+ Sub-Type-Version (2 bytes): Used by the vendor to distinguish
+ different versions of a vendor-defined message Sub-Type.
+
+ Sub-TLVs (variable): Sub-TLVs as specified by the vendor.
+
+ Since vendor code will be handling the TLV after the Vendor-ID field
+ is recognized, the remainder of the TLV values can be organized
+ however the vendor wants. But it is desirable for a vendor to be
+ able to define multiple different vendor messages and to keep track
+ of different versions of its vendor-defined messages. Thus, it is
+ RECOMMENDED that the vendor assign a Sub-Type value for each vendor
+ message that it defines different from other Sub-Type values that
+ vendor has used. Also, when modifying a vendor-defined message in a
+ way potentially incompatible with a previous definition, the vendor
+ SHOULD increase the value it is using in the Sub-Type-Version field.
+
+8. Tables of S-CUSP Codepoints
+
+ This section provides tables of the S-CUSP codepoints, particularly
+ message types, TLV types, TLV operation codes, sub-TLV types, and
+ error codes. In most cases, references are provided to relevant
+ sections elsewhere in this document.
+
+8.1. Message Types
+
+ +---------+---------------------+--------------------------+
+ | Type | Name | Section of This Document |
+ +=========+=====================+==========================+
+ | 0 | Reserved | |
+ +---------+---------------------+--------------------------+
+ | 1 | Hello | 6.2.1 |
+ +---------+---------------------+--------------------------+
+ | 2 | Keepalive | 6.2.2 |
+ +---------+---------------------+--------------------------+
+ | 3 | Sync_Request | 6.2.3 |
+ +---------+---------------------+--------------------------+
+ | 4 | Sync_Begin | 6.2.4 |
+ +---------+---------------------+--------------------------+
+ | 5 | Sync_Data | 6.2.5 |
+ +---------+---------------------+--------------------------+
+ | 6 | Sync_End | 6.2.6 |
+ +---------+---------------------+--------------------------+
+ | 7 | Update_Request | 6.2.7 |
+ +---------+---------------------+--------------------------+
+ | 8 | Update_Response | 6.2.8 |
+ +---------+---------------------+--------------------------+
+ | 9 | Report | 6.4 |
+ +---------+---------------------+--------------------------+
+ | 10 | Event | 6.3 |
+ +---------+---------------------+--------------------------+
+ | 11 | Vendor | 6.6 |
+ +---------+---------------------+--------------------------+
+ | 12 | Error | 6.7 |
+ +---------+---------------------+--------------------------+
+ | 13-199 | Unassigned | |
+ +---------+---------------------+--------------------------+
+ | 200 | Addr_Allocation_Req | 6.5.1 |
+ +---------+---------------------+--------------------------+
+ | 201 | Addr_Allocation_Ack | 6.5.2 |
+ +---------+---------------------+--------------------------+
+ | 202 | Addr_Renew_Req | 6.5.3 |
+ +---------+---------------------+--------------------------+
+ | 203 | Addr_Renew_Ack | 6.5.4 |
+ +---------+---------------------+--------------------------+
+ | 204 | Addr_Release_Req | 6.5.5 |
+ +---------+---------------------+--------------------------+
+ | 205 | Addr_Release_Ack | 6.5.6 |
+ +---------+---------------------+--------------------------+
+ | 206-254 | Unassigned | |
+ +---------+---------------------+--------------------------+
+ | 255 | Reserved | |
+ +---------+---------------------+--------------------------+
+
+ Table 5: Message Types
+
+8.2. TLV Types
+
+ +-----------+-------------+-----------------------------------+
+ | Type | Name | Usage Description |
+ +===========+=============+===================================+
+ | 0 | Reserved | - |
+ +-----------+-------------+-----------------------------------+
+ | 1 | BAS | Carries the BNG access functions |
+ | | Function | to be enabled or disabled on |
+ | | | specified interfaces. |
+ +-----------+-------------+-----------------------------------+
+ | 2 | Basic | Carries the basic information |
+ | | Subscriber | about a BNG subscriber. |
+ +-----------+-------------+-----------------------------------+
+ | 3 | PPP | Carries the PPP information about |
+ | | Subscriber | a BNG subscriber. |
+ +-----------+-------------+-----------------------------------+
+ | 4 | IPv4 | Carries the IPv4 address of a BNG |
+ | | Subscriber | subscriber. |
+ +-----------+-------------+-----------------------------------+
+ | 5 | IPv6 | Carries the IPv6 address of a BNG |
+ | | Subscriber | subscriber. |
+ +-----------+-------------+-----------------------------------+
+ | 6 | Subscriber | Carries the policy information |
+ | | Policy | applied to a BNG subscriber. |
+ +-----------+-------------+-----------------------------------+
+ | 7 | IPv4 | Carries the IPv4 network routing |
+ | | Routing | information. |
+ +-----------+-------------+-----------------------------------+
+ | 8 | IPv6 | Carries the IPv6 network routing |
+ | | Routing | information. |
+ +-----------+-------------+-----------------------------------+
+ | 9 | IPv4 Static | Carries the IPv4 static |
+ | | Subscriber | subscriber detect information. |
+ | | Detect | |
+ +-----------+-------------+-----------------------------------+
+ | 10 | IPv6 Static | Carries the IPv6 static |
+ | | Subscriber | subscriber detect information. |
+ | | Detect | |
+ +-----------+-------------+-----------------------------------+
+ | 11 | L2TP-LAC | Carries the L2TP LAC subscriber |
+ | | Subscriber | information. |
+ +-----------+-------------+-----------------------------------+
+ | 12 | L2TP-LNS | Carries the L2TP LNS subscriber |
+ | | Subscriber | information. |
+ +-----------+-------------+-----------------------------------+
+ | 13 | L2TP-LAC | Carries the L2TP LAC tunnel |
+ | | Tunnel | subscriber information. |
+ +-----------+-------------+-----------------------------------+
+ | 14 | L2TP-LNS | Carries the L2TP LNS tunnel |
+ | | Tunnel | subscriber information. |
+ +-----------+-------------+-----------------------------------+
+ | 15 | Subscriber | Carries the public IPv4 address |
+ | | CGN Port | and related port range of a BNG |
+ | | Range | subscriber. |
+ +-----------+-------------+-----------------------------------+
+ | 16-99 | Unassigned | - |
+ +-----------+-------------+-----------------------------------+
+ | 100 | Hello | Used for version and Keepalive |
+ | | | timers negotiation. |
+ +-----------+-------------+-----------------------------------+
+ | 101 | Error | Carried in the Ack of the control |
+ | | Information | message. Carries the processing |
+ | | | result, success, or error. |
+ +-----------+-------------+-----------------------------------+
+ | 102 | Keepalive | Carried in the Hello message for |
+ | | | Keepalive timers negotiation. |
+ +-----------+-------------+-----------------------------------+
+ | 103-199 | Unassigned | - |
+ +-----------+-------------+-----------------------------------+
+ | 200 | Interface | Interfaces status reported by the |
+ | | Status | UP including physical interfaces, |
+ | | | sub-interfaces, trunk interfaces, |
+ | | | and tunnel interfaces. |
+ +-----------+-------------+-----------------------------------+
+ | 201 | Board | Board information reported by the |
+ | | Status | UP including the board type and |
+ | | | in-position status. |
+ +-----------+-------------+-----------------------------------+
+ | 202-299 | Unassigned | - |
+ +-----------+-------------+-----------------------------------+
+ | 300 | Subscriber | User traffic statistics. |
+ | | Traffic | |
+ | | Statistics | |
+ +-----------+-------------+-----------------------------------+
+ | 301 | Subscriber | User detection information. |
+ | | Detection | |
+ | | Result | |
+ +-----------+-------------+-----------------------------------+
+ | 302 | Update | The processing result of a |
+ | | Response | subscriber session update. |
+ +-----------+-------------+-----------------------------------+
+ | 303-299 | Unassigned | - |
+ +-----------+-------------+-----------------------------------+
+ | 400 | Address | Request address allocation. |
+ | | Allocation | |
+ | | Request | |
+ +-----------+-------------+-----------------------------------+
+ | 401 | Address | Address allocation response. |
+ | | Allocation | |
+ | | Response | |
+ +-----------+-------------+-----------------------------------+
+ | 402 | Address | Request for address lease |
+ | | Renewal | renewal. |
+ | | Request | |
+ +-----------+-------------+-----------------------------------+
+ | 403 | Address | Response to a request for |
+ | | Renewal | extending an IP address lease. |
+ | | Response | |
+ +-----------+-------------+-----------------------------------+
+ | 404 | Address | Request to release the address. |
+ | | Release | |
+ | | Request | |
+ +-----------+-------------+-----------------------------------+
+ | 405 | Address | Ack of a message releasing an IP |
+ | | Release | address. |
+ | | Response | |
+ +-----------+-------------+-----------------------------------+
+ | 406-1023 | Unassigned | - |
+ +-----------+-------------+-----------------------------------+
+ | 1024 | Vendor | As implemented by the vendor. |
+ +-----------+-------------+-----------------------------------+
+ | 1039-4095 | Unassigned | - |
+ +-----------+-------------+-----------------------------------+
+
+ Table 6: TLV Types
+
+8.3. TLV Operation Codes
+
+ TLV operation codes appear in the Oper field in the header of some
+ TLVs. See Section 7.1.
+
+ +------+------------+
+ | Code | Operation |
+ +======+============+
+ | 0 | Reserved |
+ +------+------------+
+ | 1 | Update |
+ +------+------------+
+ | 2 | Delete |
+ +------+------------+
+ | 3-15 | Unassigned |
+ +------+------------+
+
+ Table 7: TLV Operation
+ Codes
+
+8.4. Sub-TLV Types
+
+ See Section 7.3.
+
+ +----------+---------------------+--------------------------+
+ | Type | Name | Section of This Document |
+ +==========+=====================+==========================+
+ | 0 | Reserved | |
+ +----------+---------------------+--------------------------+
+ | 1 | VRF Name | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 2 | Ingress-QoS-Profile | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 3 | Egress-QoS-Profile | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 4 | User-ACL-Policy | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 5 | Multicast-ProfileV4 | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 6 | Multicast-ProfileV6 | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 7 | Ingress-CAR | 7.3.2 |
+ +----------+---------------------+--------------------------+
+ | 8 | Egress-CAR | 7.3.3 |
+ +----------+---------------------+--------------------------+
+ | 9 | NAT-Instance | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 10 | Pool-Name | 7.3.1 |
+ +----------+---------------------+--------------------------+
+ | 11 | If-Desc | 7.3.4 |
+ +----------+---------------------+--------------------------+
+ | 12 | IPv6-Address List | 7.3.5 |
+ +----------+---------------------+--------------------------+
+ | 13 | Vendor | 7.3.6 |
+ +----------+---------------------+--------------------------+
+ | 12-64534 | Unassigned | |
+ +----------+---------------------+--------------------------+
+ | 65535 | Reserved | |
+ +----------+---------------------+--------------------------+
+
+ Table 8: Sub-TLV Types
+
+8.5. Error Codes
+
+ +-----------------+-----------------------+-------------------------+
+ | Value | Name | Remarks |
+ +=================+=======================+=========================+
+ | 0 | Success | Success |
+ +-----------------+-----------------------+-------------------------+
+ | 1 | Failure | Malformed message |
+ | | | received. |
+ +-----------------+-----------------------+-------------------------+
+ | 2 | TLV-Unknown | One or more of the |
+ | | | TLVs was not |
+ | | | understood. |
+ +-----------------+-----------------------+-------------------------+
+ | 3 | TLV-Length | The TLV length is |
+ | | | abnormal. |
+ +-----------------+-----------------------+-------------------------+
+ | 4-999 | Unassigned | Unassigned basic |
+ | | | error codes. |
+ +-----------------+-----------------------+-------------------------+
+ | 1000 | Reserved | |
+ +-----------------+-----------------------+-------------------------+
+ | 1001 | Version-Mismatch | The version |
+ | | | negotiation fails. |
+ | | | Terminate. The |
+ | | | subsequent service |
+ | | | processes |
+ | | | corresponding to the |
+ | | | UP are suspended. |
+ +-----------------+-----------------------+-------------------------+
+ | 1002 | Keepalive Error | The keepalive |
+ | | | negotiation fails. |
+ +-----------------+-----------------------+-------------------------+
+ | 1003 | Timer Expires | The establishment |
+ | | | timer expired. |
+ +-----------------+-----------------------+-------------------------+
+ | 1004-1999 | Unassigned | Unassigned error |
+ | | | codes for version |
+ | | | negotiation. |
+ +-----------------+-----------------------+-------------------------+
+ | 2000 | Reserved | |
+ +-----------------+-----------------------+-------------------------+
+ | 2001 | Synch-NoReady | The data to be |
+ | | | smoothed is not |
+ | | | ready. |
+ +-----------------+-----------------------+-------------------------+
+ | 2002 | Synch-Unsupport | The request for |
+ | | | smooth data is not |
+ | | | supported. |
+ +-----------------+-----------------------+-------------------------+
+ | 2003-2999 | Unassigned | Unassigned data |
+ | | | synchronization |
+ | | | error codes. |
+ +-----------------+-----------------------+-------------------------+
+ | 3000 | Reserved | |
+ +-----------------+-----------------------+-------------------------+
+ | 3001 | Pool-Mismatch | The corresponding |
+ | | | address pool cannot |
+ | | | be found. |
+ +-----------------+-----------------------+-------------------------+
+ | 3002 | Pool-Full | The address pool is |
+ | | | fully allocated, and |
+ | | | no address segment |
+ | | | is available. |
+ +-----------------+-----------------------+-------------------------+
+ | 3003 | Subnet-Mismatch | The address pool |
+ | | | subnet cannot be |
+ | | | found. |
+ +-----------------+-----------------------+-------------------------+
+ | 3004 | Subnet-Conflict | Subnets in the |
+ | | | address pool have |
+ | | | been classified into |
+ | | | other clients. |
+ +-----------------+-----------------------+-------------------------+
+ | 3005-3999 | Unassigned | Unassigned error |
+ | | | codes for address |
+ | | | allocation. |
+ +-----------------+-----------------------+-------------------------+
+ | 4000 | Reserved | |
+ +-----------------+-----------------------+-------------------------+
+ | 4001 | Update-Fail-No-Res | The forwarding table |
+ | | | fails to be |
+ | | | delivered because |
+ | | | the forwarding |
+ | | | resources are |
+ | | | insufficient. |
+ +-----------------+-----------------------+-------------------------+
+ | 4002 | QoS-Update-Success | The QoS policy takes |
+ | | | effect. |
+ +-----------------+-----------------------+-------------------------+
+ | 4003 | QoS-Update-Sq-Fail | Failed to process |
+ | | | the queue in the QoS |
+ | | | policy. |
+ +-----------------+-----------------------+-------------------------+
+ | 4004 | QoS-Update-CAR-Fail | Processing of the |
+ | | | CAR in the QoS |
+ | | | policy fails. |
+ +-----------------+-----------------------+-------------------------+
+ | 4005 | Statistic-Fail-No-Res | Statistics |
+ | | | processing failed |
+ | | | due to insufficient |
+ | | | statistics |
+ | | | resources. |
+ +-----------------+-----------------------+-------------------------+
+ | 4006-4999 | Unassigned | Unassigned |
+ | | | forwarding table |
+ | | | delivery error |
+ | | | codes. |
+ +-----------------+-----------------------+-------------------------+
+ | 5000-4294967295 | Reserved | |
+ +-----------------+-----------------------+-------------------------+
+
+ Table 9: Error Codes
+
+8.6. If-Type Values
+
+ Defined values of the If-Type field in the If-Desc sub-TLV (see
+ Section 7.3.4) are as follows:
+
+ +-------+--------------------+
+ | Value | Meaning |
+ +=======+====================+
+ | 0 | Reserved |
+ +-------+--------------------+
+ | 1 | Fast Ethernet (FE) |
+ +-------+--------------------+
+ | 2 | GE |
+ +-------+--------------------+
+ | 3 | 10GE |
+ +-------+--------------------+
+ | 4 | 100GE |
+ +-------+--------------------+
+ | 5 | Eth-Trunk |
+ +-------+--------------------+
+ | 6 | Tunnel |
+ +-------+--------------------+
+ | 7 | VE |
+ +-------+--------------------+
+ | 8-254 | Unassigned |
+ +-------+--------------------+
+ | 255 | Reserved |
+ +-------+--------------------+
+
+ Table 10: If-Type Values
+
+8.7. Access-Mode Values
+
+ Defined values of the Access-Mode field in the BAS Function TLV (see
+ Section 7.7) are as follows:
+
+ +-------+---------------------+
+ | Value | Meaning |
+ +=======+=====================+
+ | 0 | Layer 2 subscriber |
+ +-------+---------------------+
+ | 1 | Layer 3 subscriber |
+ +-------+---------------------+
+ | 2 | Layer 2 leased line |
+ +-------+---------------------+
+ | 3 | Layer 3 leased line |
+ +-------+---------------------+
+ | 4-254 | Unassigned |
+ +-------+---------------------+
+ | 255 | Reserved |
+ +-------+---------------------+
+
+ Table 11: Access-Mode Values
+
+8.8. Access Method Bits
+
+ Defined values of the Auth-Method4 and Auth-Method6 fields in the BAS
+ Function TLV (see Section 7.7) are defined as bit fields as follows:
+
+ +------+-------------------------+
+ | Bit | Meaning |
+ +======+=========================+
+ | 0x01 | PPPoE authentication |
+ +------+-------------------------+
+ | 0x02 | DOT1X authentication |
+ +------+-------------------------+
+ | 0x04 | Web authentication |
+ +------+-------------------------+
+ | 0x08 | Web fast authentication |
+ +------+-------------------------+
+ | 0x10 | Binding authentication |
+ +------+-------------------------+
+ | 0x20 | Reserved |
+ +------+-------------------------+
+ | 0x40 | Reserved |
+ +------+-------------------------+
+ | 0x80 | Reserved |
+ +------+-------------------------+
+
+ Table 12: Auth-Method4 Values
+
+ +------+-------------------------+
+ | Bit | Meaning |
+ +======+=========================+
+ | 0x01 | PPPoE authentication |
+ +------+-------------------------+
+ | 0x02 | DOT1X authentication |
+ +------+-------------------------+
+ | 0x04 | Web authentication |
+ +------+-------------------------+
+ | 0x08 | Web fast authentication |
+ +------+-------------------------+
+ | 0x10 | Binding authentication |
+ +------+-------------------------+
+ | 0x20 | Reserved |
+ +------+-------------------------+
+ | 0x40 | Reserved |
+ +------+-------------------------+
+ | 0x80 | Reserved |
+ +------+-------------------------+
+
+ Table 13: Auth-Method6 Values
+
+8.9. Route-Type Values
+
+ Values of the Route-Type field in the IPv4 and IPv6 Routing TLVs (see
+ Sections 7.8.1 and 7.8.2) defined in this document are as follows:
+
+ +---------+---------------------------------+
+ | Value | Meaning |
+ +=========+=================================+
+ | 0 | User host route |
+ +---------+---------------------------------+
+ | 1 | Radius authorization FrameRoute |
+ +---------+---------------------------------+
+ | 2 | Network segment route |
+ +---------+---------------------------------+
+ | 3 | Gateway route |
+ +---------+---------------------------------+
+ | 4 | Radius authorized IP route |
+ +---------+---------------------------------+
+ | 5 | L2TP LNS side user route |
+ +---------+---------------------------------+
+ | 6-65534 | Unassigned |
+ +---------+---------------------------------+
+ | 65535 | Reserved |
+ +---------+---------------------------------+
+
+ Table 14: Route-Type Values
+
+8.10. Access-Type Values
+
+ Values of the Access-Type field in the Basic Subscriber TLV (see
+ Section 7.9.1) defined in this document are as follows:
+
+ +--------+---------------------------------------------------------+
+ | Value | Meaning |
+ +========+=========================================================+
+ | 0 | Reserved |
+ +--------+---------------------------------------------------------+
+ | 1 | PPP access (PPP [RFC1661]) |
+ +--------+---------------------------------------------------------+
+ | 2 | PPP over Ethernet over ATM access (PPPoEoA) |
+ +--------+---------------------------------------------------------+
+ | 3 | PPP over ATM access (PPPoA [RFC3336]) |
+ +--------+---------------------------------------------------------+
+ | 4 | PPP over Ethernet access (PPPoE [RFC2516]) |
+ +--------+---------------------------------------------------------+
+ | 5 | PPPoE over VLAN access (PPPoEoVLAN [RFC2516]) |
+ +--------+---------------------------------------------------------+
+ | 6 | PPP over LNS access (PPPoLNS) |
+ +--------+---------------------------------------------------------+
+ | 7 | IP over Ethernet DHCP access (IPoE_DHCP) |
+ +--------+---------------------------------------------------------+
+ | 8 | IP over Ethernet EAP authentication access (IPoE_EAP) |
+ +--------+---------------------------------------------------------+
+ | 9 | IP over Ethernet Layer 3 access (IPoE_L3) |
+ +--------+---------------------------------------------------------+
+ | 10 | IP over Ethernet Layer 2 Static access (IPoE_L2_STATIC) |
+ +--------+---------------------------------------------------------+
+ | 11 | Layer 2 Leased Line access (L2_Leased_Line) |
+ +--------+---------------------------------------------------------+
+ | 12 | Layer 2 VPN Leased Line access (L2VPN_Leased_Line) |
+ +--------+---------------------------------------------------------+
+ | 13 | Layer 3 Leased Line access (L3_Leased_Line) |
+ +--------+---------------------------------------------------------+
+ | 14 | Layer 2 Leased line Sub-User access |
+ | | (L2_Leased_Line_SUB_USER) |
+ +--------+---------------------------------------------------------+
+ | 15 | L2TP LAC tunnel access (L2TP_LAC) |
+ +--------+---------------------------------------------------------+
+ | 16 | L2TP LNS tunnel access (L2TP_LNS) |
+ +--------+---------------------------------------------------------+
+ | 17-254 | Unassigned |
+ +--------+---------------------------------------------------------+
+ | 255 | Reserved |
+ +--------+---------------------------------------------------------+
+
+ Table 15: Access-Type Values
+
+9. IANA Considerations
+
+ This document has no IANA actions.
+
+10. Security Considerations
+
+ The Service, Control, and Management Interfaces between the CP and UP
+ might be across the general Internet or other hostile environment.
+ The ability of an adversary to block or corrupt messages or introduce
+ spurious messages on any one or more of these interfaces would give
+ the adversary the ability to stop subscribers from accessing network
+ services, disrupt existing subscriber sessions, divert traffic, mess
+ up accounting statistics, and generally cause havoc. Damage would
+ not necessarily be limited to one or a few subscribers but could
+ disrupt routing or deny service to one or more instances of the CP or
+ otherwise cause extensive interference. If the adversary knows the
+ details of the UP equipment and its forwarding rule capabilities, the
+ adversary may be able to cause a copy of most or all user data to be
+ sent to an address of the adversary's choosing, thus enabling
+ eavesdropping.
+
+ Thus, appropriate protections MUST be implemented to provide
+ integrity, authenticity, and secrecy of traffic over those
+ interfaces. Whether such protection is used is the decision of the
+ network operator. See [RFC6241] for Mi/NETCONF security. Security
+ on the Si is dependent on the tunneling protocol used, which is out
+ of scope for this document. Security for the Ci, over which S-CUSP
+ flows, is further discussed below.
+
+ S-CUSP messages do not provide security. Thus, if these messages are
+ exchanged in an environment where security is a concern, that
+ security MUST be provided by another protocol such as TLS 1.3
+ [RFC8446] or IPsec. TLS 1.3 is the mandatory-to-implement protocol
+ for interoperability. The use of a particular security protocol on
+ the Ci is determined by configuration. Such security protocols need
+ not always be used, and lesser security precautions might be
+ appropriate because, in some cases, the communication between the CP
+ and UP is in a benign environment.
+
+11. References
+
+11.1. Normative References
+
+ [RFC20] Cerf, V., "ASCII format for network interchange", STD 80,
+ RFC 20, DOI 10.17487/RFC0020, October 1969,
+ <https://www.rfc-editor.org/info/rfc20>.
+
+ [RFC793] Postel, J., "Transmission Control Protocol", STD 7,
+ RFC 793, DOI 10.17487/RFC0793, September 1981,
+ <https://www.rfc-editor.org/info/rfc793>.
+
+ [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>.
+
+ [RFC2661] Townsley, W., Valencia, A., Rubens, A., Pall, G., Zorn,
+ G., and B. Palter, "Layer Two Tunneling Protocol "L2TP"",
+ RFC 2661, DOI 10.17487/RFC2661, August 1999,
+ <https://www.rfc-editor.org/info/rfc2661>.
+
+ [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson,
+ "Remote Authentication Dial In User Service (RADIUS)",
+ RFC 2865, DOI 10.17487/RFC2865, June 2000,
+ <https://www.rfc-editor.org/info/rfc2865>.
+
+ [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
+ and A. Bierman, Ed., "Network Configuration Protocol
+ (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
+ <https://www.rfc-editor.org/info/rfc6241>.
+
+ [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>.
+
+11.2. Informative References
+
+ [802.1Q] IEEE, "IEEE Standard for Local and metropolitan area
+ networks--Bridges and Bridged Networks", IEEE 802.1Q-2018,
+ DOI 10.1109/IEEESTD.2018.8403927, July 2018,
+ <https://doi.org/10.1109/IEEESTD.2018.8403927>.
+
+ [RFC1661] Simpson, W., Ed., "The Point-to-Point Protocol (PPP)",
+ STD 51, RFC 1661, DOI 10.17487/RFC1661, July 1994,
+ <https://www.rfc-editor.org/info/rfc1661>.
+
+ [RFC2131] Droms, R., "Dynamic Host Configuration Protocol",
+ RFC 2131, DOI 10.17487/RFC2131, March 1997,
+ <https://www.rfc-editor.org/info/rfc2131>.
+
+ [RFC2516] Mamakos, L., Lidl, K., Evarts, J., Carrel, D., Simone, D.,
+ and R. Wheeler, "A Method for Transmitting PPP Over
+ Ethernet (PPPoE)", RFC 2516, DOI 10.17487/RFC2516,
+ February 1999, <https://www.rfc-editor.org/info/rfc2516>.
+
+ [RFC2698] Heinanen, J. and R. Guerin, "A Two Rate Three Color
+ Marker", RFC 2698, DOI 10.17487/RFC2698, September 1999,
+ <https://www.rfc-editor.org/info/rfc2698>.
+
+ [RFC3022] Srisuresh, P. and K. Egevang, "Traditional IP Network
+ Address Translator (Traditional NAT)", RFC 3022,
+ DOI 10.17487/RFC3022, January 2001,
+ <https://www.rfc-editor.org/info/rfc3022>.
+
+ [RFC3336] Thompson, B., Koren, T., and B. Buffam, "PPP Over
+ Asynchronous Transfer Mode Adaptation Layer 2 (AAL2)",
+ RFC 3336, DOI 10.17487/RFC3336, December 2002,
+ <https://www.rfc-editor.org/info/rfc3336>.
+
+ [RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax
+ Used to Form Encoding Rules in Various Routing Protocol
+ Specifications", RFC 5511, DOI 10.17487/RFC5511, April
+ 2009, <https://www.rfc-editor.org/info/rfc5511>.
+
+ [RFC7042] Eastlake 3rd, D. and J. Abley, "IANA Considerations and
+ IETF Protocol and Documentation Usage for IEEE 802
+ Parameters", BCP 141, RFC 7042, DOI 10.17487/RFC7042,
+ October 2013, <https://www.rfc-editor.org/info/rfc7042>.
+
+ [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger,
+ L., Sridhar, T., Bursell, M., and C. Wright, "Virtual
+ eXtensible Local Area Network (VXLAN): A Framework for
+ Overlaying Virtualized Layer 2 Networks over Layer 3
+ Networks", RFC 7348, DOI 10.17487/RFC7348, August 2014,
+ <https://www.rfc-editor.org/info/rfc7348>.
+
+ [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
+ Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
+ <https://www.rfc-editor.org/info/rfc8446>.
+
+ [TR-384] Broadband Forum, "Cloud Central Office Reference
+ Architectural Framework", BBF TR-384, January 2018.
+
+ [WT-459] Broadband Forum, "Control and User Plane Separation for a
+ Disaggregated BNG", BBF WT-459, 2019.
+
+Acknowledgements
+
+ The helpful comments and suggestions from the following individuals
+ are hereby acknowledged:
+
+ * Loa Andersson
+
+ * Greg Mirsky
+
+Contributors
+
+ Zhenqiang Li
+ China Mobile
+ 32 Xuanwumen West Ave
+ Xicheng District
+ Beijing
+ 100053
+ China
+
+ Email: lizhenqiang@chinamobile.com
+
+
+ Mach(Guoyi) Chen
+ Huawei Technologies
+ Huawei Bldg., No. 156 Beiqing Road
+ Beijing
+ 100095
+ China
+
+ Email: mach.chen@huawei.com
+
+
+ Zhouyi Yu
+ Huawei Technologies
+
+ Email: yuzhouyi@huawei.com
+
+
+ Chengguang Niu
+ Huawei Technologies
+
+ Email: chengguang.niu@huawei.com
+
+
+ Zitao Wang
+ Huawei Technologies
+
+ Email: wangzitao@huawei.com
+
+
+ Jun Song
+ Huawei Technologies
+
+ Email: song.jun@huawei.com
+
+
+ Dan Meng
+ H3C Technologies
+ No. 1 Lixing Center
+ No. 8 Guangxun South Street
+ Chaoyang District
+ Beijing
+ 100102
+ China
+
+ Email: mengdan@h3c.com
+
+
+ Hanlei Liu
+ H3C Technologies
+ No. 1 Lixing Center
+ No. 8 Guangxun South Street
+ Chaoyang District
+ Beijing
+ 100102
+ China
+
+ Email: hanlei_liu@h3c.com
+
+
+ Victor Lopez
+ Telefonica
+ Spain
+
+ Email: victor.lopezalvarez@telefonica.com
+
+
+Authors' Addresses
+
+ Shujun Hu
+ China Mobile
+ 32 Xuanwumen West Ave
+ Xicheng District
+ Beijing
+ 100053
+ China
+
+ Email: hushujun@chinamobile.com
+
+
+ Donald Eastlake 3rd
+ Futurewei Technologies
+ 2386 Panoramic Circle
+ Apopka, FL 32703
+ United States of America
+
+ Phone: +1-508-333-2270
+ Email: d3e3e3@gmail.com
+
+
+ Fengwei Qin
+ China Mobile
+ 32 Xuanwumen West Ave
+ Xicheng District
+ Beijing
+ 100053
+ China
+
+ Email: qinfengwei@chinamobile.com
+
+
+ Tee Mong Chua
+ Singapore Telecommunications Limited
+ 31 Exeter Road, #05-04 Comcentre Podium Block
+ SINGAPORE 239732
+ Singapore
+
+ Email: teemong@singtel.com
+
+
+ Daniel Huang
+ ZTE
+
+ Email: huang.guangping@zte.com.cn