-
Notifications
You must be signed in to change notification settings - Fork 17
RoCEv2 OTG Model #405
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
base: master
Are you sure you want to change the base?
RoCEv2 OTG Model #405
Changes from all commits
13da9fe
c82ca4f
713ae02
4448a94
838d7bc
6caf646
1af5f23
facc567
2c13e2c
172a2c4
e119120
0d02fd4
571fb89
88875f1
94f1f87
424d11c
d2af6fb
fc452b2
23a0e8d
b4ed901
5d17bb1
4caf28d
cc52fcd
9d9947f
aa0eecc
e650c31
1548d44
ef2d9a1
fb8d1e9
f3a8031
273bb7a
b53029a
660046c
f3f4eb9
44ba051
8950e5c
a1c088c
3e2e572
c8893ad
6eeb017
9e7a097
3e7ce6f
49a265c
eecad6e
2d329c5
81cb0a6
862526e
a6d3c25
9695955
4c54115
503c516
7431f37
2d0df4e
a2d04ec
4c9b9d4
fd09afb
397d0e1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,213 @@ | ||
components: | ||
schemas: | ||
Rocev2.FlowSettings: | ||
description: >- | ||
This configuration allows you to configure RDMA flow over the same QP number from same source and destination. | ||
type: object | ||
properties: | ||
connection_type: | ||
description: >- | ||
There are multiple connection types. Valid values are : Reliable Connection (RC), Reliable Datagram (RD), Extended Reliable Connection (XRC), | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. At the time of this implementation, please consider only RC. So from description excludes other modes. Or, explicitly mention that supported mode is RC. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is not applicable for IxN but other test vendors whose configuration will be based on the model |
||
Unreliable Datagram (UD), Unreliable Connection (UC), Raw IPv6 Datagram, Raw Ethertype Datagram. | ||
type: string | ||
x-enum: | ||
reliable_connection: | ||
x-field-uid: 1 | ||
reliable_datagram: | ||
x-field-uid: 2 | ||
extended_reliable_connection: | ||
x-field-uid: 3 | ||
unreliable_datagram: | ||
x-field-uid: 4 | ||
unreliable_connection: | ||
x-field-uid: 5 | ||
raw_ipv6_datagram: | ||
x-field-uid: 6 | ||
raw_ethernet_datagram: | ||
x-field-uid: 7 | ||
x-field-uid: 1 | ||
source_qp_number: | ||
description: >- | ||
Configure the QP range. | ||
type: integer | ||
format: uint32 | ||
default: 2 | ||
minimum: 2 | ||
maximum: 33554431 | ||
x-field-uid: 2 | ||
dscp: | ||
description: >- | ||
DSCP value for this flow | ||
type: integer | ||
format: uint32 | ||
default: 24 | ||
minimum: 0 | ||
maximum: 63 | ||
x-field-uid: 3 | ||
ecn: | ||
description: >- | ||
This field allows to configure bits of the Traffic Class field in the IPv4 or IPv6 header to encode four different code points. | ||
type: integer | ||
format: uint32 | ||
default: 1 | ||
minimum: 0 | ||
maximum: 3 | ||
x-field-uid: 4 | ||
udp_source_port: | ||
description: >- | ||
UDP source port number for this flow. | ||
type: integer | ||
format: uint32 | ||
default: 49152 | ||
minimum: 0 | ||
maximum: 65535 | ||
x-field-uid: 5 | ||
rocev2_verb: | ||
satyamsinghKey marked this conversation as resolved.
Show resolved
Hide resolved
satyamsinghKey marked this conversation as resolved.
Show resolved
Hide resolved
|
||
description: >- | ||
Rocev2 Verb, Available options are: none, write, wrtie_with_immediate, send, send_with_immediate and read: The corresponding flow will not take part in traffic. | ||
type: string | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This could be a choice. Allows immediate_data to be made visible only for _immediate types. Looks like it is not relevant for the other types. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That is correct |
||
default: write | ||
x-enum: | ||
none: | ||
x-field-uid: 1 | ||
write: | ||
x-field-uid: 2 | ||
write_with_immediate: | ||
x-field-uid: 3 | ||
send: | ||
x-field-uid: 4 | ||
send_with_immediate: | ||
x-field-uid: 5 | ||
read: | ||
x-field-uid: 6 | ||
x-field-uid: 6 | ||
immediate_data: | ||
description: >- | ||
Immediate Data field required for SEND/WRITE with immediate verb. | ||
type: string | ||
format: hex | ||
default: "00000000" | ||
dkrabort marked this conversation as resolved.
Show resolved
Hide resolved
|
||
x-field-uid: 7 | ||
message_size: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is message_size part of session bring up or is it needed solely for data flows e.g. could a single QP potentially first send a payload of size 1000 bytes and then another of size 10000 bytes ? In which probably should be somewhere in stateful_flow configuration as properties of the data flow , maybe as an array with ixnetwork supporting a single value only for all flows between same qp endpoints. Or is this specification bound that each qp can have single datagram being split and sent on it ? |
||
description: >- | ||
The Maximum message size that is allowed to transfer depends on the MTU size and the number of VLANs configured on the interfaces. | ||
satyamsinghKey marked this conversation as resolved.
Show resolved
Hide resolved
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maximum bytes transferred will depend on IB MTU (not Ethernet MTU). So, given message size will be broken into multiple packets viz. WF, WM, WL etc. based on the IB MTU value. We take IB MTU as an user input also. |
||
type: integer | ||
format: uint32 | ||
default: 1 | ||
minimum: 0 | ||
maximum: 65535 | ||
x-field-uid: 8 | ||
message_size_unit: | ||
description: >- | ||
Unit of the transfer message size. Available options are Bytes, KB, MB. | ||
satyamsinghKey marked this conversation as resolved.
Show resolved
Hide resolved
|
||
type: string | ||
default: MB | ||
x-enum: | ||
Byte: | ||
x-field-uid: 1 | ||
KB: | ||
x-field-uid: 2 | ||
MB: | ||
x-field-uid: 3 | ||
GB: | ||
x-field-uid: 4 | ||
x-field-uid: 9 | ||
dcqcn_settinga: | ||
$ref: '#/components/schemas/Rocev2.DCQCN' | ||
x-field-uid: 10 | ||
Rocev2.DCQCN: | ||
description: |- | ||
Rocev2 DCQCN Settings. | ||
type: object | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we put a choice here with only one choice available : custom_per_session_settings. |
||
properties: | ||
alpha_g: | ||
description: |- | ||
Alpha G. | ||
type: integer | ||
format: uint64 | ||
x-field-uid: 1 | ||
initial_alpha: | ||
description: |- | ||
Initial Alpha. | ||
type: integer | ||
format: uint64 | ||
x-field-uid: 2 | ||
alpha_update_period: | ||
description: |- | ||
Alpha Update period in microseconds. | ||
type: integer | ||
format: uint64 | ||
x-field-uid: 3 | ||
rate_reduction_time_period: | ||
description: |- | ||
Rate reduction time period in microseconds. | ||
type: integer | ||
format: uint64 | ||
x-field-uid: 4 | ||
initial_rate_after_first_cnp: | ||
description: |- | ||
initial rate after first CNP in Percentage. | ||
type: integer | ||
format: uint32 | ||
minimum: 0 | ||
maximum: 100 | ||
x-field-uid: 5 | ||
minimum_rate_limmit: | ||
description: |- | ||
Minimum Rate Limit in Percentage. | ||
type: integer | ||
format: uint32 | ||
minimum: 0 | ||
maximum: 100 | ||
x-field-uid: 6 | ||
maximum_rate_decrement_at_time: | ||
description: |- | ||
Maximum rate decrement at time in Percentage. | ||
type: integer | ||
format: uint32 | ||
minimum: 0 | ||
maximum: 100 | ||
x-field-uid: 7 | ||
clamp_target_rate: | ||
description: |- | ||
Clamp Target rate. | ||
type: boolean | ||
x-field-uid: 8 | ||
rate_increment_time: | ||
description: |- | ||
Rate increment time period in microseconds. | ||
type: integer | ||
format: uint64 | ||
x-field-uid: 9 | ||
rate_increment_byte_counter: | ||
description: |- | ||
Rate increment byte counter in uint 64 bytes. | ||
type: integer | ||
format: uint64 | ||
x-field-uid: 10 | ||
rate_increment_threshold: | ||
description: |- | ||
Rate increment threshold. | ||
type: integer | ||
format: uint32 | ||
minimum: 1 | ||
maximum: 31 | ||
x-field-uid: 11 | ||
additive_increment_rate: | ||
description: |- | ||
additive increment rate in Percentage. | ||
type: integer | ||
format: uint32 | ||
minimum: 0 | ||
maximum: 100 | ||
x-field-uid: 12 | ||
hyper_increment_rate: | ||
description: |- | ||
hyper increment rate in Percentage. | ||
type: integer | ||
format: uint32 | ||
minimum: 0 | ||
maximum: 100 | ||
x-field-uid: 13 | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
components: | ||
schemas: | ||
Device.Rocev2Peer: | ||
description: >- | ||
Configuration for one or more IPv4 or IPv6 Rocev2 Peers. | ||
type: object | ||
properties: | ||
ipv4_interfaces: | ||
description: >- | ||
This contains an array of references to IPv4 interfaces, each of which | ||
will have list of peers to different destinations. | ||
type: array | ||
items: | ||
$ref: './rocev2ipv4.yaml#/components/schemas/Rocev2.V4Interface' | ||
x-field-uid: 1 | ||
ipv6_interfaces: | ||
description: >- | ||
This contains an array of references to IPv6 interfaces, each of which | ||
will have list of peers to different destinations. | ||
type: array | ||
items: | ||
$ref: './rocev2ipv6.yaml#/components/schemas/Rocev2.V6Interface' | ||
x-field-uid: 2 | ||
Device.Rocev2: | ||
description: >- | ||
Configuration for Rocev2 peer settings. | ||
type: object | ||
properties: | ||
num_of_qps: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why do we need this ? Isn' this equal to size of flow_settings ( or rdma_flows/sessions ) array There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The size of flow_settings is decided by num_of_qps There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Flow settings is an array so number of times user add a new flow setting will define size of the flow settings array not this. Might need discussion. |
||
description: >- | ||
Maximum number of QP per Endpoint. | ||
type: integer | ||
format: uint32 | ||
x-field-uid: 1 | ||
ib_mtu: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we can just move the ib_mtu to v4 and v6 peer and just remove this object. Model is easier to review and maintain. Or call it RoceAttributes and just have ib_mtu in that and refer to that . Dont need flow_settings which can be directly in the b4 / v6 peer. |
||
description: >- | ||
InfiniBand protocol Maximum Transmission Unit (MTU) defines several fix size MTU: 256, 512, 1024, 2048 or 4096 bytes. | ||
RDMA write message will have payload size same as configured IB MTU. You can configure custom size also. | ||
type: integer | ||
default: 1024 | ||
format: uint32 | ||
minimum: 0 | ||
maximum: 14000 | ||
x-field-uid: 2 | ||
flow_settings: | ||
apratimmukherjee marked this conversation as resolved.
Show resolved
Hide resolved
|
||
type: array | ||
description: >- | ||
This configuration allows you to configure RDMA flow over the same QP number from same source and destination. | ||
items: | ||
$ref: './flowsettings.yaml#/components/schemas/Rocev2.FlowSettings' | ||
x-field-uid: 3 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You cannot change x-uids of existing attributes. Please add new attributes to existing objects at the end else it will break clients running tests with older snappi versions.