RE: Comments on IPoIB Connected Mode Connection Establ ishment

Vivek Kashyap <[email protected]> Tue, 6 Sep 2005 00:39:55 -0700 (PDT)
Newsgroups gmane.ietf.ipoib
Message-ID <[email protected]>
On Sun, 21 Aug 2005, Dror Goldenberg wrote:

>
>
>> From: Vivek Kashyap [mailto:[email protected]]
>> Sent: Thursday, August 18, 2005 9:36 AM
>>
>> On Wed, 17 Aug 2005, Dror Goldenberg wrote:
>>
>>>
>>>
>>>> From: Vivek Kashyap [mailto:[email protected]]
>>>> Sent: Monday, August 15, 2005 9:41 AM
>>>>
>>>> On Wed, 10 Aug 2005, Dror Goldenberg wrote:
>
> <snip>
>
>>
>>>>> (2) Active/Active Model Support
>>>>>
>
>
> <snip>
>
>>>> 3. In case of the active-active connection the request from the
>>>> numerically smaller MAC Address (QPN+GID or probably just
>> the GID) is
>>>> terminated. The error code 'state connection' is a
>> possibility here.
>>>>
>>>> The active-active situation is known when it is determined
>> that there
>>>> is an outstanding request to the remote peer (as determined by
>>>> GID+QPN) while a request from the same is received on local
>>>> GID+ServiceID.
>>>
>>> In IB, active-active is only determined by equal Service IDs. See IB
>>> spec 1.2 vol1 12.9.7.1, the Active CM state machine goes to
>>> Peer-Compare state based solely on the Service ID.
>>> Therefore, if you want to have active-active, then you must
>> ensure that
>>> both service IDs are identical. In the current draft, the
>> Service IDs are
>>> different, as they include a remote QP number.
>>>
>>
>> Yes, if we are determining it based on the CM. However, I was
>> suggesting
>> the above as what the ipoib component will do when it is informed by
>> CM. It can return a suitable error to CM when it determines
>> that a particular
>> connection shouldn't be allowed. Is that not possible?
>>
>
> That wouldn't be "active/active" per se. But maybe it's just as good,
> because
> it just pushes this model to the ipoib layer. In a case of crossing
> connection
> requests one side is supposed to accept, while the other is supposed to
> reject. The rules for rejection have to be described in the RFC. Maybe it
> worth describing the state machine that now needs to be implemented
> in ipoib.

yes, need to look into it in detail. My initial thought is that the 
method of determining if there are connections in flight is based on
receiving a request source GID+QPN  while attempting a connection to the same.

>
> BTW, what will be the rejection reason ? Seems like the most appropriate is
> 28 - consumer reject.

seems ok to me.

>
> Note that it becomes tricky if you want to allow more than one
> connection on the same service ID. So, is there a way you can tell whether
> your peer is trying to establish the 1st or 2nd connection while you are
> trying to set up the 1st one ?

hmm...good point, unless we take it that any request that crosses is deemed
active-active. Once a connection is established further requests can
be made on the same Service-ID (or denied depending on the implementation).
>
> I think it'll be best if we can use the standard active-active mechanism.

We need a common Service-ID for it that must be known/derivable by both
the peers. Since masks are not supported by CMs using both QPNs in the 
service-ID is difficult.


> However, if we don't manage to find how, then this approach (rejection
> at the app level) will do the work. However, it will complicate the
> ipoib implementation and will duplicate the active-active work that
> is already implemented in the cm.
>
> -Dror
>
> <snip>
>
>