Network Working Group M. Rose
Request for Comments: 3081 Invisible Worlds, Inc.
Category: Standards Track March 2001
Mapping the BEEP Core onto TCP
1. Introduction
This memo describes how a BEEP [1] session is mapped onto a single TCP [2] connection. Refer to Section 2.5 of [1] for an explanation of the mapping requirements.
Rose Standards Track [Page 1]
RFC 3081 Mapping the BEEP Core onto TCP March 2001 2. Session ManagementThe mapping of BEEP session management onto the TCP service is straight-forward.
3. Message Exchange
The mapping of BEEP exchanges onto the TCP service is less straight- forward.
Rose Standards Track [Page 2]
RFC 3081 Mapping the BEEP Core onto TCP March 2001 3.1 Flow ControlRecall from Section 2.2.1.2 of [1] that every payload octet sent in each direction on a channel has an associated sequence number. Numbering of payload octets within a data frame is such that the first payload octet is the lowest numbered, and the following payload octets are numbered consecutively.
3.1.1 Channel Creation
When a channel is created, the sequence number associated with the first payload octet of the first data frame is 0, and the initial window size for that channel is 4096 octets. After channel creation, a BEEP peer may update the window size by sending a SEQ frame (Section 3.1.3).
3.1.2 Sending Messages
Before a message is sent, the sending BEEP peer must ensure that the size of the payload is within the window advertised by the receiving BEEP peer. If not, it has three choices:
Rose Standards Track [Page 3]
RFC 3081 Mapping the BEEP Core onto TCP March 2001
o the BEEP peer may signal to its application that it is unable to send the message, allowing the application to try again at a later time (or perhaps signaling its application when a larger window is available).
3.1.3 Processing SEQ Frames
As an application accepts responsibility for incoming data frames, its BEEP peer should send SEQ frames to advertise a new window.
3.1.4 Use of Flow Control
The key to successful use of flow control within BEEP is to balance performance and fairness:
Rose Standards Track [Page 4]
RFC 3081 Mapping the BEEP Core onto TCP March 2001
o large messages should be segmented into frames no larger than two-thirds of TCP's negotiated maximum segment size;
Rose Standards Track [Page 5]
RFC 3081 Mapping the BEEP Core onto TCP March 2001 4. Security ConsiderationsConsult Section [1]'s Section 9 for a discussion of security issues.
Rose Standards Track [Page 6]
RFC 3081 Mapping the BEEP Core onto TCP March 2001 Appendix A. AcknowledgementsThe author gratefully acknowledges the contributions of: Dave Crocker, Steve Harris, Eliot Lear, Keith McCloghrie, Craig Partridge, Vernon Schryver, and, Joe Touch. In particular, Dave Crocker provided helpful suggestions on the nature of flow control in the mapping.
Rose Standards Track [Page 7]
RFC 3081 Mapping the BEEP Core onto TCP March 2001
Full Copyright Statement