tldr
勉強がてらにEnvoyのドキュメントを邦訳してみました。ベースはGoogle Translateで、ところどころ不自然な箇所を直しています。
原文としたのEnvoyのドキュメントはこちらのディレクトリ以下にあります(ライセンス:Apache License 2.0, NOTICE)。
ネットワーク(L3/L4)フィルタ
リスナーのセクションで説明したように、ネットワークレベル(L3 / L4)フィルターはEnvoyの接続処理の中核を形成します。フィルタAPIを使用すると、さまざまなフィルタのセットを混在させてマッチングし、特定のリスナーに添付することができます。ネットワークフィルタには3つの異なる種類があります。
- 読み取り:読み取りフィルタは、Envoy がダウンストリーム接続からデータを受信したときに呼び出されます。
- 書き込み:書き込みフィルタは、Envoy がダウンストリーム接続にデータを送信しようとしているときに呼び出されます。
- 読み取り/書き込み:読み取り/書き込みフィルタは、Envoy がダウンストリーム接続からデータを受信したときと、ダウンストリーム接続にデータを送信しようとしているときの両方で呼び出されます。
ネットワークレベルフィルタのための API は、最終的に生のバイトおよび少数の接続イベント(例えば、TLS ハンドシェイク完了、接続のローカルまたはリモート切断など)で動作するので比較的単純である。チェーン内のフィルタは停止し、その後さらにフィルタへの反復を続けることができます。これにより、レート制限サービスなどの呼び出しなど、より複雑なシナリオが可能になります。ネットワークレベルのフィルタでは、単一のダウンストリーム接続のコンテキスト内で状態(静的および動的)を共有できます。詳細については、フィルタ間のデータ共有を参照してください。 Envoyには、このアーキテクチャの概要および構成の参照で文書化されているいくつかのネットワークレベルのフィルタが既に含まれています。