Reliable Event Logging Protocol: Difference between revisions

Content deleted Content added
m uncat tag removed
 
(9 intermediate revisions by 9 users not shown)
Line 1:
'''Reliable Event Logging Protocol''' ('''RELP''') is, a [[networking protocol]] for [[Computercomputer data logging]] in computer networks., It is based onextends the ideasfunctionality of the [[syslog]] protocol but extends it to provide reliable delivery of event messages. It is most often used in environments wherewhich messagedo lossnot istolerate notmessage acceptableloss, likesuch inas the [[financial industry]].
 
==Overview==
RELP uses [[Transmission Control Protocol|TCP]] for message transmission. This provides basic protection against message loss, but does not guarantee delivery under all circumstances. When a connection is abortedaborts, itTCP cannot be reliably detecteddetect ifwhether the last messages sent have actually reached their destination.<ref>
{{cite web
|url=http://blog.gerhards.net/2008/05/why-you-cant-build-reliable-tcp.html
|date=2008-05-29
|title=Why you can't build a reliable TCP protocol without app-level acks
|accessdate=2013-05-06
}}
</ref> Contrary to
Unlike the syslog protocol, RELP works with a [[backchannel, over]] which conveys information ofback messages processed byto the receiversender isabout conveyedmessages backprocessed toby the senderreceiver. This enables RELP to always know which messages have been properly received, even in the case of a connection abort.
 
==History==
RELP was developed in 2008 as a reliable protocol for [[rsyslog]]-to-rsyslog communication. As RELP designer [[Rainer Gerhards]] explains, the lack of reliable transmission in industry-standard syslog was a core motivation to create RELP.<ref>{{cite web |url=http://blog.gerhards.net/2008/03/relp-reliable-event-logging-protocol.html |date=2008-03-13 |title=RELP - the reliable event logging protocol |accessdate=2013-05-06}}</ref> Originally, RFC 3195 syslog was considered to take up this part in rsyslog, but it suffered from high overhead and missing support for new IETF syslog standards (which have since been published as RFC 5424, but were not named at that time).
 
While RELP was initially meant solely for rsyslog use, it became adopted more widely.{{Citation needed|date=September 2014}} Currently tools both under Linux and Windows support RELP. There are also in-house deployments for Java. While RELP is still not formally standardized, it has evolved into an industry standard for computer logging.{{Citation needed|date=September 2014}}
 
==Technical Detailsdetails==
RELP is inspired by RFC 3195 syslog and RFC 3080. During initial connection, sender and receiver negotiate session options, like supported command set or application level window size. Network event messages are transferred as commands, where the receiver acknowledges each command as soon as it has processed it. Sessions may be closed by both sender and receiver, but usually should be terminated by the sender side. In order to facilitate message recovery on session aborts, RELP keeps transaction numbers for each command, and negotiates which messages need to be resent on session reestablishment.
 
The current version of RELP does not specify native [[Transport Layer Security|TLS]] support. However, practical deployments use wrappers around the RELP session in order to provide that functionality.{{Citation needed|date=September 2014}}
 
==Implementations==
Only publicly available implementations are listed. This list is not exhaustive.
 
* [https://www.rsyslog.com/librelp/ librelp] - the original C RELP library
* [[rsyslog]]
* MonitorWare (Windows)
* [http://logstash.net logstash]
* [https://github.com/teragrep/rlp_01 rlp_01] - Java RELP Library
 
* [https://github.com/teragrep/jla_01 jla_01] - RELP Logback Plugin
==External links==
* [https://github.com/teragrep/jla_04 jla_04] - Java Util Logging RELP Handler
* [http://www.rsyslog.com/doc/relp.html RELP protocol specification]
* [https://github.com/teragrep/jla_05 jla_05] - Log4j RELP Plugin
 
==References==
Line 29 ⟶ 38:
 
[[Category:Internet protocols]]
[[Category:Internet standardsStandards]]
[[Category:System administration]]