[ofa-general] QoS RFC
Sean Hefty
mshefty at ichips.intel.com
Wed Jul 25 16:38:32 PDT 2007
> QoS Policy file syntax
>
> * Empty lines are ignored
> * Leading and trailing blanks, as well as empty lines, are ignored, so the
> indentation in the example is just for better readability
> * Comments are started with the pound sign (#) and terminated by EOL
> * Comments may appear only in a separate line
> * Keywords that denote section/subsection start have matching closing
> keywords
> * Any keyword should be the first non-blank in the line
>
> QoS Policy file example
>
> # Port Groups define sets of ports to be used later in the settings
> port-groups
> # using port GUIDs
> port-group
> name: Storage
> # "use" is just a description that is used for logging.
> # Other than that, it is just a commentary
> use: our SRP storage targets
> port-guid: 0x1000000000000001
> port-guid: 0x1000000000000002
> end-port-group
>
> port-group
> name: Virtual Servers
> use: node desc and IB port num
> # The syntax of the port name is as follows:
> "hostname/CA-num/Pnum".
> # "hostname" and "CA-num" are compared to the first 2 words of
> # NodeDescription, and "Pnum" is a port number on that node.
> port-name: vs1/HCA-1/P1
> port-name: vs3/HCA-1/P1
> port-name: vs3/HCA-2/P2
> end-port-group
>
> # using partitions defined in the partition policy
> port-group
> name: Group for Partition 1
> use: default settings
> partition: Part1
> end-port-group
>
> # using node types CA|ROUTER|SWITCH
> port-group
> name: Routers
> use: all routers
> node-type: ROUTER
> end-port-group
>
> end-port-groups
>
> qos-setup
>
> # define all types of VLArb tables. The length of the tables should
> # match the physically supported tables by their target ports
> vlarb-tables
> # scope defines the exact ports the VLArb tables apply to
> vlarb-scope
> # defining VLArb tables on all the ports that belong to
> # port group 'Storage', and on all the ports connected
> # to ports of port group 'Storage'
> group: Storage
> # "across" means all the ports that are connected to ports
> # that belong to the specified port group
> across: Storage
> # VLArb table holds VL and weight pairs
> vlarb-high: 0:255,1:127,2:63,3:31,4:15,5:7,6:3,7:1
> vlarb-low: 8:255,9:127,10:63,11:31,12:15,13:7,14:3
> vl-high-limit: 10
> end-vlarb-scope
> # There can be several scopes
> end-vlarb-tables
>
> sl2vl-tables
> # Scope defines the exact devices and in/out ports tables
> apply to.
> # Note: if the same port is matching several rules the
> *FIRST* one applies.
> sl2vl-scope
> # SL2VL tables are orgnized as SL2VL(in-port,out-port)
> # "from: n,m" means we define the SL2VL(n,*) and SL2VL(m,*)
> # "to: n,m" means we define the SL2VL(*,n) and SL2VL(*,m)
> #
> # The following example specifies that all the SL2VL tables
> # entries should be defined for all the ports of group
> Part1:
> group: Part1
> from: *
> to: *
> # SL2VL table has to have 16 values at max - one for
> each SL.
> # If the user specifies less than 16 values, all the
> missing
> # VL values will be implicitly set to 0
> sl2vl-table: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7
> end-sl2vl-scope
>
> sl2vl-scope
> # "across-to" is a combination of "across" keyword
> (definition can be found
> # in VLArb tables section) and "to" keyword.
> # "across: PortGroupName" refers to all the ports that
> are connected
> # to ports that belong to PortGroupName.
> #
> # Example of "across-to" usage:
> # A user has a set of 'special' nodes (e.g. storage
> nodes), and all
> # the traffic to these nodes has to get specific VL.
> # The solution is to define port group (i.g.
> "Storage") that will
> # include all the ports of these nodes, and then to
> configure SL2VL
> # tables on all the switch ports that are connected to
> the Storage
> # port group by specifying "across-to: Storage".
> #
> across-to: Storage2
> # Similar to "across-to", "across-from" is a combination
> of "across"
> # and "to" keywords
> across-from: Storage1
> sl2vl-table: 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
> end-sl2vl-scope
> end-sl2vl-tables
>
> end-qos-setup
>
>
> qos-levels
>
> # the first one is just setting SL
> qos-level
> use: for the lowest priority communication
> sl: 15
> packet-life: 16
> end-qos-level
> # the second sets SL and QoS Class
> qos-level
> use: low latency best bandwidth
> sl: 0
> end-qos-level
> # the whole set: SL, MTU-Limit, Rate-Limit, Packet Lifetime,
> Path Bits
> qos-level
> use: just an example
> sl: 0
> mtu-limit: 1
> rate-limit: 1
> packet-life: 12
> # Path Bits can be used e.g. to provide a different routes
> through the
> # subnet to a particular port
> path-bits: 2,4,8-32
> end-qos-level
>
> end-qos-levels
>
>
> # Match rules are scanned in a first-fit manner (like firewall rules
> table)
> qos-match-rules
>
> # matching by single criteria: class (list of values and ranges)
> qos-match-rule
> # just a description
> use: low latency by class 7-9 or 11
> qos-class: 7-9,11
> # number of qos-level to apply to the matching PR/MPR
> qos-level-sn: 1
> end-qos-match-rule
> # show matching by destination group AND service-ids
> qos-match-rule
> use: Storage targets connection
> destination: Storage
> service-id: 22,4719-5000
> qos-level-sn: 2
> end-qos-match-rule
> # show matching by source group only
> qos-match-rule
> use: bla bla
> source: Storage
> qos-level-sn: 3
> end-qos-match-rule
>
> end-qos-match-rules
What creates this file? If we expect an administrator to create this
manually, then I think we something much, much simpler.
- Sean
More information about the general
mailing list