Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev port disaggregation #320

Merged
merged 29 commits into from
Jun 23, 2023
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6c86bc9
Support for rx port drill down stats
anjan-keysight May 24, 2023
116dd1e
Update auto generated content
actions-user May 24, 2023
5e9cc3d
Metrics tag name description update
anjan-keysight May 25, 2023
c629ca4
Merge branch 'dev-port-disaggregation' of https://github.com/open-tra…
anjan-keysight May 25, 2023
f705555
Update auto generated content
actions-user May 25, 2023
9f662fd
Added rx tx ratio for loss calculation
anjan-keysight May 30, 2023
2ea6fdc
Update auto generated content
actions-user May 30, 2023
bd3ffbf
Minor update
anjan-keysight May 31, 2023
79d594b
Update auto generated content
actions-user May 31, 2023
4705302
Modified default value
anjan-keysight May 31, 2023
5d4988f
Update auto generated content
actions-user May 31, 2023
2931551
Replication factor made into enum
anjan-keysight Jun 7, 2023
c571502
Update auto generated content
actions-user Jun 7, 2023
72dd3d8
Name and desc update based on PR comments
anjan-keysight Jun 8, 2023
eb10839
Update auto generated content
actions-user Jun 8, 2023
e0b2326
Minor name update
anjan-keysight Jun 8, 2023
acd187a
Update auto generated content
actions-user Jun 8, 2023
a04e2ed
Description and object reference update
anjan-keysight Jun 8, 2023
6c7d3b6
Update auto generated content
actions-user Jun 8, 2023
f12703c
Changes based on review comments
anjan-keysight Jun 9, 2023
276d21a
Update auto generated content
actions-user Jun 9, 2023
7669e51
Minor description update
anjan-keysight Jun 13, 2023
e2a08f9
Update auto generated content
actions-user Jun 13, 2023
fa722dd
Description update
anjan-keysight Jun 16, 2023
579ad62
Update auto generated content
actions-user Jun 16, 2023
1356b0e
Update of enum type from string to str
anjan-keysight Jun 19, 2023
83e23fa
Update auto generated content
actions-user Jun 19, 2023
d3e252c
Description update
anjan-keysight Jun 22, 2023
cbbaa0c
Update auto generated content
actions-user Jun 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions artifacts/openapi.html

Large diffs are not rendered by default.

89 changes: 89 additions & 0 deletions artifacts/openapi.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

73 changes: 73 additions & 0 deletions artifacts/otg.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions flow/endpoint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,28 @@ components:
rx_name:
description: |-
The unique name of a port that is the intended receive port.
x-status:
status: deprecated
information: |-
This property is deprecated in favor of property rx_names
type: string
x-constraint:
- '/components/schemas/Port/properties/name'
- '/components/schemas/Lag/properties/name'

x-field-uid: 2
rx_names:
description: |-
Unique names of ports that are intended receive ports.
type: array
items:
description: |-
The unique name of a port that is the intended receive port.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we correct 'port' to 'port or lag'?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not seeing the updated change?

type: string
x-constraint:
- '/components/schemas/Port/properties/name'
- '/components/schemas/Lag/properties/name'
x-field-uid: 3
Flow.Router:
description: >-
A container for declaring a map of 1..n transmit devices
Expand Down
57 changes: 57 additions & 0 deletions flow/metrics.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ components:
type: boolean
default: false
x-field-uid: 2
rx_tx_ratio:
description: |-
Rx Tx ratio.
$ref: '#/components/schemas/Flow.RxTxRatio'
x-field-uid: 6
timestamps:
description: |-
Enables additional flow metric first and last timestamps.
Expand All @@ -30,6 +35,11 @@ components:
Latency metrics.
$ref: '#/components/schemas/Flow.Latency.Metrics'
x-field-uid: 4
predefined_metric_tags:
description: |-
Predefined metric tags
$ref: '#/components/schemas/Flow.Predefined.Tags'
x-field-uid: 5
Flow.Latency.Metrics:
description: |-
The optional container for per flow latency metric configuration.
Expand Down Expand Up @@ -69,3 +79,50 @@ components:
x-field-uid: 1
cut_through:
x-field-uid: 2
Flow.Predefined.Tags:
description: |-
List of predefined flow tracking options, outside packet fields, that can be enabled.
type: object
properties:
rx_name:
description: |-
Enables Rx port or lag level disaggregation with predefined metrics tag name set as "rx_name".
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this need an update from rx_name->rx_port_name?

Copy link
Contributor Author

@anjan-keysight anjan-keysight Jun 22, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both otg and gnmi tag name is going to be rx_name (rx_port_name was the earlier proposal). The rx_name is generic tag name, referring to both port and lag as rx endpoints.
So if we have a flow configured from lag L1 to lag L2 and a separate port P5, the metrics response will look like:
F1: L1 => L2, P5

Flow    Frames Tx    Bytes Tx    Frames Rx    Bytes Rx    Tags
f1      1000         64000       1000         64000
f1		                 400          25600       rx_name: p5
f1		                 600          38400       rx_name: l2

There can be other built-in tag names in future, like "mem_name" (as an example), if we want to disaggregate based on lag member ports also.
And yes, these tag names will be alongside user defined ones.

The Rx port / lag names can be found under tagged_metrics tag names in flow metrics response.
type: boolean
default: false
x-field-uid: 1
Flow.RxTxRatio:
description: |-
Rx Tx ratio is the ratio of expected number of Rx packets across all Rx ports to the Tx packets
for the configured flow. It is a factor by which the Tx packet count is multiplied to calculate
the sum of expected Rx packet count, across all Rx ports. This will be used to calculate loss
percentage of flow at aggregate level.
type: object
properties:
choice:
type: string
default: value
x-field-uid: 1
x-enum:
rx_count:
x-field-uid: 1
value:
x-field-uid: 2
rx_count:
$ref: '#/components/schemas/Flow.RxTxRatio.RxCount'
x-field-uid: 2
value:
description: |-
ankur-sheth marked this conversation as resolved.
Show resolved Hide resolved
Should be a positive, non-zero value. A custom integer value (>1) can be specified for
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might need to explain the scenario with the default value (i.e. == 1)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added description for default value.

loss calculation for cases when there are multiple destination addresses configured within one flow,
but DUT is configured to replicate only to a subset of Rx ports. For cases when Tx side generates two
packets from each source in 1:1 protection mode but only one of the two packets are received by the
Rx port, we may need to specify a fractional value instead.
type: number
format: float
default: 1.0
x-field-uid: 3
Flow.RxTxRatio.RxCount:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my current understanding, I'm wondering if we need this option. I'm not sure it's more convenient/explicit for test writer to use vs. just setting the port count explicitly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

User can use RxCount, so even if the rx port count changes in config, user does not have to update it.
But I leave it to you, if you feel otherwise.

description: |-
This is for cases where one copy of Tx packet is received on all Rx ports and so the sum total of Rx packets
received across all Rx ports is a multiple of Rx port count and Tx packets.
6 changes: 6 additions & 0 deletions result/flow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -276,12 +276,18 @@ components:
x-enum:
hex:
x-field-uid: 1
string:
x-field-uid: 2
x-field-uid: 1
hex:
description: Value represented in hexadecimal format
type: string
format: hex
x-field-uid: 2
string:
description: Value represented in string format
type: string
x-field-uid: 3
Metric.Timestamp:
description: |-
The container for timestamp metrics.
Expand Down