BEEP

Last updated
BEEP channels can access multiple profiles within a single session. BEEP Profiles and Channels.jpg
BEEP channels can access multiple profiles within a single session.

The Blocks Extensible Exchange Protocol (BEEP) is a framework for creating network application protocols. BEEP includes building blocks like framing, pipelining, multiplexing, reporting and authentication for connection and message-oriented peer-to-peer (P2P) protocols with support of asynchronous full-duplex communication.

Contents

Message syntax and semantics is defined with BEEP profiles associated to one or more BEEP channels, where each channel is a full-duplex pipe. A framing-mechanism enables simultaneous and independent communication between peers.

BEEP is defined in RFC   3080 independently from the underlying transport mechanism. The mapping of BEEP onto a particular transport service is defined in a separate series of documents.

Overview

Profiles, channels and a framing mechanism are used in BEEP to exchange different kinds of messages. Only content type and encoding are defaulted by the specification leaving the full flexibility of using a binary or textual format open to the protocol designer. Profiles define the functionality of the protocol and the message syntax and semantics. Channels are full-duplex pipes connected to a particular profile. Messages sent through different channels are independent from each other (asynchronous). Multiple channels can use the same profile through one connection.

BEEP also includes TLS for encryption and SASL for authentication.

History

In 1998 Marshall T. Rose, who also worked on the POP3, SMTP, and SNMP protocols, [1] designed the BXXP protocol and subsequently handed it over to the Internet Engineering Task Force (IETF) workgroup in summer 2000. In 2001 the IETF published BEEP ( RFC   3080) and BEEP on TCP ( RFC   3081) with some enhancements to BXXP. The three most notable are:

BEEP session

To start a BEEP session, an initiating peer connects to the listening peer. Each peer sends a reply containing a greeting element. The greeting contains up to three different elements:

Example greeting and answer:

L:<waitforincomingconnection> I:<openconnection> L:RPY00.0110 L:Content-Type:application/beep+xml L: L:<greeting> L:<profileuri='http://iana.org/beep/TLS'/> L:</greeting> L:END I:RPY00.052 I:Content-Type:application/beep+xml I: I:<greeting/> I:END 

Profiles

Profiles define the syntax and semantics of messages and the protocol functionality based on BEEP. A single BEEP session can provide access to multiple profiles. To identify a profile, a unique string is assigned to it. This profile identifier has the format of a Uniform Resource Identifier (URI) or Uniform Resource Name (URN). In the past, the URI format of the profile identifier lead to confusion, because it is similar to a web address. To avoid misunderstandings, newer profiles should use the URN format.

Example profile identifier:

urn:ietf:params:xml:ns:geopriv:held:beepA BEEP Binding for the HELD Protocol
http://iana.org/beep/xmlrpc RFC   3529 XML-RPC in BEEP

Messages and frames

BEEP messages are structured according to the MIME standard. There are sometimes misunderstandings about BEEP using XML in messages, but only a small subset of XML is used by channel 0 and it is transparent to the profile designer (BEEP user). It's up to the profile designer which message content format is used. This can be any textual format like JSON or XML as well as binary data. XML is used in the channel management and the TLS standard profile defined with BEEP.

Example of a successful channel close message exchange from RFC3080.

C:MSG02.23571 C:Content-Type:application/beep+xml C: C:<closenumber='1'code='200'/> C:END S:RPY02.39246 S:Content-Type:application/beep+xml S: S:<ok/> S:END 

Larger messages are split into multiple parts and distributed over a number of sequence frames.

Exchange types

BEEP defines 5 message types to allow most of the application protocol patterns needed:

MessageMSGA message from one peer to another with content.
ReplyRPYA single reply to a received message with content (one-to-one exchange).
ErrorERRA single reply to a received message with content (one-to-one exchange) and error semantics.
AnswerANSAn answer to a received message with content. There might be 0 to n answers for a message (one-to-many exchange).
NulNULA terminal reply to a message without content to signal to the peer currently acting as the client the end of a message exchange with 0 or more answers.

Some of the most common application protocol patterns are implemented as follows:

Flow control

BEEP supports sequence frames (SEQ) to implement flow control at the channel level. Sequence frames are defined in RFC 3081 section 3.3. The Transmission Control Protocol (TCP) defines a sequence mechanism on the transport layer level and supports flow control related to the connection. BEEP needs flow control on the channel level to make sure no channel or big message monopolizes the connection. To that end, sequence frames are used to support quality of service (QoS) and to avoid starvation and deadlock. [2]

Related Research Articles

<span class="mw-page-title-main">HTTP</span> Application protocol for distributed, collaborative, hypermedia information systems

The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen in a web browser.

The Internet Control Message Protocol (ICMP) is a supporting protocol in the Internet protocol suite. It is used by network devices, including routers, to send error messages and operational information indicating success or failure when communicating with another IP address, for example, an error is indicated when a requested service is not available or that a host or router could not be reached. ICMP differs from transport protocols such as TCP and UDP in that it is not typically used to exchange data between systems, nor is it regularly employed by end-user network applications.

<span class="mw-page-title-main">OSI model</span> Model of communication of seven abstraction layers

The Open Systems Interconnection model is a conceptual model from the International Organization for Standardization (ISO) that "provides a common basis for the coordination of standards development for the purpose of systems interconnection." In the OSI reference model, the communications between systems are split into seven different abstraction layers: Physical, Data Link, Network, Transport, Session, Presentation, and Application.

The Simple Mail Transfer Protocol (SMTP) is an Internet standard communication protocol for electronic mail transmission. Mail servers and other message transfer agents use SMTP to send and receive mail messages. User-level email clients typically use SMTP only for sending messages to a mail server for relaying, and typically submit outgoing email to the mail server on port 587 or 465 per RFC 8314. For retrieving messages, IMAP is standard, but proprietary servers also often implement proprietary protocols, e.g., Exchange ActiveSync.

The Session Initiation Protocol (SIP) is a signaling protocol used for initiating, maintaining, and terminating communication sessions that include voice, video and messaging applications. SIP is used in Internet telephony, in private IP telephone systems, as well as mobile phone calling over LTE (VoLTE).

The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, the entire suite is commonly referred to as TCP/IP. TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts communicating via an IP network. Major internet applications such as the World Wide Web, email, remote administration, and file transfer rely on TCP, which is part of the Transport Layer of the TCP/IP suite. SSL/TLS often runs on top of TCP.

In computing, a handshake is a signal between two devices or programs, used to, e.g., authenticate, coordinate. An example is the handshaking between a hypervisor and an application in a guest virtual machine.

The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data connections between the client and the server. FTP users may authenticate themselves with a plain-text sign-in protocol, normally in the form of a username and password, but can connect anonymously if the server is configured to allow it. For secure transmission that protects the username and password, and encrypts the content, FTP is often secured with SSL/TLS (FTPS) or replaced with SSH File Transfer Protocol (SFTP).

Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network. The protocol is widely used in applications such as email, instant messaging, and voice over IP, but its use in securing HTTPS remains the most publicly visible.

The Extensible Provisioning Protocol (EPP) is a flexible protocol designed for allocating objects within registries over the Internet. The motivation for the creation of EPP was to create a robust and flexible protocol that could provide communication between domain name registries and domain name registrars. These transactions are required whenever a domain name is registered or renewed, thereby also preventing domain hijacking. Prior to its introduction, registries had no uniform approach, and many different proprietary interfaces existed. While its use for domain names was the initial driver, the protocol is designed to be usable for any kind of ordering and fulfilment system.

STUN is a standardized set of methods, including a network protocol, for traversal of network address translator (NAT) gateways in applications of real-time voice, video, messaging, and other interactive communications.

In computer networking, the Datagram Congestion Control Protocol (DCCP) is a message-oriented transport layer protocol. DCCP implements reliable connection setup, teardown, Explicit Congestion Notification (ECN), congestion control, and feature negotiation. The IETF published DCCP as RFC 4340, a proposed standard, in March 2006. RFC 4336 provides an introduction.

Diameter is an authentication, authorization, and accounting protocol for computer networks. It evolved from the earlier RADIUS protocol. It belongs to the application layer protocols in the internet protocol suite.

FTPS is an extension to the commonly used File Transfer Protocol (FTP) that adds support for the Transport Layer Security (TLS) and, formerly, the Secure Sockets Layer cryptographic protocols.

In computing, syslog is a standard for message logging. It allows separation of the software that generates messages, the system that stores them, and the software that reports and analyzes them. Each message is labeled with a facility code, indicating the type of system generating the message, and is assigned a severity level.

Real-Time Messaging Protocol (RTMP) is a communication protocol for streaming audio, video, and data over the Internet. Originally developed as a proprietary protocol by Macromedia for streaming between Flash Player and the Flash Communication Server, Adobe has released an incomplete version of the specification of the protocol for public use.

Within communication protocols, TLV is an encoding scheme used for informational elements. A TLV-encoded data stream contains code related to the record type, the record value's length, and finally the value itself.

<span class="mw-page-title-main">HTTP compression</span> Capability that can be built into web servers and web clients

HTTP compression is a capability that can be built into web servers and web clients to improve transfer speed and bandwidth utilization.

In computer networking, the Message Session Relay Protocol (MSRP) is a protocol for transmitting a series of related instant messages in the context of a communications session. An application instantiates the session with the Session Description Protocol (SDP) over Session Initiation Protocol (SIP) or other rendezvous methods.

IEC 62351 is a standard developed by WG15 of IEC TC57. This is developed for handling the security of TC 57 series of protocols including IEC 60870-5 series, IEC 60870-6 series, IEC 61850 series, IEC 61970 series & IEC 61968 series. The different security objectives include authentication of data transfer through digital signatures, ensuring only authenticated access, prevention of eavesdropping, prevention of playback and spoofing, and intrusion detection.

References

  1. Carolyn Duffy Marsan (2000-06-26). "'HTTP on steroids' to ease protocol work". Computer World. Retrieved 2014-10-31.
  2. Francis Brosnan (2006-01-30). "'Understanding SEQ frames: BEEP flow control and bandwidth management" . Retrieved 2014-10-31.