你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
对数据包核心实例执行数据包捕获
控制平面或数据平面数据包的数据包捕获是使用 MEC-Dataplane 跟踪工具执行的。 MEC-Dataplane (MEC-DP) 跟踪类似于 tcpdump,它是在命令行接口 (CLI) 上运行的数据网络数据包分析器计算机程序。 可以使用 MEC-DP 跟踪在访问网络(N3 接口)或设备上的任何用户界面(N3 接口)或数据网络(N6 接口)以及控制平面(N2 接口)上监视和记录数据包。 可以使用 Azure 门户、Azure CLI 来访问 MEC-DP 跟踪。
数据包捕获的工作原理是将数据包镜像到 Linux 内核接口,然后可以使用 tcpdump 监视该接口。 本操作指南介绍如何在数据包核心实例上执行数据包捕获。
重要
执行数据包捕获将降低系统的性能和数据平面的吞吐量。 因此,建议在初始测试期间以低规模使用此工具。
先决条件
必须部署 AP5GC 站点才能执行数据包捕获。
若要使用命令行执行数据包捕获,必须:
- 标识“Kubernetes - Azure Arc”资源,该资源表示数据包核心实例正在其上运行的已启用 Azure Arc 的 Kubernetes 群集。
- 请确保本地计算机具有对已启用 Azure Arc 的 Kubernetes 群集的核心 kubectl 访问权限。 这需要一个核心 kubeconfig 文件,可以通过核心命名空间访问获取该文件。
使用 Azure 门户执行数据包捕获
设置存储帐户
需要设置存储帐户来存储诊断包。
- 使用以下其他配置为诊断创建存储帐户:
- 在“数据保护”选项卡上的“访问控制”下,选择“启用版本级别不可变支持”。 这样,就可以在下一步中为帐户指定基于时间的保留策略。
- 如果要在一段时间后自动删除存储帐户中的内容,请为存储帐户配置默认的基于时间的保留策略。
- 为诊断创建容器。
- 记下容器 blob URL。 例如:
https://storageaccountname.blob.core.windows.net/diagscontainername
- 转到你的存储帐户。
- 选择要用于诊断收集的容器 blob 右侧的 ... 符号。
- 在上下文菜单中选择“容器属性”。
- 复制“容器属性”视图中 URL 字段的内容。
- 创建用户分配的标识,并将其分配给上面创建的存储帐户,其中包含“存储 Blob 数据参与者”角色。
提示
创建站点时,可能已创建并关联用户分配的标识。
- 导航到站点的数据包核心控制平面资源。
- 在左侧菜单中,选择“设置”下的“标识”。
- 选择 添加 。
- 搜索创建的用户分配的托管标识,并选择“添加”。
重要
创建用户分配的托管标识后,必须通过进行虚拟配置更改来刷新数据包核心配置。 这可以是对部署没有影响且可以保留的更改,也可以是立即还原的更改。 请参阅修改数据包核心实例。 如果不刷新数据包核心配置,则数据包捕获将失败。
启动数据包捕获
- 登录 Azure 门户。
- 导航到要在其中运行数据包捕获的站点的“数据包核心控制窗格”概述页。
- 选择左侧“帮助”部分下的“数据包捕获”。 这将打开“数据包捕获”视图。
- 如果这是你第一次使用门户捕获数据包,则会看到一条错误消息,提示配置存储帐户。 如果是的话:
- 按照错误消息中的链接操作。
- 输入为诊断存储配置的存储帐户容器 URL,选择“修改”。
提示
如果没有存储帐户容器的 URL:
- 转到你的存储帐户。
- 选择要用于数据包捕获的容器右侧的 ... 符号。
- 在上下文菜单中选择“容器属性”。
- 复制 URL 字段的内容。
- 返回到“数据包捕获”视图。
- 选择“启动数据包捕获”。
- 填写“开始数据包捕获”窗格的详细信息,选择“创建”。
- 页面将每隔几秒钟刷新一次,直到数据包捕获完成。 还可以使用“刷新”按钮刷新页面。 如果要提前停止数据包捕获,请选择“停止数据包捕获”。
- 数据包捕获完成后,AP5GC 联机服务将在提供的存储帐户 URL 中保存输出。
- 若要下载数据包捕获输出,可以使用“存储”中的“复制到剪贴板”按钮或“文件名”列复制这些详细信息,然后将其粘贴到门户中的“搜索”框中。 若要下载输出,请右键单击该文件,然后选择“下载”。
使用 Azure CLI 执行数据包捕获
在对已启用 Azure Arc 的 Kubernetes 群集具有 kubectl 访问权限的命令行中,进入 MEC-DP 疑难解答 Pod:
kubectl exec -it -n core core-mec-dp-0 -c troubleshooter -- bash
查看已配置的用户平面接口列表:
mect list
这应会报告控制平面网络 (N2) 上的单个接口、接入网络 (N3) 上的单个接口以及每个连接的数据网络 (N6) 上的一个接口。 例如:
n2trace n3trace n6trace0 (Data Network: internet) n6trace1 (Data Network: enterprise) n6trace2 (Data Network: test)
使用通常传递给 tcpdump 的任何参数运行
mectdump
。 具体而言,-i
指定接口,-w
指定写入位置。 完成后按 Ctrl + C,关闭该工具。以下示例是一些常见用例:- 若要在所有接口上运行捕获数据包,请运行
mectdump -i any -w any.pcap
- 若要为单个数据网络的 N3 接口和 N6 接口运行捕获数据包,请在两个单独的窗口中输入 MEC-DP 故障排除程序 Pod。 在一个窗口中运行
mectdump -i n3trace -w n3.pcap
,另一个窗口运行mectdump -i <N6 interface> -w n6.pcap
(使用步骤 2 中标识的数据网络的 N6 接口)。
重要
数据包捕获文件可能很大,尤其是在所有接口上运行数据包捕获时。 在运行数据包捕获时指定筛选器,以减少文件大小 - 请参阅可用筛选器的 tcpdump 文档。
- 若要在所有接口上运行捕获数据包,请运行
保留容器:
exit
复制输出文件:
kubectl cp -n core core-mec-dp-0:<path to output file> <location to copy to> -c troubleshooter
在写入数据包时,
tcpdump
可能已停止,这可能导致此步骤生成一个错误,指出unexpected EOF
。 但是,文件应已成功复制,不过可以检查目标输出文件以确认。删除输出文件:
kubectl exec -it -n core core-mec-dp-0 -c troubleshooter -- rm <path to output file>
后续步骤
有关监视部署和查看分析的更多选项:
- 详细了解使用 Log Analytics 平台指标监视 Azure 专用 5G 核心
- 如果你找到了问题,但不知道如何解决,可以获取 Azure 专用 5G 核心服务的支持