-
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 45 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,109 @@ | ||
| components: | ||
| schemas: | ||
| RoCEv2.FlowSettings: | ||
| description: >- | ||
| This section has two views, Local End and Remote End. | ||
| Both views have same configurations. However, the remote and local peer IP addresses are interchanged. | ||
| This configuration allows you to configure RDMA flow over the same QP number from same source and destination. | ||
| Default value for commands at Remote peer is set to None. | ||
| So that by default, this remote peer does not initiate any traffic flow. | ||
| type: object | ||
| properties: | ||
| custom_qp: | ||
satyamsinghKey marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| description: |- | ||
| Turn on to define QP number. | ||
| type: boolean | ||
| default: false | ||
| x-field-uid: 1 | ||
| custom_qp_number: | ||
satyamsinghKey marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 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: RDMA WRITE None: The corresponding flow will not take part in traffic.. | ||
| type: string | ||
|
Contributor
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.
Collaborator
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 | ||
| 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: | ||
|
Contributor
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. |
||
| For any MTU, the maximum number of segmented RDMA WRITE packets for a single WRITE MESSAGE is 65535. | ||
| That is, a single RDMA WRITE message can be broken into 1 WRITE FIRST, 1 WRITE LAST and (65535-2) WRITE MIDDLE messages. | ||
| The maximum message size that is allowed to be transferred for a given MTU is constrained by the above conditions. | ||
| For example, for an MTU size of 1500 bytes, | ||
| the common header of the RDMA WRITE MIDDLE/LAST will comprise of | ||
| Ethernet Header + IP Header + UDP Header + BTH Header + iCRC size + Ethernet Trailer size. This works out to be 14+20+8+12+4+4 = 62 bytes. | ||
| For RDMA WRITE FIRST, we need to add the RETH header size of 16 bytes to the above, which adds up to 78 bytes. | ||
| Then the maximum message size for 1500 MTU without VLAN becomes: | ||
| 1500 - WRITE FIRST common header + 65534 * (1500 - WRITE LAST/MIDDLE header size) = 1500 - 78 + 65534 * (1500 - 62) = 94239314 bytes or 89 MB. | ||
| 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 | ||
| x-field-uid: 9 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,84 @@ | ||
| 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: | ||
|
Contributor
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
Collaborator
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
Contributor
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 | ||
| x-field-uid: 1 | ||
| remote_end_point_ip_address: | ||
satyamsinghKey marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| description: >- | ||
| Specify the IP address of External NIC i.e Remote End Point IP Address. | ||
| type: string | ||
|
||
| x-field-uid: 2 | ||
| ib_mtu: | ||
|
Contributor
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: 3 | ||
| traffic_burst_mode: | ||
| description: >- | ||
| Traffic Burst Mode to applied in RoCEv2 Traffic , Continuous or Fixed. | ||
| type: string | ||
| x-enum: | ||
| Continuous: | ||
| x-field-uid: 1 | ||
| Fixed: | ||
| x-field-uid: 2 | ||
| x-field-uid: 4 | ||
| traffic_burst_count: | ||
| description: >- | ||
| Burst Count to applied in RoCEv2 Traffic item. | ||
| type: integer | ||
| #default: 1024 | ||
| format: uint32 | ||
| minimum: 0 | ||
| maximum: 16777216 | ||
| x-field-uid: 5 | ||
| name: | ||
| description: >- | ||
| The name of RoCEv2 Peer | ||
| type: string | ||
| x-field-uid: 6 | ||
| flow_settings: | ||
apratimmukherjee marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| type: array | ||
| description: >- | ||
| This section has two views, Local End and Remote End. | ||
satyamsinghKey marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| Both views have same configurations. However, the remote and local peer IP addresses are interchanged. | ||
| This configuration allows you to configure RDMA flow over the same QP number from same source and destination. | ||
| Default value for commands at Remote peer is set to None. | ||
| So that by default, this remote peer does not initiate any traffic flow. | ||
| items: | ||
| $ref: './flowsettings.yaml#/components/schemas/RoCEv2.FlowSettings' | ||
| x-field-uid: 7 | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| components: | ||
| schemas: | ||
| RoCEv2.V4Peer: | ||
| description: >- | ||
| Configuration for RoCEv2 IPv4 peers. | ||
| type: object | ||
| required: [num_of_qps, remote_end_point_ip_address, ib_mtu] | ||
| properties: | ||
| num_of_qps: | ||
|
Contributor
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 is this needed ? The number of rdma flows should be simply equal to this.
Collaborator
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. num_of_qps decides the num of flows
Contributor
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. Similar to previous, the times user adds an element into the array will define the size .. should not be needing this . |
||
| x-include: ./rocev2.yaml#/components/schemas/Device.RoCEv2/properties/num_of_qps | ||
| x-field-uid: 1 | ||
| remote_end_point_ip_address: | ||
| x-include: ./rocev2.yaml#/components/schemas/Device.RoCEv2/properties/remote_end_point_ip_address | ||
| x-field-uid: 2 | ||
| ib_mtu: | ||
| x-include: ./rocev2.yaml#/components/schemas/Device.RoCEv2/properties/ib_mtu | ||
| x-field-uid: 3 | ||
| traffic_burst_mode: | ||
| x-include: ./rocev2.yaml#/components/schemas/Device.RoCEv2/properties/traffic_burst_mode | ||
| x-field-uid: 4 | ||
| traffic_burst_count: | ||
| x-include: ./rocev2.yaml#/components/schemas/Device.RoCEv2/properties/traffic_burst_count | ||
| x-field-uid: 5 | ||
| name: | ||
| x-include: ./rocev2.yaml#/components/schemas/Device.RoCEv2/properties/name | ||
| x-field-uid: 6 | ||
| flow_settings: | ||
| x-include: ./rocev2.yaml#/components/schemas/Device.RoCEv2/properties/flow_settings | ||
| x-field-uid: 7 | ||
|
|
||
|
|
||
| RoCEv2.V4Interface: | ||
| description: >- | ||
| Configuration for RoCEv2 IPv4 peers. | ||
| type: object | ||
| required: [ipv4_name] | ||
| properties: | ||
| ipv4_name: | ||
| description: >- | ||
| The unique name of the IPv4, used as the source IP for this list of RoCEv2 peers. | ||
| type: string | ||
| x-constraint: | ||
| - '/components/schemas/Device.Ipv4/properties/name' | ||
| x-field-uid: 1 | ||
| peers: | ||
| description: >- | ||
| This contains the list of RoCEv2 peers configured on this interface. | ||
| type: array | ||
| items: | ||
| $ref: './rocev2ipv4.yaml#/components/schemas/RoCEv2.V4Peer' | ||
| x-field-uid: 2 | ||
Uh oh!
There was an error while loading. Please reload this page.