<html>
<body>
<font size=3><br>
Just to correct one comment:<br><br>
A ULP written to TCP/IP can use RDMA transport without change.  An
example is SDP not that the ULP must use what SDP uses.  Also,
please keep in mind that SDP on iWARP uses the port mapper protocol to
obtain the IP address and port to target for the connection
request.  So, the TCP connection establishment is to the RDMA listen
endpoint from the start and the SDP hello exchange then fills in the rest
of the parameters required to determine whether the connection should
proceed and what resources should be configured when the response is
generated.  <br><br>
I will also re-iterate what another person stated and that is to separate
out the interface from the wire protocol.  IBTA defines wire
protocols / semantics while OpenIB is defining its API to communicate the
wire protocol and associated semantics.  I agree with that person on
this point and their other point on the need for the IBTA to construct a
solid spec for the wire protocol and associated semantics.  OpenIB
will then determine how best to implement but these are separate efforts
and it would be more productive for all to table the discussion for
now.  The original request was whether something would break if the
private data size was changed.  It was noted that one cannot know
what will or will not break thus the requirement is to provide a method
for software to note the difference in the layout.  How is for the
IBTA to specify. <br><br>
Just a thought......<br><br>
Mike<br><br>
<br>
At 03:43 PM 10/25/2005, Sean Hefty wrote:<br>
<blockquote type=cite class=cite cite="">Kanevsky, Arkady wrote:<br>
<blockquote type=cite class=cite cite="">What are you trying to
achieve?</blockquote><br>
I'm trying to define a connection *service* for Infiniband that uses
TCP/IP addresses as its user interface.  That service will have its
own protocol, in much the same way that SDP, SRP, etc. do today.<br><br>
<blockquote type=cite class=cite cite="">I am trying to define an IB REQ
protocol extension that<br>
support IP connection 5-tuple exchange between connection<br>
requestor and responder.</blockquote><br>
Why?  What need is there for a protocol extension to the IB
CM?  To me, this is similar to setting a bit in the CM REQ to
indicate that the private data format looks like SDP's private
data.  The format of the _private_ data shouldn't be known to the
CM; that's why it's private data.<br><br>
<blockquote type=cite class=cite cite="">And define mapping between IP
5-tuple and IB entities.</blockquote><br>
No mapping between IP <-> IB addresses was defined in the
proposal.  Defining this mapping is required to make this
work.  Right now, the mapping is the responsibility of every
user.<br><br>
<blockquote type=cite class=cite cite="">That way ULP which was written
to TCP/IP, UDP/IP, CSTP/IP (and so on)<br>
can use RDMA transport without change.</blockquote><br>
A ULP written to TCP/IP can use an RDMA transport without change. 
They use SDP.  However, an application that wants to take advantage
of QP semantics must change.  (And if they want to take full
advantage of RDMA, they'll likely need to be re-architected as
well.)  The goal in that case becomes to permit them to establish
connections using TCP/IP addresses.<br><br>
To meet this goal, we need to define how to map IP address to and from IB
addresses.  That mapping is part of the protocol, and is missing
from the proposal.  And if the application isn't going to know that
they're running on Infiniband, then the mapping must also include mapping
to a destination service ID.<br><br>
<blockquote type=cite class=cite cite="">To modify ULP to know that it
runs on top of IB vs. iWARP<br>
vs. (any other RDMA transport) is bad idea.<br>
It is one thing to choose proper port to connect.<br>
Completely different to ask ULP to parse private data<br>
in transport specific way.<br>
The same protocol must support both user level ULPs<br>
and kernel level ULPs.</blockquote><br>
Defining an interface that allows a ULP to use either iWarp, IB, or some
other random RDMA transport is an implementation issue.  However, it
requires something that maps IP to IB addresses (including service
IDs).<br><br>
To be more concrete, you've gone from having source and destination
TCP/IP addresses to including them in a CM REQ.  What translated the
source and destination IP addresses into GIDs and a PKey?  Who
converted those into IB routing information?  How was the
destination of the CM REQ determined?  What service ID was
selected?<br><br>
- Sean</font></blockquote></body>
</html>