[mod.protocols.tcp-ip] Tcp/Ip vs a store & forward network

HANK@BARILVM.BITNET.UUCP (03/29/87)

All the calculations about the bandwidth of a station wagon got me thinking.
Why was Tcp/Ip not designed as a store and forward network (in addition to
the protocols it does support)?  Let me explain why I am asking this.  In
Bitnet, you might have as many as 20 9.6Kb lines separating you from the
place you wish to send a file to.  The probably that all 20 lines are
working and that all 20 intermediate machines are up (yup - no IMPs)
simaltaneously becomes quite small.

(Imagine if the probability of any machine being up and working is 98% and
that the probablility that any leased phone line is working is 99.5% - after
10 machines - 77.7% successful connection).

Well you can say alternate paths and better reliability make the connection
rate closer to 95%.  I would perhaps doubt that when the two nodes are
separated by a number of physical links and that the data has to pass thru
a couple of hardware boxes that will not work if there is a power outage
in the building or other "things" that can cause a hardware box to not
respond.

So, a S&F network would alleviate much of the problem.  Try to get the data
as close to the destination node and then spool it.  Instead SMTP makes
a valiant attempt to emulate S&F by spooling the mail locally and occassionally
trying to establish a connection to the destination.  After 'n' of days
SMTP gives up and sends mail to the sender.  I think it would have been nicer
that SMTP try to get it as close to the down node as possible and then let
that node try polling the down node for 'n' number of days.

But FTP is even worse.  FTP is basically an interactive process.  You want
a file you gotta establish a connection and suck it off or slap it into place.
Transferring files should really be a batch orientated feat - you say what
file you want to store or retrieve and you type in all the necessary
options and parameters and you don't hear about it until it completes (with
appropriate return codes of course).

Bitnet uses BSMTP (Batch SMTP).  Is there such a thing as BFTP (Batch FTP)?
Is there a very strong technical reason why S&F was not part of the design
of Tcp/Ip??  I have a lot of questions but very few answers.

Hank

bzs@BU-CS.BU.EDU.UUCP (03/30/87)

Hank,

Your questions mostly focus on design trade-offs.

Trying to get the data as close to to the destination node and then
spooling might not be defineable in many cases. What does closer mean
when routing can be changed? The very notion implies that a route
calculated at transmission time remains static (perhaps for days) as
the file moves from host to host through the network. This is not
always a reasonable assumption.

I do think a Batch FTP is a fine idea, many people accomplish this
anyhow by backgrounding transfer jobs, others by sending files through
the mail networks.

One major issue, of course is security. FTP is designed to demand a
password before a file transfer begins. Not sure how this is
accomplished in batch mode without sending passwords around the net
(store and forward exacerbates this problem as passwords may lie on
intermediate hosts for long periods of time.) Bitnet basically takes
the attitude that it is similar to mail and files are simply put on a
spool for a target user, no password to send a file is required.  How
*does* a user fetch a file within the Bitnet sendfile paradigm?  Other
than specialized servers for certain files, of course.

Another problem with S&F networks at the higher (that is file or mail
message) level are the failure modes presented. Clogging of hosts'
disks receiving these as intermediaries becomes a problem (I believe
WISCVM fell as much as 3 weeks behind in file transfers recently due
to this type of clogging? correct me if I'm wrong, I mean no malice.)
Packets are much more ephemeral things. There, of course, is also the
problem of getting an error or success back to the originator from an
intermediate node who decides the file's fate has been sealed.

For another extreme, try MAIL-11 on VMS in a DECNET network. You can't
send a message unless it is immediately deliverable, very annoying to
me to end a message (typically a reply) and have it immediately
rejected because the host happens to be down at the moment. This is a
place where some kind of store and forward seems essential, I hate
"busy signals" in mail networks.

I think my conclusion is that it would probably be interesting to see
someone propose and design a store and forward file transfer protocol
and get it accepted by the community. There are several design
problems but I don't think the concept is flawed, why have a human sit
and wait on a slow link? Or not be able to initiate a transfer just
because a host is down at the moment? I don't think, however, Bitnet
is a great model for this at all layers if for no other reason than
the fact that the routing is so well defined in Bitnet for where to
store and where to forward while in the Internet things get a bit more
nebulous. But, hey, that's what the designer will have to solve.

	-Barry Shein, Boston University

narten@PURDUE.EDU.UUCP (03/30/87)

One big problem with S&F networks is the lack of end-to-end acks. Once you
drop a "transaction" (e.g. batch ftp or piece of mail) in the queue of
one of the intermediate nodes, it is out of your hands. You don't know
where it is, and you can't find out. How many times have you sent mail
into a black hole? It happens much more often in store and forward
networks than in the TCP world.

Based on my experience, when I send mail over TCP to a user, I feel
very confident that it gets to them. If the mail gets lost, its almost
always because the mail subsystem at the receiving site is messed up.
Sending mail through mail lists (which puts in an extra S&F hop) is
also pretty reliably, though not as much. On the other hand, when
mailing via one of the S&F networks, my confidence falls rapidly as
the number of hops increases.

You might argue that the reliability of S&F networks could be
improved. No matter how reliable you make them, you will still be left
with a system where everything you drop in disappears, and there is
no way of finding out where it is until it comes out at the other end
(if it does). Not too good when you just sent an important message.

Thomas

karn@KA9Q.BELLCORE.COM.UUCP (03/30/87)

Actually, I thought the Internet WAS a store-and-forward network. Gateways
store up packets as they are received and forward them after a queueing
delay.  I think you really meant "message switching" as opposed to "packet
switching".

But even this distinction is rather artificial.  One of the most popular
message switching networks is UUCP. Like the Internet, each UUCP node also
stores up a block of information, makes a routing decision (sometimes
specified in a source route) and sends it on its way.   The only real
differences are quantitative, i.e., the maximum allowable message size and
the typical end-to-end delivery delay, although admittedly they heavily
influence the way end-user nodes make use of the service.  You *could* run
TCP on top of UUCP (encapsulating one segment per message) as long as it is
prepared to deal with RTTs of several days.  On the other hand UDP
query-response applications use the Internet as though it were a message
switching network, since messages fit neatly into Internet datagrams.

Perhaps the only real qualitative distinction is whether the network is
useful for "real time" communications, however you define them. Nobody runs
SMTP/TCP/IP on UUCP because few are willing to wait several days for a TCP
3-way handshake to complete.  Instead UUCP mail consists of single, large,
self-contained "datagrams" with no end-to-end protocol other than the
implicit human-to-human one.  Of course this means you have no real
guarantee that the message will get there, so everyone puts in lots of
low-level reliability enhancing mechanisms.  I prefer SMTP across the
Internet over UUCP whenever available, not only because it's usually faster,
but because I *want* that end-to-end reliability provided by TCP.  Assuming
a fully connected Internet, I can feel pretty confident that if my mail
disappears from the spool then it has safely reached its destination and
isn't stuck in some unknown place halfway across the path.

I think the distinction between message and packet switching will blur
further as very high speed transmission facilities become available and RAMs
get even cheaper. You can allow very large packets on a high speed fiber
link without sacrificing "real time" performance. Chopping up a data stream
into tiny packets will no longer be necessary or even desirable: the packet
rate would get completely out of hand.  For example, if each packet could
hold an entire NTSC video frame, real time packet video would only be 30
packets per second, well within the capability of even a Z-80 as long as
data paths are kept separate.

An interesting project would be to see just how applications might make use
of "megapackets".  Interactive timesharing probably can't make use of much
more than a few K (a screenful of text) but clearly file transfers could use
much more. (Think of an entire magtape occupying a single packet.  At
gigabit rates it would still only take a second or so to transmit).

Phil

HANK@BARILVM.BITNET.UUCP (03/30/87)

Barry,

Which brings me to something I would like to get created:  FTP to spool so that
no pswds need to make their way around the network.  If Bitnet can transfer
files to/from Unix, VMS, VM, MVS, CDC, etc machines - WITHOUT passwords
then Tcp/Ip should be able to send files around to local spool systems so
that the entire concept of FTP pswds can be eliminated.

Hank

mckee@MITRE.ARPA.UUCP (03/30/87)

You were concerned about the reliability of S&F.  There are a variety of
tradeoffs to consider.  The DoD has an ancient but vigorous system
called AUTODIN.  It has the following characteristics:

    - It is a message switching system; messages are limited to 40,000
characters; each message may have as many as 500 addresses.

    - The "switching" part of the system is fairly small; there are 8
AUTODIN Switching Centers in the US, and a few more in Europe and the
Far East.

    - AUTODIN is EXTREMELY reliable; however, duplicate messages may
occur during recovery from a failure.  The AUTODIN design philosophy is
that it is better to send several messages twice than to drop any
message once.

    - Also, during failure recovery, delivery transposition may occur;
i.e., an older message will be delivered before a newer message.

bzs@BU-CS.BU.EDU.UUCP (03/30/87)

>Barry,
>
>Which brings me to something I would like to get created:  FTP to spool so that
>no pswds need to make their way around the network.  If Bitnet can transfer
>files to/from Unix, VMS, VM, MVS, CDC, etc machines - WITHOUT passwords
>then Tcp/Ip should be able to send files around to local spool systems so
>that the entire concept of FTP pswds can be eliminated.
>Hank

I'm not sure there's much difference between bitnet's SENDFILE and
just sending a file via mail. Most of the differences between SENDFILE
and Bitnet/Mail (and, actually, SMTP) are simply to accommodate spool
record length restrictions within IBM's filing system. This is not
particularly a problem when an heterogeneous environment is accounted
for and files have to be in some "reasonable" ASCII text format
anyhow.

Even record length restrictions and binary images can be transferred
in more generic ways (eg. UUENCODE/UUDECODE which I've ported to my
3090) than DISKDUMP formats which appear to be limited in function and
very much designed with IBM's filing system in mind. I suppose VMS's
jnet (bitnet) product accommodates this, but I assume only by being
subservient to IBM file formats (and a very, very limited subset at
that, as far as I know there is still no way to send, eg, a PDS
between even two IBM systems via Bitnet without some user hackery.)

The other half of the difference would be accomplished by adopting
some convention that files are sent to, say, user-fxfr@host so it
appears in a different spool or just marking the header so mail user
agents could pluck out "file transfers" from the mail when they start
up. I think this is a minor need, the Subject: line can get you 98% of
the way there without changing anything.

The "entire concept" of FTP passwords is useful in that it allows a
user to get at files either destructively (in a positive sense) or
past normal security (that is, files not publicly readable.) I don't
think getting rid of this feature is a step forward.

There are already passwordless protocols in use (eg. TFTP in the
internet world and transferring via uucppublic in the UUCP world.) For
obvious reasons they seem to have limited acceptance when FTP is
available. They're mostly a security botch, especially when fetching
of files is needed.

	-Barry Shein, Boston University

geof@imagen.UUCP.UUCP (03/30/87)

 >      Which brings me to something I would like to get created:  FTP to spool so that
 >      no pswds need to make their way around the network.  

[sorry for not answering directly, I don't have a reliable path from USENET
 to bitnet -- my packets always go into a black hole :-]

I think that you are arguing for new conventions, not new protocols.  Queuing
of FTP requests is something you can program on your local machine.  
As pointed out, in the internet, a host has no concept of "closer", so it
is impossible for a store and forward FTP to do anything other than what
SMTP does now.  Unless you do manual routing.  Augh.

Similarly, who says that Arpanet mail has end-to-end ACKs?  It just depends
on where you put the "end."  I put it at the user, and I want to see explicit
acks from users, too (well, I flame so much that it actually doesn't matter
to me if some of my typed jewels drop on the floor -- but when I care, I ask
for an explicit response).  For example, I recently looked over the shoulder
of another user, and discovered that he didn't realize that MM would only
show him the messages as "NEW" once -- after that they were only marked UNSEEN.
About three weeks before he had been cut off by a bad phone connection, and
thus missed reading 2 important messages for three weeks - until I showed
him that MM still had those messages marked UNSEEN (he didn't know what the
U was for).  So what good was Arpanet's ~100% reliable delivery there!

On USENET it is normal to keep a copy of a sent message until you receive
an ACK for it, manually sent by the recipient.  It is reasonable etiquette
to ACK a message when you receive it (unless you want to be able to claim that
you didn't receive it :-)) with a small message that says "I got your message"
or even just "ack".  My opinion is that mail reading software should
encourage this behavior by suggesting such a reply and having an automatic
way of generating it.

- Geof

gds@SPAM.ISTC.SRI.COM.UUCP (03/31/87)

     Which brings me to something I would like to get created:  FTP to
     spool so that no pswds need to make their way around the network.
     If Bitnet can transfer files to/from Unix, VMS, VM, MVS, CDC, etc
     machines - WITHOUT passwords then Tcp/Ip should be able to send
     files around to local spool systems so that the entire concept of
     FTP pswds can be eliminated.

     Hank

I would like to know what sorts of access controls are used in Bitnet to
allow or deny a user access to

* a remote file they own
* a remote file they don't own, but is not protected
* a remote file they don't own, but is protected

and how such users are prevented from sabotaging remote disks ...

jon@CS.UCL.AC.UK.UUCP (03/31/87)

Actually, I thought the Internet WAS a store-and-forward network. Gateways
store up packets as they are received and forward them after a queueing
delay.  I think you really meant "message switching" as opposed to "packet
switching".

Yep. In the UK we use a spooled FTP system called NIFTP
(Network independant file transfer protocol). This works over
anything and we have it on 11/44s on Cambridge rings, vaxen and
pyramid, TCP/IP over ethernet. The spec says you can
checkpoint files, so it will work over junk networks without
having to break large files down yourself. It also does binary
etc, and it does some sorts of run-length encoding, for people
with 30bps packet radio nets! It also has sensible
authentication, unlike ftp which seems happy to send LOGIN passwords
around on networks without encryption (try and sell that to a
commercial company with ethernet).

The spec may be got from the Joint Network Team in the UK.
Implementations for ?NIXs exist. Why reinvent the wheel, when
you can get a halftrack for free - or
you could wait for FTAM.

jon

narten@PURDUE.EDU.UUCP (03/31/87)

Geof,

>Similarly, who says that Arpanet mail has end-to-end ACKs?  It just depends
>on where you put the "end."  I put it at the user, and I want to see explicit
>acks from users, too

True, there will never be real end-to-end ACKs if you take things far
enough. An ack for a mail message to some would mean "mail has been
received and READ (and understood :-))". A reasonable compromise would be a
confirmation that the message has been placed in the recipients
mailbox.  Presumably, as domain names get extended, we will be able to
do that.  Any mail you send to a user can go directly to the machine
where the his/her mailbox resides. No forwarding at the site would be
needed.

>On USENET it is normal to keep a copy of a sent message until you receive
>an ACK for it, manually sent by the recipient.  It is reasonable etiquette
>to ACK a message when you receive it

I don't find that acceptable as a *general* way of doing business. This
puts the burden on reliable delivery on the sender and the recipient.
That works for some cases, but requires voluntary compliance of all
users (some who know nothing about mail and networks). Each user has
to think about things such as "Is it time to send the mail again? I
don't have an ACK yet."  It is unworkable when mailing to lists (for
which mail needs to be just as reliable), when the receiver is out of
town, etc. etc.  It is especially a burden for those that send and
receive large quantities of mail.

>My opinion is that mail reading software should encourage this
>behavior by suggesting such a reply and having an automatic way of
>generating it.

This just confirms that most people want reliable mail delivery.
Hence, the burden should be shifted from the user to the software used
for the delivery of mail. It is much easier to do this with a
transport level protocol that connects directly with the destination
machine than over an S&F message switching system.

Thomas

honey@CITI.UMICH.EDU.UUCP (04/01/87)

a man after my own heart -- reinventing uucp.

i'm with you, bro'.

	peter

gds@SPAM.ISTC.SRI.COM.UUCP (04/01/87)

     A reasonable compromise would be a confirmation that the message
     has been placed in the recipients mailbox.

If you'll allow that the message has been placed in the user's maildrop
(/usr/spool/mail/user), sendmail has a feature such that if it receives
mail with the header Return-Receipt-To:, it will generate an ack to the
address listed there.  (The address must be replyable from the
receiver's context, so it must contain a full reverse path for a
reliable ack.)  You are pretty much guaranteed that the mail has been
committed to stable storage (if not the maildrop, the sendmail spool).

     Presumably, as domain names get extended, we will be able to
     do that.  Any mail you send to a user can go directly to the machine
     where the his/her mailbox resides. No forwarding at the site would be
     needed.

I'm not sure what you mean by this.  In the ARPA Internet, mail goes
directly from the sender's site to the recipient's site unless
forwarding is specified.  UUCP requires forwarding at intermediate
nodes.  Even if the UUCP namespace were entirely mapped out, you
couldn't have mail going directly from sender machine to recipient
machine unless everyone called everyone else, which will never happen.

I think we're mixing concepts here a bit.  "reliable delivery" to
gds@spam.istc.sri.com is accomplished when something has been delivered
to a process on spam.istc.sri.com which will leave the mail where "gds"
can access it.  "reliable delivery" to the human Greg Skinner requires
that he read it.  I think it would be asking too much to modify mail
software to require acks, not to mention a problem for sites which don't
have source.

--gregbo

CERF@A.ISI.EDU.UUCP (04/02/87)

Hank,

we didn't do it because I think we didn't think it was necessary
but that's because we started with just one network and tried to
extend the earlier services to the Internet. The mail forwarders
are really store/forward when you think about it. Also, you need
all the mechanisms for error reporting that the mail system has in
it to recover from failures.

Vint

narten@PURDUE.EDU.UUCP (04/03/87)

>     Presumably, as domain names get extended, we will be able to
>     do that.  Any mail you send to a user can go directly to the machine
>     where the his/her mailbox resides. No forwarding at the site would be
>     needed.

There is still a hole with current TCP mailers in that often mail
really travels an extra hop. That is, mail for janedoe@somewhere.edu
gets sent to the machine at "somewhere.edu", which after accepting the
mail, turns around and forwards it the machine the user reads mail on.
I would prefer an acknowledgement that mail has actually been placed
in the users mailbox, rather than just handing the mail to a
"reliable" delivering agent at the site.

Domain names were designed to handle lots more than just machine name
to IP address mappings. At some point, it will (hopefully) be possible
to register mailboxes in the system. That way, mail sent to
janedoe@somewhere.edu will not necessarily mean sending the mail to
"somewhere.edu". Rather, sendmail will find the real agent via
nameserver queries about "janedoe@somewhere.edu".  Now mail gets sent
directly to the machine where the user's mailbox resides, and now when
the mail is no longer in the sender's local queue, it really is in the
correct mailbox, and not still in transit somewhere.

Thomas

gds@SPAM.ISTC.SRI.COM.UUCP (04/03/87)

     There is still a hole with current TCP mailers in that often mail
     really travels an extra hop. That is, mail for janedoe@somewhere.edu
     gets sent to the machine at "somewhere.edu", which after accepting the
     mail, turns around and forwards it the machine the user reads mail on.
     I would prefer an acknowledgement that mail has actually been placed
     in the users mailbox, rather than just handing the mail to a
     "reliable" delivering agent at the site.

Like the gentleman from rice said, you don't always know when mail is
placed in the user's mailbox.  It may be a post-office type system,
where mail is read from a mail server, but composed from the mail
client.  Everything is done without forwarding.  When do you decide that
the mail is in the mailbox?

     Domain names were designed to handle lots more than just machine name
     to IP address mappings. At some point, it will (hopefully) be possible
     to register mailboxes in the system. That way, mail sent to
     janedoe@somewhere.edu will not necessarily mean sending the mail to
     "somewhere.edu". Rather, sendmail will find the real agent via
     nameserver queries about "janedoe@somewhere.edu".  Now mail gets sent
     directly to the machine where the user's mailbox resides, and now when
     the mail is no longer in the sender's local queue, it really is in the
     correct mailbox, and not still in transit somewhere.

It still might be in transit somewhere -- the mailbox entries may point
to non-Internet sites which will require at least an extra hop at a mail
bridge.

Does this "ack" scheme imply retransmission of a mail message until a
retransmission timeout?  I would hate to see those old "Message queued
for 3 days -- will try again for another 12 days" messages from mailers
coming to my mailbox again.

--gregbo

Rudy.Nedved@H.CS.CMU.EDU.UUCP (04/05/87)

The concept of distributing internal configuration information to everyone
in the world is too prone to failures from too much information. Assuming
that people will extensively use the domain system to publish current
routing information for mailboxes and dealing with cacheing and all the
other problems is expecting too much. The idea is a nice one alas a very
flawed one (from too much data).

The trick at this pont is to just get a reasonable mail relaying mechansim up
and to get rid of the host table. The MX records solve in a not so great way
the problem of mail relaying for hosts not on the connected network alas a
better algorithm has not been thought up that did not get shot down (heck, we
can not even get packet routing right...how do you expect to get mail routing
right?) Also many places are still using the host table mechanism and are
starting to suffer because of the size problems....alas they have received
temporary relief in the form of a 10% smaller NIC table.

Let us keep an eye toward the future but make that first couple of steps
instead of just dreaming about the future....

-Rudy