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

(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