Skip to content

Latest commit

 

History

History
181 lines (140 loc) · 4.2 KB

getting-started.md

File metadata and controls

181 lines (140 loc) · 4.2 KB

Getting Started with Pola PCE

This page explains how to use Pola PCE.

Installation

From Go

go install github.com/nttcom/pola/cmd/polad@latest

From Source

git clone https://github.com/nttcom/pola.git
cd pola
go install ./cmd/polad

# or, install with cli command
go install ./...

From Container Image

See the Docker page.

Configuration

Configure the IP address and port for PCEP and gRPC. address must be a literal IPv4 or IPv6 address; hostnames are not resolved. See JSON schema for config details.

Disabling TED

To manage SR Policy without using TED, disable TED as follows.

global:
  pcep:
    address: "2001:0db8::254"
    port: 4189
  grpcServer:
    address: "127.0.0.1"
    port: 50051
  log:
    path: "/var/log/pola/"
    name: "polad.log"
  ted:
    enable: false
  usidMode: false

PCEP session timers

Advertising Pola's timers

global.pcep.keepalive and global.pcep.deadTimer configure the timers Pola advertises in its Open message (RFC 5440 §7.3). They default to 30 and 120 seconds. If keepalive is 0, deadTimer must also be 0.

global:
  pcep:
    address: "192.0.2.254"
    port: 4189
    keepalive: 30
    deadTimer: 120

Validating peer timers

global.pcep.minKeepalive and global.pcep.maxKeepalive limit the Keepalive value that Pola accepts from a peer's Open message (RFC 7420). Both are optional; omitting them disables validation.

If both are set, minKeepalive must be less than or equal to maxKeepalive.

global.pcep.allowNegotiation controls behavior when a peer's Keepalive is outside the configured range. It defaults to true, allowing Pola to negotiate the value; when false, the session is rejected.

global:
  pcep:
    address: "192.0.2.254"
    port: 4189
    keepalive: 30
    deadTimer: 120
    minKeepalive: 10
    maxKeepalive: 60

Enabling TED

To manage SR Policy using TED, enable TED as follows. This also enables dynamic path calculation.

TED updates require a supported BGP-LS source. Currently, only GoBGP is supported.

Underlay address family

Path computation runs on an underlay plane, a combination of address family and data plane.

Supported combinations:

underlayFamily dataPlane Status
ipv4 sr-mpls Supported
ipv6 sr-mpls Supported
ipv6 srv6 Supported
ipv4 srv6 Not applicable

A dynamic candidate path selects the plane with underlayFamily and dataPlane. If both are unspecified, Pola uses the headend's unique viable plane and rejects the request when multiple planes are available.

The endpoint and underlay address families are independent, so cross-AF policies are supported.

global:
  pcep:
    address: "192.0.2.254"
    port: 4189
  grpcServer:
    address: "127.0.0.1"
    port: 50052
  log:
    path: "/var/log/pola/"
    name: "polad.log"
  ted:
    enable: true
    source: "gobgp"
    asn: 65000
  gobgp:
    grpcClient:
      address: "127.0.0.1"
      port: 50051

Configure GoBGP as follows to enable BGP-LS.

global:
  config:
    as: 65000
    router-id: 10.255.0.254
neighbors:
- config:
    neighbor-address: 10.100.0.1
    peer-as: 65000
  transport:
    config:
      local-address: 10.100.0.254
  afi-safis:
  - config:
      afi-safi-name: ls

Known limitations

  • IOS-XR interoperability: IOS-XR 24.4.1 rejected IPv6-endpoint PCE-initiated SR-MPLS policies (pcinitiate: bad sock info).
  • Junos interoperability: Junos 25.2R1.9 rejected IPv6-endpoint PCE-initiated SR-MPLS policies (IPv6 SRPAG received for non SRv6 LSP).

Run Polad

Start polad. Specify the created configuration file with the -f option.

$ sudo polad -f polad.yaml
2022-06-05T22:57:59.823Z        info    gRPC listen     {"listenInfo": "127.0.0.1:50052", "server": "grpc"}
2022-06-05T22:57:59.823Z        info    PCEP listen     {"listenInfo": "192.0.2.254:4189"}

After Polad is running, use the pola CLI or gRPC client to manage the daemon.