Segment Routing network-topology-pcep:add-lsp - Data already exists for path: /


Martin Cechvala <martin@...>
 

Hello,

 

I’ve setup Neon and I have PCEP and BGP-LS running. I’m able to get network-topology and when I create LSP on a router I’m able to see it in the ODL network topology.

 

However I have trouble creating a LSP via RESTCONF.

 

I’m sending this with POST method to URL: http://ODL:8181/restconf/config/network-topology-pcep:add-lsp:

 

<input xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep">

   <node>pcc://10.0.0.3</node>

   <name>sr-path</name>

   <arguments>

      <lsp xmlns="urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful">

         <delegate>true</delegate>

         <administrative>true</administrative>

      </lsp>

      <endpoints-obj>

         <ipv4>

            <source-ipv4-address>10.0.0.3</source-ipv4-address>

            <destination-ipv4-address>10.0.0.25</destination-ipv4-address>

         </ipv4>

      </endpoints-obj>

      <path-setup-type xmlns="urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful">

         <pst>1</pst>

      </path-setup-type>

      <ero>

         <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">24001</sid>

            <c-flag xmlns="urn:opendaylight:params:xml:ns:yang:pcep:segment:routing">false</c-flag>

            <ip-address xmlns="urn:opendaylight:params:xml:ns:yang:pcep:segment:routing">10.0.0.1</ip-address>

        </subobject>

      </ero>

   </arguments>

   <network-topology-ref xmlns:topo="urn:TBD:params:xml:ns:yang:network-topology">/topo:network-topology/topo:topology[topo:topology-id="pcep-topology"]</network-topology-ref>

</input>

 

And I’m getting this as a response:

<errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf">

    <error>

        <error-type>protocol</error-type>

        <error-tag>data-exists</error-tag>

        <error-message>Data already exists for path: /</error-message>

    </error>

</errors>

 

Also when I send just this:

<input xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep">

 

</input>

 

I get the same response, so it looks like I have some more generic problem.

 

Could you please advice?

 

Thanks.

 

Martin


Martin Cechvala <martin@...>
 

Hello,

 

The issue was in the URL. I was using /restconf/operational in place of /restconf/operations.

 

Now I’m able to see the the PCInitiate packet in wireshark going to the router. With IANA codepoints = false I was getting no reply whatsoever from the router (no packet in wireshark) and after 20-30 seconds I get ‘no-ack’ message in Postman from ODL. With IANA codepoints = true a reply for PCInitiate message is PCReq although PCInitiate message specificies ENDPOINT and ERO as well. Then the controller replies with PCErr to the PCReq message.

 

I checked RFCs and it doesn’t seem that PCInitiate can be followed by PCReq, there should be PCRpt instead.

 

Now I have two questions:

  • I would expect that after PCInitiate message the router sets up the LSP without subsequent PCReq message using classic CSFP algorithm. However I’m getting the PCReq message, does it mean that the router is anyway asking for a full hop-by-hop path from the controller? Is this a correct behaviour? Or is it a bug perhaps?
  • If the PCReq message after PCInitiate message is the correct behaviour then why is the controller replying with PCErr “RP object missing” message (RP object is present in the PCReq message).

 

I downgraded from SR to classic MPLS-TE, also I set delegate = false. The router creates the tunnel but it asks the controller for the path and I don’t understand why.

 

I’m using Cisco XRv9k 6.2.3.

 

Thanks.

 

Martin

 

From: bgpcep-users-bounces@... <bgpcep-users-bounces@...> On Behalf Of Martin Cechvala
Sent: Saturday, 18 May, 2019 19:10
To: bgpcep-users@...
Subject: [bgpcep-users] Segment Routing network-topology-pcep:add-lsp - Data already exists for path: /

 

Hello,

 

I’ve setup Neon and I have PCEP and BGP-LS running. I’m able to get network-topology and when I create LSP on a router I’m able to see it in the ODL network topology.

 

However I have trouble creating a LSP via RESTCONF.

 

I’m sending this with POST method to URL: http://ODL:8181/restconf/config/network-topology-pcep:add-lsp:

 

<input xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep">

   <node>pcc://10.0.0.3</node>

   <name>sr-path</name>

   <arguments>

      <lsp xmlns="urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful">

         <delegate>true</delegate>

         <administrative>true</administrative>

      </lsp>

      <endpoints-obj>

         <ipv4>

            <source-ipv4-address>10.0.0.3</source-ipv4-address>

            <destination-ipv4-address>10.0.0.25</destination-ipv4-address>

         </ipv4>

      </endpoints-obj>

      <path-setup-type xmlns="urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful">

         <pst>1</pst>

      </path-setup-type>

      <ero>

         <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">24001</sid>

            <c-flag xmlns="urn:opendaylight:params:xml:ns:yang:pcep:segment:routing">false</c-flag>

            <ip-address xmlns="urn:opendaylight:params:xml:ns:yang:pcep:segment:routing">10.0.0.1</ip-address>

        </subobject>

      </ero>

   </arguments>

   <network-topology-ref xmlns:topo="urn:TBD:params:xml:ns:yang:network-topology">/topo:network-topology/topo:topology[topo:topology-id="pcep-topology"]</network-topology-ref>

</input>

 

And I’m getting this as a response:

<errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf">

    <error>

        <error-type>protocol</error-type>

        <error-tag>data-exists</error-tag>

        <error-message>Data already exists for path: /</error-message>

    </error>

</errors>

 

Also when I send just this:

<input xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep">

 

</input>

 

I get the same response, so it looks like I have some more generic problem.

 

Could you please advice?

 

Thanks.

 

Martin