你当前正在访问 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 门户执行数据包捕获

设置存储帐户

需要设置存储帐户来存储诊断包。

  1. 使用以下其他配置为诊断创建存储帐户
    1. 在“数据保护”选项卡上的“访问控制”下,选择“启用版本级别不可变支持”。 这样,就可以在下一步中为帐户指定基于时间的保留策略。
    2. 如果要在一段时间后自动删除存储帐户中的内容,请为存储帐户配置默认的基于时间的保留策略
    3. 为诊断创建容器
    4. 记下容器 blob URL。 例如:
      https://storageaccountname.blob.core.windows.net/diagscontainername
      1. 转到你的存储帐户
      2. 选择要用于诊断收集的容器 blob 右侧的 ... 符号。
      3. 在上下文菜单中选择“容器属性”
      4. 复制“容器属性”视图中 URL 字段的内容。
  2. 创建用户分配的标识,并将其分配给上面创建的存储帐户,其中包含“存储 Blob 数据参与者”角色。

    提示

    创建站点时,可能已创建并关联用户分配的标识。

  3. 导航到站点的数据包核心控制平面资源。
  4. 在左侧菜单中,选择“设置”下的“标识”
  5. 选择 添加
  6. 搜索创建的用户分配的托管标识,并选择“添加”。

重要

创建用户分配的托管标识后,必须通过进行虚拟配置更改来刷新数据包核心配置。 这可以是对部署没有影响且可以保留的更改,也可以是立即还原的更改。 请参阅修改数据包核心实例。 如果不刷新数据包核心配置,则数据包捕获将失败。

启动数据包捕获

  1. 登录 Azure 门户
  2. 导航到要在其中运行数据包捕获的站点的“数据包核心控制窗格”概述页。
  3. 选择左侧“帮助”部分下的“数据包捕获”。 这将打开“数据包捕获”视图。
  4. 如果这是你第一次使用门户捕获数据包,则会看到一条错误消息,提示配置存储帐户。 如果是的话:
    1. 按照错误消息中的链接操作。
    2. 输入为诊断存储配置的存储帐户容器 URL,选择“修改”

      提示

      如果没有存储帐户容器的 URL:

      1. 转到你的存储帐户
      2. 选择要用于数据包捕获的容器右侧的 ... 符号。
      3. 在上下文菜单中选择“容器属性”
      4. 复制 URL 字段的内容
    3. 返回到“数据包捕获”视图。
  5. 选择“启动数据包捕获”。
  6. 填写“开始数据包捕获”窗格的详细信息,选择“创建”。
  7. 页面将每隔几秒钟刷新一次,直到数据包捕获完成。 还可以使用“刷新”按钮刷新页面。 如果要提前停止数据包捕获,请选择“停止数据包捕获”
  8. 数据包捕获完成后,AP5GC 联机服务将在提供的存储帐户 URL 中保存输出。
  9. 若要下载数据包捕获输出,可以使用“存储”中的“复制到剪贴板”按钮或“文件名”列复制这些详细信息,然后将其粘贴到门户中的“搜索”框中。 若要下载输出,请右键单击该文件,然后选择“下载”

使用 Azure CLI 执行数据包捕获

  1. 在对已启用 Azure Arc 的 Kubernetes 群集具有 kubectl 访问权限的命令行中,进入 MEC-DP 疑难解答 Pod:

    kubectl exec -it -n core core-mec-dp-0 -c troubleshooter -- bash
    
  2. 查看已配置的用户平面接口列表:

    mect list
    

    这应会报告控制平面网络 (N2) 上的单个接口、接入网络 (N3) 上的单个接口以及每个连接的数据网络 (N6) 上的一个接口。 例如:

    n2trace
    n3trace
    n6trace0 (Data Network: internet)
    n6trace1 (Data Network: enterprise)
    n6trace2 (Data Network: test)
    
  3. 使用通常传递给 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 文档。

  4. 保留容器:

    exit
    
  5. 复制输出文件:

    kubectl cp -n core core-mec-dp-0:<path to output file> <location to copy to> -c troubleshooter
    

    在写入数据包时,tcpdump 可能已停止,这可能导致此步骤生成一个错误,指出 unexpected EOF。 但是,文件应已成功复制,不过可以检查目标输出文件以确认。

  6. 删除输出文件:

        kubectl exec -it -n core core-mec-dp-0 -c troubleshooter -- rm <path to output file>
    

后续步骤

有关监视部署和查看分析的更多选项: