[BGPCEP-151] pcc-mock: enhancemnets Created: 16/Oct/14  Updated: 16/Nov/21  Resolved: 16/Nov/21

Status: Resolved
Project: bgpcep
Component/s: PCEP
Affects Version/s: Bugzilla Migration
Fix Version/s: None

Type: Improvement
Reporter: Milos Fabian Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: PC



 Description   

Minor changes, fixes and enhacements related to pcc-mock, by users requirements.



 Comments   
Comment by Milos Fabian [ 16/Oct/14 ]

TODO - reported LSPs should contian at leat one hop path.

Comment by Milos Fabian [ 28/Nov/14 ]

https://git.opendaylight.org/gerrit/#/c/12782/
https://git.opendaylight.org/gerrit/#/c/12025/

Comment by RichardHill [ 08/Dec/14 ]

Could you also add ability to configure

-d, --deadtimer <N> (optional, default 0) - DeadTimer value in seconds
-ka, --keepalive <N> (optional, deafult 30) - KeepAlive timer value in seconds

Comment by Milos Fabian [ 08/Dec/14 ]

(In reply to Hill from comment #3)
> Could you also add ability to configure
>
> -d, --deadtimer <N> (optional, default 0) - DeadTimer value in seconds
> -ka, --keepalive <N> (optional, deafult 30) - KeepAlive timer value in
> seconds

https://git.opendaylight.org/gerrit/#/c/13449/

Comment by Milos Fabian [ 11/Feb/15 ]

TODO - enable a tunnel initiation and removal

Comment by RichardHill [ 16/Feb/15 ]

Will tunnel update be added?

Comment by Milos Fabian [ 16/Feb/15 ]

(In reply to Hill from comment #6)
> Will tunnel update be added?

Tunnel updating is already possible.

Comment by Vratko Polak [ 16/Feb/15 ]

More enhancements, to resemble behavior of routers better:

  • Refuse remove-lsp on lsps present at start of pcc-mock, as if they were created by router CLI.
  • When multiple remote addresses are provided, only the first one gets delegation flag set.
  • Support "undelegate" request from remoteAddress for CLI-tunnels, re-delegate immediatelly to the next remoteAddress in cyclic order (if D was set, otherwise PcErr).
  • Support "undelegate" and "get delegation" for instantiated tunnels, delete tunnel if not delegated certain (configurable) time.
Comment by Milos Fabian [ 19/Feb/15 ]

*pcc-mock support tunnel initiate and remove:
https://git.opendaylight.org/gerrit/#/c/15257/

*pcc-mock configurable port numbers:
https://git.opendaylight.org/gerrit/#/c/15112/

Comment by Vratko Polak [ 01/Apr/15 ]

One more enhancement that may be useful for various stress tests, but most urgently for TCPMD5 testing:

  • argument --reconnect <number>
    specifying how many seconds to wait after TCP session went down (no matter if before or after negotiation) before PCC tries to reconnect. Without providing this argument, pcc-mock should never reconnect.
Comment by Milos Fabian [ 07/Apr/15 ]

(In reply to Vratko Polák from comment #10)
> One more enhancement that may be useful for various stress tests, but most
> urgently for TCPMD5 testing:
> * argument --reconnect <number>
> specifying how many seconds to wait after TCP session went down (no matter
> if before or after negotiation) before PCC tries to reconnect. Without
> providing this argument, pcc-mock should never reconnect.

*reconnect strategy
https://git.opendaylight.org/gerrit/#/c/17800/

Comment by Vratko Polak [ 22/Apr/15 ]

> but most urgently for TCPMD5 testing

Actual TCPMD5 testing revealed that the behavior is different.
When pcc-mock is using a password, but ODL is using no password (or wrong password), pcc-mock gets stuck in what looks like "creating TCPMD5 connection" phase. When ODL is re-configured to use the correct password, it does not affect this connection attempt, pcc-mock is still stuck. Ctrl+c and starting pcc-mock leads to successful PCEP connection established.

I am not sure yet what the correct course of action is, but this new pcc-mock feature would be useful:

  • --connection-timeout <seconds>
    specifies time pcc-mock should spend in "creating TCP(MD5) connection" phase. 0 means "wait forever" and is default value.
    After time is out, destroy the channel and act according to reconnect strategy.
Comment by Vratko Polak [ 03/Jun/15 ]

Failures in this suite track deficiencies of current pcc-mock behavior: https://jenkins.opendaylight.org/releng/view/CSIT-Jobs/job/bgpcep-csit-1node-cds-userfeatures-only-stable-lithium/lastSuccessfulBuild/robot/bgpcep-userfeatures.txt/Pcepuser/

Perhaps it was a mistake to specify user-facing feature tests in https://wiki.opendaylight.org/view/BGP_LS_PCEP:Lithium_Feature_Tests#How_to_test
to rely on a not-yet-implemented behavior, but it is now a part of Lithium formal process, and the results are publicly visible.

So perhaps it is worth fixing pcc-mock to make sure nobody thinks failures are due to PCEP functionality in ODL.

Comment by Vratko Polak [ 16/Jun/15 ]

(In reply to Vratko Polák from comment #12)
> Actual TCPMD5 testing revealed that the behavior is different.
> When pcc-mock is using a password, but ODL is using no password (or wrong
> password), pcc-mock gets stuck in what looks like "creating TCPMD5
> connection" phase. When ODL is re-configured to use the correct password, it
> does not affect this connection attempt, pcc-mock is still stuck. Ctrl+c and
> starting pcc-mock leads to successful PCEP connection established.

I retract this paragraph.
Maybe the issue was there, but was fixed since then.
Maybe CONTROLLER-1361 (which was active at time the paragraph was written) confused me.
Either way, RC1 build from 2015-06-16 works equally well with or without pcc-mock restart: Connection is established as soon as ODL is re-configured to use correct password.

From pcc-mock side, default flag issue remains (which is entirely my fault, as I have not mentioned it explicitly before). The issue manifests as this diff between expected and actual jsons from pcep-topology:

  • "operational": "up",
    + "operational": "down",
    "plsp-id": 1,
    "processing-rule": false,
    "remove": false,
  • "sync": true,
    + "sync": false,

Real devices usually report the state first (without ERO), then proceed on setting up LSP and finally report the state with ERO. For Lithium tests, the simplest action is to make pcc-mock send only one report, the state with ERO.

Comment by Milos Fabian [ 03/Jul/15 ]

(In reply to Vratko Polák from comment #8)
> More enhancements, to resemble behavior of routers better:
> * Refuse remove-lsp on lsps present at start of pcc-mock, as if they were
> created by router CLI.
> * When multiple remote addresses are provided, only the first one gets
> delegation flag set.
> * Support "undelegate" request from remoteAddress for CLI-tunnels,
> re-delegate immediatelly to the next remoteAddress in cyclic order (if D was
> set, otherwise PcErr).
> * Support "undelegate" and "get delegation" for instantiated tunnels, delete
> tunnel if not delegated certain (configurable) time.

https://git.opendaylight.org/gerrit/#/c/22853/

Comment by Vratko Polak [ 19/Aug/15 ]

This discrepancy still prevents CSIT jobs to get good passrate:

  • "sync": true,
    + "sync": false,

> the simplest action is to make pcc-mock send only one report, the state with ERO.

Comment by Vratko Polak [ 19/Aug/15 ]

I just realized another discrepancy was never mentioned here (my fault):

  • "odl-pcep-ietf-initiated00:create": false,
    + "odl-pcep-ietf-initiated00:create": true,

pcc-mock report after add-lsp should really mark the newly created tunnel as instantiated.

Comment by Milos Fabian [ 24/Aug/15 ]

"sync" and "create" flags fixed: https://git.opendaylight.org/gerrit/#/c/25525/

Comment by Milos Fabian [ 08/Oct/15 ]

update pcc-mock to support https://tools.ietf.org/html/draft-ietf-pce-stateful-sync-optimizations-03

Comment by Claudio David Gasparini [ 04/Jan/16 ]

https://git.opendaylight.org/gerrit/#/c/30491/

Comment by Vratko Polak [ 23/Feb/16 ]

Since Boron, JRE version used in CSIT jobs is tied with stream (Boron gets Java 8, Beryllium and earlier get Java 7). As a consequence, test suites were changed, so that now Lithium jobs use Lithium version of pcc-mock.

Lithium csit job [0] shows that several improvements were not back-ported to Lithium, even though they are used to test lithium functionality. Most notably sync/create fix [1], and the big change which includes delegation-related behavior [2].

The improvements should be backported to Lithium (possibly with other changes) to fix CSIT results.

[0] https://jenkins.opendaylight.org/releng/view/bgpcep/job/bgpcep-csit-1node-userfeatures-only-stable-lithium/lastSuccessfulBuild/robot/bgpcep-userfeatures.txt/Pcepuser/
[1] https://git.opendaylight.org/gerrit/25525
[2] https://git.opendaylight.org/gerrit/22853

Comment by Milos Fabian [ 17/Jun/16 ]

No enhancements required for Boron

Comment by Robert Varga [ 16/Nov/21 ]

All requested enhancements have been delivered, any further items need to be tracked separately.

Generated at Wed Feb 07 19:12:11 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.