Update PCEP Path Computation Documentation
[bgpcep.git] / docs / pcep / pcep-user-guide-path-computation.rst
1 .. _pcep-user-guide-path-computation:
2
3 Path Computation Server
4 =======================
5
6 This section describes how to use Path Computation Server bundle in
7 conjunction with the Path Computation Algorithm and Graph plugins. This Server
8 provides a full PCE component that fully supports RFC5440 including PcRequest
9 PcResponse messages exchanges from a PCC requesting a valid path to the PCE.
10
11 .. contents:: Contents
12    :depth: 2
13    :local:
14
15 Installation
16 ^^^^^^^^^^^^
17
18 Check that the feature ``features-algo`` is installed. Normally it will be
19 installed with the pcep feature ``features-pcep``. Otherwise, install it
20 with the following command:
21
22 .. code-block:: console
23
24     feature:install features-algo
25
26 Graph Setup
27 ^^^^^^^^^^^
28
29 The Path Computation Server uses the Path Computation Algorithm plugin which
30 needs a graph to be able to compute constrained paths. Thus, a valid graph must
31 be provided manually or automatically.
32
33 Manual activation
34 '''''''''''''''''
35
36 Create a new graph with the Rest API ``Create Graph``:
37
38 .. code-block:: console
39
40     PUT: restconf/config/graph:graph-topology
41
42 Refer to Graph documentation for details.
43
44 There is a restriction on the name of the graph due to the Path Computation
45 Algorithm integration. It must be started by **"ted://"** string in order to
46 be learn automatically by the Path Computation Server bundle.
47
48 Note that this kind of graph remains static. Thus, resources, mostly bandwidth,
49 are not updated after deploying some RSVP-TE tunnels which consume bandwidth.
50
51 BGP-LS activation
52 '''''''''''''''''
53
54 To achieve better experience, notably in conjunction with RSVP-TE and in order
55 to work on an up-to-date graph, an integration is provided with the BGP Link
56 State protocol. This allows to automatically fulfil a graph with network
57 traffic engineering information conveyed by the BGP-LS protocol. The resources,
58 mostly bandwidth, are automatically updated in the graph after deploying
59 an RSVP-TE tunnel. Note that this is not the case with Segment Routing.
60
61 For that purpose, just setup a BGP peering with a router that is BGP-LS
62 speaker and report traffic engineering network topology from IS-IS-TE or
63 OSPF-TE routing protocol. Refer to BGP documentation for the detail about
64 how to setup a BGP peering with Link-State family.
65
66 Once done, verify that the graph is correctly fulfil with the Rest API:
67
68 .. code-block:: console
69
70     GET: restconf/operational/graph:graph-topology
71
72 Usage
73 ^^^^^
74
75 There is two ways to use the Path Computation Server: through PcRequest and
76 with PcInitiate.
77
78 With PcRequest, just create a new tunnel on the router with an external PCE
79 for path computation. Once PcRequest received, the Path Computation Server
80 launches the path computation algorithm with requested parameters and in turn
81 sends back to the PCC a PcResponse message with the computed path in the ERO.
82 A NO-PATH object is returned in case of failure with the reason (e.g. source
83 or destination unknown, constraints not met ...). Check on the router that
84 the tunnel is up and running. Wireshark capture will help to determine
85 if the exchanges between the PCC and the PCE went well. Setting log debug for
86 algo and pcep plugins and looking to the log will also ease debugging.
87
88 With PcInitiate message, just use the PCEP Rest API to setup an LSP
89
90 .. code-block:: console
91
92     POST: /restconf/operations/network-topology-pcep:add-lsp
93
94 by omitting the ERO Object. Indeed, an automatic call to the Path Computation
95 Algorithm will be triggered when the ERO is absent or empty with the given
96 end-points and metrics objects as input paramters. Address family is
97 automatically deduced from the IP address family of the end-points object.
98 The same behaviour applies for Segment Routing: just add the *PST=1* indication
99 in the json or xml payload will force the address family of path computation
100 to Segment Routing.
101
102 To verify the result, just check the LSP-Database. The new LSP must have an
103 ERO automatically computed as well as an RRO. Again, setting log debug for algo
104 and pcep plugins and looking to the log will also help to verify that all is
105 conform as expected.
106
107 Known limitations
108 ^^^^^^^^^^^^^^^^^
109
110 As the Path Computation Server is in its initial release, there are some
111 limitations mentioned hereinafter:
112
113 * Following PCEP Objects that may be present in the PcRequest message are not
114   yet supported, and right now, ignored:
115
116   * Include Route Object (IRO)
117   * Exclude Route Object (XRO)
118   * Objective Function (OF)
119
120 * LSP-Update Rest API with an empty ERO will not trigger Path Computation
121   Algorithm. Use Path Computation Algorithm Rest API to get a new path, and
122   then use the LSP-Update Rest API as usual with the computed ERO.
123
124 * For Segment Routing, ERO is provided with Node SID for NAI and SID index.
125
126 * Due to the integration with BGP-LS, the graph name must start with *ted://*
127   tag in order to be automatically used by the pcep plugin.
128
129 * For Segment Routing, as network resources are not updated due to the lack
130   of signaling, the resources consumed by the new segment path are not updated
131   in the graph.
132
133 All these limitations will be solved in future releases.
134