Git Product home page Git Product logo

pola's Introduction

Pola

Pola PCE

Linter Releaser Go Report Card Go Reference Go version License

Pola PCE is an implementation of the Path Computation Element (PCE) and a PCEP Library in Go.

Features

  • Support for SRv6(full-SID/uSID) and SR-MPLS
  • Implementation of active stateful PCE functionality (PCInitiate, PCUpdate, etc.)
  • Dynamic and explicit SR policy definition using YAML
    • Dynamic path: Utilizes CSPF with GoBGP BGP-LS TED
    • Explicit path: Allows users to define and provision any Segment List

Interoperability

SR-MPLS

  • IOS-XR
  • Junos
  • FRRouting

SRv6 (full-SID)

  • Junos

SRv6 (uSID)

  • IOS-XR

Installation & Use

Contributing

If you are interested in contributing to the project, please refer to the CONTRIBUTING guidelines.
Feel free to fork the repository and create a Pull Request. Your contributions are highly appreciated.

Licensing

Pola PCE is licensed under the MIT license.
For the full license text, see LICENSE.

pola's People

Contributors

dependabot[bot] avatar enigamict avatar kanaya516 avatar motok1 avatar trustywolf avatar watal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pola's Issues

uSID path calculation

Description

  • Add uSID path calculation in Pola PCE

Motivation and Context

  • Add SR Policy using uSID
  • Achieve interoperability with IOS-XR

Prerequisite

  • Required to get uSID from BGP-LS

Handling when TED is nil

Implement the following functions

  • If TED is nil, do not calculate the route and return an error
  • Output to log that TED does not exist

Separate lsplist for each PCEP session

Sample format

{
    "peers": [
        {
            "peerAddr": "192.0.2.1",
            "lsps": [
                {
                    "policyName": "sample_policy1",
                    "srcAddr": "192.0.2.1",
                    "dstAddr": "192.0.2.2",
                    "segmentlist": [
                        16003,
                        16002
                    ]
                },
                {
                    "policyName": "sample_policy2",
                    "srcAddr": "192.0.2.1",
                    "dstAddr": "192.0.2.2",
                    "segmentlist": [
                        16003,
                        16001,
                        16002
                    ]
                },
            ]
        },
        {
            "peerAddr": "192.0.2.2",
            "lsps": [
                {
                    "policyName": "sample_policy3",
                    "srcAddr": "192.0.2.2",
                    "dstAddr": "192.0.2.1",
                    "segmentlist": [
                        16003,
                        16001
                    ]
                },
                {
                    "policyName": "sample_policy4",
                    "srcAddr": "192.0.2.2",
                    "dstAddr": "192.0.2.1",
                    "segmentlist": [
                        16003,
                        16002,
                        16001
                    ]
                },
            ]
        },       
]

Flex-Algo path calculation

Description

  • Add Flex-Algo path calculation

Motivation and Context

  • Add SR Policy using Flex-Algo SID

Prerequisite

  • Required to get FAD/EAG from BGP-LS

Enable to check capabilities per session with pola command

Enable to check capabilities per session with pola command.
relates to #41

Ex.

user@pce:~/pola/cmd/pola$ go run . session
sessionAddr(0): 10.100.0.1
  Capabilities: Stateful, Update, Segment-Routing, Instantiation
sessionAddr(1): 10.100.0.2
  Capabilities: Stateful, Update, Segment-Routing, Instantiation

dynamic path support

  • Calculate path by IGP/TE/Delay metric Using TED information
  • Minimize Segment-List length when calculating SR Policy path

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.