PCE Working Group | U. Palle |
Internet-Draft | D. Dhody |
Intended status: Standards Track | S. Karunanithi |
Expires: December 30, 2017 | Huawei Technologies |
June 28, 2017 |
LABEL-DB Synchronization Procedures for a PCE as a central controller(PCECC)
draft-palle-pce-controller-labeldb-sync-01
PCE as a central controller specifies the procedures and PCEP protocol extensions where LSPs are calculated/setup/initiated and label forwarding entries are downloaded through a centralized PCE server to each network devices along the LSP path while leveraging the existing PCE technologies as much as possible.
Labels downloaded to forwarding entries requires a reliable synchronization mechanism between the path computation clients (PCCs) and the PCE. The basic mechanism for label database (LABEL-DB synchronization is part of the PCE as a central controller specification. This document presents motivations for optimizations to the LABEL-DB synchronization and the corresponding PCEP procedures and extensions.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 30, 2017.
Copyright (c) 2017 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 (http://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. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
[I-D.zhao-pce-pcep-extension-for-pce-controller] specify the procedures and PCEP protocol extensions for using the PCE as the central controller [I-D.ietf-teas-pce-central-control] and user cases where LSPs are calculated/setup/initiated/downloaded through extending the existing PCE architectures and PCEP.
[I-D.zhao-pce-pcep-extension-for-pce-controller] and [I-D.zhao-pce-pcep-extension-for-sr-pce-controller] specifies reliable synchronization mechanism between the path computation clients (PCCs) and the PCECC.
This draft specify the optimizations for LABEL-DB synchronization and the corresponding PCEP procedures and extensions.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
PCECC MUST maintains the LABEL-DB for each PCEP session separately. The purpose of LABEL-DB synchronization is to make sure that the PCECC's view of LABEL-DB matches with the PCC's LABEL-DB. The LABEL-DB synchronization MUST be performed from PCECC to PCC immediately after the LSP state synchronization. [I-D.ietf-pce-stateful-pce] describes the basic mechanism for LSP state synchronization. [I-D.ietf-pce-stateful-sync-optimizations] describes the optimizations for LSP state synchronization.
Full LABEL-DB synchronization performed from PCECC to PCC on Initial session UP or every session flap is described in [I-D.zhao-pce-pcep-extension-for-pce-controller] and [I-D.zhao-pce-pcep-extension-for-sr-pce-controller].
Providing an Optimizations for LABEL-DB synchronization can result in significant savings in both control-plane data exchanges and the time it takes for the PCC to become fully operational.
Optimizations for LABEL-DB synchronization describes the need that both PCEP speakers support label database version capability and maintain label database version for each session. See Section 3 for detail procedures.
This section add some of the optimization mechanisms for LABEL-DB synchronization. By default, the full LABEL-DB synchronization is performed.
The LABEL-DB synchronization MAY be skipped following a PCEP session restart if there is no change in the LABEL-DB of the session at PCECC, during the period prior to session re-initialization. To be able to make this determination, labels must be exchanged and maintained by both PCECC and PCC during normal operation. This is accomplished by keeping track of the changes to the label database, using a version tracking field called the Label Database Version Number.
The Label Database Version Number, carried in LABEL-DB-VERSION TLV (see Section 4.3), is owned by a PCECC and it MUST be incremented by 1 for each successive change in the PCECC's label database. The Label Database Version Number MUST start at 1 and may wrap around. Values 0 and 0xFFFFFFFFFFFFFFFF are reserved. If either of the two values are used during LABEL-DB synchronization, the PCC speaker receiving this node should send back a PCErr with Error-type TBD1 Error-value 3 'Received an invalid Label Database Version Number', and close the PCEP session. Operations that trigger a change to the Label database include an addition or deletion of labels that would trigger a label update to the PCC.
LABEL-DB synchronization avoidance is advertised on a PCEP session during session startup using the INCLUDE-LABEL-DB-VERSION (I) bit in the PCECC capability TLV (see Section 4.2). The PCEP peer MAY include the SPEAKER-ENTITY-ID TLV described in [I-D.ietf-pce-stateful-sync-optimizations] in the OPEN message to identify the peer in case of IP address change.
If both PCEP speakers set the I flag in the OPEN object's PCECC Capability TLV to 1, the PCECC MUST include the LABEL-DB-VERSION TLV in each LABEL object of the PCLabelUpd message. If the LABEL-DB-VERSION TLV is missing in a PCLabelUpd message, the PCC will generate an error with Error-Type 6 (mandatory object missing) and Error-Value TBD2 'LABEL-DB-VERSION TLV missing' and close the session. If LABEL-DB synchronization avoidance has not been enabled on a PCEP session, the PCECC SHOULD NOT include the LABEL-DB-VERSION TLV in the LABEL Object and the PCC SHOULD ignore it were it to receive one.
If a PCC's label database survived the restart of a PCEP session, the PCC will include the LABEL-DB-VERSION TLV in its OPEN object, and the TLV will contain the last Label Database Version Number received on an Label Update from the PCECC in the previous PCEP session. If a PCECC's Label Database survived the restart of a PCEP session, the PCECC will include the LABEL-DB-VERSION TLV in its OPEN object and the TLV will contain the latest Label Database Version Number. If a PCEP speaker's label database did not survive the restart of a PCEP session, the PCEP speaker MUST NOT include the LABEL-DB-VERSION TLV in the OPEN object.
If both PCEP speakers include the LABEL-DB-VERSION TLV in the OPEN Object and the TLV values match, the PCECC MAY skip LABEL-DB synchronization. Otherwise, the PCECC MUST perform full LABEL-DB synchronization ([I-D.zhao-pce-pcep-extension-for-pce-controller] and [I-D.zhao-pce-pcep-extension-for-sr-pce-controller]) or incremental LABEL-DB synchronization (see Section 3.2) to the PCC, Incase, the PCECC attempts to skip LABEL-DB synchronization, by setting the SYNC Flag to 0 on the first Label Update from the PCECC, the PCC MUST send back a PCErr with Error-type TBD1 (Label Database Synchronization Error) and Error-value 4(Label Database Version mismatch), and close the PCEP session.
If LABEL-DB synchronization is required, then prior to completing the initialization phase, the PCC MUST mark any labels in the label database that were previously updated by the PCECC as stale. When the PCECC updates a label during LABEL-DB synchronization, if the label already exists in the label database, the PCC MUST update the label database and clear the stale marker from the label. When it has finished LABEL-DB synchronization, the PCECC MUST immediately send an end of synchronization marker. The end of synchronization marker is a Path Computation Label Update (PCLabelUpd) message with a SRP object containing the SYNC flag set to 0 (see Section 4.1) and Label as 0 in the LABEL object. The LABEL-DB-VERSION TLV MUST be included in this PCLabelUpd message. On receiving this Label Update, the PCC MUST report all the labels in the label database that are still marked as stale to PCECC.
Note that a PCECC/PCC MAY force LABEL-DB synchronization by not including the LABEL-DB-VERSION TLV in its OPEN object.
Figure 1 shows an example sequence where the LABEL-DB synchronization is skipped.
+-+-+-+ +-+-+ |PCECC| |PCC| +-+-+-+ +-+-+ | ,----Open---| | / DBv=35 | |--Open--, / I=1 | | DBv=35 \ / | | I=1 \ / | | \/ | | /\ | | / `------------->| (OK to skip sync) (Skip sync) |<--------` | | . | | . | | . | | | |--PCLabelUpd,DBv=36,SYNC=0-->| (Regular | | Label Update) |--PCLabelUpd,DBv=37,SYNC=0-->| (Regular | | Label Update) |--PCLabelUpd,DBv=38,SYNC=0-->| | |
Figure 1: LABEL-DB synchronization Skipped
Figure 2 shows an example sequence where the LABEL-DB synchronization is performed due to label database version mismatch during the PCEP session setup. Note that the same LABEL-DB synchronization sequence would happen if either the PCC or the PCECC would not include the LABEL- DB-VERSION TLV in their respective Open messages.
+-+-+-+ +-+-+ |PCECC| |PCC| +-+-+-+ +-+-+ | ,----Open---| | / DBv=35 | |--Open--, / I=1 | | DBv=39 \ / | | I=1 \ / | | \/ | | /\ | | / `------------->| (Expect sync) (Do sync) |<--------` | | | |--PCLabelUpd,DBv=39,SYNC=1-->| (Sync start) | . | | . | | . | |--PCLabelUpd,DBv=39,SYNC=0-->| (Sync done) | . | | . | | . | |--PCLabelUpd,DBv=40,SYNC=0-->| (Regular | | Label Update) |--PCLabelUpd,DBv=41,SYNC=0-->| (Regular | | Label Update) |--PCLabelUpd,DBv=42,SYNC=0-->| | |
Figure 2: LABEL-DB synchronization Performed
Figure 3 shows an example sequence where the LABEL-DB synchronization is skipped, but because one or both PCEP speakers set the I Flag to 0, the PCECC does not send LABEL-DB-VERSION TLVs in subsequent PCLabelUpd messages to the PCC. If the current PCEP session restarts, the PCEP speakers will have to perform full LABEL-DB synchronization, since the PCC does not know the PCECC's latest Label Database Version Number information.
+-+-+-+ +-+-+ |PCECC| |PCC| +-+-+-+ +-+-+ | ,----Open---| | / DBv=43 | |--Open--, / I=0 | | DBv=43 \ / | | I=0 \ / | | \/ | | /\ | | / `------------->| (OK to skip sync) (Skip sync) |<--------` | | . | | . | | . | |------PCLabelUpd,SYNC=0----->| (Regular | | Label Update) |------PCLabelUpd,SYNC=0----->| (Regular | | Label Update) |------PCLabelUpd,SYNC=0----->| | |
Figure 3: LABEL-DB Synchronization Skipped, no LABEL-DB-VERSION TLVs sent from PCECC
If a PCC restarts and its label database survived, PCECC with mismatched Label Database Version Number will send all their Labels information (full LABEL-DB) to the PCC, even if only a small number of changes happened. It can take a long time and consume large communication channel bandwidth.
This section extends the idea to only synchronize the delta (changes) in case of Label Database Version Number of both PCEP peers is non-zero and mismatch.
If both PCEP speakers include the LABEL-DB-VERSION TLV in the OPEN object and the LABEL-DB-VERSION TLV values match, the PCECC MAY skip LABEL-DB synchronization. Otherwise, the PCECC MUST perform LABEL-DB synchronization. Incremental label database synchronization capability is advertised on a PCEP session during session startup using the DELTA-LABEL-SYNC-CAPABILITY (D) bit in the capabilities TLV (see Section 4.2). Instead of dumping full LABEL-DB to the PCC again, the PCECC synchronizes the delta (changes) as described in Figure 4 when D flag and I flag is set to 1 by both PCC and PCECC. Other combinations of D and I flags setting by PCC and PCECC result in full LABEL-DB synchronization procedure as described in [I-D.zhao-pce-pcep-extension-for-pce-controller] and [I-D.zhao-pce-pcep-extension-for-sr-pce-controller]. The PCECC MAY force a full LABEL-DB synchronization by setting the D flag to zero in the OPEN message.
+-+-+-+ +-+-+ |PCECC| |PCC| +-+-+-+ +-+-+ | ,----Open---| | / DBv=35 | |--Open--, / I=1 | | DBv=39 \ / D=1 | | I=1 \ / | | \/ | | /\ | | / `------------->| (Expect Delta sync) (Do sync)|<--------` | (Delta) | | | | (Delta |--PCLabelUpd,DBv=39,SYNC=1-->| Sync starts) | . | | . | | . | | . | |--PCLabelUpd,DBv=39,SYNC=0-->| (Sync done) | | | | |--PCLabelUpd,DBv=40,SYNC=0-->| (Regular | | Label Update) |--PCLabelUpd,DBv=41,SYNC=0-->| (Regular | | Label Update) |--PCLabelUpd,DBv=42,SYNC=0-->| | |
Figure 4: Incremental Synchronization Procedure
As per Section 3.1, the Label Database Version Number is incremented each time a change is made to the PCECC's label database. Each label is associated with the DB version at the time of its addition. This is needed to determine which label and what information needs to be synchronized in incremental LABEL-DB synchronization.
It is not necessary for a PCECC to store a complete history of label database change, but rather remember the labels (including label addition and deletion) that happened between the PCEP session(s) restart in order to carry out incremental LABEL-DB synchronization. After the synchronization procedure finishes, the PCECC can dump this history information. In the example shown in Figure 4, the PCECC needs to store the label changes that happened between DB Version 35 to 39 and synchronizes these changes only when performing incremental label update. So a PCECC needs to remember at least the label changes that happened after an existing PCEP session with a PCC goes down to have any chance of doing incremental synchronization when the session is re-established.
If a PCECC finds out it does not have sufficient information to complete incremental synchronization after advertising incremental LABEL-DB synchronization capability, it MUST send a PCErr with Error-Type TBD1 and Error-Value 5 'A PCECC indicates to a PCC that it can not complete the LABEL-DB synchronization' and terminate the session. The PCECC SHOULD re-establish the session with the D bit set to 0 in the OPEN message.
The other procedures and error checks remain unchanged from the default LABEL-DB synchronization defined in [I-D.zhao-pce-pcep-extension-for-pce-controller] and [I-D.zhao-pce-pcep-extension-for-sr-pce-controller].
SRP object extension for SYNC flag to specify the LABEL-DB synchronization operation is defined in [I-D.zhao-pce-pcep-extension-for-pce-controller].
PCECC Capability TLV is defined in [I-D.zhao-pce-pcep-extension-for-pce-controller]. This draft defines a new 'INCLUDE-LABEL-DB-VERSION' flag (I bit) to specify the label database version capability and 'DELTA-LABEL-SYNC-CAPABILITY' to specify the incremental label database synchronization capability.
The TLV format is as per [RFC5440]. The format of the PCECC Capability TLV is shown Figure 5:
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=4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags |D|I|S| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: PCECC Capability TLV
I (INCLUDE-LABEL-DB-VERSION - 1 bit): if set to 1 by both PCEP Speakers, the PCECC will include the LABEL-DB-VERSION TLV in each LABEL Object.
D (DELTA-LABEL-SYNC-CAPABILITY - 1 bit): if set to 1 by a PCEP speaker, it indicates that the PCEP speaker allows incremental (delta) LABEL-DB synchronization.
The Label Database Version Number (LABEL-DB-VERSION) TLV is an optional TLV that MAY be included in the OPEN object and the LABEL object.
The TLV format is as per [RFC5440]. The format of the LABEL-DB-VERSION TLV is shown in the following figure:
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=[TBD3] | Length=8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label Database Version Number | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6: LABEL-DB-VERSION TLV format
The type of the TLV is [TBD3] and it has a fixed length of 8 octets. The value contains a 64-bit unsigned integer, representing the Label Database Version Number.
IANA is requested to confirm the early allocation of the following TLV Type Indicator values within the "PCEP TLV Type Indicators" sub- registry of the PCEP Numbers registry, and to update the reference in the registry to point to this document, when it is an RFC:
Value | Meaning | Reference |
---|---|---|
[TBD] | LABEL-DB-VERSION TLV | This document |
[I-D.zhao-pce-pcep-extension-for-pce-controller] defines the PCECC-CAPABILITY TLV and [I-D.zhao-pce-pcep-extension-for-sr-pce-controller] extends this TLV to add PCECC-SR-CAPABILITY.
Requests that IANA creates a registry to manage the value of the new PCECC-CAPABILITY TLV's Flag field. IANA is requested to allocate a new bits in the PCECC-CAPABILITY TLV Flag Field registry, as follows:
Bit | Description | Reference |
---|---|---|
30 | I (INCLUDE-LABEL-DB-VERSION ) | This document |
29 | D (DELTA-LABEL-SYNC-CAPABILITY) | This document |
All manageability requirements and considerations listed in [RFC5440], [I-D.ietf-pce-stateful-pce] and [I-D.zhao-pce-pcep-extension-for-pce-controller] apply to PCEP protocol extensions defined in this document. In addition, requirements and considerations listed in this section apply.
The security considerations listed in [I-D.ietf-pce-stateful-pce] and [I-D.zhao-pce-pcep-extension-for-pce-controller] apply to this document as well. Securing the PCEP session using Transport Layer Security (TLS) [I-D.ietf-pce-pceps], as per the recommendations and best current practices in [RFC7525], is RECOMMENDED.
This document borrows some of the structure and text from [I-D.ietf-pce-stateful-sync-optimizations], and would like to thanks the authors and contributors of the document.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC5440] | Vasseur, JP. and JL. Le Roux, "Path Computation Element (PCE) Communication Protocol (PCEP)", RFC 5440, DOI 10.17487/RFC5440, March 2009. |
[I-D.ietf-pce-stateful-pce] | Crabbe, E., Minei, I., Medved, J. and R. Varga, "PCEP Extensions for Stateful PCE", Internet-Draft draft-ietf-pce-stateful-pce-21, June 2017. |
[I-D.zhao-pce-pcep-extension-for-pce-controller] | Zhao, Q., Li, Z., Dhody, D. and C. Zhou, "PCEP Procedures and Protocol Extensions for Using PCE as a Central Controller (PCECC) of LSPs", Internet-Draft draft-zhao-pce-pcep-extension-for-pce-controller-04, January 2017. |