From: David Howells <dhowells@redhat.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: davem@davemloft.net, netdev@vger.kernel.org,
herbert.xu@redhat.com, linux-kernel@vger.kernel.org,
hch@infradead.org, arjan@infradead.org
Subject: Re: [PATCH 0/5] [RFC] AF_RXRPC socket family implementation [try #2]
Date: Fri, 16 Mar 2007 15:14:31 +0000 [thread overview]
Message-ID: <26525.1174058071@redhat.com> (raw)
In-Reply-To: <20070316153408.3a9a244a@lxorguk.ukuu.org.uk>
Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> So your messages are neither reliable not unreliable, nor ordered, nor
> unordered.
If you look at the LHS of each of your list of mappings again, you'll see
you've made an assumption there in considering it to be an exhaustive list.
You've assumed a service must be either a datagram service or a stream service;
I content that RxRPC is neither.
Let me explain.
RxRPC is not a datagram service because:
A datagram is, to quote the Internet's Request for Comments 1594, "a
self-contained, independent entity of data carrying sufficient
information to be routed from the source to the destination computer
without reliance on earlier exchanges between this source and
destination computer and the transporting network.
An RxRPC operation fails the "without reliance on earlier exchanges" bit, and
I'd argue that it possibly fails the "self-contained" and "independent" bits
too.
RxRPC does use a datagram service as its transport, but it takes a minimum of
three packets to complete an operation: a request from the client, a reply from
the server and a final ACK from the client. The second and third packets are
dependent on the first to give them meaning.
Looking at RxRPC from a client app point of view, you have to issue a request
packet and then await for the reply _associated_ with it (as marked by the
control data). In the server app, you receive a request message, and then have
to make a reply _associated_ with that request.
Furthermore, you can have several operations in progress simultaneously on a
socket. They are ordered with respect to themselves only; they are not ordered
with respect to each other.
RxRPC is also not a streamed data service because it doesn't have a stream of
data (either continuous [STREAM] or broken [SEQPACKET]) of indefinite length.
It has operations, each of which follows a sequence of discrete phases
(request, secure, secured, reply, final ACK). Each operation is independent of
the other operations, and may overlap temporally with those others.
So, to summarise, I think this is a "new" type of flow model because:
(1) It has discrete components (operations) rather than a flow.
(2) The discrete components may overlap temporally (are unordered with respect
to each other).
(3) Each discrete component consists of a sequence of phases, first in one
direction then the other and then back again rather than discrete
independent messages (are ordered with respect to themselves).
(4) It is reliable.
It also has security features, but I don't think that needs to be part of the
definition, even though negotiating it does require the use of extra packets of
special types.
> Until you work out what your messages actually are
I know what they are; and I don't think that what's available covers it.
> and use a proper standard socket type.
Assuming that that list is exhaustive...
> And "but there are higher layers" isn't relevant here, this is true for
> Appletalk as well and it doesn't have to go inventing new types for
> everything as you seem to.
The fact that there are higher layers is irrelevant.
David
next prev parent reply other threads:[~2007-03-16 15:14 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-16 12:50 [PATCH 0/5] [RFC] AF_RXRPC socket family implementation [try #2] David Howells
2007-03-16 12:50 ` [PATCH 1/5] AF_RXRPC: Add blkcipher accessors for using kernel data directly " David Howells
2007-03-16 13:32 ` Christoph Hellwig
2007-03-16 13:57 ` David Howells
2007-03-16 15:12 ` Alan Cox
2007-03-16 14:19 ` David Howells
2007-03-16 12:50 ` [PATCH 2/5] AF_RXRPC: Move generic skbuff stuff from XFRM code to generic code " David Howells
2007-03-16 13:36 ` Christoph Hellwig
2007-03-16 12:50 ` [PATCH 3/5] AF_RXRPC: Make it possible to merely try to cancel timers and delayed work " David Howells
2007-03-16 15:07 ` Alan Cox
2007-03-16 14:22 ` David Howells
2007-03-16 12:50 ` [PATCH 4/5] AF_RXRPC: Key facility changes for AF_RXRPC " David Howells
2007-03-16 13:38 ` Christoph Hellwig
2007-03-16 14:15 ` David Howells
2007-03-16 13:40 ` [PATCH 0/5] [RFC] AF_RXRPC socket family implementation " Christoph Hellwig
2007-03-16 15:13 ` Alan Cox
2007-03-16 14:23 ` David Howells
2007-03-16 15:34 ` Alan Cox
2007-03-16 15:14 ` David Howells [this message]
2007-03-16 17:11 ` Alan Cox
2007-03-18 6:32 ` Kyle Moffett
2007-03-18 14:23 ` Alan Cox
2007-03-19 11:56 ` David Howells
2007-03-19 13:04 ` Alan Cox
2007-03-19 12:59 ` David Howells
2007-03-19 15:29 ` Alan Cox
2007-03-19 15:41 ` David Howells
2007-03-19 19:03 ` Alan Cox
2007-03-20 11:16 ` David Howells
2007-03-19 19:19 ` David Miller
2007-03-20 13:16 ` David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=26525.1174058071@redhat.com \
--to=dhowells@redhat.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=arjan@infradead.org \
--cc=davem@davemloft.net \
--cc=hch@infradead.org \
--cc=herbert.xu@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).