An increasing problem in networking today concerns application protocols. An application protocol is something like HTTP, SNMP and FTP that layers on top of the network transport layer. The problem is that although many new application protocols are very similar, they continue to proliferate. Developers usually approach them in one of three ways. First, if HTTP or SNMP is close enough, just use it with a few conventions. If not, define one on top of Web or e-mail. And finally, some develop a new one from scratch.
BEEP, which stands for Block Extensible Exchange Protocol, is a framework to allow application protocols to be built from a common base framework. BEEP's protocol characteristics are connection-oriented (reliable, ordered, congestion sensitive), message-oriented (structured data) and peer-to-peer (allowing client/server). It's protocol mechanisms include framing (delimiting msgs), encoding (representing msgs), reporting (status information), asynchrony (independent exchanges), authentication (verify user ids), and privacy (protecting against 3rd parties).
The ETTK includes an framework for implementing application protocols via BEEP. We call it BeepLite. It is a Java implementation of the main IETF RFC's concerning BEEP: RFC 3080 (BEEP Core) and RFC 3081 (TCP Binding). There is also an RFC for SOAP over BEEP that is interesting. We find that for some cases SOAP over BEEP performs better than SOAP over HTTP, but in other cases, HTTP proves to be better. This is a fruitful area for further experimentation as a possible application of BEEP.