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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
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).
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 [RFC 7042].
-
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].)
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
-
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.
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
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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 [
RFC 2698].
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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 [
RFC 2698].
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)
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).
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where:
-
-
IPv6 Address (IPv6-Address):
-
Each IP Address is of type IP-Address and carries an IPv6 address and length.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where:
-
-
Sub-TLV type:
-
13.
-
Sub-TLV length:
-
Variable.
-
Vendor-ID (4 bytes):
-
Vendor ID as defined in RADIUS [RFC 2865].
-
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 [RFC 2865].
-
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 messagecontaining this TLV as an unsigned integer. The minimum value for theKeepalive field is 1 second. When set to 0, once the session is established,no further Keepalive messages are sent to the remote peer. ARECOMMENDED value for the Keepalive frequency is 30seconds.
-
DeadTimer (8 bits in length):
-
Specifies the amountof time as an unsigned integer number of seconds, after the expiration ofwhich, the S-CUSP peer can declare the session with the sender of the Hellomessage to be down if no S-CUSP message has been received. The DeadTimerSHOULD be set to 0 and MUST be ignored if theKeepalive is set to 0. A RECOMMENDED value for the DeadTimer is4 times the value of the Keepalive.
-
Reserved:
-
The Reserved bits MUST be sent as zero and ignored on receipt.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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).
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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where:
-
-
F (IPv4 Trigger) bit:
-
Indicates whether IPv4 packets can trigger a subscriber to go online.
-
S (IPv6 Trigger) bit:
-
Indicates whether IPv6 packets can trigger a subscriber to go online.
-
A (ARP Trigger) bit:
-
Indicates whether ARP packets can trigger a subscriber to go online.
-
N (ND Trigger) bit:
-
Indicates whether ND packets can trigger a subscriber to go online.
-
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.
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.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
The Subscriber TLVs are defined for a CP to send the basic information about a user to a UP.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
-
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
-
Web-Force (W) (1 bit):
-
Push IPv4 Web.
-
Echo-Enable (E) (1 bit):
-
UP returns ARP Req or PPP Echo.
-
IPv4-URPF (U) (1 bit):
-
User Unicast Reverse Path Forwarding (URPF) flag.
-
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.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
-
Web-Force 1 bit (W):
-
Push IPv6 Web.
-
Echo-Enable 1 bit (E):
-
The UP returns ARP Req or PPP Echo.
-
IPv6-URPF 1 bit (U):
-
User Reverse Path Forwarding (URPF) flag.
-
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.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
-
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
The TLVs in this section are for reporting interface and board-level information from the UP to the CP.
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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
-
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
-
Reserved:
-
The Reserved field MUST be sent as zero and ignored on receipt.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where:
-
-
TLV type:
-
400.
-
TLV length:
-
Variable.
-
Pool-Name sub-TLV:
-
Indicates from which address pool to allocate address.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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.
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) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Where:
-
-
TLV type:
-
1024.
-
TLV length:
-
Variable.
-
Vendor-ID (4 bytes):
-
Vendor ID as defined in RADIUS [RFC 2865].
-
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.