2026-07-12
By the late 1990s, Marshall Rose — a veteran of SMTP, POP3, SNMP, and countless other IETF efforts — was tired of watching every new working group reinvent the same wheel. Each new application protocol re-solved framing, authentication, encryption negotiation, asynchronous request/response correlation, and error reporting, and each one got some subtle detail wrong. BEEP (originally BXXP) was his proposed antidote: a reusable application protocol framework that new protocols could sit on top of, the way transport-layer protocols sit on TCP.
The core design. BEEP runs over any reliable, ordered byte-stream transport (usually TCP, per the companion RFC 3081), and multiplexes multiple independent channels over a single connection. Each channel carries messages belonging to a profile — the actual application protocol. Profiles are identified by URIs and negotiated at channel-open time. Messages are typed as MSG, RPY, ERR, ANS, or NUL, giving you request/reply, one-to-many replies, and error signaling built in.
What BEEP gave you for free:
Why you've probably never used it directly. BEEP arrived at an awkward moment. XML-heavy protocols were briefly fashionable (SOAP, XML-RPC), and BEEP's framing headers were text with an XML-in-the-payload flavor that felt heavyweight. Meanwhile, HTTP was busy eating the world — firewalls passed it, load balancers understood it, and developers already knew it. Layering your protocol on HTTP, even awkwardly, beat asking ops teams to open a new port for something called "BEEP."
Where it actually shipped. The most visible deployment is RFC 3195 (Reliable Delivery for syslog), which uses BEEP to give syslog TCP transport with authentication and acknowledgment. It's also the basis of NETCONF over BEEP (RFC 4744, later deprecated in favor of SSH/TLS transports), and appeared in a handful of IoT and industrial protocols. The APEX presence system, the SIP-alternative "IMPP" experiments, and Rose's own reliable syslog work all rode on it.
Why it still matters. If you squint at HTTP/2, QUIC, or WebSocket subprotocols, you can see BEEP's fingerprints: multiplexed streams over one connection, framed messages, negotiated capabilities, symmetric peers. Rose was right about the problem — everyone was reinventing the same primitives — he just picked the wrong decade and the wrong syntax. Modern protocol designers who read RFC 3080 come away with the uncomfortable realization that a lot of what feels novel about HTTP/2 was sitting in an IETF draft in 1998.
BEEP is also a case study in a recurring IETF lesson: generality doesn't sell itself. A framework has to be either dramatically simpler than what it replaces, or ride the coattails of an already-deployed transport. BEEP was neither, and paid the price.
