BPF ネットワークログ¶
BPF ネットワーク、すなわち Berkeley Packet Filter (BPF) 技術は、オペレーティングシステムのカーネルレベルで動作するネットワークパケットフィルタリング技術です。これにより、ネットワークを通過するパケットをキャプチャおよびフィルタリングし、ネットワーク効率の向上やセキュリティチェックなどを行うことができます。BPF ルールは、フィルタリング条件を定義するための特殊な言語であり、パケットの送信元 IP、宛先 IP、使用するプロトコルタイプやポート番号など、さまざまなフィルタ基準を指定できます。簡単に言えば、BPF は高度なネットワークのふるいのようなもので、設定したルールに従って、必要なネットワークパケットを選別することができます。
先進的な Linux ネットワークパケット処理技術として、Guanceは BPF 技術を利用してネットワークトラフィックデータを収集・表示し、可視化することで、ネットワーク動作の深い理解と問題診断を支援します。
機能¶
- 四層 BPF ネットワークログ(
bpf_net_l4_log):四層はトランスポート層であり、主にエンドツーエンドのデータ転送を担当します。このモジュールは、トランスポート層プロトコル(TCP、UDP など)に基づくネットワークトラフィック情報を記録します。 - 七層 BPF ネットワークログ(
bpf_net_l7_log):七層はアプリケーション層であり、HTTP、FTP などの具体的なアプリケーションプロトコルに関係します。このモジュールは、アプリケーション層プロトコルに基づくネットワークトラフィック情報を記録します。
四層 BPF ネットワークログ¶
ログエクスプローラーで source:bpf_net_l4_log のデータをフィルタリングし、詳細ページに移動します。
- パケット内容:各ネットワークフローの詳細なパケット内容を表示し、異なる時点とパケットの流れを直感的に確認できます。
- パケット交換:クライアントとサーバー間のパケット交換を分析します。
- 時間差:パケット転送の時間差を記録します。
ネットワーク詳細¶
ネットワーク転送方向に基づいて、クライアントとサーバーを判断して表示します。
- outgoing:送信元アドレス(
src_ip)がクライアント、宛先アドレス(dst_ip)がサーバーです。 - incoming:送信元アドレス(
src_ip)がサーバー、宛先アドレス(dst_ip)がクライアントです。 - unknown:送信元アドレス(
src_ip)が Local、宛先アドレス(dst_ip)が Remote とマークされます。
四層・七層ネットワーク関連分析¶
パケットが七層ネットワークに関連付けられている場合、HTTP メソッド(http_method)とパス(http_path)が表示されます。
特定のパケット内に L7 ネットワークログデータが含まれている場合、直接クリックして新しいページで七層ネットワークの詳細ログを表示できます。
右上の検索ボックスでは、seq を対象にパケットを検索し、迅速に特定できます。
七層 BPF ネットワークログ¶
すべてのネットワークフローのリストを表示し、各ネットワークフローの詳細情報を確認できます。ログエクスプローラーで source:bpf_net_l7_log のデータをフィルタリングし、詳細ページに移動します。
ネットワークリクエストトポロジー¶
ネットワークリクエストのパス、物理ホストと仮想ホスト間のリクエストプロセスと所要時間を表示します。Guanceはノード間のフローを表示し、ネットワーク通信の複雑さを理解するのに役立ちます。
- 仮想NIC:
pod_name、nic_name、dst_port、src_port、k8s_namespace、k8s_container_name、hostなどの関連情報を表示します。 - 物理NIC:
host、nic_name、dst_port、src_port、l4_proto、l7_protoなどの関連情報を表示します。
注意
外部の未知のネットワーク状況が存在する場合は、N/A と表示されます。
ネットワークNICに対して、以下の操作が可能です。
- NICノードのポートにホバーすると、
ip:portが表示されます。 - ネットワークデータの詳細を確認する必要がある場合は、NICノードにホバーし、右上の ボタンをクリックすると、対応するページにジャンプします。
関連ネットワークログ¶
Guanceは、単一接続リクエスト、複数NICリクエスト、トランスポート層リクエストの3つの軸に基づいて、関連するログデータを表示します。
- 単一接続リクエスト:クライアントとサーバー間の単一ネットワーク接続を介したリクエストと応答です。
- 複数NICリクエスト:異なるNICをまたいで行われるリクエストです。例えば、仮想化環境では、仮想マシンの仮想NICからリクエストが発信され、ホストの物理NICを経由して別の仮想マシンや外部サーバーに送信される場合があります。
- トランスポート層リクエスト:トランスポート層のネットワークログ、例えば TCP や UDP プロトコルでのリクエストを指します。
右側の をクリックすると、ネットワークログの表示列を変更できます。
ネットワーク問題のトラブルシューティング例¶
ネットワーク問題が発生した場合、以下の手順で BPF ネットワークのトラブルシューティングを実行できます。
- 問題の現象を確認する:接続タイムアウト、パケットロスなど、ネットワーク問題の兆候を記録します。
- 四層ログを確認する:
bpf_net_l4_logを使用して、関連するネットワークフローの基本情報を確認し、転送方向とパケットの基本情報を特定します。 - 七層ログを詳しく調べる:問題がアプリケーション層に関係する可能性がある場合は、
bpf_net_l7_logを使用してアプリケーション層の詳細なやり取りを確認します。 - ネットワークトポロジーを分析する:ネットワークリクエストトポロジー機能を利用して、仮想NICと物理NIC間の呼び出し関係と所要時間を確認し、ネットワーク遅延や中断がないか確認します。
- 関連分析:四層・七層の関連分析を通じて、問題の原因となっている特定のアプリケーション層プロトコルがないか確認します。
- ログを関連付ける:問題のネットワークフローに関連するすべてのログを確認し、潜在的な問題の手がかりを探します。
上記の手順により、BPF ネットワークの可視化を効果的に活用してネットワーク問題を調査・分析し、迅速に問題を特定して解決できます。






