Browse Prior Art Database

SMTP Service Extension for Command Pipelining (RFC2197)

IP.com Disclosure Number: IPCOM000002755D
Original Publication Date: 1997-Sep-01
Included in the Prior Art Database: 2000-Sep-13
Document File: 7 page(s) / 14K

Publishing Venue

Internet Society Requests For Comment (RFCs)

Related People

N. Freed: AUTHOR

Abstract

This memo defines an extension to the SMTP service whereby a server can indicate the extent of its ability to accept multiple commands in a single TCP send operation. Using a single TCP send operation for multiple commands can improve SMTP performance significantly.

This text was extracted from a ASCII Text document.
This is the abbreviated version, containing approximately 21% of the total text.

Network Working Group N. Freed

Request for Comments: 2197 Innosoft

Obsoletes: 1854 September 1997

Category: Standards Track

SMTP Service Extension

for Command Pipelining

Status of this Memo

This document specifies an Internet standards track protocol for the

Internet community, and requests discussion and suggestions for

improvements. Please refer to the current edition of the "Internet

Official Protocol Standards" (STD 1) for the standardization state

and status of this protocol. Distribution of this memo is unlimited.

1. Abstract

This memo defines an extension to the SMTP service whereby a server

can indicate the extent of its ability to accept multiple commands in

a single TCP send operation. Using a single TCP send operation for

multiple commands can improve SMTP performance significantly.

The present document is an updated version of RFC 1854 [3]. Only

textual and editorial changes have been made; the protocol has not

changed in any way.

2. Introduction

Although SMTP is widely and robustly deployed, certain extensions may

nevertheless prove useful. In particular, many parts of the Internet

make use of high latency network links. SMTP's intrinsic one

command-one response structure is significantly penalized by high

latency links, often to the point where the factors contributing to

overall connection time are dominated by the time spent waiting for

responses to individual commands (turnaround time).

In the best of all worlds it would be possible to simply deploy SMTP

client software that makes use of command pipelining: batching up

multiple commands into single TCP send operations. Unfortunately, the

original SMTP specification [1] did not explicitly state that SMTP

servers must support this. As a result a non-trivial number of

Internet SMTP servers cannot adequately handle command pipelining.

Flaws known to exist in deployed servers include:

(1) Connection handoff and buffer flushes in the middle of

the SMTP dialogue. Creation of server processes for

incoming SMTP connections is a useful, obvious, and

harmless implementation technique. However, some SMTP

servers defer process forking and connection handoff

until some intermediate point in the SMTP dialogue.

When this is done material read from the TCP connection

and kept in process buffers can be lost.

(2) Flushing the TCP input buffer when an SMTP command

fails. SMTP commands often fail but there is no reason

to flush the TCP input buffer when this happens.

Nevertheless, some SMTP servers do this.

(3) Improper processing and promulgation of SMTP command

failures. For example, some SMTP servers will refuse to

accept a DATA command if the last RCPT TO command

...