信頼性の高いイベントログプロトコル(RELP)は、コンピュータネットワークにおけるコンピュータデータのロギングのためのネットワークプロトコルであり、 Syslogプロトコルの機能を拡張して、イベントメッセージの信頼性の高い配信を実現します。金融業界など、メッセージの損失が許容されない環境でよく使用されます。
概要
RELPはメッセージ伝送にTCPを使用します。これはメッセージ損失に対する基本的な保護を提供しますが、あらゆる状況下での配信を保証するものではありません。接続が中断された場合、TCPは最後に送信されたメッセージが実際に宛先に到達したかどうかを確実に検出できません。[ 1 ] syslogプロトコルとは異なり、RELPはバックチャネルを使用して、受信側で処理されたメッセージに関する情報を送信者に返します。これにより、RELPは接続が中断された場合でも、どのメッセージが正しく受信されたかを常に把握できます。
歴史
RELPは、 rsyslog同士の通信のための信頼性の高いプロトコルとして2008年に開発されました。RELPの設計者であるRainer Gerhards氏によると、業界標準のsyslogにおける信頼性の高い伝送が不足していたことが、RELP開発の中心的な動機でした。[ 2 ]当初、rsyslogのこの部分をRFC 3195 syslogが担うことが検討されましたが、オーバーヘッドが高く、新しいIETF syslog標準(後にRFC 5424として公開されましたが、当時は名称がありませんでした)をサポートしていなかったため、採用は見送られました。
RELPは当初rsyslog専用でしたが、広く採用されるようになりました。現在ではLinuxとWindowsの両方のツールがRELPをサポートしています。Java向けの社内導入も行われています。RELPはまだ正式に標準化されていませんが、コンピュータログの業界標準へと進化しています。
技術的な詳細
RELPは、RFC 3195 syslogおよびRFC 3080に着想を得ています。初期接続時に、送信側と受信側は、サポートされるコマンドセットやアプリケーションレベルのウィンドウサイズなどのセッションオプションをネゴシエートします。ネットワークイベントメッセージはコマンドとして転送され、受信側は各コマンドを処理するとすぐに確認応答します。セッションは送信側と受信側の両方から終了できますが、通常は送信側が終了させる必要があります。セッション中断時のメッセージ回復を容易にするため、RELPは各コマンドのトランザクション番号を保持し、セッション再確立時に再送が必要なメッセージをネゴシエートします。
RELPの現在のバージョンでは、ネイティブTLSサポートは規定されていません。ただし、実際の導入では、RELPセッションのラッパーを使用することで、その機能を提供しています。
実装
公開されている実装のみがリストされています。このリストは網羅的なものではありません。
- librelp - オリジナルのC RELPライブラリ
- rsyslog
- モニターウェア (Windows)
- logstash 2013年6月1日アーカイブ- Wayback Machine
- rlp_01 2024年12月24日アーカイブ- Java RELPライブラリ
- jla_01 2022年12月15日にWayback Machineにアーカイブ- RELP Logbackプラグイン
- jla_04 2022年12月15日アーカイブ- Java Util Logging RELP ハンドラー
- jla_05 - Log4j RELP プラグイン
参考文献
- ^ 「なぜアプリレベルのACKなしでは信頼性の高いTCPプロトコルを構築できないのか」 2008年5月29日. 2013年4月28日時点のオリジナルよりアーカイブ。2013年5月6日閲覧。
- ^ 「RELP - 信頼性の高いイベントログプロトコル」 2008年3月13日. 2013年4月30日時点のオリジナルよりアーカイブ。2013年5月6日閲覧。