Skip to content

kytos-ng/telemetry_int

Repository files navigation

License Build status Code coverage Code-quality score

kytos/telemetry_int

NApp to deploy In-band Network Telemetry for EVCs

Installing

To install this NApp, first, make sure to have the same venv activated as you have kytos installed on:

$ git clone https://github.com/kytos-ng/telemetry_int
$ cd telemetry_int
$ python setup.py develop

Requirements

Events

Subscribed

  • kytos/of_multi_table.enable_table
  • kytos/mef_eline.deleted
  • kytos/flow_manager.flow.error
  • kytos/mef_eline.undeployed
  • kytos/mef_eline.(redeployed_link_down|redeployed_link_up)
  • kytos/mef_eline.error_redeploy_link_down
  • kytos/mef_eline.uni_active_updated
  • kytos/mef_eline.deployed

Published

kytos/of_lldp.enable_table

A response from the kytos/of_multi_table.enable_table event to confirm table settings.

General Information

Before enabling INT, you need to pre-configure proxy ports. Currently, only dedicated proxy ports are supported, for each used UNI you'll need one looped proxy port.

Since version 2024.1, the UI supports the following main API functionalities: configuring proxy ports, enabling and disabling INT, and redeploying INT.

Topology Example

Here's a linear topology example with three INT capable switches:

      17-18                                           25-26
15 - [dpid1] - 2 ------- 2 - [dpid2] - 1 ------- 5 - [dpid6] - 22
16 -  19-20

To configure the proxy ports (the proxy port number is supposed to be the lower number of the loop):

curl -s -X POST -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/uni/00:00:00:00:00:00:00:01:15/proxy_port/17
curl -s -X POST -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/uni/00:00:00:00:00:00:00:01:16/proxy_port/19
curl -s -X POST -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/uni/00:00:00:00:00:00:00:06:22/proxy_port/25

To enable telemetry in a set of EVCs:

curl -s -X POST -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/evc/enable -d '{"evc_ids": ["1234", ...]}'

To enable telemetry for all EVCs:

curl -s -X POST -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/evc/enable -d '{"evc_ids": []}'

To list all EVCs with telemetry enabled:

curl  http://127.0.0.1:8181/api/kytos/telemetry_int/v1/evc

To list configured proxy ports:

curl  http://127.0.0.1:8181/api/kytos/telemetry_int/v1/uni/proxy_port

To list and compare which INT EVCs have flows installed comparing with mef_eline flows and expected telemetry metadata:

curl  http://127.0.0.1:8181/api/kytos/telemetry_int/v1/evc/compare

To redeploy telemetry in a set of EVCs:

curl -s -X PATCH -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/evc/redeploy -d '{"evc_ids": ["1234", ...]}'

To redeploy telemetry for all EVCs:

curl -s -X PATCH -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/evc/redeploy -d '{"evc_ids": []}'

To disable telemetry for all EVCs:

curl -s -X POST -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/evc/disable -d '{"evc_ids": []}'

To disable telemetry in a set of EVCs:

curl -s -X POST -H 'Content-type: application/json' http://0.0.0.0:8181/api/kytos/telemetry_int/v1/evc/disable -d '{"evc_ids": ["1234", ...]}'