Reliable Event Logging Protocol (RELP)是在计算机网络上针对计算机数据记录的一个网络协议。它基于syslog协议的思想但是在其上实现了拓展来对于事件消息提供可靠的传输。它最常使用在信息丢失不能被接受的环境中,比如一个商业公司。
概述:
RELP使用TCP来实现信息传输,这对于信息丢失提供了基本的保护,但是并不能在任何情况下保证传输。当一个连接终止时,TCP并不能有效的检测是否最终发送的消息已经到达它们的目的地。和syslog协议不同,RELP使用反馈的机制,这会将关于被接受者处理的信息返回给发送者。这使得RELP总是能够知道哪些消息已经被正确的接收,尽管出现在连接终止的情况下。
历史:
RELP开发与2008年,作为一个rsylog-to-rsyslog交流的可靠协议。如RELP设计者Rainer Gerhards解释的那样,在工业标准的syslog中对于可靠传输的缺乏是创造RELP的核心动机。最初的时候,REC 3495 syslog被认为承担了rsyslog的这部分内容,但是它suffered from高昂的费用和对于新的IETF syslog标准的支持(其后来被发行为RFC 5424,但是当时并不叫这个名字)
尽管RELP最初只是仅仅为了rsyslog使用,但是它得到了广泛的采用。Linux和Windows中当前的工具都支持RELP。同时也存在Java内部的部署。尽管RELP仍然没有正式地标准化,它已经演化为计算机记录的工业标准。
技术细节:
RELP由RFC 3195 syslog和RFC 3080启迪,在初始的连接中,发送方和接收方协商会话选项,比如支持的命令集合,或者应用等级窗口尺寸。网络事件消息作为命令传输,接受者一旦接收到一个命令就会告知收到。为了在会话因故终止时有利于消息回复,RELP对于每一个命令保留事务号,并且协商哪些消息在会话重建时必须出现。
当前版本的RELP并没有指定天然的TLS支持,但是,实际部署对于RELP会话进行封装来提供这个功能。
实现:
下面只列出了公开可用的实现,列表并不详尽。
librelp - the original C RELP library
rsyslog
MonitorWare (Windows)
logstash
来源:http://en.wikipedia.org/wiki/Reliable_Event_Logging_Protocol