BPF 网络日志¶
BPF 网络,即 Berkeley Packet Filter (BPF) 技术,是一种在操作系统内核层面上运行的网络数据包过滤技术。它能够帮助我们捕获和筛选经过网络的数据包,以此来提升网络效率,进行安全检查等。BPF 规则是一种定义过滤条件的特殊语言,可以指定多种过滤标准,比如数据包的源 IP、目标 IP、使用的协议类型或者端口号等。简单来说,BPF 就像是一个高级的网络筛子,能够根据我们设定的规则,筛选出我们想要的网络数据包。
作为一种先进的 Linux 网络数据包处理技术,观测云利用 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
的数据,进入详情页:
网络请求拓扑¶
展示网络请求路径、物理主机和虚拟主机之间的请求过程和耗时。观测云会为您展示节点间的流向,帮助理解网络通信的复杂性。
- 虚拟网卡:为您展示
pod_name
、nic_name
、dst_port
、src_port
、k8s_namespace
、k8s_container_name
、host
等相关信息。 - 物理网卡:为您展示
host
、nic_name
、dst_port
、src_port
、l4_proto
、l7_proto
等相关信息。
注意:若存在外部未知网络情况,则显示 N/A。
针对网络网卡,您可进行以下操作:
- hover 在网卡节点的端口上,即可显示
ip:port
。 - 若需查看网络数据详情,hover 在网卡节点上,点击右上角 按钮即可跳转至对应页面。
关联网络日志¶
观测云基于单连接请求、跨网卡请求和传输层请求三个维度展示相关的日志数据。
- 单连接请求:客户端与服务器之间通过单个网络连接进行的请求和响应。
- 跨网卡请求:跨越不同网卡进行的请求。例如,在虚拟化环境中,请求可能从虚拟机的一个虚拟网卡发起,然后通过宿主机的物理网卡发送到另一个虚拟机或外部服务器。
- 传输层请求:指的是传输层网络日志,如 TCP 或 UDP 协议中进行的请求。
点击右侧 可修改网络日志显示列:
网络问题排查示例¶
当发生网络问题时,可以按照以下步骤进行 BPF 网络故障排查:
- 确认问题现象:记录下网络问题的表现,如连接超时、数据包丢失等。
- 查看四层日志:通过
bpf_net_l4_log
查看相关网络流的基本信息,确认传输方向和数据包的基本信息。 - 深入七层日志:如果问题可能涉及应用层,通过
bpf_net_l7_log
查看应用层的详细交互。 - 分析网络拓扑:利用网络请求拓扑功能,检查虚拟网卡和物理网卡之间的调用关系和耗时,确认是否存在网络延迟或中断。
- 关联分析:通过四七层关联分析,查看是否有特定的应用层协议导致的问题。
- 日志关联:查看与问题网络流相关的所有日志,寻找潜在的问题线索。
通过上述步骤,可以有效地利用 BPF 网络可视化对网络问题进行排查和分析,从而快速定位并解决问题。