你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
对数据包核心实例执行数据包捕获
控制平面或数据平面数据包的数据包捕获是使用 MEC-Dataplane 跟踪工具执行的。 MEC-Dataplane (MEC-DP) 跟踪类似于 tcpdump,它是在命令行接口 (CLI) 上运行的数据网络数据包分析器计算机程序。 你可以使用 MEC-DP 跟踪在设备上监视和记录访问网络(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 字段的内容。
- 返回到“数据包捕获”视图。
选择“启动数据包捕获”。
填写“开始数据包捕获”窗格的详细信息,选择“创建”。
每个节点都应用每个会话的最大字节数上限。 在高可用性 (HA) 部署中,数据包捕获很可能在一个节点上达到此限制并在一个节点上完成,因此,在第一个节点上完成后,数据包捕获仍将运行。 在启动新数据包之前,应停止任何正在运行的数据包捕获。
页面将每隔几秒钟刷新一次,直到数据包捕获完成。 还可以使用“刷新”按钮刷新页面。 如果要提前停止数据包捕获,请选择“停止数据包捕获”。
数据包捕获完成后,AP5GC 联机服务将在提供的存储帐户 URL 中保存输出。
在 HA 部署中,将上传两个数据包捕获文件,每个节点一个。 这些文件将标记有
0
或1
,它们对应于core-mec-dp-0
或core-mec-dp-1
Pod。 如果一个数据包捕获失败,状态页将显示错误,但成功的捕获结果将正常上传。若要下载数据包捕获输出,可以使用“存储”中的“复制到剪贴板”按钮或“文件名”列复制这些详细信息,然后将其粘贴到门户中的“搜索”框中。 若要下载输出,请右键单击该文件,然后选择“下载”。
使用 Azure CLI 执行数据包捕获
在对已启用 Azure Arc 的 Kubernetes 群集具有 kubectl 访问权限的命令行中,进入 MEC-DP 疑难解答 Pod:
kubectl exec -it -n core core-mec-dp-0 -c troubleshooter -- bash
注意
在 HA 部署中,
core-mec-dp-0
可能不存在,因为节点已关闭。 在这种情况下,请改为输入core-mec-dp-1
。查看已配置的用户平面接口列表:
mect list
这应会报告控制平面网络 (N2) 上的单个接口、接入网络 (N3) 上的单个接口以及核心网络 (N6) 的单个接口。
n2trace n3trace n6trace
使用通常传递给 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 n6trace -w n6.pcap
。 若要选择单个数据网络,请按 VLAN ID 进行筛选。
重要
数据包捕获文件可能很大,尤其是在所有接口上运行数据包捕获时。 在运行数据包捕获时指定筛选器,以减少文件大小 - 请参阅可用筛选器的 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 核心服务的支持