]> git.proxmox.com Git - mirror_frr.git/commit - redhat/frr.spec.in
pathd: New SR-TE policy management daemon
authorSebastien Merle <sebastien@netdef.org>
Fri, 31 Jul 2020 16:04:20 +0000 (18:04 +0200)
committerSebastien Merle <sebastien@netdef.org>
Fri, 18 Dec 2020 15:34:02 +0000 (16:34 +0100)
commit4d7b695d3abe80fbb1b666aed8faa1b9e9387fdb
tree9dc538cd213acebfe50152a048799f4f09bbcbc9
parent30ff2a502e41a048d5033b5d1f8ac32dd715eddc
pathd: New SR-TE policy management daemon

This new daemon manages Segment-Routing Traffic-Engineering
(SR-TE) Policies and installs them into zebra. It provides
the usual yang support and vtysh commands to define or change
SR-TE Policies.

In a nutshell SR-TE Policies provide the possibility to steer
traffic through a (possibly dynamic) list of Segment Routing
segments to the endpoint of the policy. This list of segments
is part of a Candidate Path which again belongs to the SR-TE
Policy. SR-TE Policies are uniquely identified by their color
and endpoint. The color can be used to e.g. match BGP
communities on incoming traffic.

There can be multiple Candidate Paths for a single
policy, the active Candidate Path is chosen according to
certain conditions of which the most important is its
preference. Candidate Paths can be explicit (fixed list of
segments) or dynamic (list of segment comes from e.g. PCEP, see
below).

Configuration example:

segment-routing
 traffic-eng
  segment-list SL
   index 10 mpls label 1111
   index 20 mpls label 2222
  !
  policy color 4 endpoint 10.10.10.4
   name POL4
   binding-sid 104
   candidate-path preference 100 name exp explicit segment-list SL
   candidate-path preference 200 name dyn dynamic
  !
 !
!

There is an important connection between dynamic Candidate
Paths and the overall topic of Path Computation. Later on for
pathd a dynamic module will be introduced that is capable
of communicating via the PCEP protocol with a PCE (Path
Computation Element) which again is capable of calculating
paths according to its local TED (Traffic Engineering Database).
This dynamic module will be able to inject the mentioned
dynamic Candidate Paths into pathd based on calculated paths
from a PCE.

https://tools.ietf.org/html/draft-ietf-spring-segment-routing-policy-06

Co-authored-by: Sebastien Merle <sebastien@netdef.org>
Co-authored-by: Renato Westphal <renato@opensourcerouting.org>
Co-authored-by: GalaxyGorilla <sascha@netdef.org>
Co-authored-by: Emanuele Di Pascale <emanuele@voltanet.io>
Signed-off-by: Sebastien Merle <sebastien@netdef.org>
81 files changed:
Makefile.am
configure.ac
doc/developer/index.rst
doc/developer/path-internals-daemon.rst [new file with mode: 0644]
doc/developer/path-internals.rst [new file with mode: 0644]
doc/developer/path.rst [new file with mode: 0644]
doc/developer/subdir.am
doc/user/index.rst
doc/user/pathd.rst [new file with mode: 0644]
doc/user/subdir.am
lib/command.c
lib/command.h
lib/ferr.h
lib/yang.c
pathd/.gitignore [new file with mode: 0644]
pathd/Makefile [new file with mode: 0644]
pathd/path_cli.c [new file with mode: 0644]
pathd/path_debug.c [new file with mode: 0644]
pathd/path_debug.h [new file with mode: 0644]
pathd/path_errors.c [new file with mode: 0644]
pathd/path_errors.h [new file with mode: 0644]
pathd/path_main.c [new file with mode: 0644]
pathd/path_memory.c [new file with mode: 0644]
pathd/path_memory.h [new file with mode: 0644]
pathd/path_nb.c [new file with mode: 0644]
pathd/path_nb.h [new file with mode: 0644]
pathd/path_nb_config.c [new file with mode: 0644]
pathd/path_nb_state.c [new file with mode: 0644]
pathd/path_zebra.c [new file with mode: 0644]
pathd/path_zebra.h [new file with mode: 0644]
pathd/pathd.c [new file with mode: 0644]
pathd/pathd.conf.sample [new file with mode: 0644]
pathd/pathd.h [new file with mode: 0644]
pathd/subdir.am [new file with mode: 0644]
redhat/frr.spec.in
tests/topotests/isis-sr-te-topo1/dst/zebra.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/bgpd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/isisd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/pathd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_with_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_without_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_add_segment.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_change_segment.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_active_srte.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_inactive_srte.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_active.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_inactive.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt1/zebra.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt2/isisd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt2/zebra.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt3/isisd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt3/zebra.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt4/isisd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt4/zebra.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt5/isisd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt5/zebra.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/bgpd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/isisd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/pathd.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_with_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_without_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/step4/show_mpls_table.ref [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/rt6/zebra.conf [new file with mode: 0644]
tests/topotests/isis-sr-te-topo1/test_isis_sr_te_topo1.py [new file with mode: 0755]
tests/topotests/lib/topogen.py
tests/topotests/lib/topotest.py
tools/frr-reload.py
tools/frr.in
vtysh/vtysh.c
vtysh/vtysh.h
yang/frr-pathd.yang [new file with mode: 0644]
yang/subdir.am