The Story of the TTCP Program

Along with PING, there are a few other fun bits of network code that I got to write back in the early days of TCP/IP.

Fun Network Hacks

Some other bits of kernel code that I've originated include the "default route" support, which a lot of people depend on to get their packets to an InterNet router when the full generality of a dynamic routing protocol is not required, or isn't working.

I also devised the "TCP max segment size (MSS) follows departing interface maximum transmission unit (MTU)" algorithm, which greatly improved TCP/IP efficiency in the face of dropped datagrams by allowing TCP to avoid using IP fragmentation.

I then further extended the algorithm to bring BSD UNIX into strict conformance with the TCP specification, and limit the TCP segment size when transmitting to faraway systems to 576 bytes. This is the origin of the "subnets-are-local" flag, which sometimes frustrates LAN sys-admins, but allowed mail to flow to Multics and Univac machines which (back then) adhered to the letter of the specification and could only handle 512 byte TCP segments. Since at the time I was the moderator of the TCP-IP Digest, the Unix-Wizards Digest and the INFO-UNIX Digest, I had a lot of packets to send to Multics and Univac machines, and the mail had to go through.

The TTCP Program

Along with Terry Slattery (then of the US Naval Academy), we took inspiration from an (Excelan? Interlan?) network test program, and evolved it into a program called TTCP, to "Test TCP". In addition to performing its intended function of testing TCP performance from user-memory to user-memory, TTCP has remained an excellent tool for bootstrapping hosts onto the network, by providing (essentially) a UNIX "pipe" between two machines across the network. For example, on the destination machine, use:

          ttcp -r | tar xvpf -
and on the source machine:
          tar cf - directory | ttcp -t dest_machine
To work around routing problems, additional intermediate machines can be included by:
          ttcp -r | ttcp -t next_machine

TTCP has become another standard UNIX networking tool.


UP to Mike's Home Page.
WAY UP to the Lab's Home Page.

NEXT to the PING Page.