Requested: Traffic partitioning using SR-IOV (sans virtualization) #22

Open
opened 2024-05-31 13:07:49 +00:00 by pbokoc · 0 comments
pbokoc commented 2024-05-31 13:07:49 +00:00 (Migrated from gitlab.com)

(Migrated from https://bugzilla.redhat.com/show_bug.cgi?id=1070505)

Description of problem:

Intel has a guide which describes the why and how of traffic partitioning using SR-IOV, which is an often overlooked use of SR-IOV aside from its primary use with libvirt, and virtualization, et. al.

Here is that guide: http://www.intel.com/content/dam/www/public/us/en/documents/solution-briefs/10-gbe-ethernet-flexible-port-partitioning-brief.pdf

What I'd like to see are controls and documentation for this alternative use of SR-IOV. Using SR-IOV in this way exposes easy QoS controls (see doc), as well as potential performance gains. Using SR-IOV, as an alternative to converged networking over vanilla 8021q-module VLAN interfaces, I've observed (with iperf3) fewer packet retransmissions (packets dropped).

See my tests here: https://gist.github.com/josh-wrale/9101038

QoS using 802.1Qaz and DCBX can be very hard to grasp and even harder to implement (I know as I am failing at both at the moment). Please do not overlook SR-IOV as a solution to problems experienced on bare metal with no virtualization involved at all.


Comment 1:

I found a rudimentary way of implementing the requisite iproute2 commands for SR-IOV traffic partitioning: Place custom iproute2 commands for SR-IOV in one of the "-local" scripts, like '/sbin/ifup-local'.

Ala: http://blog.jds2001.org/random_thoughts/2007/09/tip-of-the-day-ifup-local.html

And:

[root@n1 network-scripts]# grep '-local' *
ifdown:if [ -x /sbin/ifdown-pre-local ]; then
ifdown: /sbin/ifdown-pre-local ${DEVICE}
ifdown-post:if [ -x /sbin/ifdown-local ]; then
ifdown-post: /sbin/ifdown-local ${DEVICE}
ifup:if [ -x /sbin/ifup-pre-local ]; then
ifup: /sbin/ifup-pre-local ${CONFIG} $2
ifup-aliases:if [ -x /sbin/ifup-local ]; then
ifup-aliases: /sbin/ifup-local ${DEVICE}
ifup-ippp: options="$options ipcp-accept-local"
ifup-isdn: options="$options ipcp-accept-local"
ifup-post:if [ -x /sbin/ifup-local ]; then
ifup-post: /sbin/ifup-local ${DEVICE}
init.ipv6-global: # Unreachable 6to4: IPv4 private (APIPA / DHCP link-local)
network-functions-ipv6: net_log $"Given IPv6 default gateway '$address' is link-local, but no scope or gateway device is specified" err $fn
[root@n1 network-scripts]#


Comment 2:

More good reading on this topic:

http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/config-qos-with-flexible-port-partitioning.pdf

(Migrated from https://bugzilla.redhat.com/show_bug.cgi?id=1070505) Description of problem: Intel has a guide which describes the why and how of traffic partitioning using SR-IOV, which is an often overlooked use of SR-IOV aside from its primary use with libvirt, and virtualization, et. al. Here is that guide: http://www.intel.com/content/dam/www/public/us/en/documents/solution-briefs/10-gbe-ethernet-flexible-port-partitioning-brief.pdf What I'd like to see are controls and documentation for this alternative use of SR-IOV. Using SR-IOV in this way exposes easy QoS controls (see doc), as well as potential performance gains. Using SR-IOV, as an alternative to converged networking over vanilla 8021q-module VLAN interfaces, I've observed (with iperf3) fewer packet retransmissions (packets dropped). See my tests here: https://gist.github.com/josh-wrale/9101038 QoS using 802.1Qaz and DCBX can be very hard to grasp and even harder to implement (I know as I am failing at both at the moment). Please do not overlook SR-IOV as a solution to problems experienced on bare metal with no virtualization involved at all. --- Comment 1: I found a rudimentary way of implementing the requisite iproute2 commands for SR-IOV traffic partitioning: Place custom iproute2 commands for SR-IOV in one of the "-local" scripts, like '/sbin/ifup-local'. Ala: http://blog.jds2001.org/random_thoughts/2007/09/tip-of-the-day-ifup-local.html And: [root@n1 network-scripts]# grep '\-local' * ifdown:if [ -x /sbin/ifdown-pre-local ]; then ifdown: /sbin/ifdown-pre-local ${DEVICE} ifdown-post:if [ -x /sbin/ifdown-local ]; then ifdown-post: /sbin/ifdown-local ${DEVICE} ifup:if [ -x /sbin/ifup-pre-local ]; then ifup: /sbin/ifup-pre-local ${CONFIG} $2 ifup-aliases:if [ -x /sbin/ifup-local ]; then ifup-aliases: /sbin/ifup-local ${DEVICE} ifup-ippp: options="$options ipcp-accept-local" ifup-isdn: options="$options ipcp-accept-local" ifup-post:if [ -x /sbin/ifup-local ]; then ifup-post: /sbin/ifup-local ${DEVICE} init.ipv6-global: # Unreachable 6to4: IPv4 private (APIPA / DHCP link-local) network-functions-ipv6: net_log $"Given IPv6 default gateway '$address' is link-local, but no scope or gateway device is specified" err $fn [root@n1 network-scripts]# --- Comment 2: More good reading on this topic: http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/config-qos-with-flexible-port-partitioning.pdf
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
docs-archive/sysadmin-guide#22
No description provided.