[ofa-general] QoS RFC
Sean Hefty
mshefty at ichips.intel.com
Tue Jul 31 09:25:37 PDT 2007
FYI - It is my intention to implement the host side portion of QoS
support. (It's one of my path forward objectives.) I plan on
implementing the host side as outlined below. If anyone has any
comments, I would like to get them as soon as possible.
- Sean
Sean Hefty wrote:
>> 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?
More information about the general
mailing list