Giter VIP home page Giter VIP logo

pathman-sr's Introduction

OpenDaylight Pathman SR App IMAGE ALT TEXT HERE

Figure 0. Pathman-SR Logo

OpenDaylight (ODL) is an open-source application development and delivery platform. Segment Routing (SR) is a new and scalable method for forwarding packets across MPLS or IPv6 networks. It employs a form of source routing by appending to each packet a header representing different segments (e.g.nodes, links, etc.) that the packet should be routed through. Pathman-SR is an application developed on top of ODL enabling the user to program SR-paths through the network.

Team:

  • Niklas Montin
  • Alex Zverev
  • Chris Metz
  • Giles Heron

Project demo Link:

https://github.com/CiscoDevNet/pathman-sr

Video overview:

https://youtu.be/n-G2Cvz7xFU

Contact Email:

[email protected]

Social Tags:

SDN, Open Source, NexT, IP, MPLS, BGP, BGP-LS, OSPF, ISIS, Traffic Engineering, RESTCONF API, YANG, Segment Routing

Project Kick-off Date:

January 2016

Current Status:

Beta

Application Overview

A brief description of segment routing is contained in the abstract of Segment Routing Architecture draft:

"..Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called segments. A segment can represent any instruction, topological or service-based. A segment can have a local semantic to an SR node or global within an SR domain. SR allows to enforce a flow through any topological path and service chain while maintaining per-flow state only at the ingress node to the SR domain.."

Pathman-SR is an extension of the Pathman application but in this case, it is used to program SR-paths only through the network. An overview of the architecture laid out in Pathman is applicable to Pathman-SR so the text won't be repeated here.

For completeness the architecture for Pathman-SR is depicted here.

Figure 1. Pathman-SR Architecture

The Pathman-SR architecture is similar to the Pathman architecture. It uses BGP-LS to collect and render the network. It uses PCEP to program SR segment stacks on the ingress router which define the path of segments packets should traverse (aka SR-path)

A little color is added below on some of the components of the app itself. This might help those who are reviewing the code to better understand some of the pieces.

The front-end of the app uses:

  • NeXt is the UI framework used to render topologies and graphs. This is open source and a formal ODL project.
  • AngularJS is a popular UI framework based on the model-view-controller (MVC) paradigm. This enables efficient/modularized development/testing of the code.

The back-end of the app employs a number of Python modules that among other things compute SR-path candidates and execute RESTCONF API calls directly to ODL. The combination of the Pathman-SR application front-end and back-end provide an excellent example of a working ODL application.

A final note: some or all of the routers must support segmenting routing (software configuration knob). In this example all routers have SR turned on (denoted by a small "SR" icon). In actual deployments a subset of the routers would have SR turned.

Pathman-SR Examples

The following are example screenshots from Pathman-SR illustating the look/feel of specific functions. The nodes shown in the topology display a "PC" icon meaning it supports PCEP which is the protocol running between the router or ODL carrying SR-path segment stacks. This means the router can be an ingress or head-end for an SR-path. The "SR" indicates it supports segmenting routing an ingress, egress or intermediate router. Just to avoid any confusion Pathman-SR only supports SR-path management.

Figure 2. Search for an optimal path

In this example an SR-path between atl and chi has been requested. This panel shows the SR-paths computed. The path selected on the right is highlighted in the topology on the left.

Figure 3. Path has been deployed

This shows the selected path that was in turn deployed (programmed) into the network.

Figure 4. List of all deployed paths

This panel shows the list of deployed (active) SR-paths on the right and the selected one is highlighted in the topology.

Figure 5. Random node info. Link and/or path details are also available in one-two-click

And finally the panel provides information on specific nodes.

Prerequisites

For Pathman SR users

You need to have Python 2.7 installed on your PC/Mac.

Before you start a web server, make sure you have the required PyPi packages installed:

pip install tornado
pip install requests

PyPi is a package manager for Python. It provides a command line utility pip to install the packages. Normally, PyPi comes with Python. If that's not the case, try to figure out why it is not running on your system.

For Pathman SR frontend devs

Install node.js (server-side JavaScript environment) from nodejs.org.

Node.js comes with NPM (Node.js package manager), which allows you to install various modules.

We will install a few of them:

npm install bower -g
npm install gulp -g

Bower is a package manager for frontend, and Gulp is a frontend compilation tool. -g is flag that will install the packages globally and will reserve the CLI commands.

Assuming you are currently in the root directory of the project, navigate to client-src/pathman-sr/ directory with cd:

cd client-src/pathman_sr

All GUI files are located in here.

Run the following commands to install and update vendor packages:

npm install
bower install

Once finished, you may want to reassemble frontend code. There are the two ways for doing so.

  1. Rebuild and activate file watchers. File watchers would track changes in the files and would trigger the compilation process automatically. Just run this:

    gulp
    
  2. To clean the build folder and rebuild the code, run the following commands:

    gulp clean && gulp build
    

Configuration

Config goes in pathman_ini.py

Run Pathman SR

Once your system meets the prerequisites requirements above, you're ready to spin up a web-server for Pathman SR. This gives you the way of interaction between the app's modules.

To start the server, type the following command to CLI and run it (caution: your need to run it in context of the app's root folder):

python ./rest_server_v6.py

If your system is asking you to give permission for incomming connection, approve them.

In about a moment, the URL of Pathman would be http://localhost:8020/cisco-ctao/apps/pathman_sr/index.html

Run log goes to pathman.log

For Use with dCloud Topology, Setup and Troubleshooting hints

Go here for details

To use with Docker

Go here for details

For Tools to help you get PCEP, BGP-LS and Netconf setup

Go here for details

pathman-sr's People

Contributors

alwye avatar chrismetz09 avatar eckelcu avatar nikmon2 avatar patrisampe 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pathman-sr's Issues

Error While Deploying SR Tunnel using Pathman

Hello Guys,

I am getting error while deploying path using pathman. below is the error which i got in pathman.log file. Can someone please look into this and guide me.

Pathman is UP and running:
056 2018-03-17 11:53:20.818 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'topo'}
6056 2018-03-17 11:53:20.833 UTC root:get_url INFO: Url get Status: 200
6056 2018-03-17 11:53:20.844 UTC root:get_url INFO: Url get Status: 200
6056 2018-03-17 11:53:21.044 UTC root:add_node INFO: New node: Node(name=u'33686018', id=u'33686018', loopback=u'2.2.2.2', portlist=[u'10.10.10.13', u'10.10.10.2', u'10.10.10.5'], pcc='', pcep_type='', prefix=[u'10.10.10.0/30', u'10.10.10.12/30', u'10.10.10.4/30', u'2.2.2.2/32'], sid='')
6056 2018-03-17 11:53:21.249 UTC root:add_node INFO: New node: Node(name=u'67372036', id=u'67372036', loopback=u'4.4.4.4', portlist=[u'10.10.10.14', u'10.10.10.17'], pcc='', pcep_type='', prefix=[u'10.10.10.12/30', u'10.10.10.16/30', u'192.168.0.0/24', u'4.4.4.4/32'], sid='')
6056 2018-03-17 11:53:21.453 UTC root:add_node INFO: New node: Node(name=u'84215045', id=u'84215045', loopback=u'5.5.5.5', portlist=[u'10.10.10.10'], pcc=u'pcc://5.5.5.5', pcep_type='07', prefix=[u'10.10.10.8/30', u'5.5.5.5/32'], sid='')
6056 2018-03-17 11:53:21.657 UTC root:add_node INFO: New node: Node(name=u'50529027', id=u'50529027', loopback=u'3.3.3.3', portlist=[u'10.10.10.18', u'10.10.10.6', u'10.10.10.9'], pcc='', pcep_type='', prefix=[u'10.10.10.16/30', u'10.10.10.4/30', u'10.10.10.8/30', u'3.3.3.3/32'], sid='')
6056 2018-03-17 11:53:21.802 UTC root:add_node INFO: New node: Node(name=u'16843009', id=u'16843009', loopback=u'1.1.1.1', portlist=[u'10.10.10.1'], pcc=u'pcc://1.1.1.1', pcep_type='07', prefix=[u'1.1.1.1/32', u'10.10.10.0/30'], sid='')
6056 2018-03-17 11:53:21.802 UTC root:node_structure INFO: [Node(name=u'33686018', id=u'33686018', loopback=u'2.2.2.2', portlist=[u'10.10.10.13', u'10.10.10.2', u'10.10.10.5'], pcc='', pcep_type='', prefix=[u'10.10.10.0/30', u'10.10.10.12/30', u'10.10.10.4/30', u'2.2.2.2/32'], sid=''), Node(name=u'67372036', id=u'67372036', loopback=u'4.4.4.4', portlist=[u'10.10.10.14', u'10.10.10.17'], pcc='', pcep_type='', prefix=[u'10.10.10.12/30', u'10.10.10.16/30', u'192.168.0.0/24', u'4.4.4.4/32'], sid=''), Node(name=u'84215045', id=u'84215045', loopback=u'5.5.5.5', portlist=[u'10.10.10.10'], pcc=u'pcc://5.5.5.5', pcep_type='07', prefix=[u'10.10.10.8/30', u'5.5.5.5/32'], sid=''), Node(name=u'50529027', id=u'50529027', loopback=u'3.3.3.3', portlist=[u'10.10.10.18', u'10.10.10.6', u'10.10.10.9'], pcc='', pcep_type='', prefix=[u'10.10.10.16/30', u'10.10.10.4/30', u'10.10.10.8/30', u'3.3.3.3/32'], sid=''), Node(name=u'16843009', id=u'16843009', loopback=u'1.1.1.1', portlist=[u'10.10.10.1'], pcc=u'pcc://1.1.1.1', pcep_type='07', prefix=[u'1.1.1.1/32', u'10.10.10.0/30'], sid='')]
6056 2018-03-17 11:53:21.803 UTC root:pseudo_net_build INFO: []
6056 2018-03-17 11:53:21.816 UTC root:_get_url INFO: status code: 200
6056 2018-03-17 11:53:21.817 UTC root:node_sr_update INFO: SR sid updated for: 33686018 from bgp
6056 2018-03-17 11:53:21.818 UTC root:node_sr_update INFO: SR sid updated for: 67372036 from bgp
6056 2018-03-17 11:53:21.818 UTC root:node_sr_update INFO: SR sid updated for: 84215045 from bgp
6056 2018-03-17 11:53:21.818 UTC root:node_sr_update INFO: SR sid updated for: 50529027 from bgp
6056 2018-03-17 11:53:21.818 UTC root:node_sr_update INFO: SR sid updated for: 16843009 from bgp
6056 2018-03-17 11:53:21.820 UTC root:topoCheck INFO: Nodes not in topo_data.py: set([u'50529027', u'16843009', u'33686018', u'67372036', u'84215045'])
6056 2018-03-17 11:53:21.820 UTC root:topoCheck INFO: Nodes not used: set(['sjc', 'bos', 'san', 'WA', 'DE', 'por', 'ME', 'WI', 'WV', 'HI', 'sea', 'FL', 'dxb', 'WY', 'NH', 'KS', 'NJ', 'NM', 'TX', 'LA', 'mia', 'chi', 'NC', 'ND', 'NE', 'sfc', 'TN', 'NY', 'PA', 'arn', 'nyc', 'MO', 'CT', 'sin', 'NV', 'VA', 'CO', 'alb', 'CA', 'AL', 'hst', 'AR', 'VT', 'IL', 'GA', 'IN', 'IA', 'MA', 'AZ', 'kcy', 'ID', 'nrt', 'jfk', 'MD', 'wdc', 'OK', 'dme', 'OH', 'UT', 'atl', 'MN', 'MI', 'RI', 'AK', 'MT', 'mvd', 'min', 'MS', 'SC', 'lax', 'KY', 'OR', 'SD'])
6056 2018-03-17 11:53:21.820 UTC root:topoCheck INFO: node: {'y': 547.632538305046, 'name': 'sjc', 'x': -558.254079540255, 'latitude': 36.137242513163, 'type': 'transit', 'ipaddress': 'df2a::10', 'site': 'sjc', 'longitude': -120.754451723841, 'icon': 'router'}
6056 2018-03-17 11:53:21.820 UTC root:topoCheck INFO: node: {'y': 378.785947351863, 'name': 'bos', 'x': 1341.94009483763, 'latitude': 42.3584, 'type': 'transit', 'ipaddress': 'df2a::0f', 'site': 'bos', 'longitude': -71.0598, 'icon': 'router'}
6056 2018-03-17 11:53:21.821 UTC root:topoCheck INFO: node: {'y': 1180.13722822491, 'name': 'san', 'x': -400.12790706029, 'latitude': 32.7153, 'type': 'transit', 'ipaddress': 'df2a::0e', 'site': 'san', 'longitude': -117.157, 'icon': 'router'}
6056 2018-03-17 11:53:21.821 UTC root:topoCheck INFO: node: {'y': 550.31264292335, 'name': 'WA', 'x': -1021.91217850693, 'latitude': '47.039231', 'type': 'transit', 'ipaddress': 'df2a::45', 'site': 'Olympia', 'longitude': '-122.891366', 'icon': 'router'}
6056 2018-03-17 11:53:21.821 UTC root:topoCheck INFO: node: {'y': 550.31264292335, 'name': 'DE', 'x': -1021.91217850693, 'latitude': '39.158035', 'type': 'transit', 'ipaddress': 'df2a::1a', 'site': 'Dover', 'longitude': '-75.524734', 'icon': 'router'}
6056 2018-03-17 11:53:21.821 UTC root:getTopo INFO: Topo build with 5 nodes
6056 2018-03-17 11:53:21.821 UTC root:post INFO: {"response": [{"option": "topo", "success": true, "topology": {"nodes": [{"site": "16843009", "y": 378.785947351863, "prefix": ["1.1.1.1/32", "10.10.10.0/30"], "sr_enabled": true, "pcep_enabled": true, "ipaddress": "1.1.1.1", "icon": "router", "x": 1341.94009483763, "name": "16843009", "longitude": -71.0598, "sid": 16001, "latitude": 42.3584, "pcc": "pcc://1.1.1.1", "type": "transit"}, {"site": "33686018", "y": 1180.13722822491, "prefix": ["10.10.10.0/30", "10.10.10.12/30", "10.10.10.4/30", "2.2.2.2/32"], "sr_enabled": true, "pcep_enabled": false, "ipaddress": "2.2.2.2", "icon": "router", "x": -400.12790706029, "name": "33686018", "longitude": -117.157, "sid": 16002, "latitude": 32.7153, "pcc": "", "type": "transit"}, {"site": "50529027", "y": 547.632538305046, "prefix": ["10.10.10.16/30", "10.10.10.4/30", "10.10.10.8/30", "3.3.3.3/32"], "sr_enabled": true, "pcep_enabled": false, "ipaddress": "3.3.3.3", "icon": "router", "x": -558.254079540255, "name": "50529027", "longitude": -120.754451723841, "sid": 16003, "latitude": 36.137242513163, "pcc": "", "type": "transit"}, {"site": "67372036", "y": 550.31264292335, "prefix": ["10.10.10.12/30", "10.10.10.16/30", "192.168.0.0/24", "4.4.4.4/32"], "sr_enabled": true, "pcep_enabled": false, "ipaddress": "4.4.4.4", "icon": "router", "x": -1021.91217850693, "name": "67372036", "longitude": "-122.891366", "sid": 16004, "latitude": "47.039231", "pcc": "", "type": "transit"}, {"site": "84215045", "y": 550.31264292335, "prefix": ["10.10.10.8/30", "5.5.5.5/32"], "sr_enabled": true, "pcep_enabled": true, "ipaddress": "5.5.5.5", "icon": "router", "x": -1021.91217850693, "name": "84215045", "longitude": "-75.524734", "sid": 16005, "latitude": "39.158035", "pcc": "pcc://5.5.5.5", "type": "transit"}], "links": [{"source": "50529027", "metric": {"te": {"rx": 1, "tx": 1}, "igp": {"rx": 1, "tx": 1}}, "target": "84215045"}, {"source": "50529027", "metric": {"te": {"rx": 1, "tx": 1}, "igp": {"rx": 1, "tx": 1}}, "target": "67372036"}, {"source": "50529027", "metric": {"te": {"rx": 1, "tx": 1}, "igp": {"rx": 1, "tx": 1}}, "target": "33686018"}, {"source": "16843009", "metric": {"te": {"rx": 1, "tx": 1}, "igp": {"rx": 1, "tx": 1}}, "target": "33686018"}, {"source": "67372036", "metric": {"te": {"rx": 1, "tx": 1}, "igp": {"rx": 1, "tx": 1}}, "target": "33686018"}]}}]}
6056 2018-03-17 11:53:21.824 UTC root:initialize INFO: Init 2 done - debug saved
6056 2018-03-17 11:53:21.824 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
6056 2018-03-17 11:53:21.833 UTC root:get_url INFO: Url get Status: 200
6056 2018-03-17 11:53:21.833 UTC root:listAllLsp INFO: list: [], formatted: []
6056 2018-03-17 11:53:21.833 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}

After Deploying Path, getting Below Error:

6056 2018-03-17 11:55:49.628 UTC root:initialize INFO: Init 2 done - debug saved
6056 2018-03-17 11:55:49.629 UTC root:rest_interface_parser INFO: Commands Relieved: {u'src': u'16843009', u'dst': u'84215045', u'option': u'path', u'metric': u'te'}
6056 2018-03-17 11:55:49.630 UTC root:post INFO: {"response": [{"path": [["16843009", "33686018", "50529027", "84215045"], ["16843009", "33686018", "67372036", "50529027", "84215045"]], "metric": [3, 4], "option": "path", "success": true}]}
6056 2018-03-17 11:55:54.538 UTC root:initialize INFO: Init 2 done - debug saved
6056 2018-03-17 11:55:54.538 UTC root:rest_interface_parser INFO: Commands Relieved: {u'path': [u'16843009', u'33686018', u'67372036', u'50529027', u'84215045'], u'option': u'create', u'name': u'16843009 -> 84215045'}
6056 2018-03-17 11:55:54.539 UTC root:get_loop_list INFO: Path: [u'16843009', u'33686018', u'67372036', u'50529027', u'84215045']
6056 2018-03-17 11:55:54.539 UTC root:get_loop_list INFO: Loop list: [u'2.2.2.2', u'4.4.4.4', u'3.3.3.3', u'5.5.5.5']
6056 2018-03-17 11:55:54.539 UTC root:get_sid_list INFO: Path: [u'16843009', u'33686018', u'67372036', u'50529027', u'84215045']
6056 2018-03-17 11:55:54.539 UTC root:get_sid_list INFO: SID list: [16002, 16004, 16003, 16005]
6056 2018-03-17 11:56:24.572 UTC root:createSRtunnel INFO: Create SR Tunnel response: {u'output': {u'failure': u'no-ack'}}
6056 2018-03-17 11:56:26.575 UTC root:post INFO: {"response": [{"cause": {"failure": "no-ack"}, "option": "create", "success": false}]}
6056 2018-03-17 11:56:26.589 UTC root:initialize INFO: Init 2 done - debug saved

root:build_odl_topology ERROR: <type 'exceptions.KeyError'>

hello.
I configure odl boron sr2 and installed Pathman-Sr application, but this application didn't work.
I swap my url in pathman_ini.py on the correct table (bgp-example)
i had this log file
4255 2023-05-26 20:31:32.268 UTC root:_get_url INFO: status code: 200
4255 2023-05-26 20:31:32.271 UTC root:build_odl_topology ERROR: <type 'exceptions.KeyError'>
4255 2023-05-26 20:31:32.272 UTC root:getTopo INFO: Failed to get topo: could not reach odl-server?
4255 2023-05-26 20:31:32.272 UTC root:post INFO: {"response": [{"cause": "could not reach odl-server?", "option": "topo", "success": false}]}
4255 2023-05-26 20:31:32.273 UTC root:initialize INFO: Init 2 done - debug saved
4255 2023-05-26 20:31:32.273 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
4255 2023-05-26 20:31:32.281 UTC root:get_url INFO: Url get Status: 200
4255 2023-05-26 20:31:32.281 UTC root:listAllLsp INFO: list: [], formatted: []
4255 2023-05-26 20:31:32.281 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}

on the website i can see information about
Couldn't read topology data
Topology data is invalid.
Error code: GET_TOPOLOGY_INVALID
Possible resolution: Make sure that protocols match.
If you cannot fix the issue yourself, report the technician the error code and details of the failure (see the text box below).

Please, help mee what happened?

pathman_sr cant get topology

hellol sir @nikmon2 i hope you doing well.
im trying to deploy pathman_sr for segment routing using ODL .
ODL is deployed in linux ubuntu server 22.04 LTS in a VM ODL works proeperly and downloaded the neccessary feature , router's (XRV 6.0.1) are setup using OSPFv2 and have BGP-LS and PCEP connexion established toward ODL , downloaded pathaman_sr in docker inside the vm server works properly also , i can access the ODL and the pathman_sr GUI but the probleme is that i cant get any topology to load in Pathman_sr none it keeps reloading but nothing happens .

if you can help thank you so mush .

not able to deploy SRTE in pathman-sr

hi,

My topology is displaying as expected, but "Path Setup" is not working.
pls refer to below for more details.

++++++++++Version+++++++++++++
Cisco IOS XR Software, Version 7.2.1.32I
opendaylight-user@root>version
4.2.6

++++++++++Error Msg++++++++++++
50 2020-07-03 07:39:48.577 UTC root:init ERROR: unexpected item: {u'local-node-descriptors': {u'domain-id': 0, u'as-number': 1, u'isis-node': {u'iso-system-id': u'AAAAAAAD'}}, u'remote-node-descripto
rs': {u'domain-id': 0, u'as-number': 1, u'isis-node': {u'iso-system-id': u'AAAAAAAJ'}}, u'path-id': 0, u'protocol-id': u'isis-level2', u'attributes': {u'origin': {u'value': u'igp'}, u'link-attributes': {u'me
tric': 10}, u'ipv4-next-hop': {u'global': u'9.9.9.9'}, u'local-pref': {u'pref': 100}}, u'identifier': 0, u'route-key': u'AAIARQIAAAAAAAAAAAEAABoCAAAEAAAAAQIBAAQAAAAAAgMABgAAAAAAAwEBABoCAAAEAAAAAQIBAAQAAAAAAg
MABgAAAAAACQ=='}
50 2020-07-03 07:39:48.958 UTC root:get_netconf ERROR: No rid for: 54b42d836e9c4a24a402e7505cf98754
50 2020-07-03 07:39:48.958 UTC root:node_sr_update ERROR: No sid for: R9
50 2020-07-03 07:39:48.958 UTC root:node_sr_update ERROR: No sid for: R1
50 2020-07-03 07:39:48.959 UTC root:node_sr_update ERROR: No sid for: R2
50 2020-07-03 07:39:48.959 UTC root:node_sr_update ERROR: No sid for: R3

++++++++++PCC nodes cfg++++++++++++
pcc
source-address ipv4 9.9.9.1
pce address ipv4 9.9.9.29

router isis 1
is-type level-2-only
net 49.0000.0000.0001.00
distribute link-state level 2
address-family ipv4 unicast
metric-style wide
mpls traffic-eng level-2-only
mpls traffic-eng router-id Loopback9
segment-routing mpls

How to compose an SR path using Adjacency SID

Hi,
I want to modify the code to express an SR path using Node-SIDs and Adj-SIDs. However, in the POST Rest request, i can not find how to express the Adjacency-SID.

Node-SIDs are expressed as follow

<subobject>
<loose>false</loose>
<sid-type xmlns="urn:opendaylight:params:xml:ns:yang:pcep:segment:routing">ipv4-node-id</sid-type>
<m-flag xmlns="urn:opendaylight:params:xml:ns:yang:pcep:segment:routing">true</m-flag>
<sid xmlns="urn:opendaylight:params:xml:ns:yang:pcep:segment:routing">16028</sid>
</subobject>

Is there a way to express an Adjacency SID ?

ODL Oxygen-SR2: cannot see BGP-LS topology

Hi,

There is a BGP-LS session between a vMX and ODL. On the vMX side:

> show bgp neighbor 10.20.14.1 
Peer: 10.20.14.1+38749 AS 6830 Local: 10.20.14.0+179 AS xxx 
  Group: opendaylight          Routing-Instance: master
  Forwarding routing-instance: master  
  Type: Internal    State: Established    Flags: <Sync>
  Last State: OpenConfirm   Last Event: RecvKeepAlive
  Last Error: None
  Export: [ nlri-to-bgp-OUT ] 
  Options: <Preference LocalAddress AddressFamily PeerAS Refresh>
  Address families configured: te-unicast
  Local Address: 10.20.14.0 Holdtime: 90 Preference: 170
  Number of flaps: 0
  Peer ID: 10.20.14.1      Local ID: x.x.x.x     Active Holdtime: 90
  Keepalive Interval: 30         Group index: 0    Peer index: 0    SNMP index: 4     
  I/O Session Thread: bgpio-0 State: Enabled
  BFD: disabled, down
  NLRI for restart configured on peer: te-unicast
  NLRI advertised by peer: te-unicast
  NLRI for this session: te-unicast
  Peer supports Refresh capability (2)
  Stale routes from peer are kept for: 300
  Peer does not support Restarter functionality
  Peer does not support Receiver functionality
  Peer does not support LLGR Restarter or Receiver functionality
  Peer supports 4 byte AS extension (peer-as xxx)
  Peer does not support Addpath
  Table lsdist.0 Bit: 20000
    RIB State: BGP restart is complete
    Send state: in sync
    Active prefixes:              0
    Received prefixes:            0
    Accepted prefixes:            0
    Suppressed due to damping:    0
    Advertised prefixes:          6
  Last traffic (seconds): Received 447416 Sent 1623 Checked 447416
  Input messages:  Total 518	Updates 0	Refreshes 0	Octets 9870
  Output messages: Total 580	Updates 5	Refreshes 0	Octets 11584
  Output Queue[1]: 0            (lsdist.0, te-unicast)

On the ODL side:

In [29]: url = '/restconf/config/openconfig-network-instance:network-instances/network-instance/global-bgp/protocols/protocol/openconfig-policy-types:BGP/xxx/bgp-openconfig-extensions:b
    ...: gp/neighbors'

In [30]: requests.get('http://{}:{}{}'.format(odl['api']['ipaddr'],odl['api']['port'],url), auth=auth).text
Out[30]: '{"bgp-openconfig-extensions:neighbors":{"neighbor":[{"neighbor-address":"10.20.14.0","afi-safis":{"afi-safi":[{"afi-safi-name":"bgp-openconfig-extensions:LINKSTATE"}]}}]}}'

When checking the logs in pathman, it says:

4894 2018-07-11 14:48:27.228 UTC root:<module>     INFO: This is initializing the log
4894 2018-07-11 14:48:27.238 UTC root:get_url      INFO: Url get Status: 200
4894 2018-07-11 14:48:27.245 UTC root:get_url      INFO: Url get Status: 200
4894 2018-07-11 14:48:27.245 UTC root:get_pcep_type INFO: We have no nodes in our PCEP Topology
4894 2018-07-11 14:48:27.245 UTC root:node_structure INFO: We have no nodes in our BGP-LS topology
4894 2018-07-11 14:48:27.246 UTC root:pseudo_net_build INFO: []
4894 2018-07-11 14:48:27.253 UTC root:_get_url     INFO: status code: 200
4894 2018-07-11 14:48:27.254 UTC root:build_odl_topology ERROR: <type 'exceptions.KeyError'>
4894 2018-07-11 14:48:27.254 UTC root:__init__     INFO: patterned to '/pathman'
4894 2018-07-11 14:48:27.257 UTC root:__init__     INFO: Pathman REST API Launched on port 8090

4894 2018-07-11 14:49:12.444 UTC root:initialize   INFO: Init 2 done - debug saved
4894 2018-07-11 14:49:12.444 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'topo'}
4894 2018-07-11 14:49:12.452 UTC root:get_url      INFO: Url get Status: 200
4894 2018-07-11 14:49:12.459 UTC root:get_url      INFO: Url get Status: 200
4894 2018-07-11 14:49:12.460 UTC root:get_pcep_type INFO: We have no nodes in our PCEP Topology
4894 2018-07-11 14:49:12.460 UTC root:node_structure INFO: We have no nodes in our BGP-LS topology
4894 2018-07-11 14:49:12.460 UTC root:pseudo_net_build INFO: []
4894 2018-07-11 14:49:12.468 UTC root:_get_url     INFO: status code: 200
4894 2018-07-11 14:49:12.468 UTC root:build_odl_topology ERROR: <type 'exceptions.KeyError'>
4894 2018-07-11 14:49:12.468 UTC root:getTopo      INFO: Failed to get topo: could not reach odl-server?
4894 2018-07-11 14:49:12.469 UTC root:post         INFO: {"response": [{"cause": "could not reach odl-server?", "option": "topo", "success": false}]}
4894 2018-07-11 14:49:12.470 UTC root:initialize   INFO: Init 2 done - debug saved
4894 2018-07-11 14:49:12.470 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
4894 2018-07-11 14:49:12.479 UTC root:get_url      INFO: Url get Status: 200
4894 2018-07-11 14:49:12.479 UTC root:list_pcep_lsp INFO: We have no nodes in our PCEP Topology
4894 2018-07-11 14:49:12.479 UTC root:listAllLsp   INFO: list: [], formatted: []
4894 2018-07-11 14:49:12.480 UTC root:post         INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}

While the vMX has its lsdist.0 table populated:

> show route table lsdist.0 

lsdist.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

NODE { AS:xxx ISO:xxx.xxx.xxx.00 ISIS-L2:0 }/1408              
                   *[IS-IS/18] 00:15:46
                      Fictitious
NODE { AS:xxx ISO:1000.9999.9999.00 ISIS-L2:0 }/1408              
                   *[IS-IS/18] 00:15:46
                      Fictitious
NODE { AS:xxx ISO:1000.9999.9999.02 ISIS-L2:0 }/1408              
                   *[IS-IS/18] 00:15:46
                      Fictitious
NODE { AS:xxx ISO:3333.3333.3333.00 ISIS-L2:0 }/1408              
                   *[IS-IS/18] 00:15:46
                      Fictitious
LINK { Local { AS:xxx ISO:1000.9999.9999.02 }.{ } Remote { AS:xxx ISO:1000.9999.9999.00 }.{ } ISIS-L2:0 }/1408              
                   *[IS-IS/18] 00:15:46
                      Fictitious
LINK { Local { AS:xxx ISO:1000.9999.9999.02 }.{ } Remote { AS:xxx ISO:3333.3333.3333.00 }.{ } ISIS-L2:0 }/1408              
                   *[IS-IS/18] 00:15:46
                      Fictitious

Would you please advise why pathman fails to get the topology information ? (The RESTconf works as pasted above)

$ egrep "odl_" pathman_ini.py
odl_ip = '172.31.141.230'
odl_port = '8181'

Error while bringing up pathman-sr

Hi,

I am getting below error while opening the url

0934 2017-11-29 12:08:19.729 UTC root:pseudo_net_build INFO: []
10934 2017-11-29 12:08:19.754 UTC root:_get_url INFO: status code: 200
10934 2017-11-29 12:08:19.802 UTC root:get_url INFO: Url get Status: 200
10934 2017-11-29 12:08:19.804 UTC root:version_check INFO: Found ODL Release: beryllium
10934 2017-11-29 12:08:19.818 UTC root:get_url INFO: Url get Status: 200
10934 2017-11-29 12:08:19.818 UTC root:node_sr_update ERROR: No sid for: R3
10934 2017-11-29 12:08:19.819 UTC root:node_sr_update ERROR: No sid for: R2
10934 2017-11-29 12:08:19.819 UTC root:node_sr_update ERROR: No sid for: R1
10934 2017-11-29 12:08:19.820 UTC root:init INFO: patterned to '/pathman'
10934 2017-11-29 12:08:19.821 UTC root:init INFO: Pathman REST API Launched on port 8020

Request your guidance in resolving this issue

ODL topology data is invalid

hi all

when i prepared everything on ODL(bgp-ld/pcep) that i can get the topology from YANG UI on opendaylight, and i run the pathman on the same node .
then i opened http://localhost:8020/cisco-ctao/apps/pathman_sr/index.html
it tells me topology data is invalid.

here's the pathman log on the server:

32502 2019-09-16 22:31:14.505 UTC root:pseudo_net_build INFO: []
32502 2019-09-16 22:31:14.521 UTC root:_get_url INFO: status code: 200
32502 2019-09-16 22:31:14.521 UTC root:build_odl_topology ERROR: <type 'exceptions.KeyError'>
32502 2019-09-16 22:31:14.522 UTC root:getTopo INFO: Failed to get topo: could not reach odl-server?
32502 2019-09-16 22:31:14.522 UTC root:post INFO: {"response": [{"cause": "could not reach odl-server?", "option": "topo", "success":
false}]}
32502 2019-09-16 22:31:14.524 UTC root:initialize INFO: Init 2 done - debug saved
32502 2019-09-16 22:31:14.525 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
32502 2019-09-16 22:31:14.539 UTC root:get_url INFO: Url get Status: 200
32502 2019-09-16 22:31:14.540 UTC root:listAllLsp INFO: list: [], formatted: []
32502 2019-09-16 22:31:14.540 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}

it seems caused by "root:getTopo INFO: Failed to get topo: could not reach odl-server?"
i'm new to ODL and pathman, any suggestion and where to start troubleshooting on it?

thanks in advance

Unable to finish bower install

Hi,
Bower install gets stuck at this spot

                "canonicalDir": "/home/owner/.cache/bower/packages/060a9fe0e60a0d3d6c9ed350cde03e61/1.7.2",
                "pkgMeta": {
                  "name": "angular",
                  "version": "1.7.2",
                  "license": "MIT",
                  "main": "./angular.js",
                  "ignore": [],
                  "dependencies": {},
                  "homepage": "https://github.com/angular/bower-angular",
                  "_release": "1.7.2",
                  "_resolution": {
                    "type": "version",
                    "tag": "v1.7.2",
                    "commit": "f3064b43af7e169a3755bb093b49626a7aa56e6f"
                  },
                  "_source": "https://github.com/angular/bower-angular.git",
                  "_target": ">=1.2.26 <1.8"
                },
                "dependencies": {},
                "nrDependants": 1
              }
            },
            "nrDependants": 1
          }
        },
        "nrDependants": 1
      }
    ]
  }
]

}
}, {
"type": "input",
"message": "Answer",
"name": "prompt",
"level": "prompt"

I am unable to go further from here. Please help

Should I run this app along with the ODL controller?

Hi there,

Thanks for this amazing work. I built this app using docker container. I am able to browse the Pathman-SR interface on my local browser. However, the web page didn't show anything. My questions are:

  • Should I use this app with an ODL controller? Or how should I import custom network topology into this app?
  • If I need an ODL controller, where should I install the ODL? inside the container or on the host?

Any advice will be highly appreciated !

The path has been refused by controller and has not been deployed.

Guys,
I meet with the follow problem and have on idea how to figure it out ,anyone can help ?

5631 2022-08-12 08:54:19.405 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}
5631 2022-08-12 08:56:29.139 UTC root:initialize INFO: Init 2 done - debug saved
5631 2022-08-12 08:56:29.139 UTC root:rest_interface_parser INFO: Commands Relieved: {u'path': [u'PE1', u'PE2', u'PE3'], u'option': u'create', u'name': u'PE1 -> PE3'}
5631 2022-08-12 08:56:29.140 UTC root:get_loop_list INFO: Path: [u'PE1', u'PE2', u'PE3']
5631 2022-08-12 08:56:29.140 UTC root:get_loop_list INFO: Loop list: [u'2.2.2.2', u'3.3.3.3']
5631 2022-08-12 08:56:29.140 UTC root:get_sid_list INFO: Path: [u'PE1', u'PE2', u'PE3']
5631 2022-08-12 08:56:29.140 UTC root:get_sid_list INFO: SID list: [18002, 18003]
5631 2022-08-12 08:56:29.158 UTC root:createSRtunnel INFO: Create SR Tunnel response: {u'output': {u'failure': u'failed', u'error': [{u'error-object': {u'ignore': False, u'processing-rule': False, u'type': 3, u'value': 2}}]}}
5631 2022-08-12 08:56:31.160 UTC root:post INFO: {"response": [{"cause": {"failure": "failed", "error": [{"error-object": {"ignore": false, "processing-rule": false, "type": 3, "value": 2}}]}, "option": "create", "success": false}]}
5631 2022-08-12 08:56:31.176 UTC root:initialize INFO: Init 2 done - debug saved
5631 2022-08-12 08:56:31.176 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
5631 2022-08-12 08:56:31.185 UTC root:get_url INFO: Url get Status: 200
5631 2022-08-12 08:56:31.186 UTC root:listAllLsp INFO: list: [], formatted: []
5631 2022-08-12 08:56:31.186 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}

My runtime :
Router is cisco xrv9000 version 7.5.2
Odl version is nitrogen

Observing "build_odl_topology ERROR: <type 'exceptions.KeyError'>" in pathman.log

Hi,

Observing "build_odl_topology ERROR: <type 'exceptions.KeyError'>" in pathman.log .
Also i do not see any topology or any option to create path in web browser connected to pathman-sr.

Please find below pathman log.

9821 2018-01-25 15:35:14.481 UTC root: INFO: This is initializing the log
9821 2018-01-25 15:35:15.017 UTC root:get_url INFO: Url get Status: 200
9821 2018-01-25 15:35:15.040 UTC root:get_url INFO: Url get Status: 200
9821 2018-01-25 15:35:15.041 UTC root:add_node INFO: New node: Node(name=u'0003.0003.0003.02', id=u'0003.0003.0003.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.041 UTC root:add_node INFO: New node: Node(name=u'0002.0002.0002.02', id=u'0002.0002.0002.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.041 UTC root:add_node INFO: New node: Node(name=u'10d01_vfemu-evr4', id=u'0004.0004.0004', loopback=u'4.4.4.4', portlist=[u'19.1.1.2', u'21.1.1.2'], pcc='',

pcep_type='', prefix=[u'19.1.1.0/24', u'21.1.1.0/24', u'4.4.4.4/32'], sid='')
9821 2018-01-25 15:35:15.042 UTC root:add_node INFO: New node: Node(name=u'0001.0001.0001.01', id=u'0001.0001.0001.01', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.042 UTC root:add_node INFO: New node: Node(name=u'10d01_vfemu-evr5', id=u'0005.0005.0005', loopback=u'5.5.5.5', portlist=[u'15.1.1.2', u'18.1.1.2',

u'19.1.1.1'], pcc='', pcep_type='', prefix=[u'15.1.1.0/24', u'18.1.1.0/24', u'19.1.1.0/24', u'5.5.5.5/32'], sid='')
9821 2018-01-25 15:35:15.043 UTC root:add_node INFO: New node: Node(name=u'10d01_vfemu-evr6', id=u'0006.0006.0006', loopback=u'6.6.6.6', portlist=[u'17.1.1.2', u'18.1.1.1',

u'21.1.1.1'], pcc='', pcep_type='', prefix=[u'17.1.1.0/24', u'18.1.1.0/24', u'21.1.1.0/24', u'6.6.6.6/32'], sid='')
9821 2018-01-25 15:35:15.043 UTC root:add_node INFO: New node: Node(name=u'10d01_vfemu-evr2', id=u'0002.0002.0002', loopback=u'2.2.2.2', portlist=[u'13.1.1.2', u'15.1.1.1',

u'16.1.1.1'], pcc='', pcep_type='', prefix=[u'13.1.1.0/24', u'15.1.1.0/24', u'16.1.1.0/24', u'2.2.2.2/32'], sid='')
9821 2018-01-25 15:35:15.044 UTC root:add_node INFO: New node: Node(name=u'10d01_vfemu-evr1', id=u'0001.0001.0001', loopback=u'1.1.1.1', portlist=[u'13.1.1.1', u'14.1.1.1'],

pcc=u'pcc://1.1.1.1', pcep_type='07', prefix=[u'1.1.1.1/32', u'13.1.1.0/24', u'14.1.1.0/24'], sid='')
9821 2018-01-25 15:35:15.044 UTC root:add_node INFO: New node: Node(name=u'0005.0005.0005.01', id=u'0005.0005.0005.01', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.044 UTC root:add_node INFO: New node: Node(name=u'0004.0004.0004.01', id=u'0004.0004.0004.01', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.045 UTC root:add_node INFO: New node: Node(name=u'10d01_vfemu-evr3', id=u'0003.0003.0003', loopback=u'3.3.3.3', portlist=[u'14.1.1.2', u'16.1.1.2',

u'17.1.1.1'], pcc='', pcep_type='', prefix=[u'14.1.1.0/24', u'16.1.1.0/24', u'17.1.1.0/24', u'3.3.3.3/32'], sid='')
9821 2018-01-25 15:35:15.045 UTC root:add_node INFO: New node: Node(name=u'0004.0004.0004.02', id=u'0004.0004.0004.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.045 UTC root:add_node INFO: New node: Node(name=u'0006.0006.0006.01', id=u'0006.0006.0006.01', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.046 UTC root:add_node INFO: New node: Node(name=u'0005.0005.0005.03', id=u'0005.0005.0005.03', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')
9821 2018-01-25 15:35:15.046 UTC root:node_structure INFO: [Node(name=u'0003.0003.0003.02', id=u'0003.0003.0003.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''),

Node(name=u'0002.0002.0002.02', id=u'0002.0002.0002.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'10d01_vfemu-evr4', id=u'0004.0004.0004',

loopback=u'4.4.4.4', portlist=[u'19.1.1.2', u'21.1.1.2'], pcc='', pcep_type='', prefix=[u'19.1.1.0/24', u'21.1.1.0/24', u'4.4.4.4/32'], sid=''), Node(name=u'0001.0001.0001.01',

id=u'0001.0001.0001.01', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'10d01_vfemu-evr5', id=u'0005.0005.0005', loopback=u'5.5.5.5', portlist=[u'15.1.1.2',

u'18.1.1.2', u'19.1.1.1'], pcc='', pcep_type='', prefix=[u'15.1.1.0/24', u'18.1.1.0/24', u'19.1.1.0/24', u'5.5.5.5/32'], sid=''), Node(name=u'10d01_vfemu-evr6', id=u'0006.0006.0006',

loopback=u'6.6.6.6', portlist=[u'17.1.1.2', u'18.1.1.1', u'21.1.1.1'], pcc='', pcep_type='', prefix=[u'17.1.1.0/24', u'18.1.1.0/24', u'21.1.1.0/24', u'6.6.6.6/32'], sid=''), Node

(name=u'10d01_vfemu-evr2', id=u'0002.0002.0002', loopback=u'2.2.2.2', portlist=[u'13.1.1.2', u'15.1.1.1', u'16.1.1.1'], pcc='', pcep_type='', prefix=[u'13.1.1.0/24', u'15.1.1.0/24',

u'16.1.1.0/24', u'2.2.2.2/32'], sid=''), Node(name=u'10d01_vfemu-evr1', id=u'0001.0001.0001', loopback=u'1.1.1.1', portlist=[u'13.1.1.1', u'14.1.1.1'], pcc=u'pcc://1.1.1.1', pcep_type='07',

prefix=[u'1.1.1.1/32', u'13.1.1.0/24', u'14.1.1.0/24'], sid=''), Node(name=u'0005.0005.0005.01', id=u'0005.0005.0005.01', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''),

Node(name=u'0004.0004.0004.01', id=u'0004.0004.0004.01', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'10d01_vfemu-evr3', id=u'0003.0003.0003',

loopback=u'3.3.3.3', portlist=[u'14.1.1.2', u'16.1.1.2', u'17.1.1.1'], pcc='', pcep_type='', prefix=[u'14.1.1.0/24', u'16.1.1.0/24', u'17.1.1.0/24', u'3.3.3.3/32'], sid=''), Node

(name=u'0004.0004.0004.02', id=u'0004.0004.0004.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0006.0006.0006.01', id=u'0006.0006.0006.01',

loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0005.0005.0005.03', id=u'0005.0005.0005.03', loopback='', portlist=[], pcc='', pcep_type='', prefix=[],

sid='')]
9821 2018-01-25 15:35:15.046 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0003.0003.0003.02 is: 10d01_vfemu-evr3
9821 2018-01-25 15:35:15.047 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0002.0002.0002.02 is: 10d01_vfemu-evr2
9821 2018-01-25 15:35:15.047 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0001.0001.0001.01 is: 10d01_vfemu-evr1
9821 2018-01-25 15:35:15.047 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0005.0005.0005.01 is: 10d01_vfemu-evr5
9821 2018-01-25 15:35:15.047 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0004.0004.0004.01 is: 10d01_vfemu-evr4
9821 2018-01-25 15:35:15.048 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0006.0006.0006.01 is: 10d01_vfemu-evr6
9821 2018-01-25 15:35:15.048 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0005.0005.0005.03 is: 10d01_vfemu-evr5
9821 2018-01-25 15:35:15.048 UTC root:pseudo_net_build INFO: []
9821 2018-01-25 15:35:15.120 UTC root:_get_url INFO: status code: 200
9821 2018-01-25 15:35:15.126 UTC root:build_odl_topology ERROR: <type 'exceptions.KeyError'>
9821 2018-01-25 15:35:15.127 UTC root:init INFO: patterned to '/pathman'
9821 2018-01-25 15:35:15.130 UTC root:init INFO: Pathman REST API Launched on port 8020

1-link bug

There's a bug in Pathman SR that has to do with NeXt's mechanism of generating and drawing paths. When you construct the path manually, or pull it down from the controller, should there be just one link, it MAY take a wrong direction. The reason being is that the path will be assigned to the link that has precise direction.
The bugfix has been pushed and now is waiting for a review. Once that is reviewed in ODL's gerrit, I will push a fix to Pathman.

gulp clean && gulp build is deleting vendor directory

Hi,

While following installation procedure
cd pathman-sr-master/client-src/pathman_sr
npm install
bower install --allow-root
npm install --save-dev run-sequence
gulp clean && gulp build

Now it is deleting vendor directory under cd pathman-sr-master/client/pathman_sr
Could you please suggest what is going wrong here ?

Regards,
Abhinav

Issue trying to deploy a new SR path on Juniper MX

Hi, we are an ISP and we are thinking of migration from static RSVP tunnels to Segment Routing with an external controller. Our network is build mostly on Juniper MX devices, we cretead a lab with few routers and with an ODL Neon controller + Pathman-SR. Unfortunatelly we can't deploy any path.
So, what we have:
ODL Neon Controller
Pathman-SR
Juniper vMX devices running Junos 17.2R1.13

All the routers are seen in Pathman-SR, we have following topologies in our ODL controller:
example-linkstate-topology(all the routers/links are seen there)
example-pcep-topology(all the routers are connected to PCEP controller and session is UP, configured with Stateful, Active).
example-netconf-topology(the status is connected with all the routers)
I've attached a file, with the result of "/restconf/operational/network-topology:network-topology/"

When I try to deploy a path, I see the following error:
"Response indicated the error in frontend-backend communication."

This the error in karaf.log:
"2019-04-19T18:56:12,806 | INFO | remote-connector-processing-executor-19 | NetconfDevice | 407 - org.opendaylight.netconf.sal-netconf-connector - 1.9.0 | RemoteDevice{EQUINIX}: Netconf connector initialized successfully
2019-04-19T18:56:13,589 | WARN | epollEventLoopGroup-5-2 | Stateful07TopologySessionListener | 381 - org.opendaylight.bgpcep.pcep-topology-provider - 0.11.0 | Unhandled PCErr message PcerrMessage{_errors=[Errors{_errorObject=ErrorObject{_type=6, _value=10, _ignore=false, _processingRule=false, augmentation=[]}, augmentation=[]}], augmentation=[]}.
2019-04-19T18:56:13,590 | WARN | epollEventLoopGroup-5-2 | AbstractTopologySessionListener | 381 - org.opendaylight.bgpcep.pcep-topology-provider - 0.11.0 | Unhandled message Pcerr{_pcerrMessage=PcerrMessage{_errors=[Errors{_errorObject=ErrorObject{_type=6, _value=10, _ignore=false, _processingRule=false, augmentation=[]}, augmentation=[]}], augmentation=[]}, augmentation=[]} on session PCEPSessionImpl{channel=[id: 0x35c28cba, L:/10.10.1.134:4189 - R:/10.100.100.11:62749], localOpen=Open{_deadTimer=120, _keepalive=30, _sessionId=0, _tlvs=Tlvs{augmentation=[Tlvs1{_srPceCapability=SrPceCapability{_msd=0, augmentation=[]}}, Tlvs1{_stateful=Stateful{_lspUpdateCapability=true, augmentation=[Stateful1{_initiation=true}, Stateful1{_deltaLspSyncCapability=true, _includeDbVersion=true, _triggeredInitialSync=true, _triggeredResync=true}]}}]}, augmentation=[]}, remoteOpen=Open{_deadTimer=120, _keepalive=30, _sessionId=49, _tlvs=Tlvs{augmentation=[Tlvs1{_srPceCapability=SrPceCapability{_msd=5, augmentation=[]}}, Tlvs1{_stateful=Stateful{_lspUpdateCapability=true, augmentation=[Stateful1{_initiation=true}, Stateful1{}]}}, Tlvs3{}]}, _version=ProtocolVersion{_value=1}, _ignore=false, _processingRule=false, augmentation=[]}}"

This is the log in /tmp/pathman.log:
"6591 2019-04-19 15:56:13.511 UTC root:initialize INFO: Init 2 done - debug saved
6591 2019-04-19 15:56:13.512 UTC root:rest_interface_parser INFO: Commands Relieved: {u'path': [u'CORE0', u'EQUINIX'], u'option': u'create', u'name': u'CORE0 -> EQUINIX'}
6591 2019-04-19 15:56:13.512 UTC root:get_loop_list INFO: Path: [u'CORE0', u'EQUINIX']
6591 2019-04-19 15:56:13.512 UTC root:get_loop_list INFO: Loop list: [u'10.100.100.20']
6591 2019-04-19 15:56:13.512 UTC root:get_sid_list INFO: Path: [u'CORE0', u'EQUINIX']
6591 2019-04-19 15:56:13.513 UTC root:get_sid_list INFO: SID list: [2020]
6591 2019-04-19 15:56:13.592 UTC root:createSRtunnel INFO: Create SR Tunnel response: {u'output': {u'failure': u'failed', u'error': [{u'error-object': {u'ignore': True, u'processing-rule': True, u'type': 10, u'value': 5}}]}}
6591 2019-04-19 15:56:15.595 UTC root:post INFO: {"response": [{"cause": {"failure": "failed", "error": [{"error-object": {"ignore": true, "processing-rule": true, "type": 10, "value": 5}}]}, "option": "create", "success": false}]}
6591 2019-04-19 15:56:15.665 UTC root:initialize INFO: Init 2 done - debug saved
6591 2019-04-19 15:56:15.665 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
6591 2019-04-19 15:56:15.679 UTC root:get_url INFO: Url get Status: 200
6591 2019-04-19 15:56:15.679 UTC root:listAllLsp INFO: list: [], formatted: []
6591 2019-04-19 15:56:15.680 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}"

This is the error which I see on Juniper MX in the log file of PCEP controller:
"Apr 19 18:19:10 [4829] pcep_msg_parse: Received PCEP message type: PCCreate, version: 1 length: 80, flags: 0x0
Apr 19 18:19:10 [4829] pcep_obj_trace: SRP object: remove: 0 srp_id: 2 lsp_setup_type: 0
Apr 19 18:19:10 [4829] pcep_tlv_trace: TLV path setup setup: 1
Apr 19 18:19:10 [4829] pcep_obj_trace: LSP object: plsp ID: 0, remove: 0, operational: 0, last_update: 0, delegated: 1 administrative: 1 is_p2mp 0, PCE Created: 0
Apr 19 18:19:10 [4829] pcep_tlv_trace: TLV LSP Symbolic Name: 'EQUINIX -> CORE0'
Apr 19 18:19:10 [4829] pcep_obj_trace: END-POINTS IPv4 object: source: 10.100.100.20, destination: 10.100.100.11
Apr 19 18:19:10 [4829] pcep_obj_trace: ERO object: subobjects: 1
Apr 19 18:19:10 [4829] pcep_msg_parse: PCCreate message received:
Apr 19 18:19:10 [4829] pcep_msg_parse: ...P!........... 20 0C 00 50 21 12 00 14 00 00 00 00 00 00 00 02
Apr 19 18:19:10 [4829] pcep_msg_parse: ................ 00 1C 00 04 00 00 00 01 20 10 00 1C 00 00 00 09
Apr 19 18:19:10 [4829] pcep_msg_parse: ....EQUINIX.->.C 00 11 00 10 45 51 55 49 4E 49 58 20 2D 3E 20 43
Apr 19 18:19:10 [4829] pcep_msg_parse: ORE0.....dd..dd. 4F 52 45 30 04 12 00 0C 0A 64 64 14 0A 64 64 0B
Apr 19 18:19:10 [4829] pcep_msg_parse: .........}...dd. 07 10 00 10 05 0C 10 01 00 7D B0 00 0A 64 64 0B
Apr 19 18:19:10 [4829] pcep_msg_parse:
Apr 19 18:19:10 [4829] process_message: Deadtimer has been touched
Apr 19 18:19:10 [4829] pccd_pcep_onmessage_cb() -->
Apr 19 18:19:10 [4829] pccd_pcep_onmessage_cb(): onmessage objp: 0x886e000 objc: 4 msg_type:12 pce:'odl'
Apr 19 18:19:10 [4829] pccd_core_received_pccreate() -->
Apr 19 18:19:10 [4829] pccd_core_received_pccreate(): Copying LSP name: 'EQUINIX -> CORE0' from TLV
Apr 19 18:19:10 [4829] pccd_core_parse_lsp_instantion() -->
Apr 19 18:19:10 [4829] pccd_core_parse_spring_ero() -->
Apr 19 18:19:10 [4829] pcep_send_message: Sending PCEP message 'Error'
Apr 19 18:19:10 [4829] pcep_obj_trace: SRP object: remove: 48 srp_id: 2 lsp_setup_type: 48
Apr 19 18:19:10 [4829] pcep_obj_trace: ERROR object: type: 10, value: 5
Apr 19 18:19:10 [4829] pcep_obj_trace: TLV Missing Request ID: 808464432
Apr 19 18:19:10 [4829] pccd_core_parse_spring_ero() <--
Apr 19 18:19:10 [4829] pccd_core_parse_lsp_instantion() <--
Apr 19 18:19:10 [4829] pccd_pcep_onerror_cb() -->
Apr 19 18:19:10 [4829] pccd_pcep_onerror_cb(): onerror_cb pcep 0x880b060 ctx 0x882c000 error 0 (No error: 0)
Apr 19 18:19:10 [4829] pccd_pcep_onerror_cb(): Outgoing PCErr msg with TYPE:6 and VALUE:10
Apr 19 18:19:10 [4829] pccd_pcep_onerror_cb() <--
Apr 19 18:19:10 [4829] pcep_send_message: Sending PCEP message 'Error'
Apr 19 18:19:10 [4829] pcep_obj_trace: ERROR object: type: 6, value: 10
"

Can anybody advice what to do to solve the problem ?
Any help would be very appreciated!!!

operational-network-topology.txt

About install pathman-sr problem

I Step by step install
In the "bower install" show error

root@ww:/home/ww/下載/pathman-sr-master/client-src/pathman_sr# bower install
[{
  "code": "ESUDO",
  "details": "Since bower is a user command, there is no need to execute it with superuser permissions.\nIf you're having permission errors when using bower without sudo, please spend a few minutes learning more about how your system should work and make any necessary repairs.\n\nhttp://www.joyent.com/blog/installing-node-and-npm\nhttps://gist.github.com/isaacs/579814\n\nYou can however run a command with sudo using --allow-root option",
  "id": "ESUDO",
  "level": "error",
  "data": {},
  "message": "Cannot be run with sudo",
  "stacktrace": "Error: Cannot be run with sudo\n    at createError (/usr/lib/node_modules/bower/lib/util/createError.js:4:15)\n    at rootCheck (/usr/lib/node_modules/bower/lib/util/rootCheck.js:26:24)\n    at Object.<anonymous> (/usr/lib/node_modules/bower/lib/bin/bower.js:33:1)\n    at Module._compile (module.js:570:32)\n    at Object.Module._extensions..js (module.js:579:10)\n    at Module.load (module.js:487:32)\n    at tryModuleLoad (module.js:446:12)\n    at Function.Module._load (module.js:438:3)\n    at Module.require (module.js:497:17)\n    at require (internal/module.js:20:19)"
}]

​in the "bower install --allow-root option" show error

root@ww:/home/ww/下載/pathman-sr-master/client-src/pathman_sr# bower install  --allow-root option
[{
  "code": "ENOGIT",
  "data": {
    "endpoint": {
      "name": "angular",
      "source": "angular",
      "target": "~1.5.0"
    }
  },
  "id": "ENOGIT",
  "level": "error",
  "message": "git is not installed or not in the PATH",
  "stacktrace": "Error: git is not installed or not in the PATH\n    at createError (/usr/lib/node_modules/bower/lib/util/createError.js:4:15)\n    at GitHubResolver.GitResolver (/usr/lib/node_modules/bower/lib/core/resolvers/GitResolver.js:45:15)\n    at GitHubResolver.GitRemoteResolver (/usr/lib/node_modules/bower/lib/core/resolvers/GitRemoteResolver.js:10:17)\n    at new GitHubResolver (/usr/lib/node_modules/bower/lib/core/resolvers/GitHubResolver.js:13:23)\n    at /usr/lib/node_modules/bower/lib/core/resolverFactory.js:18:16\n    at /usr/lib/node_modules/bower/lib/node_modules/q/q.js:1229:26\n    at _fulfilled (/usr/lib/node_modules/bower/lib/node_modules/q/q.js:834:54)\n    at self.promiseDispatch.done (/usr/lib/node_modules/bower/lib/node_modules/q/q.js:863:30)\n    at Promise.promise.promiseDispatch (/usr/lib/node_modules/bower/lib/node_modules/q/q.js:796:13)\n    at /usr/lib/node_modules/bower/lib/node_modules/q/q.js:556:49"
}]

GET_TOPOLOGY_INVALID : BGP-LS Topology - ODL Nitrogen

Hi

I am trying to build BGP-LS topology of a bunch of vMx's using ODL Nitrogen release as Controller

ODL and Pathman are in the same localhost

I am able to get the BGP-LS Raw topology with below URL

/restconf/operational/network-topology:network-topology/topology/bgp-example-linkstate-topology

Also, able to see the Link state routes with the below URL

192.168.1.16:8181/restconf/operational/bgp-rib:bgp-rib/rib/bgp-example/loc-rib/tables/bgp-linkstate:linkstate-address-family/bgp-linkstate:linkstate-subsequent-address-family/linkstate-routes

My RIB-ID is 'bgp-example' and Topology is 'bgp-example-linkstate-topology' . Changed this in
pathman_sr.py and pathman_ini.py file

Modified URL in pathman_ini.py
url = '{}://{}:{}/restconf/operational/bgp-rib:bgp-rib/rib/bgp-example/loc-rib/tables/bgp-linkstate:linkstate-address-family/bgp-linkstate:linkstate-subsequent-address-family/linkstate-routes'

Modified URL in pathman_sr.py and netconf.py
get_topo = 'http://%s:%s/restconf/operational/network-topology:network-topology/topology/bgp-example-linkstate-topology' %(odl_ip, odl_port)

When Pathman is launched, it shows
GET_TOPOLOGY_INVALID - Couldn't read the topology

Attaching BGP-LS Routes and BGP-LS Raw topology for your information

Pathman Error Log Messages

durai@ODL:~$ vi /tmp/pathman.log
26539 2019-06-25 03:41:51.366 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0002', id=u'0192.0168.0002', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.2/32'], sid='')
26539 2019-06-25 03:41:51.366 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0003', id=u'0192.0168.0003', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.3/32'], sid='')
26539 2019-06-25 03:41:51.366 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0007.02', id=u'0192.0168.0007.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')
26539 2019-06-25 03:41:51.366 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0005.02', id=u'0192.0168.0005.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')
26539 2019-06-25 03:41:51.366 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0006.02', id=u'0192.0168.0006.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')
26539 2019-06-25 03:41:51.366 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0007.03', id=u'0192.0168.0007.03', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')
26539 2019-06-25 03:41:51.367 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0007.04', id=u'0192.0168.0007.04', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')
26539 2019-06-25 03:41:51.367 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0005.03', id=u'0192.0168.0005.03', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')
26539 2019-06-25 03:41:51.367 UTC root:add_node INFO: New node: Node(name=u'0192.0168.0003.02', id=u'0192.0168.0003.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')
26539 2019-06-25 03:41:51.367 UTC root:node_structure INFO: [Node(name=u'0192.0168.0006', id=u'0192.0168.0006', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.6/32'], sid=''), Node(name=u'0192.0168.0007', id=u'0192.0168.0007', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.7/32'], sid=''), Node(name=u'0192.0168.0004', id=u'0192.0168.0004', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.4/32'], sid=''), Node(name=u'0192.0168.0005', id=u'0192.0168.0005', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.5/32'], sid=''), Node(name=u'0192.0168.0002', id=u'0192.0168.0002', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.2/32'], sid=''), Node(name=u'0192.0168.0003', id=u'0192.0168.0003', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'192.168.0.3/32'], sid=''), Node(name=u'0192.0168.0007.02', id=u'0192.0168.0007.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0192.0168.0005.02', id=u'0192.0168.0005.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0192.0168.0006.02', id=u'0192.0168.0006.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0192.0168.0007.03', id=u'0192.0168.0007.03', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0192.0168.0007.04', id=u'0192.0168.0007.04', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0192.0168.0005.03', id=u'0192.0168.0005.03', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid=''), Node(name=u'0192.0168.0003.02', id=u'0192.0168.0003.02', loopback='', portlist=[], pcc='', pcep_type='', prefix=[], sid='')]
26539 2019-06-25 03:41:51.367 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0192.0168.0007.02 is: 0192.0168.0007
26539 2019-06-25 03:41:51.367 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0192.0168.0005.02 is: 0192.0168.0005
26539 2019-06-25 03:41:51.367 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0192.0168.0006.02 is: 0192.0168.0006
26539 2019-06-25 03:41:51.367 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0192.0168.0007.03 is: 0192.0168.0007
26539 2019-06-25 03:41:51.367 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0192.0168.0007.04 is: 0192.0168.0007
26539 2019-06-25 03:41:51.367 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0192.0168.0005.03 is: 0192.0168.0005
26539 2019-06-25 03:41:51.367 UTC root:pseudo_net_build INFO: Owner of Pseduo: 0192.0168.0003.02 is: 0192.0168.0003
26539 2019-06-25 03:41:51.368 UTC root:pseudo_net_build INFO: []
26539 2019-06-25 03:41:51.390 UTC root:_get_url INFO: status code: 200
26539 2019-06-25 03:41:51.390 UTC root:build_odl_topology ERROR: <type 'exceptions.KeyError'>
26539 2019-06-25 03:41:51.390 UTC root:getTopo INFO: Failed to get topo: could not reach odl-server?
26539 2019-06-25 03:41:51.390 UTC root:post INFO: {"response": [{"cause": "could not reach odl-server?", "option": "topo", "success": false}]}
26539 2019-06-25 03:41:51.391 UTC root:initialize INFO: Init 2 done - debug saved
26539 2019-06-25 03:41:51.392 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
26539 2019-06-25 03:41:51.399 UTC root:get_url INFO: Url get Status: 200
26539 2019-06-25 03:41:51.399 UTC root:list_pcep_lsp INFO: We have no nodes in our PCEP Topology
26539 2019-06-25 03:41:51.399 UTC root:listAllLsp INFO: list: [], formatted: []
26539 2019-06-25 03:41:51.400 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}
~

BGP-LS-Routes.txt
BGP-LS-Topology.txt
Invalid-Topology

Thank you in advance

Regards
Durai

Issue trying to deploy a new SR path.

Hey there,

For a project @work I had to set up a simple topology to demonstrate the advantages of using SR over LDP/RSVP. So reading around I found this Pathman SR app that lets you configure dynamically SR paths over your MPLS network. So I set up a small topology, 4 XRv in EVE-NG, set up a new ubuntu VM with ODL and on top Pathman SR.

I think it went ok, but there a few things that I'm still struggling at and wanted to know if you guys can be of any help.

So, first of all, like I said, I have 4 XRv routers, but, only 3 of them are recognized as SR ready/PCEP ready and one of them is not. This is the log for that:

3586 2017-12-31 18:02:50.116 UTC root:node_sr_update INFO: SR sid updated for: 67372036 from bgp
3586 2017-12-31 18:02:50.116 UTC root:node_sr_update INFO: SR sid updated for: 16843009 from bgp
3586 2017-12-31 18:02:50.116 UTC root:node_sr_update ERROR: No BGP SID for: 33686018
3586 2017-12-31 18:02:50.116 UTC root:node_sr_update INFO: SR sid updated for: 50529027 from bgp

it seems the issue has to do with something called "termination-point" but it's weird cause thats actually the node that is directly connected to the VM with ODL/Pathman SR

3586 2017-12-31 18:03:18.712 UTC root:add_node INFO: New node: Node(name=u'67372036', id=u'67372036', loopback=u'4.4.4.4', portlist=[u'10.10.24.4', u'10.10.34.4'], pcc=u'pcc://4.4.4.4', pcep_type='07'
, prefix=[u'10.10.24.0/24', u'10.10.34.0/24', u'4.4.4.4/32'], sid='')
3586 2017-12-31 18:03:18.930 UTC root:add_node INFO: New node: Node(name=u'16843009', id=u'16843009', loopback=u'1.1.1.1', portlist=[u'10.10.12.1', u'10.10.13.1'], pcc=u'pcc://1.1.1.1', pcep_type='07'
, prefix=[u'1.1.1.1/32', u'10.10.12.0/24', u'10.10.13.0/24'], sid='')
3586 2017-12-31 18:03:18.931 UTC root:node_structure ERROR: Node 33686018 is missing 'termination-point'
3586 2017-12-31 18:03:18.931 UTC root:add_node INFO: New node: Node(name=u'33686018', id=u'33686018', loopback='', portlist=[], pcc='', pcep_type='', prefix=[u'10.10.12.0/24', u'10.10.23.0/24', u'10.1
0.24.0/24', u'192.168.1.0/30'], sid='')
3586 2017-12-31 18:03:19.137 UTC root:add_node INFO: Updated node: Node(name=u'33686018', id=u'33686018', loopback='', portlist=[u'10.10.12.2', u'10.10.23.2', u'10.10.24.2'], pcc='', pcep_type='', pre
fix=[u'10.10.12.0/24', u'10.10.23.0/24', u'10.10.24.0/24', u'192.168.1.0/30', u'2.2.2.2/32'], sid='')
3586 2017-12-31 18:03:19.335 UTC root:add_node INFO: New node: Node(name=u'50529027', id=u'50529027', loopback=u'3.3.3.3', portlist=[u'10.10.13.3', u'10.10.23.3', u'10.10.34.3'], pcc=u'pcc://3.3.3.3',
pcep_type='07', prefix=[u'10.10.13.0/24', u'10.10.23.0/24', u'10.10.34.0/24', u'3.3.3.3/32'], sid='')

All XRv routers has the same config, something like this:

router ospf 1
distribute bgp-ls
router-id 2.2.2.2
segment-routing mpls
redistribute connected
area 0
mpls traffic-eng
segment-routing mpls
interface Loopback0
passive enable
prefix-sid index 2001
!
interface GigabitEthernet0/0/0/0
network point-to-point
fast-reroute per-prefix
fast-reroute per-prefix ti-lfa enable
!
interface GigabitEthernet0/0/0/1
network point-to-point
fast-reroute per-prefix
fast-reroute per-prefix ti-lfa enable
!
interface GigabitEthernet0/0/0/2
network point-to-point
fast-reroute per-prefix
fast-reroute per-prefix ti-lfa enable
!
!
mpls traffic-eng router-id 2.2.2.2
!
router bgp 1
bgp router-id 2.2.2.2
address-family ipv4 unicast
!
address-family link-state link-state
!
neighbor 1.1.1.1
remote-as 1
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
!
!
neighbor 3.3.3.3
remote-as 1
update-source Loopback0
address-family ipv4 unicast
!
!
neighbor 4.4.4.4
remote-as 1
update-source Loopback0
address-family ipv4 unicast
route-reflector-client
!
!
neighbor 192.168.1.2
remote-as 1
update-source GigabitEthernet0/0/0/3
address-family ipv4 unicast
route-reflector-client
!
address-family link-state link-state
route-reflector-client
!
!
!
mpls traffic-eng
pce
peer source ipv4 2.2.2.2
peer ipv4 192.168.1.2
!
segment-routing
logging events peer-status
stateful-client
instantiation
cisco-extension
!
!
auto-tunnel pcc
tunnel-id min 15 max 99
!
reoptimize timers delay installation 0
!
end

Issue#2: This is not a big deal but I think it has something to do with the other issues. Pathman SR can't get the XRv hostnames I assigned to them. It is assigning some weirds numbers. Its not actually an issue cause the topology is small but I'm guessing there is something wrong with my setup.

Issue#3:
I have configured a TE Tunnel with SR manually but it doesn't appear on Pathman SR

RP/0/0/CPU0:P1#sh mpls traffic-eng tunnels 14
Sun Dec 31 18:51:27.659 UTC

Name: tunnel-te14 Destination: 4.4.4.4 Ifhandle:0x90
Signalled-Name: P1_t14
Status:
Admin: up Oper: up Path: valid Signalling: connected

path option 10, (Segment-Routing) type explicit SR14 (Basis for Setup)
G-PID: 0x0800 (derived from egress interface properties)
Bandwidth Requested: 0 kbps  CT0
Creation Time: Sun Dec 31 17:10:08 2017 (01:41:19 ago)

Config Parameters:
Bandwidth: 0 kbps (CT0) Priority: 7 7 Affinity: 0x0/0x0
Metric Type: TE (global)
Path Selection:
Tiebreaker: Min-fill (default)
Protection: any (default)
Hop-limit: disabled
Cost-limit: disabled
Path-invalidation timeout: 10000 msec (default), Action: Tear (default)
AutoRoute: enabled LockDown: disabled Policy class: not set
Forward class: 0 (default)
Forwarding-Adjacency: disabled
Autoroute Destinations: 0
Loadshare: 0 equal loadshares
Auto-bw: disabled
Path Protection: Not Enabled
BFD Fast Detection: Disabled
Reoptimization after affinity failure: Enabled
SRLG discovery: Disabled
History:
Tunnel has been up for: 01:31:31 (since Sun Dec 31 17:19:56 UTC 2017)
Current LSP:
Uptime: 01:31:26 (since Sun Dec 31 17:20:01 UTC 2017)
Prior LSP:
ID: 3 Path Option: 10
Removal Trigger: reoptimization completed

Segment-Routing Path Info (OSPF 1 area 0)
Segment0[Node]: 2.2.2.2, Label: 18001
Segment1[Node]: 3.3.3.3, Label: 19001
Segment2[Node]: 4.4.4.4, Label: 20001
Displayed 1 (of 1) heads, 0 (of 0) midpoints, 0 (of 0) tails
Displayed 1 up, 0 down, 0 recovering, 0 recovered heads

My question is, do all SR paths in the network appear on Pathman SR app or just the ones you configure using the app?

Issue#4: When I tried to set up the new path and deploy it using Pathman SR I got the following error:

3586 2017-12-31 18:20:24.461 UTC root:initialize INFO: Init 2 done - debug saved
3586 2017-12-31 18:20:24.461 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
3586 2017-12-31 18:20:24.468 UTC root:get_url INFO: Url get Status: 200
3586 2017-12-31 18:20:24.468 UTC root:listAllLsp INFO: list: [], formatted: []
3586 2017-12-31 18:20:24.469 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}
3586 2017-12-31 18:21:38.063 UTC root:initialize INFO: Init 2 done - debug saved
3586 2017-12-31 18:21:38.064 UTC root:rest_interface_parser INFO: Commands Relieved: {u'src': u'16843009', u'dst': u'67372036', u'option': u'path', u'metric': u'igp'}
3586 2017-12-31 18:21:38.064 UTC root:post INFO: {"response": [{"path": [["16843009", "50529027", "67372036"]], "metric": [2], "option": "path", "success": true}]}
3586 2017-12-31 18:21:50.909 UTC root:initialize INFO: Init 2 done - debug saved
3586 2017-12-31 18:21:50.911 UTC root:rest_interface_parser INFO: Commands Relieved: {u'path': [u'16843009', u'50529027', u'67372036'], u'option': u'create', u'name': u'TEST-PATHMAN'}
3586 2017-12-31 18:21:50.913 UTC root:get_loop_list INFO: Path: [u'16843009', u'50529027', u'67372036']
3586 2017-12-31 18:21:50.913 UTC root:get_loop_list INFO: Loop list: [u'3.3.3.3', u'4.4.4.4']
3586 2017-12-31 18:21:50.913 UTC root:get_sid_list INFO: Path: [u'16843009', u'50529027', u'67372036']
3586 2017-12-31 18:21:50.913 UTC root:get_sid_list INFO: SID list: [19001, 20001]
3586 2017-12-31 18:21:51.522 UTC root:createSRtunnel INFO: Create SR Tunnel response: {u'output': {u'failure': u'failed', u'error': [{u'error-object': {u'ignore': False, u'processing-rule': False, u'type'
: 4, u'value': 2}}]}}
3586 2017-12-31 18:21:53.526 UTC root:post INFO: {"response": [{"cause": {"failure": "failed", "error": [{"error-object": {"ignore": false, "processing-rule": false, "type": 4, "value": 2}}]}, "op
tion": "create", "success": false}]}
3586 2017-12-31 18:21:53.536 UTC root:initialize INFO: Init 2 done - debug saved
3586 2017-12-31 18:21:53.536 UTC root:rest_interface_parser INFO: Commands Relieved: {u'option': u'list_all'}
3586 2017-12-31 18:21:53.545 UTC root:get_url INFO: Url get Status: 200
3586 2017-12-31 18:21:53.545 UTC root:listAllLsp INFO: list: [], formatted: []
3586 2017-12-31 18:21:53.546 UTC root:post INFO: {"response": [{"list": [], "option": "list_all", "success": true}]}

Type 4 Value 2, what does it mean?

Well, I think all issues are connected somehow but I wanted to separate them so we can tackle them one by one.

Thanks a lot guys and by the way this is an amazing project!

Jose Jimbo

About sr and sfc

Hello, does the current project support the deployment of segmented routing and SFC, or does it only deploy segmented routing and can be deployed behind SFC? I want to do a simulation of segmented routing and SFC. After reading your project, I feel that it can meet my needs. I look forward to your reply and thank you in advance

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.