[ofa-general] QoS RFC
Sean Hefty
mshefty at ichips.intel.com
Thu Jul 26 18:11:51 PDT 2007
> 2. Architecture ----------------
This is a higher level approach to the problem, but I came up with the
following QoS relationship hierarchy, where '->' means 'maps to'.
Application Service -> Service ID (or range)
Service ID -> desired QoS
QoS, SGID, DGID, PKey -> SGID, DGID, TClass, FlowLabel, PKey
SGID, DGID, TC, FL, PKey -> SLID, DLID, SL (set if crossing subnets)
SLID, DLID, SL -> MTU, Rate, VL, PacketLifeTime
I use these relationships below:
> 4. IPoIB ---------
>
> IPoIB already query the SA for its broadcast group information. The
> additional functionality required is for IPoIB to provide the
> broadcast group SL, MTU, and RATE in every following PathRecord query
> performed when a new UDAV is needed by IPoIB. We could assign a
> special Service-ID for IPoIB use but since all communication on the
> same IPoIB interface shares the same QoS-Level without the ability to
> differentiate it by target service we can ignore it for simplicity.
Rather than IPoIB specifying SL, MTU, and rate with PR queries, it
should specify TClass and FlowLabel. This is necessary for IPoIB to
span IB subnets.
> 5. CMA features ----------------
>
> The CMA interface supports Service-ID through the notion of port
> space as a prefixes to the port_num which is part of the sockaddr
> provided to rdma_resolve_add(). What is missing is the explicit
> request for a QoS-Class that should allow the ULP (like SDP) to
> propagate a specific request for a class of service. A mechanism for
> providing the QoS-Class is available in the IPv6 address, so we could
> use that address field. Another option is to implement a special
> connection options API for CMA.
>
> Missing functionality by CMA is the usage of the provided QoS-Class
> and Service-ID in the sent PR/MPR. When a response is obtained it is
> an existing requirement for the CMA to use the PR/MPR from the
> response in setting up the QP address vector.
I think the RDMA CM needs two solutions, depending on which address
family is used. For IPv6, the existing interface is sufficient, and
works for both IB and iWarp. The RDMA CM only needs to include the TC
and FL as part of its PR query. For IPv4, to remain transport neutral,
I think we should add an rdma_set_option() routine to specify the QoS
field. The RDMA CM would include the QoS field for PR query under this
condition.
For IB, this requires changes to the ib_sa to support the new PR
extensions. I don't think we gain anything having the RDMA CM include
service IDs as part of the query.
> 6. SDP -------
>
> SDP uses CMA for building its connections. The Service-ID for SDP is
> 0x000000000001PPPP, where PPPP are 4 hex digits holding the remote
> TCP/IP Port Number to connect to. SDP might be provided with
> SO_PRIORITY socket option. In that case the value provided should be
> sent to the CMA as the TClass option of that connection.
SDP would use specify the QoS through the IPv6 address or
rdma_set_option() routine.
> 7. SRP -------
>
> Current SRP implementation uses its own CM callbacks (not CMA). So
> SRP should fill in the Service-ID in the PR/MPR by itself and use
> that information in setting up the QP. The T10 SRP standard defines
> the SRP Service-ID to be defined by the SRP target I/O Controller
> (but they should also comply with IBTA Service- ID rules). Anyway,
> the Service-ID is reported by the I/O Controller in the
> ServiceEntries DMA attribute and should be used in the PR/MPR if the
> SA reports its ability to handle QoS PR/MPRs.
I agree.
> 8. iSER -------- iSER uses CMA and thus should be very close to SDP.
> The Service-ID for iSER should be TBD.
See RDMA CM and SDP.
> 3.2. PR/MPR query handling: OpenSM should be able to enforce the
> provided policy on client request. The overall flow for such requests
> is: first the request is matched against the defined match rules such
> that the target QoS-Level definition is found. Given the QoS-Level a
> path(s) search is performed with the given restrictions imposed by
> that level. The following two sections describe these steps.
If we use the QoS hierarchy outlined above, I think we can construct
some fairly simple tables to guide our PR selection. The SA may need to
construct the tables starting at the bottom and working up, but I
*think* it could be done. And by distributing the tables, we can
support a more distributed (a la local SA) operation.
From an administration point, I would be happier seeing something where
the administrator defines a QoS level in terms of latency or bandwidth
requirements and relative priority. Then, if desired, the administrator
could provide more details, such as indicating which nodes would use
which services, minimum required MTUs, etc. It would then be up to the
SA to map these requirements to specific TC, FL, SL, VL values.
In general, though, I'm personally far less concerned with the QoS
specification interface to the SA, versus the operation that takes place
on the hosts.
Comments on using this approach on the host side?
- Sean
More information about the general
mailing list